2012-04-30 10 views
7

Algorithm Design Manual diyor ki:Neden çoğu grafik algoritması negatif sayılara bu kadar kolay uyum sağlamıyor?

Çoğu grafik algoritmaları negatif sayılara kadar kolay uyum sağlayamaz. Gerçekten de, en kısa yol algoritmalarının negatif sayılarla ilgili problemleri vardır ve kesinlikle bu tekniği kullanarak mümkün olan en uzun yolu üretmezler.

Ama neden? Orijinal ağırlığın önünde sadece - negatif eklediğimde, ağırlıkla ilgili çoğu grafik probleminin eşit olarak ele alınabileceğini düşünüyorum, doğru mu?

+1

Bunun bir semantik problem olduğunu düşünüyorum. Ağırlık, örneğin, bir yolun uzunluğunu gösterdiğinde, o zaman uzunluk nasıl belirsiz olur? – superM

+3

Genel olarak bir kenarın fiziksel uzunluğa başvurması gerekmez; Kenarların negatif uzunluğa sahip olabileceği birçok durum vardır (örneğin bir kararın kayba ya da kazanca neden olabileceği finansal pozisyonların modellenmesi) bu yüzden gerçek bir problemdir. –

cevap

6

Çünkü bir yolun minimum veya maksimum maliyetini düşündüğünüzde, her zaman tek adımların toplamı göz önünde bulundurularak sonuçlanırsınız. Ve bu algoritmaların birçoğu, en iyi yaklaşımı adım adım seçerek (tabii ki farklı büyüklükte adımlarla) yerel olarak çalıştığı için, negatif ağırlıklara sahip olmak sadece döngüleri veya yanlış pozitifleri üretecektir.

Negatif bir ağırlığa sahip olmak, bir yolun maliyetinin gelecekte azaltabileceğini ima eder, bu nedenle sorun çıkarır: yolun en yüksek olduğu noktaya ulaştıktan sonra bile olası iyi yolların listesinden yolları hariç tutamazsınız. Şimdi, diğerinden daha pahalı çünkü, durumu değiştiren negatif ağırlığa sahip kenarlar bulabilirsin. Sadece bir örnek olarak

: İki ağırlık 1 kenarları ve -2 ile karşılıklı olarak bağlanmış iki düğüm varsa isteğe bağlı düşük maliyetli (hatta -∞) olan bir yolu belirlemek için, aralarında bir döngü oluşturabilir.

+0

Yani, Algoritma Tasarım Elkitabındaki ifade aslında pozitif ve negatif ağırlıkların karışımı hakkında konuşuyor? –

3

Nitekim, en kısa yol algoritmaları negatif sayılar ile sorun var

Bu Dijkstra's Algorithm için geçerli değil, genel olarak en kısa yol algoritmaları içindir. Bellman-Ford Algorithm, grafiğin negatif döngü içermemesi koşuluyla, negatif kenar ağırlıklarıyla ilgilenebilir. Ancak:

Bellman-Ford negatif döngülerini tespit etmek ve onların varlığını, rapor ancak olumsuz döngü kaynağından ulaşılamıyor ise bu doğru bir cevap üretemez olabilir.

0

Özellikle en kısa yol sorunu için bir cevap ekleyeceğim. Negatif kenarlarla ilgili genel sorun, Jack’s answer'da iyi tanımlanmıştır. Her kenar için e ∈ E için kenarları l(e) ≤ 0 olan bir G = (V, E) grafiğini düşünün.

G'daki en kısa yol, ile l'(e) = - l(e) ≥ 0 ∀e ∈ E arasındaki en uzun yolla aynıdır. Genel grafiklerde NP-sert olduğu bilinmektedir. DAG'lerde ve diğer grafik sınıflarında doğrusal zamanda çözülebilmesine rağmen.

cls answered10 olarak, sorun yalnızca negatif döngüdür ve Bellman-Ford algorithm bazı kenarlarla negatif olarak başa çıkabilir. Ancak en uzun yol algoritması, grafikteki döngülerle baş etmeli ve Bellman-Ford, negatif döngüleri olan grafiklerde doğru bir cevap veremez. Bu nedenle Bellman-Ford algoritması en uzun yolu sadece pozitif döngüleri olmayan grafiklerde hesaplamak için kullanılabilir. Düşünce, çünkü bu fikir obviously not uncommon.

İlgili konular