0

好的,我的情况是我有一个项目列表,我需要根据它们拥有的参考来获取这些项目的顺序。例如,假设我们有这些项目:A、B、C、D、E、F

C 和 D 没有依赖关系,因此它们的顺序可以为 0。B 是与 C、D 和 A 最多的一个。A 有 C,F 有 A 和 B

  C    D    
  | \  /
  A  /
/ | /
| B 
\ |
  F

在这种情况下 C,D = 0 A = 1 B= 2 F = 3

我一直在浏览互联网,似乎我没有使用正确的科学术语。很可能它以某种方式是 Set 或 Bag set。我知道它不是一棵树,因为这种情况在每个节点上都有两个以上的边。答案可以是编程语言,只是试图使其尽可能通用。

4

2 回答 2

2

一个简单的算法如下。

迭代集合,寻找没有依赖关系的元素:将这些元素记住为“0 级元素”。

再次迭代集合,寻找可能依赖于“0 级元素”但不依赖于其他元素的元素:将这些元素记住为“1 级元素”。

再次迭代集合,寻找可能依赖于“0 级元素”和/或“1 级元素”但不依赖于其他元素的元素:将这些元素记住为“2 级元素”。

等等。

当每个元素都有指定的级别时停止。

于 2009-12-10T16:18:03.050 回答
0

您可以创建图表并维护指针计数,也可以使用矩阵。搜索和阅读图的一些基本概念(数学,而不是计算机图),你会发现它很容易。

于 2009-12-10T16:18:16.280 回答