Yönlendirilmiş ağırlıklı bir grafikte negatif bir döngü bulmam gerekiyor. Bellman Ford algoritmasının nasıl çalıştığını biliyorum ve bana ulaşılabilir bir negatif döngü olup olmadığını söylüyor. Ancak bunu açıkça adlandırmaz.
Döngünün gerçek yolunu nasıl alabilirim ?
Standart algoritmayı uyguladıktan sonra zaten yinelemeleri yaptık ve daha fazla iyileştirme mümkün olmamalıdır. Bir düğüme olan mesafeyi hala azaltabilirsek, negatif bir döngü vardır.
Benim fikrim: Yolu hala geliştirebilecek kenarı bildiğimiz ve her bir düğümün öncüsünü bildiğimiz için, tekrar karşılaşana kadar bu kenardan geriye doğru izleyebiliriz. Şimdi döngümüzü yapmalıyız.
Ne yazık ki, bunun doğru olup olmadığını söyleyen bir kağıt bulamadım. Peki, aslında böyle mi çalışıyor?
Edit: Bu örnek fikrim yanlış olduğunu kanıtlıyor. Aşağıdaki grafik göz önüne alındığında, düğümden Bellman-Ford'u çalıştırıyoruz .
Kenarları sırasıyla . yinelemelerinden sonra düğüm mesafeleri elde edilir:n - 1
3 : - 15
ve üst tablo: üst öğesi üst öğesi üst öğesi
3
3 3 2
Şimdi, durumu tekrarında inci düğümüne mesafesi görüyoruz yine kenar kullanılarak geliştirilebilir . Bu yüzden bir negatif döngü var ve biliyoruz onun bir parçası olduğunu.1 a a
Ancak, ana tablodan geri dönerek, başka bir negatif döngü sıkışıp kalır ve daha asla karşılaşmazız .a
Bu sorunu nasıl çözebiliriz?