플로이드 알고리즘 예제

플로이드 워샬 알고리즘은 모든 쌍 최단 경로 문제를 해결하기 위한 것입니다. 문제는 주어진 가장자리 가중 방향 그래프에서 모든 정점 쌍 사이의 짧은 거리를 찾는 것입니다. 플로이드 워샬 알고리즘 첫 번째 단계로 입력 그래프 매트릭스와 동일한 솔루션 매트릭스를 초기화합니다. 그런 다음 모든 정점을 중간 정점으로 고려하여 솔루션 행렬을 업데이트합니다. 아이디어는 하나씩 모든 정점을 선택하고 가장 짧은 경로에서 중간 정점으로 선택한 정점을 포함하는 모든 가장 짧은 경로를 업데이트하는 것입니다. 정점 번호 k를 중간 정점으로 선택하면 정점 {0, 1, 2, .. k-1}을 중간 정점으로 이미 고려했습니다. 소스 와 대상 정점의 모든 쌍(i, j)에 대해 두 가지 가능한 경우가 있습니다. 1) k는 i에서 j까지의 가장 짧은 경로에서 중간 정점이 아닙니다. 우리는 dist[i][j]의 가치를 있는 상태로 유지합니다. 2) k는 i에서 j까지의 가장 짧은 경로의 중간 정점입니다.

dist[i][k][k]+dist[k][j]]로 dist[i][k][j]의 값을 업데이트합니다[i][j] > dist[i][k][k][k][k][j] [3] 그러나, 그것은 본질적으로 이전에 버나드 로이에 의해 출판 된 알고리즘과 동일 [4] 또한 스티븐 워샬에 의해 1962 [5] 그래프의 전이 폐쇄를 찾기위한,[6] 클레인의 알고리즘과 밀접하게 관련이있다 (1956 년에 출판) 결정적 유한 자동 오토마톤을 정규식으로 변환합니다. [7] 3개의 중첩 된 포 루프로 알고리즘의 현대 제형은 1962 년에 피터 인저먼 (Peter Ingerman)에 의해 처음 기술되었습니다. [8] n {디스플레이 스타일 n} | V | {디스플레이 스타일 | V |} . 모든 n 2 {디스플레이 스타일 n^{2}} s h o r t e s t P t t t h (i , j, k) {표시 스타일 mathrm {shortestPath} (i, j, k)} (모든 i {displaystyle i} 및 j {displaystyle j} s h 의 s h o t t t t t t h , j , k – 1) {표시 스타일 mathrm {shortestPath} (i, j, k-1)} 2 n 2 {디스플레이 스타일 2n^{2}} 작업이 필요합니다. 우리는 s h o r t e t t T T T h (i , j , 0) = e d g e C o t (i , j) {displaystyle mathrm {shortestPath} (i,j,0)=mathrm {edgeCost} (i,j)}}의 시퀀스를 계산하고 n {displaystyle n} matrices s h h r h. t P a h (i , j , 1) {displaystyle mathrm {shortestPath} (i,j,1)} , s h o r t e t t T T t h (i , j , 2) {displaystyle mathrm {shortestPath} (i,j,2)} {displaystyle ldots } , s h o r t e t t t t t t t hh (i , j , n) {디스플레이 스타일 mathrm {shortestPath} (i,j,n)} 사용된 총 작업 수는 n2 n 2 = 2 {디스플레이 스타일 ncdot 2n^{{2}=2n^{{} 따라서 알고리즘의 복잡성은 Θ (n 3) {디스플레이 스타일 Theta (n^{3})}입니다. 또한 빠른 행렬 곱셈을 사용하여 조밀한 그래프에서 모든 쌍의 최단 경로 계산 속도를 높이는 알려진 알고리즘도 있지만 일반적으로 에지 가중치에 대한 추가 가정(예: 작은 정수이어야 함)을 가정합니다. [14] [15] 또한, 실행 시간에 대한 높은 일정한 요인으로 인해 매우 큰 그래프에 대한 Floyd-Warshall 알고리즘에 대한 속도 향상만 제공할 수 있습니다.

음수 주기는 가장자리가 음수 값으로 합산되는 주기입니다. 음수 주기의 일부를 형성하는 정점 i {displaystyle i} 및 j {displaystyle j}의 모든 정점 쌍 사이에는 가장 짧은 경로가 없습니다. 수치적으로 의미 있는 출력의 경우 Floyd-Warshall 알고리즘은 음의 주기가 없다고 가정합니다. 그럼에도 불구하고, 음의 주기가 있는 경우, 플로이드-워샬 알고리즘을 사용하여 이를 감지할 수 있습니다.

Posted in Uncategorized