본문 바로가기

다익스트라3

플로이드 와샬 (Floyd-Warshall) 알고리즘 이번에는 플로이드 와샬 알고리즘에 대해서 공부를 해보았다. 지난번 다익스트라 알고리즘에 이어서 최단거리와 관련된 알고리즘이다. 다익스트라는 하나의 정점에서 출발했을 때, 다른 모든 정점으로의 최단 경로를 구하는 알고리즘이었다면, 플로이드 와샬은 '모든 정점'에서 '모든 정점'으로의 최단 경로를 구해야할때, 플로이드 와샬을 사용해야 한다. 플로이드 와샬 알고리즘의 핵심 아이디어는 '거쳐가는 정점'을 기준으로 최단거리를 구하는 것이라고 보면 된다. 1 , 2, 3, 4의 총 4개의 노드를 가진 그래프가 있다. 이를 바탕으로 플로이드 와샬을 그려보면 초기 그래프에 대한 표를 작성할 수 있고, 그 다음을 차례대로 노드1만 거치는 경우 부터 노드4만 거치는 경우를 따져가면서 값을 업데이트하면 된다. 그럼 오른쪽 .. 2021. 11. 9.
Programmers. 합승 택시 요금 (2021 KAKAO BLIND RECRUITMENT) 합승 택시 요금에 대한 문제이다. 문제는 2가지로 풀어볼 수 있을 것 같다. 1번째로는 다익스트라, 2번째로는 플로이드-와샬이 가능하다고 생각했다. https://ds-jungsoo.tistory.com/7 Shortest Paths(다익스트라 알고리즘 (Dijkstra Algorithm)) 이번에는 다익스트라 알고리즘에 대해서 공부를 해보았다. 다익스트라 알고리즘은 단일 시작점으로부터 다른 노드들까지의 최단 경로를 구하는 알고리즘이다. 또한, 음의 가중치를 허용하지 ds-jungsoo.tistory.com 다익스트라에 대해서 공부했기 때문에 다익스트라로 생각해보았다. Dijkstra를 두번 사용하는 것으로 접근을 하였고, 1번째는 A,B가 같이 가는 구간 (합승 구역) 2번째는 합승 후, 각자 가는 구.. 2021. 11. 8.
Shortest Paths(다익스트라 알고리즘 (Dijkstra Algorithm)) 이번에는 다익스트라 알고리즘에 대해서 공부를 해보았다. 다익스트라 알고리즘은 단일 시작점으로부터 다른 노드들까지의 최단 경로를 구하는 알고리즘이다. 또한, 음의 가중치를 허용하지 않는 최단경로를 말한다. 위의 그림을 설명하자면, 시작점을 제외한 모든 저점과 시작점 사이의 거리를 무한으로 표현하고 다음과 같은 수행을 반복한다. 1. 현재 선택한 정점(처음엔 시작점)에 곧장 연결되고, 아직 방문하지 않은 정점들을 모두 본다. 2. 선택한 정점과 보고있는 정점 사이의 거리와 시작 정점과 선택한 정점까지의 최단거리의 합이 현재까지 구한 시작 정점과 보고 있는 정점 사이의 거리보다 짧을 경우, 이를 갱신해준다. 3. 1, 2번 수행이 모두 끝난 이후, 아직 방문하지 않은 정점들 중 시작점과의 거리가 가장 짧은 정.. 2021. 11. 2.