【问题标题】:Graphviz and Dot and graphs with hundreds of nodes.Graphviz 和 Dot 以及具有数百个节点的图形。
【发布时间】:2015-11-03 23:54:34
【问题描述】:

我想用 150 到 750 个节点和大约 3 倍的边数来渲染许多图表。

这些图表有一个时间分量,所以我一直(用更小的,比如 20 个节点样本),一直在使用 rank same 来按天收集它们。

dot 在渲染这些较小的图表方面做得非常好。然而,似乎有一点事情会变得非常非常缓慢,或者只是直接转储核心并说“继续前进”。

sfdp 和neato 会渲染这些图表,但它们是一团糟,事实上,我知道它们可以渲染成漂亮的流程图。

有什么建议吗?我怎样才能得到这些点渲染,或者找到另一个可以做有向图的工具?等级一样杀了我吗?

这是我当前运行 20 分钟后的示例输出,并且没有显示完成的迹象..

network simplex:  188 nodes 487 edges maxiter=2147483647 balance=1
network simplex: 188 nodes 487 edges 0 iter 0.00 sec
Maxrank = 561, minrank = 0
mincross: pass 0 iter 0 trying 0 cur_cross 0 best_cross 0
mincross: pass 0 iter 0 trying 0 cur_cross 4084 best_cross 4084
mincross: pass 0 iter 1 trying 0 cur_cross 3308 best_cross 3308
mincross: pass 0 iter 2 trying 0 cur_cross 1552 best_cross 1552
mincross: pass 0 iter 3 trying 0 cur_cross 1409 best_cross 1409
mincross: pass 1 iter 0 trying 0 cur_cross 5183 best_cross 840
mincross: pass 1 iter 1 trying 1 cur_cross 4156 best_cross 840
mincross: pass 1 iter 2 trying 2 cur_cross 2003 best_cross 840
mincross: pass 1 iter 3 trying 3 cur_cross 1780 best_cross 840
mincross: pass 2 iter 0 trying 0 cur_cross 840 best_cross 840
mincross: pass 2 iter 1 trying 1 cur_cross 946 best_cross 840
mincross: pass 2 iter 2 trying 2 cur_cross 922 best_cross 840
mincross: pass 2 iter 3 trying 0 cur_cross 774 best_cross 774
mincross: pass 2 iter 4 trying 0 cur_cross 629 best_cross 629
mincross: pass 2 iter 5 trying 1 cur_cross 759 best_cross 629

...

mincross: pass 2 iter 19 trying 3 cur_cross 567 best_cross 438
mincross: pass 2 iter 20 trying 4 cur_cross 507 best_cross 438
network simplex:  135708 nodes 203040 edges maxiter=2147483647 balance=2  
network simplex: 100 200 300 400 500 600 700 800 900 1000   
network simplex: 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000   
network simplex: 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000   
network simplex: 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000   
network simplex: 4100 4200 4300 4400 4500 4600 4700 4800 4900 5000   
network simplex: 5100 5200 5300 5400 5500 5600 5700 5800 5900 6000   

...目前为 321,200

【问题讨论】:

  • 我同意 rank = same 添加的约束可能会阻止 dot 找到解决方案。如果图形文件中省略了 rank = samedot 是否会呈现相同的图形?否则,您可能需要编辑您的问题以包含dot 无法呈现的最小文件,以便我们可以逐行查看潜在问题。当然,也可能是图太复杂了,dotdot 无法感知图中的整体结构,无法产生良好的渲染效果。
  • 我一直在尝试减少 rank = same 语句的数量,这似乎加快了速度。似乎时间至少以 n^2 的数量增长,rank = same 语句的数量。该文件最终渲染了;在 v3 xeon 上花了大约 20 分钟,开罗崩溃:32k x 25k 左右的图像。 SVG 渲染器工作,产生了一个有一些问题的图表。我将继续试验,暂时保持开放状态,然后报告结果。

标签: graphviz dot


【解决方案1】:

为了结束这里,我现在建议不要将 rank=same 用于“中小型”图,将其称为超过 100 个节点。

相反,我们在文件中对节点创建进行内部排序,以鼓励一种软排名,并使用源和接收器来尝试形成某种顺序。

有趣的是,似乎可能有相当多的原创研究等待在算法中完成,以布置和流动这些,所以如果你是一个正在寻找论文的研究生,这是一个尚未收到的领域至少在过去 10 年里引起了很多关注。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多