답변:
Dijkstra는 각 단계에 대해 1이 아닌 거리를 할당 할 수 있습니다. 예를 들어, 라우팅에서 거리 (또는 가중치)는 속도, 비용, 선호도 등에 의해 할당 될 수 있습니다. 그런 다음 알고리즘은 소스에서 순회 그래프의 모든 노드까지의 최단 경로를 제공합니다.
한편 기본적으로 그냥 작은 발견의 효과가 일어나는 모든 반복에 (당신이 당신의 응용 프로그램에서 전화를 원하는 링크, 가장자리) 한 "단계"로 검색 확장 BFS 단계의 수를 그 어떤에 도착하는 데 걸리는은 소스 ( "루트")에서 주어진 노드.
여행 웹 사이트를 고려한다면 노드의 가중치 (거리) 때문에 Dijkstra의 알고리즘을 사용합니다.
모든 노드간에 동일한 거리를 고려한다면 BFS가 더 나은 선택입니다.
예를 들어, = 10, = 20, = = 5로 A -> (B, C) -> (F)
주어진 간선 가중치를 고려하십시오 .A->B
A->C
B->F
C->F
여기서 BFS를 적용하면 답은 ABF 또는 ACF가됩니다. 둘 다 최단 경로 (가장자리 수와 관련하여)이기 때문입니다. 그러나 Dijstra를 적용하면 답은 연결에 대한 가중치를 고려하기 때문에 ABF가됩니다. 통로.
Dijkstra의 알고리즘