
[알고리즘] C++로 이해하는 다익스트라(Dijkstra)
·
공부/알고리즘
☑️ C++로 이해하는 다익스트라(Dijkstra)다익스트라 알고리즘은 최단 경로를 구하는 알고리즘이다. 한 정점에서 모든 정점까지의 최단 경로를 구하면서 각 정점까지의 최단 경로를 모두 찾는다. 오래된 알고리즘이라서 이를 개선하거나 영향을 받은 알고리즘도 많은데, 각각 A* 알고리즘, 벨만-포드 알고리즘, 플로이드-워셜 알고리즘 등이 있다. ☑️ 다익스트라 알고리즘 프로세스각 노드의 거리를 무한대로 초기화한다.시작노드의 거리는 0으로 설정한다.이전 노드를 저장할 공간을 Null로 설정한다.방문하지 않은 노드 집합 Q에 모든 노드를 추가한다.노드 집합 Q가 비어있지 않다면 반복한다Q에서 Dist가 가장 작은 노드를 선택한다.Q에서 선택한 노드를 제거한다.선택 노드의 인접 노드를 순회한다.새로운 거리를 확..