【发布时间】:2012-01-06 18:13:16
【问题描述】:
我有一个有向循环图,其边缘处有值,但节点处没有值。
图有一个开始节点和一个结束节点,我想保留通过图的路径集,但我不关心路径上的节点,只关心边值。下面的例子。
是否有任何算法可以生成保留该属性的较小图形?
该图可能有数十万个节点,但不是数百万个。每个节点的边数很少 w.r.t.节点数。
欢迎使用保守的启发式方法。
例如,其中O是一个节点,一个数字是相邻边的值:
O --------> O -------> O
2 3
^ |4
|1 v
1 2 3 4
start -> O -> O -> O -> end
|5 ^
v |8
O --------> O -------> O
6 7
从头到尾有两条边值为 [1,2,3,4] 的路径,所以一条是多余的,我很乐意将上述内容简化为
O --------> O -------> O
2 3
^ |4
|1 v
start end
|5 ^
v |8
O --------> O -------> O
6 7
图可以是循环的,所以在
1
/-\
| /
v/
start -> O -> O -> end
1 1 2
更简单的图将消除第二个 1 转换,只留下自边缘:
1
/-\
| /
v/
start -> O -> end
1 2
【问题讨论】:
-
后两者不等价。第一个不允许“开始 -1-> O -2-> 结束”作为通过图的路径。