婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > python實(shí)現(xiàn)狄克斯特拉算法

python實(shí)現(xiàn)狄克斯特拉算法

熱門標(biāo)簽:原裝電話機(jī)器人 西藏智能外呼系統(tǒng)五星服務(wù) 在哪里辦理400電話號(hào)碼 平頂山外呼系統(tǒng)免費(fèi) 千陽(yáng)自動(dòng)外呼系統(tǒng) 工廠智能電話機(jī)器人 江蘇客服外呼系統(tǒng)廠家 400電話申請(qǐng)服務(wù)商選什么 清遠(yuǎn)360地圖標(biāo)注方法

數(shù)據(jù)結(jié)構(gòu)

1、路由信息

dictRoute = {}
dictRoute[nodeId] = {}
dictRoute[nodeId][nebrId] = distance
操作:
①根據(jù)nodeId找到該node的路由信息
②根據(jù)nebrId找到某一條路由的距離

2、節(jié)點(diǎn)信息

dictNode = {}
dictNode[nodeId] = [shortDis, fatherId, bIsCheck]
操作:
①找到nodes中最短距離的節(jié)點(diǎn)
②查找節(jié)點(diǎn)的shortDis,根據(jù)情況更新shortDis、fatherId
③檢查過(guò)的節(jié)點(diǎn),更新bIsCheck

功能實(shí)現(xiàn)

/* 找到最短距離節(jié)點(diǎn)的Id,已經(jīng)檢查的不計(jì)算在內(nèi) */
def FindShortNodeId(dictNode):
return shortNodeId

/* dikstra算法流程 */
1、找到最短距離節(jié)點(diǎn)Id,并標(biāo)記已檢查過(guò) (如果節(jié)點(diǎn)Id不存在,表示查找完成)
2、得到最短距離節(jié)點(diǎn)的距離
3、輪詢最短距離節(jié)點(diǎn)的鄰居節(jié)點(diǎn)
4、計(jì)算鄰居節(jié)點(diǎn)的新距離、得到原最短距離,進(jìn)行比較
5、如果新距離 原距離,則更新鄰居節(jié)點(diǎn)最短距離
概括為兩步:步驟1 (1)- 找到當(dāng)前最短距離節(jié)點(diǎn)
步驟2(2~5) - 更新最短距離節(jié)點(diǎn)鄰居節(jié)點(diǎn)信息

代碼實(shí)現(xiàn)

import os
import sys

'''
信息輸入:
1、節(jié)點(diǎn)數(shù)目、路由數(shù)目
2、路由信息 
3、開(kāi)始節(jié)點(diǎn)、結(jié)束節(jié)點(diǎn)
'''
nodeNum = 0 # 節(jié)點(diǎn)數(shù)目
routeNum = 0 # 路由數(shù)目
listRoute = [] # 臨時(shí)存儲(chǔ)輸入的路由信息
listNodeId = []# 臨時(shí)存儲(chǔ)節(jié)點(diǎn)id 

nodeIdStart = ''
nodeIdEnd = ''
dictRoute = {} # 解析后的路由信息
dictNode = {} # 節(jié)點(diǎn)信息
# 輸入節(jié)點(diǎn)數(shù)目、路由數(shù)目
strInput = input()
list0 = strInput.split(' ')
nodeNum = int(list0[0])
routeNum = int(list0[1])

# 輸入路由信息
for index in range(routeNum):
 strInput = input()
 listRoute.append(strInput)
 
# 輸入開(kāi)始節(jié)點(diǎn)、結(jié)束節(jié)點(diǎn)
strInput = input()
list0 = strInput.split(' ')
nodeIdStart = list0[0]
nodeIdEnd = list0[1]

# 解析得到節(jié)點(diǎn)Id
listNodeId.append(nodeIdStart)
listNodeId.append(nodeIdEnd)
for index in listRoute:
 list0 = index.split(' ')
 nodeIdA = list0[0]
 nodeIdB = list0[1]
 if nodeIdA not in listNodeId:
  listNodeId.append(nodeIdA) 
 if nodeIdB not in listNodeId:
  listNodeId.append(nodeIdB) 

