알고리즘
Parent category
| Category name | Modified | Articles |
|---|---|---|
| 컴퓨터 과학과 프로그래밍 | 0 |
Subcategories
No items have been published yet.
Articles
플로이드 워셜 알고리즘은 모든 정점 쌍 사이의 최단 거리를 동적 계획법으로 계산하는 알고리즘이다. 중간 정점으로 k를 허용할 때 d[i][j]와 d[i][k]+d[k][j] 중 작은 값을 선택한다. 전형적인 구현은 O(V³) 시간과 O(V²) 공간을 사용한다. 도시 수가 작고 모든 도시 쌍의 이동 비용이 필요하면 거리 행렬을 한 번 계산한 뒤 질의에 답할 수 있다. 중간 정점 k를 바깥 반복으로 두는 상태 정의를 지켜야 한다.
벨만 포드 알고리즘은 음수 간선을 허용하는 단일 시작점 최단 경로 알고리즘이다. 도달 가능한 음수 사이클도 탐지할 수 있다. 모든 간선에 대한 거리 완화를 반복한다. 정점 V개에서 단순 경로는 최대 V−1개 간선을 가지므로 그만큼의 단계가 기본 근거가 된다. 어떤 경로의 간선 비용이 4와 −2이면 전체 비용은 2이다. 음수 간선이 있다는 이유만으로 최단 경로가 정의되지 않는 것은 아니다. 시작점에서 도달 가능한 음수 사이클을
다익스트라 알고리즘은 음수가 아닌 간선 가중치를 가진 그래프에서 한 시작점의 최단 거리를 구하는 알고리즘이다. 현재 잠정 거리가 가장 작은 정점을 선택하고 이웃으로 가는 거리를 완화한다. 우선순위 큐를 이용해 다음 정점을 효율적으로 고른다. A→B가 2, A→C가 7, B→C가 3이면 C까지의 거리는 직접 가는 7보다 B를 거치는 5가 짧다. 음수 간선이 있으면 거리 확정 논리가 깨질 수 있다. 중복 항목을 큐에 넣는 구현은



