以下是详细步骤。
- 创建大小为 V 的最小堆,其中 V 是给定图中的顶点数。最小堆的每个节点包含顶点编号和顶点的距离值。
- 以源顶点为根初始化最小堆(分配给源顶点的距离值为0)。分配给所有其他顶点的距离值为 INF(无限)。
- 当最小堆不为空时,执行以下操作:
- 从最小堆中提取具有最小距离值节点的顶点。令提取的顶点为u。
- 对于 u 的每个相邻顶点 v,检查 v 是否在最小堆中。如果v在Min Heap中并且距离值大于uv的权重加上u的距离值,则更新v的距离值。
让我们通过下面的例子来理解。令给定的源顶点为 0
最初,源顶点的距离值为 0,所有其他顶点的距离值为 INF(无穷大)。因此,从最小堆中提取源顶点,并更新与 0(1 和