최단경로

algorithm

[알고리즘] 최단 경로

1. 최단 경로 문제란 두 노드를 잇는 가장 짧은 경로를 찾는 문제로, 가중치 그래프에서 간선의 가중치의 합이 최소가 되게 하는 경로를 찾는 것이 목적이다. 1) 단일 출발(single-source) 그래프 내 특정 노드에서 출발하여, 그래프 내 모든 다른 노드에 도착하는 가장 짧은 경로를 찾는 문제이다. 2) 단일 도착(single-destination) 모든 노드들로부터 출발하여, 그래프 내 특정 노드로 도착하는 가장 짧은 경로를 찾는 문제이다. 3) 단일 쌍(single-pair) 주어진 노드 u, v간 최단 경로를 찾는 문제이다. 4) 전체 쌍(all-pair) 그래프 내 모든 노드 쌍에 대한 최단 경로를 찾는 문제이다. 2. 최단 경로 알고리즘의 종류 다익스트라(Dijkstra) 벨만포드(bel..

algorithm

[알고리즘] 플로이드-워셜(floyd-warshall)

1. 플로이드 워셜이란 그래프에서 모든 노드 간에 최단 거리를 구하는 알고리즘이다. 2. 특징 음수 가중치 에지가 있어도 알고리즘 수행이 가능하다. 동적 계획법의 원리를 이용하여 알고리즘에 접근한다. 그래프를 인접 행렬로 표현한다. 3. 핵심 원리 A노드에서 B노드까지 최단 경로를 구했을 때, 최단 경로 위에 K노드가 존재한다고 하면, 그것을 이루는 부분 경로 역시 최단 경로다. '최단 경로 위에 K노드가 존재한다고 하면, 그것을 이루는 부분 경로 역시 최단 경로다.'라는 말이 무슨 뜻이냐면 위와 같은 그래프가 있을 때, 노드1에서 노드 5로 가는 최단 거리는 1 -> 2 -> 4 -> 5로 가는 경로가 최단 경로이다. 이러한 결과를 얻었을 때, 1 -> 2, 2 -> 4, 혹은 1 -> 4로 가는 경로..

algorithm

[알고리즘] 벨만-포드(bellman-ford-moore)

1. 벨만-포드 알고리즘이란 그래프에서 최단 거리를 구하는 알고리즘 2. 특징 음수 가중치 에지가 있어도 로직이 수행이 가능하다. 전체 그래프에서 음수 사이클의 존재 여부를 판단할 수 있다. 3. 알고리즘 로직 1) 주어진 데이터를 Edge리스트로 그래프로 구현한 후, 거리 배열의 값을 업데이트한다. Edge를 중심으로 동작하기 때문에 그래프를 Edge리스트로 구현한다. 최단 경로 배열은 출발노드는 0, 나머지는 무한대(99,999,999 혹은 INF)로 초기화한다. 출발 노드가 방문한 적 없는 노드일 때는 값을 업데이트 하지 않는다. if(출발 노드의 거리 배열의 값 + Edge 가중치

ps

[백준][골드][다익스트라] - 1753 최단경로

[문제] 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. [입력] 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다...

github.com/hyunbenny/study
'최단경로' 태그의 글 목록