SORU
23 Temmuz 2011, CUMARTESİ


Negatif ağırlıkları'In Dijkstra Algoritması kullanarak

Dijkstra'nın algoritması negatif ağırlıkları ile çalışmaz neden anlamaya çalışıyorum. Shortest Paths, ben bir örnek okuma aşağıdaki senaryoyu anlamaya çalışıyorum:

    2
A-------B
 \     /
3 \   / -2
   \ /
    C

Web sitesi: gelen

Kenarları varsayarsak Eğer başlarsak sağdan sola doğru yönlendirilmiş, Bir ile, dijkstra'nın algoritması kenar (A,x) minimize seçecek (A,A) d uzunluğu(edge), yani (A,B). O zaman d(A,B) ayarlar=2 ve seçer başka bir kenar (C y) (A,y) d(C y); sadece seçim minimize (A,C) ve d(A,C)=3 ayarlar. Ama hiç Bir yerden en kısa yolu bulur Toplam uzunluğu 1 ile B, C),.

Ben anlamıyorum neden kullanarak aşağıdaki uygulama Dijkstra, d[B] olmayacak güncelleme için 1 (algoritma ulaştığı tepe noktası C, çalıştırılacak bir dinlenebilir B, d[B] eşittir 2 ve bu yüzden güncelleme değerine 1).

Dijkstra(G, w, s)  {
   Initialize-Single-Source(G, s)
   S ← Ø
   Q ← V[G]//priority queue by d[v]
   while Q ≠ Ø do
      u ← Extract-Min(Q)
      S ← S U {u}
      for each vertex v in Adj[u] do
         Relax(u, v)
}

Initialize-Single-Source(G, s) {
   for each vertex v  V(G)
      d[v] ← ∞
      π[v] ← NIL
   d[s] ← 0
}

Relax(u, v) {
   //update only if we found a strictly shortest path
   if d[v] > d[u]   w(u,v) 
      d[v] ← d[u]   w(u,v)
      π[v] ← u
      Update(Q, v)
}

Teşekkürler

Meir

CEVAP
23 Temmuz 2011, CUMARTESİ


Aradığınız algoritma gerçekten bu grafikte en kısa yolu bulur, ama genel olarak tüm grafikler. Örneğin, bu grafik göz önünde bulundurun:

Figure of graph

Kenarları için örnek bir sağ yönetti sanacak

Algoritma aşağıdaki gibi çalışır

  1. İlk, zero infinity diğer mesafeler için d(A) ayarlayın.
  2. Sonra düğüm A, 12*,* 13 ** d(B) ayarı 99 ** 14 d(D) genişletin.
  3. Sonra, hiçbir net değişiklik C, genişletin.
  4. O zaman seni etkilemez B genişletin.
  5. Son olarak, genişletmek -201 20 *değiştiren D,.

d(C) 0, Bu sonunda o yine de dikkat edinC için en kısa yol olsa da uzunluğu -200 vardır.Senin algoritma böylece doğru bazı durumlarda mesafeleri hesaplamak için başarısız olur. Ayrıca, öyle olsan bile saklamak için geri işaretçiler diyerek nasıl her düğüme başlangıç düğümü A ... son alarak yanlış yol geri C A.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elly Awesome

    Elly Awesome

    15 ŞUBAT 2010
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010