균일 비용 검색과 Dijkstra의 알고리즘의 차이점은 무엇입니까?

Nov 17 2020

모든 컴퓨터 과학 학생 (저를 포함하여 제가 CS 학사 학위를 받았을 때)은 아마도 유명한 단일 소스 최단 경로 Dijkstra의 알고리즘 (DA)을 접했을 것입니다 . 인공 지능에 대한 입문 과정 ( 몇 년 전 학사 과정에서 했던 것처럼)도 수강 했다면, 일부 검색 알고리즘, 특히 UCS (Uniform Cost Search) 도 접했을 것 입니다.

웹의 일부 기사 (예 : DA의 Wikipedia 기사 )에서는 DA (또는 그 변형)가 UCS와 동일하다고 말합니다. 유명한 Norvig와 Russell의 저서 인 Artificial Intelligence : A Modern Approach (3rd edition)는

Dijkstra (1959) 의 2 점 최단 경로 알고리즘 은 균일 비용 검색의 원점입니다. 이 작품은 또한 탐색 및 프론티어 세트 (폐쇄 및 공개 목록)의 아이디어를 도입했습니다.

DA가 UCS와 정확히 얼마나 일치합니까?

답변

nbro Nov 17 2020 at 19:56

내 질문에 대한 답은 논문 Position Paper : Dijkstra 's Algorithm vs Uniform Cost Search 또는 A Case Against Dijkstra 's Algorithm (2011), 특히 DA 및 UCS의 유사성 섹션 에서 찾을 수 있으므로 모든 세부 사항에 대해이 문서를 읽어야합니다.

DA와 UCS는 논리적으로 동일하지만 (즉, 동일한 정점을 동일한 순서로 처리) 다르게 수행합니다. 특히 단일 소스 DA와 UCS 의 주요 실질적인 차이점은 DA에서는 모든 노드가 처음에 우선 순위 대기열에 삽입되고 UCS 노드에서는 느리게 삽입된다는 것입니다.

다음은 DA의 의사 코드 (인용 된 논문에서 발췌)입니다.

다음은 BFS (Best-First Search)의 의사 코드이며, UCS는 특별한 경우입니다. 실제로 이것은 UCS의 의사 코드입니다.$g(n)$ 소스 노드에서 경로의 비용입니다. $n$ (제목은 이것이 BFS의 의사 코드임을 나타내지 만).