python付きfloyd-walshアルゴリズム
7671 ワード
最短パスアルゴリズム
一般的な最短パスアルゴリズムには、複数のパスアルゴリズムがあります.複数の曲線アルゴリズムは、1つのノードから他のすべてのノードまでの最短距離を求めるアルゴリズムです.これに対してflowersalアルゴリズムは,すべてのノードから他のすべてのノードへの最短距離を求めるアルゴリズムである.「流水アルゴリズム」を実装するのは簡単なので、図面にすべての距離情報が必要な場合は、「流水アルゴリズム」を使用することをお勧めします.
floyd-walshアルゴリズム
flowersalアルゴリズムを以下の問題で実装することを試みる.
ケビン・ベーコンの6次法則
n, m = map(int, input().split())
matrix = [[n]*n for _ in range(n)] # INF를 n으로 표현했습니다.
# 최단 거리는 노드의 개수보다 커질수 없기 때문입니다.
for _ in range(m):
a,b = map(int, input().split())
matrix[a-1][b-1] = matrix[b-1][a-1] = 1 # 연결된 노드끼리의 거리는 모두 1입니다.
# 무방향 그래프이므로 대각선 대칭으로 값을 입력합니다.
for i in range(n):
matrix[i][i] = 0 # 대각선을 0으로 초기화
for k in range(n):
for i in range(n):
for j in range(n):
if matrix[i][j] > matrix[i][k] + matrix[k][j]:
matrix[i][j] = matrix[i][k] + matrix[k][j]
result = []
for i in (matrix):
result.append(sum(i))
print(result.index(min(result))+1)
Reference
この問題について(python付きfloyd-walshアルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@tks7205/플로이드-워셜-알고리즘-with-pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol