힙을 활용한 다익스트라 알고리즘 (Dijkstra's Algorithm) - 개념, 원리, 동작예시, 시간복잡도, C언어, Java, Python 예제코드
다익스트라 알고리즘은 최단 경로를 찾는 강력한 알고리즘이지만, 기본적인 구현 방식은 시간 복잡도가 O(V^2)로 효율적이지 않을 수 있습니다. 이에 대한 개선 방법으로 우선순위 큐(Priority Queue) 또는 힙(Heap) 을 활용한 다익스트라 알고리즘을 적용하면 시간 복잡도를 O((V + E) log V)로 줄일 수 있습니다. 본 글에서는 힙을 활용한 다익스트라 알고리즘의 개념, 원리, 동작 예시, 그리고 C, Java, Python 예제 코드를 상세히 다룹니다. 0. 힙의 원리오늘 포스팅은 힙에 대한 이해를 바탕으로 작성했습니다. 이 글을 읽기 전에 힙에 대해 먼저 숙지하시고 오시기를 추천드립니다. 힙에 대한 자세한 설명은 아래 링크에 작성했습니다. 2023.03.12 - [자료구조] - H..
2025. 2. 10.
다익스트라 알고리즘(Dijkstra's Algorithm) 총 정리 - 개념, 원리, 동작 예시, 시간복잡도, 장단점, 주의점, C언어, Java, Python 예시코드
다익스트라 알고리즘은 최단 경로를 찾는 대표적인 알고리즘으로, 그래프에서 하나의 시작 정점에서 다른 모든 정점까지의 최단 거리를 계산하는 데 사용됩니다. 이번 글에서는 다익스트라 알고리즘의 개념, 원리, 동작 과정, 시간 복잡도, 장단점, 주의점, 그리고 C, Java, Python 예제 코드를 자세히 다루겠습니다. 1. 다익스트라 알고리즘이란?다익스트라 알고리즘은 가중 그래프(Weight Graph)에서 특정한 한 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘입니다. 탐욕적인 접근법(Greedy Algorithm)을 기반으로 하며, 음의 가중치를 가지지 않는 그래프에서만 사용할 수 있습니다. 2. 다익스트라 알고리즘의 원리다익스트라 알고리즘은 다음과 같은 원리로 동작합니다.출발 노드를 ..
2025. 2. 7.