2012-01-26 4 views
3

내 질문은 왜 우리가 최소한을 선택하지 않으면 heppen거야, 루프의 알고리즘의 모든 단계에서 Q의 모든 v의 최소 d [v]를 선택하는 것이 중요합니다 무엇입니까? ?Dijkstra 알고리즘의 속성

나는 모든 방향 (u, v)이 너비가 넓은 첫 번째 순서 (즉, -s-> u-> v 및 (s, v)가 E가 아님을 의미합니다. (u, v) 전에 (s, u)를 풀 때마다 최소 d [v]를 선택하는 것이 왜 중요한가요?

그것이 최대 D를 갖도록 정점 (V)를 반환하는 함수 extractMaxFiniteD (Q)이 존재 가정 [V] 즉

우리 U < -extractMaxFiniteD (Q)에 행을 변경해 가정 할 Q의 유한이고; 어떤 사람이 수정 된 alg가 실패 ​​할 것인가 - 또는 더 나은 - 가장 짧은 경로의 속성이 violeted 될 것인가를 그래프로 그릴 수 있습니까?

나는이 질문이 꽤 어렵고 추상적 일 수도 있지만 some1이 저를 도울 수 있다면 좋을 것이라고 생각합니다.

+0

가 실제로나요 개선 할 수 어떤 그래프에서든지 시도해 볼까요? Max를 사용하면 잘못된 결과가 발생할 확률이 매우 높습니다! –

+0

메신저가 특정 그래프에서 덜 intrested, 나는 어떤 속성을 우리가 최소한의 모든 단계를 선택하여 보존하려고하는지 이해하고 싶습니다. –

+0

거의 모든 그래프에서이를 수행하고 중간 단계의 결과를 보았을 때, min –

답변

3

예 :

노드 A, B,
에지 (및 무게) (C) (A, B, 1) (A, C, 10) (B, C, 1)

이 알고리즘을 사용해보십시오. 당신은 C에 대한 최소 비용 경로가 분명히 10 일 때 찾을 수 있습니다.

Q에서 노드를 제거하면 다시는 안심할 수 있습니다. 최대 비용으로 노드를 제거하면 ' 그 노드에 도달하는 데 덜 능동적 인 방법을 고려해야한다.

Q에서 최소 노드를 선택하지 않으려면 Q에서 제거 할 수 없으면 나중에 반복 할 때 사용할 수 있도록 세트에 보관해야합니다. 이것은 기본적으로 bellman-ford 알고리즘의 기능입니다.

7

Dijkstra의 알고리즘의 주된 아이디어는 Q에서 버텍스를 가져올 때이 버텍스가 좋습니다. 당신은 fututre에서 그것을 진정하지 않아도됩니다.

당신이 Q에서 임의의 요소를 가지고있는 경우,이 상태가 유지되지 않습니다 - 당신이 Q 중 정점 v했다하면,이 d[v]v에 최단 경로입니다 보장 할 수 없습니다.

당신은 최소한 걸릴 경우 - Q에 최소한의 v 경우 이후는, 다음 Q, d[u] >= d[v]의 각 u 위해, 보장을 따라서 당신이 다음에 무엇을 relexations 상관없이 - 당신은 d[v]

+0

아름다운 대답, 고마워. –

+0

@OfekRon : 안녕하십니까. 좋은 질문 이었어 :) – amit

관련 문제