가장 빠른 경로를 결정하는 알고리즘?


17

가장 짧은 경로는 1-4-3-5 (총 60km)입니다.

그래프

Dijkstra의 알고리즘 을 사용 하여이를 수행 할 수 있습니다.

문제는 교통 체증이나 기타 요인으로 인해 가장 짧은 경로가 항상 가장 빠른 경로는 아니라는 것입니다.

예를 들면 다음과 같습니다.

  • 1-2는 교통 체증이 자주 발생하는 것으로 알려져 있으므로 피해야합니다.
  • 갑자기 자동차 사고가 4-3을 따라 발생하므로 피해야합니다.
  • 기타...

따라서 교통 체증 / 사고가 없기 때문에 경로 1-4-5에서 속도를 높일 수 있으므로 5에 더 빨리 도착합니다.

글쎄, 그것은 일반적인 아이디어이며, 아직 더 자세한 것은 생각하지 않았습니다.

이 문제를 해결하는 알고리즘이 있습니까?


3
숙제입니까? 가중 그래프를 순회하기위한 단순한 en.wikipedia.org/wiki/Travelling_salesman_problem 이 아닙니까?
— StuperUser

9
@StuperUser : 아니요. TSP는 중복이없는 모든 노드의 회로입니다. 예제의 경우, 예를 들어 노드 2를 칠 필요가 없습니다.
— David Thornley

2
@DavidThornley 알겠습니다. Dijkstra는 가중치 그래프에서 가장 짧은 경로입니까? 그리고 TSP는 모든 노드를 방문하는 순회입니까?
— StuperUser

1
@Stuper : 최단 탐색, 그래
— BlueRaja - 대니 Pflughoeft

2
@StuperUser, 단지 참고로, TSP는 다항식 시간에 실행할 수있는 솔루션이없는 강력한 NP-Complete 문제입니다. ... 이제 알 것입니다.
— riwalk December

답변:



49

예 : Dijkstra

Dijkstra는이 상황에서도 잘 작동합니다.
거리보다는 시간을 각 호의 무게로 사용하십시오.


9
일반적으로 Dijkstra의 '거리'는 모든 종류의 물건, 비용 / 통행료, 고속도로 선호도, 속도 제한에 대해 가중치가 적용됩니다. 거리 만 사용하는 것이 가장 간단한 방법입니다. 이것이 알고리즘을 영리하게 만드는 것입니다
— Martin Beckett

6
Dijsktra가 할 것이지만, 나는 진지한 길 찾기 작업에 일반적으로 A *를 선택할 것입니다. 휴리스틱은 많은 도움이 될 것입니다.
— Mircea Chirea

6
링크 : A * 검색 알고리즘 . Dijkstra의 방법을 확장 한 것입니다.
— mgkrebbs

적용 가능한 휴리스틱이있는 한 A *는 성능 측면에서 Dijkstra보다 우수합니다.
— bummzack

허용 가능한 휴리스틱은 많은 요소 (예 : 교통 체증)를 고려한 것으로 생각하면 여기서 찾기가 다소 어려울 수 있습니다.
— pwny

16

예. Dijkstra의 알고리즘이이 문제를 해결합니다.

귀하의 경우 문제는 가장 짧은 경로가 이동 한 거리와 동일하다고 가정한다는 것입니다. 실제로 경로를 가져가는 비용과 더 적절하게 일치합니다.

하나의 경로에로드 블록이있는 경우 비용이 높아지고 알고리즘이 계속 적용됩니다.


그래, 내가 올바른 말을 사용하지 않았다면 죄송합니다. 내가 의미하는 것은 '가장 편리한 경로'(가장 최소 비용)
— anta40

11

거리를 노드 사이의 시간으로 바꾸고 같은 방식으로 해결할 수 있어야합니다.


10

다이크 스트라

앞에서 말했듯이 최단 거리에만 사용되는 것은 아닙니다. 나는이 애니메이션이 Dijkstra의 "힘"(더 나은 단어가 없음)에 대해 잘 이해하고 있다고 생각합니다.

다이크 스트라

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.