상세 컨텐츠

본문 제목

BFS는 왜 가중치가 있는 그래프에서 사용할 수 없을까?

알고리즘/이론

by deulee 2023. 5. 21. 20:20

본문

BFS는 가중치가 있는 간선이 있는 그래프에서는 최단 거리 알고리즘으로써 사용될 수 없다.

 

그 이유는 BFS는 방문한 순서대로 동작을 하게 되기 때문이다.

 

그렇기 때문에 다음과 같은 상황에서 전혀 사용할 수 없는 것이다.

 

시작점이 A라고 가정해보자. 시작점 A를 방문하게 되었을 때 BFS 알고리즘을 이용하게 된다면 (2, B)와 (12, C)를 '그냥 큐'에 넣게 될 것이다. 그리고 나서 D를 방문하게 되고 알고리즘은 종료를 하게 될 것이다.

 

이렇게 될 경우 BFS 알고리즘 입장에서 A에서 C까지의 최단 경로가 12가 되는 것이다. 실제로는 2 + 4 + 3 = 9 인데도 말이다.

 

즉, A에서 C까지의 최단 경로는 A to C가 아니라 A to B to D to C가 되는 것이다.

 

이러한 상황에서 BFS 알고리즘은 의미가 없어지게 되고 이를 해결하기 위해 나온 알고리즘이 대표적으로 다익스트라 알고리즘이 있다.

'알고리즘 > 이론' 카테고리의 다른 글

플로이드 워셜(Floyd-Warshall)  (0) 2023.06.28
벨만 포드 알고리즘(Bellman-Ford Algorithm)  (0) 2023.05.23
다익스트라(Dijkstra) 알고리즘  (0) 2023.05.21
트리의 지름 증명  (0) 2023.05.20

관련글 더보기