计算机网络习题(Dijikstra算法)
题目描述:
利用Dijikstra算法求A到各点的最短路径。
知识点分析
(1)初始化两个集合(S, U)(S为只有初始顶点点A的集合,U为其他顶点集合);
(2)如果U不为空,对U集合顶点进行距离的排序,并取出距离A最近的一个顶点C;
i. 将顶点C的纳入S集合
ii.更新通过顶点C到达U集合所有点的距离(如果距离更小则更新,否则不更新)
iii. 重复2步骤
(3) 直到U集合为空,算法完成。
题目解答
python代码:
import heapq #提供堆算法
import math
graph = {
"A":{
"B":5, "C":1},#字典,和A相连的是B(5),C(1)
"B":{
"A":5, "C":2, "D":1},