Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- REACT
- cs
- SSL
- Meta Learning
- algorithm
- Vision
- dl
- 딥러닝
- classification
- FGVC
- Front
- Torch
- Depth estimation
- ML
- math
- 머신러닝
- web
- PRML
- clean code
- nlp
- Python
- nerf
- 자료구조
- CV
- computervision
- pytorch
- GAN
- 알고리즘
- FineGrained
- 3d
- Today
- Total
KalelPark's LAB
[ Algorithm ] Dijkstra's Algorithm? 본문
Dijkstra's Algorithm 이란?
최단 경로(Shortest Path) 탐색 알고리즘이다. 한 정점(Vertex)에서
다른 정점(Vertex)까지의 최단 경로를 구하는 알고리즘 중 하나이다. 최단 경로(Shortest Path)를 찾는 과정에서, 도착 정점(Vertex) 뿐만 아니라, 다른 정점(Vertex)까지 최단 경로로 방문하여, 각 정점(Vertex)까지의 최단 경로를 찾게 됩니다.
시간복잡도 (Time Complexity)
- using priority queue case : O(ElogE)
- common case : O(n^2)
Dijkstra's Algorithm 동작
1. 시작 정점(Vertex)를 설정합니다. (시작 정점(Vertex) 비용 : 0)
2. 시작 정점(Vertex)과 인접한 정점(Vertex)중에서, 최단 거리가 가장 짧은 정점(Vertex)을 선택합니다.
3. 해당 정점(Vertex)을 거쳐서, 다른 정점(Vertex)으로 가는 비용을 게산하여, 최단 거리 배열을 갱신합니다.
4. 위 2 ~ 3 과정을 도착 정점(Vertex)까지 반복합니다.
Dijkstra's Algorithm code with C/C++
int choose(int distance[], int n, int found[]){
int i, min, minpos; // 아직 방문하지 않은 smallest distance를 찾습
min = INT_MIN;
minops = -1;
for (i = 0; i < n; i++) {
if (distance[i] < min && !found[i]) {
min = distance[i];
minops = i;
}
}
return minops;
}
void shortestPath(int v, int cost[][MAX_VERTICES], int distance[], int n, short int found[]) {
int i, u, w;
for (i = 0; i < n; i++) {
found[i] = False;
distance[i] = cost[v][i];
}
found[v] = TRUE; distance[v] = 0;
for (i = 0; i < n-2; i++) {
u = choose(distance, n, found);
found[u] = TRUE;
for (w = 0; w < n; w++) {
if (!found[w]) { // 만약 방문하지 않았다면, 최단경로 갱신
if (distance[u] + cost[u][w] < distance[w])
distance[w] = distance[u] + cost[u][w];
}
}
}
}
Author's GitHub
'Study > Algorithm' 카테고리의 다른 글
[ Algorithm ] Binary Search Tree? (0) | 2022.12.04 |
---|---|
[ Algorithm ] Heap & Priority Queue? (0) | 2022.12.04 |
[ Algorithm ] Insertion sort, Bubble sort, Selection sort? (0) | 2022.11.30 |
[ Algorithm ] Bellman-Ford Algorithm이란? (2) | 2022.11.29 |
[ Algorithm ] Sollin's Algorithm 이란? (0) | 2022.11.28 |
Comments