본문 바로가기

문제 해결 알고리즘 기초/그래프 이론

(3)
Floyd-Warshall algorithm 목차 (클릭 시 이동) Floyd-Warshall 알고리즘 Floyd-Warshall 알고리즘은 음의 순환이 없는 가중치 그래프에서 정점들 간 최단 거리를 찾는 알고리즘이다. 음의 가중치를 갖는 그래프에도 적용 가능하다. 한 번의 수행으로 각 정점들 서로 간의 최단 거리를 찾는다. 구현 알고리즘을 실행하기 위해 인접 리스트를 2차원 배열로 작성하면 편하다. int main() { int n = 5; // # of vertices int edges[][3] = { {1, 2, 2}, {2, 3, 6}, {3, 2, 7}, {4, 3, 1}, {4, 5, 3}, {5, 1, 1}, {5, 2, 4}, }; // n + 1 to match the index with the number of vertex vec..
Dijkstra's algorithm 목차 (클릭 시 이동) Dijkstra's algorithm Dijkstra 에 의해 1950년대 후반 출간된 이론으로, 그래프에서 정점들 간의 최단 거리를 계산하는 알고리즘이다. Dijkstra 는 네덜란드 출생으로 영미권을 제외하고 최초로 튜링상을 받았다. Dijkstra 알고리즘은 현재 정점으로부터 인접한 간선들에 대해 edge relaxation 을 수행하고 그 시점에서 전체 정점들 중 가장 도달 비용이 적은 정점으로 이동해서 edge relaxation 하는 과정을 반복한다. Bellman-Ford 알고리즘과 달리 도달 비용이 최소인 정점을 탐욕적으로 선택해 이동하며 edge relaxation 을 수행하기 때문에 더 빠른 시간에 최단 경로를 찾는다. 그렇다면 최소 비용의 정점으로 가는 것은 왜..
Bellman-Ford 알고리즘 - 이론적 배경, 코드 구현, 시간 복잡도 목차 (눌러서 이동) https://en.wikipedia.org/wiki/Bellman–Ford_algorithm Bellman–Ford algorithm - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Algorithm for finding the shortest paths in graphs The Bellman–Ford algorithm is an algorithm that computes shortest paths from a single source vertex to all of the other vertices in en.wikipedia.org Bellman-Ford Algorithm Ric..