【发布时间】:2014-10-29 23:19:00
【问题描述】:
在这种情况下,我在尝试表示和操作依赖图时遇到了一些麻烦:
- 一个节点有一些需要解决的依赖关系
- 每条路径都不能有依赖循环(如 DAG 图中)
- 每个依赖项都可以由多个其他节点解决
我从目标节点开始递归查找它的依赖关系,但必须保持上述属性,尤其是第三个。
这里只是一个小例子:
我想要一个像下面这样的图表
(A)
/ \
/ \
/ \
[(B),(C),(D)] (E)
/\ \
/ \ (H)
(F) (G)
意思是:
- F、G、C、H、E 没有依赖关系
- D 依赖于 H
- B 依赖于 F 和 G
- A 依赖于 E 和
- B 或
- C 或
- D
所以,如果我写下所有可能的拓扑排序路径到 A 我应该有:
- E -> F -> G -> B -> A
- E -> C -> A
- E -> H -> D -> A
如何使用这些属性对图形进行建模?哪种数据结构更适合这样做?
【问题讨论】:
-
这取决于你想对图表做什么。
-
另外,F、E、H、D、A 等不也是有效的 topsorts 吗?
-
是的,还有其他有效的顶级排序。我只写了几个例子。
标签: algorithm data-structures graph dependencies