Bellman-Ford algoritması - Kenarlar neden güncel değil?


14

Bellman-Ford algoritması kaynak bir kısa yol belirler diğer vertices. Başlangıçta s ve diğer tüm köşeler arasındaki mesafe olarak ayarlanır . Daha sonra s'den her tepe noktasına en kısa yol hesaplanır; bu devam ediyor | V | - 1 yineleme. Sorularım:sss|V|1

  • Neden olması gerekiyor yineleme?|V|1
  • Kenarları farklı bir sırada kontrol etmem önemli midir?
    Diyelim ki, ilk olarak 1,2,3 kenarlarını kontrol edersem, ancak ikinci yinelemede 2,3,1'i kontrol ederim.

MIT Prof. Eric, siparişin önemli olmadığını söyledi, ancak bu beni karıştırıyor: değeri x 1 kenarına bağlıysa, ancak x 1 x 2'den sonra güncellenirse, algoritma kenarına dayalı bir düğümü yanlış güncellemez mi?x2x1x1x2


Hangi uygulamayı düşünüyorsunuz? Dinamik programlamanın düzen ile ilgili bir sorunu yoktur, açıkçası; diğerleri için bu önemsiz olmayabilir.
Raphael

Yanıtlar:


15

sts,v1,v2,,vk,t|V|1

(s,v1)v1v1(v1,v2)v1v2

k+1(vk,t)tk

ii|V|1|V|1|V|


Burada küçük bir şüphe var. | V | -1 en kötü durum sayısıdır, bundan sonra en kısa yol s'den t'ye hesaplanır. S, v1, v2..vn, t köşelerine sahip olduğumuzu varsayalım. kenarlar bu sırayla seçilir (s, v1), (v1, v2) .. (vn, t), o zaman tek bir yinelemenin kendisinde s'den t'ye en kısa yola sahip olacağız.Bu sadece anlamak ve için pratik terimlerin kenarların sırasını ve dolayısıyla | v | -1 mermi sırasını bilmiyoruz.
whokares

1
@whokares: evet, şanslı olabilir ve ilk turda en kısa yolu bulabilirsiniz. Son tura kadar bulduğunuz değerin gerçekten en kısa yol olduğundan emin değilsiniz, ama olabilir. Dijkstra'nın algoritması esasen bunun gerçekleşmesine neden olur: eğer tüm kenarların negatif olmayan ağırlıkları varsa, Dijkstra algoritmasında kullanılan öncelik sırası, rahatlama turunuzda en kısa yolları bulmanız için kenarları gevşetmeniz gereken sırayı 'tahmin eder'.
Alex ten Brink

Güncelleme için teşekkürler. Anladım. Materyallerden birinde, <br> Slayt 6: Zayıf bir gevşeme sırası seçimi, katlanarak çok fazla gevşemeye yol açabilir: <br> Slayt 8: “Akıllı” kenar gevşeme sırası <br>
whokares

Her bir yinelemedeki kenarların sırasından bağımsız olarak, En Kısa yollar | v | -1 yinelemelerinde doğru mu hesaplanacaktır? Normalde yaptığımız tüm tekrarlamalar için aynı sırayı seçersek, gevşeme kodu çağrılır, ancak bir köşe için etiketin güncellenmesi, siparişten dolayı yalnızca daha az sayıda olabilir, bu nedenle işlemci tasarrufu sağlanır zaman?
whokares

1
@whokares: sundukları ilk algoritma (üstel çalışma süresine sahip olabilir) bir turdaki tüm kenarları gevşetmez, bunun yerine bir gevşeme işleminin bir şeyi değiştireceği bir kenar bulur ve bu kenarı gevşetir. Bunu yapmaya devam ederseniz ve negatif ağırlık döngüsü yoksa, sonunda hiçbir kenar size daha fazla yardımcı olmaz ve durursunuz. Bununla birlikte, bir sonraki rahatlamanız için hangi turda turunuz veya set düzeniniz olmadığından, üstel sayıda gevşeme yapabilirsiniz. Geliştirdikleri algoritma, mermileri olan Bellman-Ford'dur.
Alex ten Brink

3

Bir yol, herhangi bir döngü olmadan olabilen en uzun süredir |V|. Bir kaynakla başlıyoruz, bu yüzden zaten bir uzunluk yolumuz var, bu yüzden |V| - 1en uzun yolu elde etmek için daha fazla düğüme ihtiyacımız var .

Sipariş önemli değildir, çünkü her sipariş değişmezi koruyacaktır: nyinelemelerden sonra , her bir düğüm için değer s, en fazla nkenar içeren düğüme kadar olan minimum maliyet yolunun maliyetinden daha düşük veya buna eşittir .

Bir yinelemenin başlangıcında, maliyet ndüğümlere kadar doğruysa , yinelemenin sonunda n+1düğümlere kadar doğrudur . Yeniden sıralama, bazı düğümlerin normal olarak güncellenmeden önce daha düşük bir maliyete neden olabilir, ancak sonunda yine de güncellenir.


Sadece ben olup olmadığını bilmiyorum ya da bu gerçekleri kolayca görselleştiremiyorum. Bana göre hala V-1 yinelemelerinde güncellenmeyen bazı düğümler olabileceğini düşünüyorum.
user1675999

Hayır, | E | = | V | -1 kenarlarınız olduğunda | V | döngüleri olmayan basit bir yolla bağlanan düğümler. Ve | V | -1 iterasyonlarınız var, cevabınızı silin çünkü yanlış.
Sam

@sam Siz kimsiniz ve söylediğiniz her şeyin cevapla ne ilgisi var?
fgb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.