没事撸点算法——dijkstra算法(python)

    数据结构地提出是为了更好地解决数据存储问题,图数据结构的提出是为了解决生活中的复杂网络问题。

    在Python中,图的表示方式一般使用字典以及列表完成。

#使用字典列表展现图
graph={
       1:{2:1,3:12},
       2:{3:9,4:3},
       3:{5:5},
       4:{3:4,5:13,6:15},
       5:{6:4},
       6:{6:0}
       }

Dijkstra算法一般是用于解决求解最短路径问题,属于盲目搜索算法。

原理:不断求解起始节点到其他节点的最短路径成本。

First:

引入cost字典,表示对于起始点到每一个其他节点的成本。eg:cost[2]=1。表示起始点(这里设定为节点1)到节点2的成本需要1。

引入visted列表,记录已访问的节点。eg:起始visted=[1];

引入Parents字典,记录已求解最短路径节点的前一个节点。eg:假设至3节点的最短路径为1-2-4-3,则parents[3]=4;

Second:算法流程(以上面的网络图为例)

cost初始值为1节点到各个节点的成本

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值