我创建了一个qt节点来绘制图表。我想安排图表。但是我找不到方法:(我认为图表的流程解决了我的问题。所以我想得到找到流程的解决方案。上图,我想得到一个像这样的列表
[A, B]
[A, C, D]
[A, C, E]
每个节点都有父节点和子节点,所以我可以找到它们。有了递归功能,我能找到答案吗?我必须使用什么算法?
答案 0 :(得分:3)
这里有一张图表(来自图论,不是条形图等)。在这种情况下,它是树 - 但如果有从B到D的链接,那么它就不再是树了。
所以为了“找到流程”,你应该做一个“拓扑排序”;如果它是一棵树,那么“BFS”也会这样做。
这样你就会得到“图层”,即图中从左到右的顺序,这可以映射到x坐标。如果图形是树,则查找良好的y坐标更容易,如果是一般图形则更难。在前一种情况下,您可以通过排列每个节点的子树(即其右侧的所有元素)递归地确定位置(“自下而上”)。
如果您的结构是图形,您可以查看Sugiyama的算法,但这涉及更多。我建议在这种情况下使用图表库。
后一种算法在这里实现:
然后将顶部的组合框切换为“2 Dynamic Bindings” 并按如下方式修改右侧的文本框:
节点来源:
['A','B','C','D','E']
边缘来源:
['AB', 'AC', 'CD', 'CE']