1. Dijkstra's Algorithm 이란?
Dijkstra Algorithm 은 동적 프로그래밍을활용한 대표적인 최단 경로 탐색 Algorithm입니다. 이 알고리즘으로 특정한 하나의 정점에서 다른 모든 정점으로 가는 최단 경로를 구할 수 있습니다. Dijkstra Algorithm은 sequential algorithm이기에 MapReduce에 바로 적용하는 것은 불가능합니다. 왜냐하면 MapReduce에서는 데이터를 서로 주고받는 구조가 매우 힘들기 때문입니다. 그렇기에 MapReduce에서는 Brute-force 방식을 활용하여 모든 nodes를 다시 재 방문하여 구하는 식으로 사용하여 Dijkstra Algorithm을 MapReduce에 적용할 수 있습니다.

Figure 2 같은 경우 Dijkstra algorithm을 Parallel BFS를 이용하여 MapReduce로 구현하였을 때의 psuedo 코드 이다. Map phase에서는 각 노드와 neighbor node와의 distance를 Emit 하고 Reduce phase에서는 그 중 min distance를 찾아 distance를 update 한 후 start node와 neighbor node 구조체를 emit 해준다.
2. My Review
평소에 Dijkstra 알고리즘 자체는 코딩 문제를 풀면서 많이 접근한 적이 많은 친숙한 알고리즘이여서 쉽게 다가갈 수 있었다. 하지만 아무래도 여기서는 MapReduce에 Dijkstra 알고리즘을 적용해야 했어서 기존에 알고있던 방식으로는 사용할 수 없어서 조금 까다로웠다. MapReduce에서는 Parallel BFS를 활용하여 Dijkstra 알고리즘을 사용할 수 있었고 처음에는 까다로웠지만 전반적인 프로그램의 구조를 이해한 후에는 굉장히 유용한 구조임을 깨달을 수 있었다.
'Algorithm' 카테고리의 다른 글
| [Algorithm] What is SON Algorithm ? (0) | 2023.08.14 |
|---|---|
| [Algorithm] What is A-Priori Algorithm? (2) | 2023.08.07 |
| [Algorithm] What is RFP Algorithm on deduplication? (3) | 2023.07.03 |
| [Algorithm] What is the page rank? (1) | 2023.06.07 |
| [Algorithm] What is the N-gram? (1) | 2023.03.27 |