Pythonは、ディ杰ステラアルゴリズムを実装し、最短パスのコード例を生成します。
1638 ワード
def Dijkstra(network,s,d):# s-d ,
print("Start Dijstra Path……")
path=[]#s-d
n=len(network)# ,
fmax=999
w=[[0 for i in range(n)]for j in range(n)]# , 0→max
book=[0 for i in range(n)]#
dis=[fmax for i in range(n)]#s
book[s-1]=1# 1 , 0
midpath=[-1 for i in range(n)]#
for i in range(n):
for j in range(n):
if network[i][j]!=0:
w[i][j]=network[i][j]#0→max
else:
w[i][j]=fmax
if i==s-1 and network[i][j]!=0:# network[i][j]
dis[j]=network[i][j]
for i in range(n-1):#n-1 , s
min=fmax
for j in range(n):
if book[j]==0 and dis[j]<min:#
min=dis[j]
u=j
book[u]=1
for v in range(n):#u
if dis[v]>dis[u]+w[u][v]:
dis[v]=dis[u]+w[u][v]
midpath[v]=u+1#
j=d-1#j
path.append(d)# , d,
while(midpath[j]!=-1):
path.append(midpath[j])
j=midpath[j]-1
path.append(s)
path.reverse()#
print(path)
#print(midpath)
print(dis)
#return path
network=[[0,1,0,2,0,0],
[1,0,2,4,3,0],
[0,2,0,0,1,4],
[2,4,0,0,6,0],
[0,3,1,6,0,2],
[0,0,4,0,2,0]]
Dijkstra(network,1,6)
以上はPythonがディ杰ステラアルゴリズムを実現し、最短パスを生成する例示的なコードの詳細です。Pythonがディステラアルゴリズムを実現するための詳細については、他の関連記事に注目してください。