一、实验目的
本文的实验目的是通过编程实践,掌握并应用Dijkstra(迪杰斯特拉)算法和Floyd(弗洛伊德)算法来解决图论中的最短路径问题。
二、实验内容
- 数据准备:
- 使用邻接表的形式定义两个图
graph_dijkstra
和graph_floyd
,图中包含节点以及节点之间的边和对应的权重。
- 使用邻接表的形式定义两个图
- 算法实现:
- 实现Dijkstra算法,从指定的源节点(节点0)出发,计算并输出到图中其他所有节点的最短距离及路径。
- 实现Floyd算法,计算并输出图中任意两点之间的最短距离及路径。
- 结果输出:
- 对于Dijkstra算法,输出从源节点(节点0)到指定目标节点(如节点4)的最短距离和路径。
- 对于Floyd算法,输出图中任意两点(如节点0到节点4)之间的最短距离和路径,以验证算法的正确性和有效性。
三、实验演示
1.Dijkstra算法&实验结果截图:
#Dijkstra:
import heapq
def dijkstra(graph, start):
distances = {node: float('infinity') for node in graph}
distances[start] = 0
p