# 初始化路由信息字典、節(jié)點(diǎn)信息字典
for nodeId in listNodeId:
 # 節(jié)點(diǎn)字典信息
 dictNode[nodeId] = [10000, '', False] # 最短距離、父節(jié)點(diǎn)、是否檢查過(guò)
 # 每個(gè)路由字典創(chuàng)建
 dictRoute[nodeId] = {}
dictNode[nodeIdStart][0] = 0

# 初始化路由信息
for index in listRoute:
 list0 = index.split(' ')
 nodeIdA = list0[0]
 nodeIdB = list0[1]
 dictRoute[nodeIdA][nodeIdB] = int(list0[2])
 dictRoute[nodeIdB][nodeIdA] = int(list0[2])
 
# 打印輸入信息
def PrintInputInfo():
 print('nodeNum routeNum:')
 print(str(nodeNum) + ' ' + str(routeNum))
 print('nodeStart nodeEnd')
 print(nodeIdStart+' '+nodeIdEnd)
 print('route info:')
 for nodeId in dictRoute.keys():
  for nebrId in dictRoute[nodeId].keys():
   print(nodeId+'->'+nebrId+' = '+str(dictRoute[nodeId][nebrId]))
 print('node info:')
 for nodeId in dictNode.keys():
  print(nodeId+':'+str(dictNode[nodeId][0])+' '+dictNode[nodeId][1]+' '+str(dictNode[nodeId][2]))

#PrintInputInfo()

'''
狄克斯特拉實(shí)現(xiàn)
'''
# 找到最短距離節(jié)點(diǎn)id
def FindShortNodeId(dictNode):
 shortNodeId = ''
 shortDis = 10000
 for nodeId in dictNode.keys():
  if dictNode[nodeId][0]  shortDis and dictNode[nodeId][2] == False:
   shortNodeId = nodeId
   shortDis = dictNode[nodeId][0]
 return shortNodeId
 
# 狄克斯特拉算法
shortNodeId = FindShortNodeId(dictNode)
while shortNodeId:
 if shortNodeId == nodeIdEnd:
  break;
 dictNode[shortNodeId][2] = True
 shortDis = dictNode[shortNodeId][0]
 for nebrId in dictRoute[shortNodeId].keys():
  newDis = dictRoute[shortNodeId][nebrId] + shortDis
  if newDis  dictNode[nebrId][0]:
   dictNode[nebrId][0] = newDis
   dictNode[nebrId][1] = shortNodeId
 shortNodeId = FindShortNodeId(dictNode)
 
# 打印結(jié)果
listRst = []
nodeId = nodeIdEnd
while nodeId:
 listRst.append(nodeId)
 nodeId = dictNode[nodeId][1]
listRst.reverse()

strRst = ''
for nodeId in listRst:
 if nodeId == listRst[-1]:
  strRst += nodeId
 else:
  strRst += nodeId + '->'

if dictNode[nodeIdEnd][1] == '':
 print('cant reach '+nodeIdEnd)
else:
 print(strRst)
 print(dictNode[nodeIdEnd][0])

測(cè)試用例及驗(yàn)證

Case1
輸入:
6 4
1 2 2
1 3 4
2 5 3
5 6 2
2 6

輸出:

Case2
輸入:
4 5
S A 6
S B 2
B A 3
A E 1
B E 5
S E

輸出:

Case3(找不到終點(diǎn))
輸入:
6 6
S A 2
S B 1
A C 4
A B 1
B D 2
C D 3
S End

輸出:

Case4
輸入:
6 8
S A 5
S B 1
A C 1
A B 1
B D 5
C D 1
D End 1
C End 3
S End

輸出:

