병렬 단일 소스 최단 경로 알고리즘
Parallel single-source shortest path algorithm알고리즘 그래프 이론의 중심 문제는 가장 짧은 경로 문제다.최단 경로 문제의 일반화 중 하나는 단일 소스-최단 경로(SSSP) 문제로 알려져 있는데, 이는 그래프에서 모든 정점 쌍 사이의 최단 경로를 찾는 것으로 구성된다.디크스트라의 알고리즘처럼 이 문제를 해결하는 고전적인 순차 알고리즘이 있다.그러나 이 글에서는 이 문제를 해결하는 두 개의 병렬 알고리즘을 제시한다.
이 문제의 또 다른 변화는 병렬 접근방식인 병렬 올페어 최단 경로 알고리즘을 가진 올페어-짧은 경로(APSP) 문제다.
문제 정의
Let =( , ) 은(는) = n V 노드와 = m E 가장자리가 있는 방향 그래프여야 한다. 을(를) 구별되는 꼭지점("소스"라고 함)으로 하고 을(를) 각 에지에 음이 아닌 실제 값 가중치를 할당하는 함수로 한다.단일 소스-최단 문제의 목적은 에서 도달할 수 있는 모든 정점 s}에 에서 까지의 최소 중량 경로의 가중치를 계산하는 것이다ted ) .경로의 무게는 가장자리의 무게의 합이다. , ) := 이(가) [1]에서 연결할 수 없는
순차적 최단 경로 알고리즘은 일반적으로 모든 노드에 대한 임시 거리 유지를 기반으로 반복적 라벨링 방법을 적용하며, tent( ) 은(는 항상 s}에서 {\까지의 일부 경로 가중치 또는 그에 따라 상위bound on . Tentative distances are improved by performing edge relaxations, i.e., for an edge the algorithm sets [1]
모든 병렬 알고리즘에 대해 우리는 동시 읽기 및 동시 쓰기를 사용하는 PRAM 모델을 가정할 것이다.
델타 스텝 알고리즘
델타 스텝 알고리즘은 라벨 보정 알고리즘으로, 모든 임시 거리가 고정될 때 알고리즘의 마지막 단계까지 에지 완화를 통해 정점의 임시 거리를 여러 번 교정할 수 있음을 의미한다.
알고리즘은 {\ 크기의 거리 범위를 나타내는 버킷의 배열에서 임시 거리로 적격 노드를 유지한다 각 단계 동안 알고리즘은 첫 번째 비어 있지 않은 버킷의 모든 노드를 제거하고 최대 {\ .높이의 모든 무게의 모든 나가는 가장자리를 완화한다.각각의 출발 노드가 확실히 정착된 후에야 그녀의 체중은 완화된다.[1]Δ 매개 변수는 "단계 너비" 또는 "버킷 너비"[1]라고도 하는 양의 실수다.
병렬은 첫 번째 비어 있지 않은 버킷의 모든 노드를 동시에 제거하고 나가는 빛 가장자리를 한 단계로 이완시킴으로써 얻어진다.노드 이(가) 최종 거리 값이 아닌 현재 버킷 [ 에서 제거된 경우, 일부 후속 단계에서 이(가) B[ 에 삽입되고 v의 나가는 라이트 가장자리가 된다.재입고지금까지 [ 에서 제거된 모든 노드에서 발산되는 나머지 무거운 가장자리는 [ 이(가) 마침내 비어 있을 때 한 번 이완된다.이후 알고리즘은 비어 있지 않은 다음 버킷을 검색하고 위에서 설명한 대로 진행한다.[1]
소스 노드 에 대한 최대 최단 경로 는 L ) : { , ): ,)( , v ) < 약칭 [1] 또한 경로의 크기는 경로의 가장자리 수로 정의된다.
라이트 에지와 헤비 에지를 구분하는데, 라이트 에지는 최대 의 중량을 가지며 헤비 는Δ {\보다 큰 중량을 갖는다.
델타 스테핑 알고리즘은 다음과 같다.
1 V {\in } do 텐트do ) :∞= 2 r x( 0) (*거리 0*의 소스 노드 삽입) 3인 반면while t () 은(*A 위상:일부 대기열에 있는 노드 왼쪽 (a*) 4 i {≥ : [ ] ∅ } i\}}**소형 비빈 버킷(b)*) 5 R {\ R}*아직 버킷 B[i]에 대해 노드가 삭제되지 않음) 6 반면 [ i ≠ ]\] (*New phase (c)*) 7 (*Create requests for light edges (d)*) 8 (*Remember deleted nodes (e)*) 9 (*Current bucket empty*) 10 (*Do relaxations, nodes may (re)enter B[i] (f)*) 11 (*Create requests for heavy edges (g)*) 12 (*Relaxations will not refill B[i] (h)*) 13 14 Function :set of Request 15 return 16 17 Procedure 18 foreach(w, 음)∈ Req{\displaystyle(w,x)\in Req}니 re에 내가 x(w, 음){relax(w,x)\displaystyle}1920절차 re에 내가 x(w, 음){relax(w,x)\displaystyle}(B에서 *Insert 또는 이동 및 w만약 x<, \operatorname{텐트}(w)*)21만약 x <. 텐트를 세우다(w){\displaystyle x<, \operatorname{톤멤머는} 그 후 22B [ 텐트 () / := [ 텐트 () / ] ] ∖ { {\ B (*If in, remove from old bucket*) 23 새 버킷에 삽입*) 텐트 )
예
다음은 작은 예시 그래프의 알고리즘 실행에 대한 단계별 설명이다.소스 정점은 정점 A이고 은(는) 3과 같다.
알고리즘을 시작할 때, 소스 꼭지점 A를 제외한 모든 정점에는 무한 임시 거리가 있다.
Bucket has range , bucket has range and bucket has range .
버킷 [ 에는 정점 A가 포함되어 있다.다른 양동이는 모두 비어 있다.
| 노드 | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 잠정거리 | 0 |
알고리즘은 A와 B, G, 를 연결하는 가장자리인 [ 0 에 입사하는 모든 빛 가장자리를 완화시킨다
정점 B, G, E는 B[ 에 삽입된다 [ 이(가) 여전히 비어 있기 때문에 A와 D를 연결하는 무거운 가장자리도 이완된다.
| 노드 | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 잠정거리 | 0 | 3 | 5 | 3 | 3 |
B[ B에 발생한 조명 가장자리가 완화되었다.꼭지점 는 버킷 [ 2] 에 삽입된다 이제 [ 이(가) 비어 있으므로 E와 F를 연결하는 무거운 가장자리가 완화될 수 있다.
| 노드 | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 잠정거리 | 0 | 3 | 6 | 5 | 3 | 8 | 3 |
다음 단계에서는 버킷 [ ] 스타일 을(를) 조사하지만, 잠정적인 거리는 수정하지 않는다.
알고리즘이 종료된다.
런타임
앞에서 언급한 바와 같이 은(는) 최대 최단 경로 중량이다.
최대 {\의 총 중량과 엣지 반복이 없는 - 경로를 호출해 봅시다.
Let denote the set of all node pairs connected by some -path and let . Similarly, define as the set of triples such that and is a light edge and let .
순차 델타 스텝 알고리즘은 최대 (+ m+ + +L / ) 스타일 가 필요하다 작업.단순한 병렬화는 시간 Δ Δ log n에 실행된다.[1]
If we take for graphs with maximum degree and random edge weights uniformly distributed in , the sequential version of the algorithm needs total averag 시간과 단순 병렬화는 O(d 2 L l log ) 에 걸린다[1]
그래프 500
Graph 500 벤치마크의 세 번째 계산 커널은 단일 소스 최단 경로 계산을 실행한다.[2]Graph 500 벤치마크의 기준 구현은 이 계산에 델타 스텝 알고리즘을 사용한다.
반지름 스텝 알고리즘
반지름 스텝 알고리즘의 경우 G G이(가) 리디렉션되지 않은 것으로 가정해야 한다.
알고리즘에 대한 입력은 , 비방향 그래프, 소스 꼭지점 및 : V →R+ [3]알고리즘은 의 s{\로부터 증가하는 거리에 있는 정점을 방문한다 각 i{\i에서 Radius-Steping은 - {\ :1에서 {\ d_{까지 에 중심을 맞춘다은(는) - 1 < d (( , ) [3]
다음은 유사 부드의 반지름 스테핑 알고리즘이다.
입력: 그래프 = , E, w) G 정점 r 소스 s 출력:The graph distances from . 1 , 2 foreach do (v)\leftarrow w(s,v)}, S0←{s}{\displaystyle S_{0}\leftarrow \{s\}}, 나는 ← 1{\displaystyle i\leftarrow 1}3S나는 − 1<>V{\displaystyle S_{i-1}<>V}나는 VS∖ 나는 1{δ(v)+r(v)}{\displaystyle d_{나는}\leftarrow \min −_{v\in V\setminus S_{∈분 v← 4d.i-1}} 5 repeat 6 foreach s.t do 7 foreach do 8 9 until no was updated 10 11 12 return
For all , define to be the neighbor set of S.표준 너비 우선 검색 또는 Dijkstra 알고리즘을 실행하는 동안, 프론티어는 방문한 모든 정점의 인접 집합이다.[3]
Radius-Stepping 알고리즘에서는 하위 단계 수를 경계하는 것을 목표로 각 라운드에서 새로운 라운드 거리 가 결정된다.알고리즘은 각 꼭지점에 대해 r을 취하고 프런티어(4호선)의 모든 에 대해 최소)+ r)를 취하여 단계 에서 를 선택한다.
그런 다음 5-9호선은 d 미만의 모든 정점이 해결될 때까지 Bellman-Ford 하위 단계를 실행한다. 다음 d 내의 정점을 방문 세트 i 에 추가한다[3]
예
다음은 작은 예시 그래프의 알고리즘 실행에 대한 단계별 설명이다.소스 정점은 정점 A이며 모든 정점의 반경은 1과 같다.
알고리즘의 시작 부분에서 소스 꼭지점 A를 제외한 모든 정점은 가성모드에서 로 표시되는 무한 임시 거리를 가진다.
A의 모든 이웃은 긴장을 풀고 ={ A
| 노드 | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 잠정거리 | 0 | 3 | 5 | 3 | 3 |
변수 }을 4와 같도록 선택하고 정점 B, E, G의 인접을 이완시킨다.
| 노드 | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 잠정거리 | 0 | 3 | 6 | 5 | 3 | 8 | 3 |
변수 }}은 6과 같도록 선택되며 값은 변경되지 않는다. ={
변수 를 9와 같도록 선택하며 값이 변경되지 않는다. ={ A
알고리즘이 종료된다.
런타임
After a preprocessing phase, the radius stepping algorithm can solve the SSSP problem in work and depth, for . In addition, the preprocessing phase takes work and depth, or work and p 깊이.[3]
참조
- ^ a b c d e f g h Meyer, U.; Sanders, P. (2003-10-01). "Δ-stepping: a parallelizable shortest path algorithm". Journal of Algorithms. 1998 European Symposium on Algorithms. 49 (1): 114–152. doi:10.1016/S0196-6774(03)00076-2. ISSN 0196-6774.
- ^ "Graph 500".
{{cite web}}: CS1 maint : url-status (링크) - ^ a b c d e Blelloch, Guy E.; Gu, Yan; Sun, Yihan; Tangwongsan, Kanat (2016). "Parallel Shortest Paths Using Radius Stepping". Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures - SPAA '16. New York, New York, USA: ACM Press: 443–454. doi:10.1145/2935764.2935765. ISBN 978-1-4503-4210-0.