dijkstra 예제

dijkstra 예제

예를 들어, 갑자기 a에서 d로 가장 짧은 경로를 찾으려고 결정한다고 가정해 보겠습니다. Dijkstra의 알고리즘을 다시 실행할 필요가 없습니다 – 우리는 이미 필요한 모든 정보를 가지고 있습니다. 다음은 동일한 예제 가중치 그래프가 인접 목록 형식으로 표시됩니다. 음의 에지 비용을 어떻게 처리할 수 있습니까? 하나는 모든 비용에 몇 가지 상수를 추가 하려고 할 수 있습니다., 모든 가장자리 비용을 긍정적으로 만들 정도로 큰. 예를 들어 가장 저렴한 에지의 비용을 이 상수(플러스 1)로 선택할 수 있습니다. 아래 예에서 가장 저렴한 에지는 비용 -2이므로 모든 에지 비용에 2 (또는 3)를 추가 할 수 있습니다. Dijkstra의 원래 알고리즘의 기능은 다양한 수정으로 확장 할 수 있습니다. 예를 들어, 수학적으로 최적이 아닌 솔루션을 제시하는 것이 바람직한 경우도 있습니다. 최적이 아닌 솔루션의 순위 목록을 얻으려면 먼저 최적의 솔루션이 계산됩니다. 최적의 솔루션에 나타나는 단일 에지가 그래프에서 제거되고 이 새 그래프에 대한 최적의 솔루션이 계산됩니다. 원래 솔루션의 각 모서리가 차례로 억제되고 새 가장 짧은 경로가 계산됩니다. 그런 다음 보조 솔루션의 순위를 매기고 첫 번째 최적의 솔루션 후에 제시합니다. 예를 들어 위의 예제에서 노드 c와 b 사이의 비용, 거리 또는 용량이 8에 가중치가 있는지 확인할 수 있습니다.

에지 비용을 변경하기 전에 a에서 g로의 최단 경로는 총 비용 -5인 a-b-c-d-e-g였습니다. 에지 비용을 변경한 후 가장 짧은 경로는 총 비용 6의 a-f-g입니다. 이것은 우리가 이전과 는 완전히 다른 경로를 발견했기 때문에 문제가됩니다. 이 예제에서는 모든 에지 비용에 상수를 추가하는 것이 음의 에지 비용의 경우 도움이 되지 않습니다. 예를 들어, 오른쪽의 아이스링크에서 가장 짧은 경로는 18단계입니다. Dijkstra의 알고리즘은 약간의 초기 설정이 필요합니다. 그러나, 우리가 그것에 도착하기 전에, Dijkstra의 알고리즘을 실행하기위한 단계와 규칙을 빠르게 살펴 보자. 예제 그래프에서는 노드 a를 시작 노드로 시작합니다. 그러나 Dijkstra 를 실행하는 규칙은 가장 짧은 경로를 찾기 위해 통과하고 방문하는 모든 단일 노드에 적용 될 수 있도록 추상화 될 수 있습니다. 2) 코드는 방향이 없는 그래프용이며, 동일한 dijkstra 함수는 방향 그래프에도 사용할 수 있습니다.

야생에서 Dijkstra 의 알고리즘의 가장 일반적인 예는 길 찾기 문제, 방향 을 결정 하거나 GoogleMaps에 경로 찾는 등. 이 모든 것이 많은 것 같다면 걱정하지 마십시오 – 그것은 복잡한 것들입니다! 사실, Dijkstra조차도 잘 예시하기 위해 고군분투하는 것은 어려운 문제입니다. 알고 보니, Edsger W. Dijkstra가 1956년에 가장 짧은 경로를 찾는 문제에 대해 처음 생각했을 때, 그는 컴퓨팅 세계에서 오지 않은 사람들에게 이해하기 쉬운 문제 (그리고 그 해결책)를 찾기 위해 노력하는 데 어려움을 겪었습니다! 그는 결국 가장 짧은 길을 찾을 수 있다는 것의 중요성을 보여주기 위해 좋은 모범적인 문제를 생각해 냈다. 그는 선택 – 당신은 그것을 짐작! — 예를 들어 지도. 사실, 그는 원래 자신의 알고리즘을 설계 할 때, 그는 ARMAC라는 컴퓨터에 대해 구현. 그는 자신의 알고리즘이 어떻게 작동하는지 보여주기 위해 네덜란드 전역의 도시가 포함된 교통지도의 예를 사용했습니다.

אין תגובות

מצטער, טופס התגובה סגור בשלב זה.