1. 首页
  2. Python

学python最重要的就是算法,给你阿里最详细的Python算法题附答案

“u003Cdivu003Eu003Cpu003Eu003Cstrongu003EPython数据结构与算法图的最短路径(Dijkstra算法)u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpreu003E# Dijkstra算法——通过边实现松弛u003Cbru003E# 指定一个点到其他各顶点的路径——单源最短路径u003Cbru003E# 初始化图参数u003Cbru003EG = {0:{0:0, 1:2, 2:6, 3:4},u003Cbru003E 1:{0:INF, 1:0, 2:3, 3:INF},u003Cbru003E 2:{0:7, 1:INF, 2:0, 3:1},u003Cbru003E 3:{0:5, 1:INF, 2:12, 3:0}u003Cbru003E }u003Cbru003E# 每次找到离源点最近的一个顶点,然后以该顶点为重心进行扩展u003Cbru003E# 最终的到源点到其余所有点的最短路径u003Cbru003E# 一种贪婪算法u003Cbru003Edef Dijkstra(G,v0,INF=999):u003Cbru003E “”” 使用 Dijkstra 算法计算指定点 v0 到图 G 中任意点的最短路径的距离u003Cbru003E INF 为设定的无限远距离值u003Cbru003E 此方法不能解决负权值边的图u003Cbru003E “””u003Cbru003E book = set()u003Cbru003E minv = v0u003Cbru003E # 源顶点到其余各顶点的初始路程u003Cbru003E dis = dict((k,INF) for k in G.keys())u003Cbru003E dis[v0] = 0u003Cbru003E while len(book)<len(G):u003Cbru003E book.add(minv) # 确定当期顶点的距离u003Cbru003E for w in G[minv]: # 以当前点的中心向外扩散u003Cbru003E if dis[minv] + G[minv][w] < dis[w]: # 如果从当前点扩展到某一点的距离小与已知最短距离 u003Cbru003E dis[w] = dis[minv] + G[minv][w] # 对已知距离进行更新u003Cbru003E dis_min = INF # 从剩下的未确定点中选择最小距离点作为新的扩散点u003Cbru003E for v in dis.keys():u003Cbru003E if v in book: continueu003Cbru003E if dis[v] < new: u003Cbru003E dis_min = dis[v]u003Cbru003E minv = vu003Cbru003E return disu003Cbru003Edistance = Dijkstra(G,0)u003Cbru003Eprint(distance)u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fdfic-imagehandleru002F7fb6059a-4a5b-431d-a299-8812eb08bd80″ img_width=”1024″ img_height=”768″ alt=”学python最重要的就是算法,给你阿里最详细的Python算法题附答案” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003EPython数据结构与算法图的最短路径(Floyd-Warshall算法)u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E使用Floyd-Warshall算法 求图两点之间的最短路径u003Cu002Fpu003Eu003Cpu003E不允许有负权边,时间复杂度高,思路简单u003Cu002Fpu003Eu003Cpreu003Eimport numpy as npu003Cbru003E# 城市地图(字典的字典)u003Cbru003E# 字典的第1个键为起点城市,第2个键为目标城市其键值为两个城市间的直接距离u003Cbru003E# 将不相连点设为INF,方便更新两点之间的最小值u003Cbru003EINF = 99999u003Cbru003EG = {0:{0:0, 1:2, 2:6, 3:4},u003Cbru003E 1:{0:INF, 1:0, 2:3, 3:INF},u003Cbru003E 2:{0:7, 1:INF, 2:0, 3:1},u003Cbru003E 3:{0:5, 1:INF, 2:12, 3:0}u003Cbru003E }u003Cbru003Epath = [[ -1 for i in range(len(G))] for i in range(len(G))]u003Cbru003E# 算法思想:u003Cbru003E# 每个顶点都有可能使得两个顶点之间的距离变短u003Cbru003E# 当两点之间不允许有第三个点时,这些城市之间的最短路径就是初始路径u003Cbru003E# Floyd-Warshall算法核心语句u003Cbru003E# 分别在只允许经过某个点k的情况下,更新点和点之间的最短路径u003Cbru003Efor k in G.keys(): # 不断试图往两点i,j之间添加新的点k,更新最短距离u003Cbru003E for i in G.keys():u003Cbru003E for j in G[i].keys():u003Cbru003E if G[i][j] > G[i][k] + G[k][j]:u003Cbru003E G[i][j] = G[i][k] + G[k][j]u003Cbru003E path[i][j] = ku003Cbru003Efor i in G.keys():u003Cbru003E print(list(G[i].values()))u003Cbru003Eprint(np.array(path))u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E最后,小编为大家准备了9月份新出的python自学视频教程,共计约200G,免费分享给大家!u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E2019 Python自学教程全新升级为《Python+数据分析+机器学习》,九大阶段能力逐级提升,打造技能更全面的全栈工程师。u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002Fbd802f1583c048ecbe762cfb885d7e70″ img_width=”1080″ img_height=”240″ alt=”学python最重要的就是算法,给你阿里最详细的Python算法题附答案” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F3817ee8e6d1c472b8714d05e4f7a4125″ img_width=”1080″ img_height=”360″ alt=”学python最重要的就是算法,给你阿里最详细的Python算法题附答案” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fc2fdd66f08084a36a5641bf49bfda032″ img_width=”444″ img_height=”349″ alt=”学python最重要的就是算法,给你阿里最详细的Python算法题附答案” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fee42c28d24aa4897b1fae97f2d5e4311″ img_width=”561″ img_height=”485″ alt=”学python最重要的就是算法,给你阿里最详细的Python算法题附答案” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E获取方式:转发本文+关注 并 私信小编 “ 资料 ”,即可免费获取哦!u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cu002Fdivu003E”

原文始发于:学python最重要的就是算法,给你阿里最详细的Python算法题附答案

主题测试文章,只做测试使用。发布者:醒百年,转转请注明出处:http://www.cxybcw.com/13532.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code