使用堆/优先级队列来表示有向加权图

时间:2017-11-12 04:33:07

标签: c data-structures heap priority-queue

我无法直观地查看此问题。

所以我有一个有向加权图。我需要使用Dijskra算法扫描此图并打印出最短路径。我必须使用堆/优先级队列,根据我目前的知识,我知道这些是相同的。

但是,图形可以有2个以上的子节点,而堆只能有2个子节点。当我把它放入堆格式时,其他子节点(边缘)会发生什么?

1 个答案:

答案 0 :(得分:0)

堆的表示无论如何都与图的结构无关。

您正在使用图表。您需要找到具有最小距离的顶点,然后使用它来确定距离它的最小距离。 Heap正在帮助你获得那件事。没有比这更好的了。

在堆中,图层不代表图层的层次结构,它只是将堆层与任何节点的值小于它的子的属性相关联。而已。图中的兄弟可能在堆中处于父子关系中。

您无需考虑使堆工作或使Dijkstra也需要模拟堆中的图形结构。它不是这样做的方式。(你也不能这样做。)

当我将其放入堆格式时,其他子项(边缘)会发生什么?

  • 什么都不会发生。只要您使用适当的密钥插入堆中,它就能正常工作。而已。