是否有合适的算法在坐标系中绘制混合的选区/依赖关系图?


9

我正在寻找一种绘制混合的选区/依赖关系图的算法(对于语言应用程序)。这样的图将具有两种不同类型的顶点(标记,节点)和两种不同类型的边(分层,非分层)。

我一般都不熟悉图论和算法,我希望这个问题不会与本网站的研究水平要求相冲突。但是,它通常应该在理论的范围之内

该图必须自下而上绘制(我认为),因为所有令牌应以相同的y坐标显示,并且将令牌和/或节点归为组成部分的节点的y坐标必须动态计算,例如,通过其通向令牌的最长路径。

层次边(用于将标记/节点分组为组成部分)应具有最少数量的弯曲点(理想情况下为0),但也应有最少数量的交叉点,如有需要,可覆盖前一个要求。

非分层边(用于依赖性)应具有最少的交叉点,并绘制为贝塞尔曲线。

我遇到的下一个最好的事情是Buchheim等人描述的算法,改进了Walker算法以在线性时间内运行。

请让我知道是否需要改进我的问题,并在此先感谢您的指导。

编辑:

正如评论中指出的那样,我应该提到,我基本上想要一种算法的默认图形布局,从长远来看,我希望在Eclipse GEF可能性内进行编辑和修改。我以前曾研究过让Graphviz与GEF一起使用的选项,但是似乎没有一种可行的解决方案可以保留从GEF继承的所有编辑功能。


您需要算法还是现有工具?Graphviz(graphviz.org)可以做到这一点。您指定图形,可能需要一些格式设置选项(用于不同类型的节点和边),该工具将输出合理渲染的图形。
Dave Clarke 2012年

@DaveClarke:谢谢。我知道Graphviz能够做到这一点。不幸的是,目前似乎没有可能在基于[Eclipse图形编辑框架](www.eclipse.org/gef)的编辑器中使用Graphviz。因此,我正在寻找一种实际的算法。除非有人知道如何将Graphviz插入/移植到GEF :)。
2012年

听起来OP正在寻找一种算法(或捕捉规范的问题描述)
Suresh Venkat12年

@SureshVenkat:是的,感谢您的澄清。
2012年

1
Q没有提到编辑&,但是在注释中,您拒绝了graphviz&似乎表明您要使用GEF对其进行编辑。GEF是一个通用的可视化编辑框架/ API,可以在其上构建其他“插件”。您似乎想要通过算法进行默认图形布局,然后可以对其进行修改。建议您编辑问题以反映这一点。顺便说一下,相信graphviz可用于生成坐标,然后可将其输入到图形编辑器中。重新进行GEF图形编辑,请参见例如GEF的专业图形布局
vzn 2012年

Answers:


1

你似乎想要以下

  • 图布局算法。许多std算法通常使用基于力的方法,其中节点通过可重复/有吸引力的“弹簧”连接,并且平衡/低能态是通过迭代(相应的全局构造的与力有关的微分方程)获得的。算法的输出是节点和(通常)边缘的一组2维或3维坐标。
  • 能够手动修改该算法的结果。通常称为“图形编辑器”。这从布局算法的坐标开始,并可以进行调整。

re(1)最前沿的软件似乎是graphviz。re(2)在mathoverflow上看到例如这个问题“什么是最好的图形编辑器”

浏览graphviz画廊,这是两种您想要的图形类型。

ER图交通灯

你说你有两种类型的边缘。一种简单的方法是像在交通信号灯示例中那样使指向边缘“朝着或离开”。或者可以按照ER图中的两种方式标记边缘。这两个示例都使用不同的形状或标签或阴影等显示了两种不同的节点类型。其他方法是使用着色。

如mathoverflow Q / As所示,有许多图形编辑器。具有graphviz的std是“ dotty”。参见例如Koutsofious的pdf 用点点滴滴编辑图表”

另一种用于绘制图形(可能是大型图形)的技术是查看结构组成,例如集团分解。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.