【问题标题】:algo for reducing a graph while preserving edge values along paths from a start node to an end node用于减少图同时保留从开始节点到结束节点的路径的边值的算法
【发布时间】: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-> 结束”作为通过图的路径。

标签: graph-algorithm subgraph


【解决方案1】:

我将遍历所有不是开始和结束的节点,然后继续删除它们。删除节点时,您在通过该节点连接的所有节点之间添加另一条边(观察方向,因为它是有向图)。要记住的是,如果您尝试添加由于此过程而已经存在的边缘 - 请确保保留权重较小的边缘(这是关键)。

【讨论】:

  • 边缘的值不是权重。
【解决方案2】:

Implication Charts 做了我需要的。它们在节点数量上是 O(n**2) 空间方面的,但在我的情况下这是可以管理的。

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多