以上就是python實(shí)現(xiàn)狄克斯特拉算法的詳細(xì)內(nèi)容,更多關(guān)于python狄克斯特拉的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python常用外部指令執(zhí)行代碼實(shí)例
  • Python 讀取用戶指令和格式化打印實(shí)現(xiàn)解析
  • 如何安裝并使用conda指令管理python環(huán)境
  • python執(zhí)行CMD指令,并獲取返回的方法
  • Python機(jī)器學(xué)習(xí)之KNN近鄰算法
  • Python機(jī)器學(xué)習(xí)算法之決策樹(shù)算法的實(shí)現(xiàn)與優(yōu)缺點(diǎn)
  • 用Python給圖像算法做個(gè)簡(jiǎn)單應(yīng)用界面
  • Python實(shí)現(xiàn)七大查找算法的示例代碼
  • Python查找算法之插補(bǔ)查找算法的實(shí)現(xiàn)
  • python使用ProjectQ生成量子算法指令集

標(biāo)簽:安慶 西安 錦州 股票 天水 日照 白城 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python實(shí)現(xiàn)狄克斯特拉算法》,本文關(guān)鍵詞  python,實(shí)現(xiàn),狄克,斯特拉,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python實(shí)現(xiàn)狄克斯特拉算法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于python實(shí)現(xiàn)狄克斯特拉算法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美高清www午色夜在线视频| 久久久久久夜精品精品免费| 国产一区在线观看视频| 欧美aaa在线| 国产精品夜夜嗨| 欧美婷婷六月丁香综合色| 欧美日本在线一区| 精品毛片乱码1区2区3区| 成人欧美一区二区三区视频网页| 欧美一区二区在线播放| 久久久久9999亚洲精品| 亚洲午夜在线电影| 国产成人av电影免费在线观看| 91浏览器打开| 久久在线免费观看| 亚洲图片欧美一区| 视频在线观看一区| 国产精品一二三四区| 在线观看日韩av先锋影音电影院| 日韩一级免费观看| 久久理论电影网| 午夜精品视频在线观看| 国产日韩成人精品| 日韩成人一区二区| www.亚洲色图.com| 国产99久久久国产精品免费看| 欧美精品九九99久久| 69精品人人人人| 一区二区免费看| 欧美激情中文字幕一区二区| 免费在线观看成人| 欧美亚洲国产一区二区三区| 国产精品久久毛片av大全日韩| 天堂在线亚洲视频| www.亚洲激情.com| 亚洲国产成人私人影院tom| 欧美欧美午夜aⅴ在线观看| 亚洲国产激情av| 国产成人激情av| 亚洲免费av在线| 色综合久久久久| 亚洲精品少妇30p| 久久久99精品免费观看| 久久99国产精品久久| 欧美本精品男人aⅴ天堂| 91久久精品一区二区二区| 樱桃国产成人精品视频| 欧美午夜精品久久久久久超碰| 成人免费av网站| 亚洲免费在线看| 欧美三级日韩在线| 91麻豆自制传媒国产之光| 亚洲欧美偷拍卡通变态| 欧美唯美清纯偷拍| 日本精品裸体写真集在线观看| 亚洲综合久久久久| 在线播放亚洲一区| 欧美日韩免费观看一区二区三区| 图片区小说区区亚洲影院| 欧美一区二区三区在线观看| 久久看人人爽人人| 日韩精品一区在线| 成人免费福利片| 国产一区美女在线| 国产成人精品亚洲日本在线桃色| 国产在线精品国自产拍免费| 国产米奇在线777精品观看| 97精品国产97久久久久久久久久久久 | 92精品国产成人观看免费| 亚洲丝袜精品丝袜在线| 欧美三级韩国三级日本一级| 亚洲制服欧美中文字幕中文字幕| 欧美手机在线视频| 九九精品视频在线看| 亚洲免费观看在线视频| 国产色一区二区| 欧美一级日韩免费不卡| 不卡视频一二三| 韩国三级在线一区| 国产精品福利电影一区二区三区四区| 欧美一级理论片| 国产成a人无v码亚洲福利| 日韩经典中文字幕一区| 久久亚洲影视婷婷| 日韩欧美综合在线| 欧美丰满高潮xxxx喷水动漫| 色综合久久中文综合久久牛| 国产九九视频一区二区三区| 免费观看在线综合| 日本女优在线视频一区二区| 伊人婷婷欧美激情| 亚洲美女免费在线| 中文字幕一区二区三| 国产女人水真多18毛片18精品视频| 日韩一级完整毛片| 欧美精品aⅴ在线视频| 欧美又粗又大又爽| 色综合久久精品| 日本高清视频一区二区| 日本电影亚洲天堂一区| 色婷婷一区二区| 欧美剧在线免费观看网站| 欧美精品色综合| 91精品国产综合久久久久| eeuss鲁片一区二区三区| 香蕉加勒比综合久久| 亚洲成人av一区| 久久不见久久见中文字幕免费| 日本午夜一本久久久综合| 亚洲福利视频导航| 男女性色大片免费观看一区二区 | 26uuu精品一区二区| 欧美一级黄色大片| 欧美日韩免费观看一区二区三区| 色噜噜久久综合| 欧美一区二区视频在线观看| 精品国产一区二区在线观看| 国产农村妇女毛片精品久久麻豆 | 亚洲最大成人网4388xx| 五月婷婷激情综合| 精品综合久久久久久8888| 成人综合婷婷国产精品久久免费| 成人午夜伦理影院| 欧美日韩一区在线观看| 欧美电视剧在线观看完整版| 国产精品无人区| 亚洲成av人片一区二区三区| 国产伦精品一区二区三区在线观看 | www.亚洲精品| 欧美三级电影网站| 欧美大度的电影原声| 国产精品入口麻豆原神| 亚洲成人久久影院| 国产精品18久久久久久久网站| 91麻豆精品一区二区三区| 欧美哺乳videos| 亚洲国产成人私人影院tom| 欧美高清在线一区二区| 婷婷成人综合网| 成人免费视频国产在线观看| 911国产精品| 欧美成人性战久久| 亚洲一区二区免费视频| 成人一区二区三区在线观看| 欧美日韩精品一区二区| 国产精品福利一区二区三区| 久久精品国产秦先生| 欧美少妇性性性| 亚洲欧洲日韩女同| 丁香网亚洲国际| 久久精子c满五个校花| 亚洲大片在线观看| 国产精品1区二区.| 精品国产免费人成在线观看| 亚洲一二三四区| 国产精品综合av一区二区国产馆| 欧美一区二区三区影视| 五月婷婷另类国产| 欧美亚洲国产一卡| 亚洲一卡二卡三卡四卡| 在线观看免费亚洲| 最新国产精品久久精品| 成人国产一区二区三区精品| 欧美精品一区二区三| 免费成人美女在线观看| 日韩一区二区三区免费看| 国产剧情一区二区三区| 亚洲色大成网站www久久九九| 在线一区二区观看| 亚洲va欧美va人人爽午夜| 日韩精品一区二区三区视频在线观看 | 色94色欧美sute亚洲线路一久| 无吗不卡中文字幕| 亚洲国产精品精华液ab| 欧美在线短视频| 精品无人码麻豆乱码1区2区| 亚洲久草在线视频| 精品国产免费久久| 欧美在线视频你懂得| 蜜臀久久99精品久久久画质超高清| 国产欧美一区二区精品性色超碰 | 久久久精品人体av艺术| 日本韩国一区二区三区视频| 激情综合色综合久久综合| 亚洲图片欧美色图| 国产日韩欧美不卡| 欧美成人一区二区三区| 欧美日韩综合在线| 91在线国产观看| 国产v综合v亚洲欧| 韩国av一区二区三区| 亚洲第一福利一区| 亚洲美女视频一区| 中文无字幕一区二区三区| 日韩欧美成人一区二区| 欧美理论电影在线| 欧美日韩一二三| 在线观看一区日韩| 成人晚上爱看视频| 国产一区在线精品|