최 단 경로 알고리즘 - pyth 구현
12776 단어 데이터 구조
inf = float('inf')
def dijkatra(grah, start):
#
nodeA = [i for i in range(len(grah))]
nodeA.remove(start)
#
nodeS = [start]
#
res = {}
lujin = {}
# , res
firstNode = inf
for i in range(len(grah[start])):
if grah[start][i] < firstNode:
firstNode = grah[start][i]
res[i] = firstNode
lujin[i] = str(start)+','+str(i)
nodeS.append(i)
nodeA.remove(i)
while nodeA:
for i in nodeA:
tmp = inf
reslujin = ''
for j in nodeS:
if j != start:
distance = res[j]+grah[j][i]
if distance < tmp:
tmp = distance
reslujin = str(lujin[j])+','+str(i)
nodeA.remove(i)
nodeS.append(i)
res[i] = tmp
lujin[i] = reslujin
print(res)
print(lujin)
if __name__ == '__main__':
inf = float('inf')
grah = [[inf, 10, inf, inf,5],[inf, inf, 1, inf, 2],[inf, inf, inf, 4, inf],
[7, inf, 6, inf, inf],[inf,3, 9, 2, inf]]
dijkatra(grah, 0)
Floyd 알고리즘
def floyd(grah):
nodes = len(grah[0])
for i in range(nodes):
for j in range(nodes):
if j == i:
continue
for k in range(nodes):
tmp = grah[j][i] + grah[i][k]
if grah[j][k] > tmp:
grah[j][k] = tmp
print(grah)
if __name__ == '__main__':
inf = float('inf')
grah = [[0, 6, 13],[10, 0, 4],[5, inf, 0]]
floyd(grah)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.