Dijkstra의 알고리즘은 우선 순위 대기열이있는 BFS입니까?


22

이 페이지 에 따르면 Dijkstra의 알고리즘은 우선 순위 대기열이있는 BFS 일뿐입니다. 정말 간단합니까? 나는 그렇게 생각하지 않는다.


1
그렇게 생각하십니까?
Raphael

@Raphael 너무 단순 해 보였으므로 다시 연구했는데 노드 사이의 거리를 추적하지 않으므로 Dijkstra가 아니라 실제로 BFS입니다.
Barry Fruitman

1
Dijkstra 대기열이 "정렬 된"값을 변경합니다 (종종 "relaxation"이라고 함). 당신이 그것을 금지한다면, 그것은 사실이 아닙니다.
Raphael

답변:


20

Dijkstra의 알고리즘을 우선 순위 대기열을 사용하여 BFS로 구현할 수 있습니다 (유일한 구현은 아님).

Dijkstra의 알고리즘은 에서 t 까지 최단 경로가 경로를 따라있는 정점 까지 최단 경로라는 속성에 의존 합니다. 이것이 바로 BFS가하는 일입니다.st

또는 다른 관점에서 : 모든 가중치가 1 인 경우 Dijkstra의 알고리즘은 어떻게 작동합니까? 정확히 BFS와 같습니다.


4

G=(V,E)

다음은 Dasgupta et al.의 "알고리즘 (섹션 4.4)"책의 아이디어입니다.

e=(u,v)Elele1le1uv

GGG

GG

Gle

셋째, Dijkstra 알고리즘은 비가 중 그래프에서 어떻게 동작합니까?

BFS와 동일하게 작동합니다. 우리는 이것을 두 가지 주요 지점에서 자세히 설명합니다.

  • "휴식"에.

    가중 그래프에 대한 Dijkstra 알고리즘의 경우 완화는 다음과 같습니다.

    for all edges (u,v) in E:
        if dist(v) > dist(u) + w(u,v)
           dist(v) = dist(u) + w(u,v)
    

    dist(v)=w(u,v)=1

    for all edges (u,v) in E:
        if dist(v) = \infty
           dist(v) = dist(u) + 1
    
  • "우선 순위 큐"에서.

    Dijkstra 알고리즘이 비가 중 그래프에서 실행될 때 언제든지 우선 순위 대기열에는 최대 2 개의 고유 한 (거리) 값이 포함됩니다. 따라서 BFS의 FIFO 대기열이면 충분합니다.

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