数据结构复习(python)——狄克斯特拉算法(Dijkstra)

本文介绍了使用Python实现狄克斯特拉算法来找到图中从一个节点到另一个节点的最短路径。详细阐述了算法流程,并通过示例说明了如何准备数据结构,包括两个散列表来描述节点连接和距离。还提到了算法的限制,如不适用于负权值图和有环图,并推荐了在这些情况下的替代算法。
摘要由CSDN通过智能技术生成

学习材料

《算法图解》第7章

适用情景

找出从一个节点到另一个节点的最短(快)路径

准备工作

对一个带权图进行描述,可使用两个散列表(字典),其中一个散列表用来描述每个结点的指向及权值,对于一个节点指向两个及以上的节点的情况,可使字典嵌套;另一个散列表用来描述从“起点”开始到其他节点的距离,若起点未与某个节点直接相连,在初始时把这段距离置为无穷大。

举例:图及其对应散列表如下

               图

graph={}
graph["start"]={}
graph["start"]["A"]=5
graph["start"]["B"]=2
graph["A"]={}
graph["A"]["C"]=4
graph["A"]["D"]=2
graph["B"]={}
graph["B"]["A"]=8
graph["B"]["D"]=7
graph["C"]={}
graph["C"]["fin"]=3
graph["C"]["D"]=6
graph["D"]={}
graph["D"][
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值