1

在此处输入图像描述

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

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

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

4

1 回答 1

3

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

所以为了“找流”,你应该做一个“拓扑排序”;如果它是一棵树,“BFS”运行也可以。

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

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

后一种算法在这里实现以玩:

  • 转到交互式图形源演示

  • 然后将顶部的组合框切换为“2 Dynamic Bindings”并修改右侧的文本框如下:

节点来源:

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

边缘来源:

['AB', 'AC', 'CD', 'CE']
  • 然后按下右上角的应用按钮,你会从上面得到你的图表,整齐的动画。
于 2012-10-16T06:40:00.197 回答