如何在有向无环图中找到“5”最重要的路径?

时间:2012-11-05 19:29:52

标签: algorithm directed-acyclic-graphs

我有一个有向无环图(DAG),其权重与每个节点相关联。我想找到顶部'n'(例如5个)最重的路径,其中路径的权重被定义为它的节点的所有权重的总和。我怎么能做到这一点?

准确性是可取的,但可以牺牲性能。潜在地,图表可以有10,000多个节点和/或边缘。

编辑:权重将是大于或等于零的数字。

1 个答案:

答案 0 :(得分:2)

  1. 拓扑排序图。
  2. 将每个图的节点与n元素优先级队列(min-heap)相关联。
  3. 对于每个节点(按排序顺序),从优先级队列中弹出路径权重,添加节点的权重,并将它们传递给每个后代。当节点从其父节点接收权重时,它应将其插入关联的优先级队列。
  4. 对于每个叶节点,从优先级队列中弹出路径权重,添加节点的权重,并将它们插入到一个公共优先级队列中。处理完最后一个节点后,此优先级队列包含“n”个最重量路径的权重。如果与重量一起存储后退指针,则可以恢复这些路径。