on
[알고리즘] 최단경로 알고리즘 종류 (BFS,다익스트라,플로이드와샬,벨만...
[알고리즘] 최단경로 알고리즘 종류 (BFS,다익스트라,플로이드와샬,벨만...
(정점=노드 같은 뜻! 혼용해서 사용할 시 혼동 방지!)
그래프에서 각 정점끼리 사이의 최단 거리를 구하는 알고리즘 방법은 여러 가지가 있다. 문제에 따라 효율적인 방법이 다르므로 잘 선택해서 사용해야 한다.
문제의 종류
하나의 정점에서 다른 하나의 정점까지 최단 경로를 구하는 문제
하나의 정점에서 다른 모든 정점까지의 최단 경로를 구하는 문제
각 모든 정점에서 다른 모든 정점까지의 최단 경로를 구하는 문제
응용으로 한 중간 정점을 거쳐서 가는 최단경로 등 다양한 문제의 종류에 적용하여 사용할 수 있다.
알고리즘 종류
하나의 정점에서 다른 모든 정점까지 최단경로를 구하는 문제
-간선의 가중치가 모두 같은 그래프일 경우
BFS
-간선의 가중치가 각각 다른 그래프일 경우
다익스트라
벨만-포드 → 음수 가중치의 간선이 존재할 때
하나의 정점에서 다른 모든 정점까지 최단경로를 구하는 문제
플로이드 와샬
1. 다익스트라(Dijkstra) 알고리즘
간단히 예를 들어보면 A->C로 갈 때 A->B->C 가는 경로의 가중치 합이 A->C의 가중치 합보다 작다면 B를 거쳐가는 경로를 선택하는 알고리즘이다.
문제풀이를 통한 코드, 알고리즘 방법 정리
2. 벨만-포드(Bellman-Ford) 알고리즘
음의 가중치가 있을 때에 사용할 수 있는 알고리즘이다.
3. 플로이드-와샬(Floyd-Warshall) 알고리즘
A, B, C의 정점이 있다면 A와 B, C 정점 간의 최단경로, 또 B와 A, C정점 간의 최단경로 C와 A, B 간의 최단경로를 구하는 즉, 모든 정점에서 다른 모든 정점 간의 최단경로를 구하는 알고리즘이다.
문제풀이를 통한 코드, 알고리즘 방법 정리
공부하다가 추가할 내용이나 문제가 있으면 추가&수정할 예정!
from http://technote-mezza.tistory.com/107 by ccl(A) rewrite - 2021-08-09 15:26:26