安排图

时间:2012-10-15 06:38:39

标签: diagram

enter image description here

我创建了一个qt节点来绘制图表。我想安排图表。但是我找不到方法:(我认为图表的流程解决了我的问题。所以我想得到找到流程的解决方案。上图,我想得到一个像这样的列表

[A, B]
[A, C, D]
[A, C, E]

每个节点都有父节点和子节点,所以我可以找到它们。有了递归功能,我能找到答案吗?我必须使用什么算法?

1 个答案:

答案 0 :(得分:3)

这里有一张图表(来自图论,不是条形图等)。在这种情况下,它是树 - 但如果有从B到D的链接,那么它就不再是树了。

所以为了“找到流程”,你应该做一个“拓扑排序”;如果它是一棵树,那么“BFS”也会这样做。

这样你就会得到“图层”,即图中从左到右的顺序,这可以映射到x坐标。如果图形是树,则查找良好的y坐标更容易,如果是一般图形则更难。在前一种情况下,您可以通过排列每个节点的子树(即其右侧的所有元素)递归地确定位置(“自下而上”)。

如果您的结构是图形,您可以查看Sugiyama的算法,但这涉及更多。我建议在这种情况下使用图表库。

后一种算法在这里实现:

节点来源:

['A','B','C','D','E']

边缘来源:

['AB', 'AC', 'CD', 'CE']
  • 然后按右上角的“应用”按钮,您可以从上方获取图表,整齐地动画。