희소 그래프에서 모든 최단 경로를 찾는 가장 빠른 알고리즘은 무엇입니까?


24

와 같이 꼭지점과 모서리가 있는 비가 중, 무 방향 그래프 에서 그래프에서 가장 짧은 경로를 찾는 가장 빠른 방법은 무엇입니까? 이지만 반복 당 매우 빠른 Floyd-Warshall보다 빠르게 수행 할 수 있습니까 ?E 2 V > E O ( V 3 )VE2V>EO(V3)

그래프에 가중치가 부여되면 어떻습니까?

답변:


32

이것은 비가 중 그래프이므로 그래프의 모든 정점 에서 너비 우선 탐색 (BFS)을 실행할 수 있습니다 . 각 BFS 실행은 시작 정점에서 다른 모든 정점까지의 최단 거리 (및 경로)를 제공합니다. 하나 BFS위한 시간 복잡도는 부터 하여 희소 그래프이다. 이 실행 번이나 당신에게 제공 시간 복잡도를.O ( V + E ) = O ( V ) E = O ( V ) V O ( V 2 )V영형(V+이자형)=영형(V)이자형=영형(V)V영형(V2)

가중 유도 그래프의 경우 Yuval에서 제안한 Johnson의 알고리즘 이 희소 그래프에 가장 빠릅니다. 그것은 소요 귀하의 경우로 밝혀 . 가중 비 방향 그래프의 경우 각 노드에서 Dijkstra의 알고리즘 을 실행 하거나 각 비 방향 에지를 두 개의 반대 방향 에지로 바꾸고 Johnson 알고리즘을 실행할 수 있습니다. 두 가지 모두 희소 사례에 대해 위의 Johnson 알고리즘과 동일한 무증상 시간을 제공합니다. 또한 위에서 언급 한 BFS 접근 방식은 유향 그래프와 무향 그래프 모두에서 작동합니다.O ( V 2 로그 V )영형(V2로그V+V이자형)영형(V2로그V)



7

희소 행렬에서 더 빠른 Floyd-Warshall 버전을 만들 수 있습니다.

먼저,이 알고리즘의 기능을 기억해 봅시다 :

을 거리 행렬로 하자 . 알고리즘의 시작에서 M I , J는 에지의 무게 j는 . 이 에지 않는다면없는 M I를 , J가 = .나는,j나는j나는,j=

알고리즘에는 단계가 있습니다. 알고리즘의 k 단계 에서 모든 노드 쌍 i , j에 대해V케이나는,j

Mi,j{나는,j,나는,케이+케이,j}.

분명한 경우 또는 일절 업데이트 요구가 수행 될 것이다. 따라서 알고리즘의 첫 번째 단계 에서 및 나타내는 비교 만 수행하면됩니다. 번째 노드 의 수신 및 송신 에지 수 알고리즘이 진행됨에 따라 점점 더 많은 행렬 엔트리 가 채워진다. 따라서 마지막 단계는 훨씬 오래 걸릴 수 있습니다.나는,케이=케이,j=degin(k)degout(k)degin(k)degout(k)kM

행렬 의 번째 행과 열 에서 무한대가 아닌 셀에 대해서만 반복하는 효율적인 방법이 필요합니다 . 이것은 모든 노드에 대해 수신 및 발신 에지 세트를 유지하여 수행 할 수 있습니다.k

알고리즘의 첫 번째 단계는 희소성에서 큰 이점을 얻을 수 있습니다. 예를 들어, 사용하여 임의로 구성된 그래프 는 첫 번째 반복 ( )이 단계에 불과 함을 나타 냅니다. 그래프가 많은 연결된 구성 요소로 나뉘면 행렬 은 알고리즘 전체에서 비교적 희소하게 유지되며 총 런타임은 만큼 낮을 수 있습니다 . 반면에 그래프에 연결된 구성 요소가 하나만 있으면 마지막 반복걸릴 것으로 예상되는 단계. 이 경우 총 런타임은 있습니다. 스파 스가 아닌 버전만큼 큽니다.E=O(V)k=0O(1)MO(V)k=|V|O(V2)O(V3)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.