C#中的图形布局优化

hb.*_*hb. 14 c# optimization performance graph-layout

我有一个对象列表,我需要组织为美学图.我目前的方法涉及IronPython和遗传算法,但这需要太长时间.

我一直在阅读Graphviz,QuickGraph和Graph#,但我不需要可视化部分 - 我已经有一个应用程序将显示给定x/y坐标的节点.有人告诉我,Sugiyama算法和基于力的算法族都倾向于输出令人愉悦的图形,但我似乎找不到一个.NET库来输出坐标而不是图像而没有一些非常严重的源代码黑客攻击.

任何人都可以推荐库,算法等吗?

Eri*_*ith 23

有许多选项,各种优点和缺点 - 你可能想要筛选这个软件列表,或多或少,你正在寻找什么.

过去,寻找开源解决方案很困难,但曾经商业许可的MSAGL现在似乎是开源的.

Graph#QuickGraph之间的区别在于后者提供了图遍历和操作原语,但没有提供任何布局算法.Graph#拥有所有可用的源代码,从我(简要)看到的,在布局引擎和绘图实现之间有一个巧妙的分离.

Graphviz是用纯C/C++编写的,并且是相当单一的,将输入描述图形的文本文件作为输入,并生成各种类型的输出,包括矢量和基于栅格的输出.它不适合作为插件布局引擎,但可以通过shelling out并提供必需的输入文件和解析输出来使用.虽然不是很干净的解决方案.

还有一种叫做OGDF的东西.虽然它完全用C++编写,但它被设计用作布局引擎库,并且具有结构良好的接口.它支持各种布局算法,包括优化的Sugiyama,如果这是你感兴趣的话.

如果你有兴趣在Sugiyama上实现一个优化的变体,你总是可以使用算法简洁描述自己动手:)

但最终,您可能应该决定在对库做出决定之前要使用的布局类型.

  • MSAGL现在可以在GitHub中作为开源使用:https://github.com/Microsoft/automatic-graph-layout (3认同)

Mic*_*key 5

Microsoft Research 有一个自动图形布局引擎,可以帮助您完成这项工作。

您可以在此处阅读更多相关信息:

http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/

  • 我的印象是布局引擎独立于渲染组件,但我不能绝对肯定地说。这篇论文讲了它背后的理论,包括杉山算法。ftp://ftp.research.microsoft.com/pub/tr/TR-2007-72.pdf (2认同)
  • 是的,您只能从 MSAGL(以前的 GLEE)获取坐标并实现自己的渲染 - http://coding-time.blogspot.com/2009/03/debugger-visualizer-for-visual-studio.html (2认同)
  • MSAGL 现在在 GitHub 中作为开源提供:http://github.com/Microsoft/automatic-graph-layout (2认同)