이전 알고리즘 노트를 검토 중이며이 증거를 발견했습니다. 내가 가진 임무에서 나온 것이고 정확하다고 생각되지만, 그 증명이 확실하게 결여되어 있다고 느낍니다.Dijkstra의 알고리즘에서 추출 된 거리 값이 감소하지 않는다는 것을 증명합니까?
증명 모순 :
문제는 다음과 같이 내 증거가 간다
prove that the distance values taken from the priority queue in Dijkstra's algorithm is a non-decreasing sequence.
이다. 주먹, 우리가 d 값 'i'와 Q에서 정점을 당기는 가정하십시오. 다음에 우리는 정점을 d 값 'j'로 당깁니다. 우리가 을 가져 왔을 때 우리는 d- 값을 확정하고 시작점 s에서 i까지의 최단 경로 을 계산했습니다. 이후 우리는 양의 가장자리 가중치를 가지고 있으므로 우리의 경로에 정점을 추가 할 때 우리의 d 값을 줄이는 것은 불가능합니다. 을 Q에서 가져온 후 으로 j를 끌어 당기면 이 i부터 j까지 도달 할 수 있으므로은 i에 대한 최단 경로가 이되지 않을 수 있습니다. 그러나 우리는 이미 i에 대한 가장 짧은 경로 인 을 계산했습니다. 가능한 경로를 확인하지 않았습니다. 더 이상 경로가 보장되지 않습니다. 모순.
이 증명을 어떻게 개선 할 수 있습니까? 아니면 더 나은 방법이 있습니까? 그것은 단지 매우 약한 :) 보인다
편집 : 죄송합니다,이 경우 내 우선 순위 큐는
합니다.Priority Queue에 구현 된 (의사 코드에서도) 증명 없이는 증명하기가 어렵 기 때문에 아무도 대답하지 못했습니다. 질문에 참조를 추가 할 수 있습니까? –
죄송합니다, 업데이트했습니다 :) 유효 시점 – Gail