Sonuçta sorun . Ben devam edeceğiz önceki cevabı öyle de (diğer soru üzerine cevap olarak, NPC olan) yönlendirilmiş durumda çalışıyor gibi ve gösteriler F P T bakımından l .PFPTl
Yönlendirilmemiş durumda, minimum maliyet akışı ile belirleyici olarak çözülebilir (bu, soruda bahsettiğiniz ölçeklerde işe yaramayabilir, ancak üstel algoritmadan daha iyidir.
Aşağıdaki prosedür bazı kenarlarının çıktı grafiğinin bir parçası olup olmayacağına karar verecektir . Orijinal sorunu cevaplamak için tüm kenarların üzerinden geçmeniz yeterlidir.e = ( u , v ) ∈ E
Akış ağını oluşturmak için aşağıdakileri yapın:
Adım 1: Expand bir köşe için X e ve değiştirme e kenarlı ( U , X , e ) , ( x , e , u ) , ( v , X e ) , ( x , e , h ) (bir şekilde yönlendirilir akış ağının bir parçası), maliyetlerini 0 olarak ayarlayın.exee( u , xe) ,( xe, u ) , ( v , xe) , ( xe, v )
Adım 2: x e hariç her köşe iki t - ve t + köşesi ile değiştirin ve bir kenar ( t - , t + ) ekleyin . Bu kenarların maliyetini 1 olarak ayarlayın.txet-t+( t-, t+)
Adım 3: Her kenarın kenarlarını ( a + , b - ) , ( b + , a - ) ile değiştirin . Bu kenarların maliyetini 0 olarak ayarlayın.{ a , b } ∈ E( a+, b-) , ( b+, bir-)
Adım 4: Yeni bir köşe ekleyin ve kenarları ( s , y e ) , ( t , y e ) 0 maliyetiyle ekleyin .ye( s , ye) , ( t , ye)
Adım 5: Tüm kapasiteleri 1 olarak ayarlayın.
Şimdi gelen değeri 2 akışı ararken dakika maliyetli akış algoritması çalıştırmak kadar y e .xeye
Analiz:
- Her 2-değerli akış kadar y e bir yol bir birleşmedir x e ⇝ s → y e ve bir yolu x e ⇝ t → y e .xeyexe⇝ s →yexe⇝ t → ye
- Yollar ayrıktır, çünkü her köşe için ( t - , t + ) yayında sadece 1 kapasite vardır .t( t-, t+)
- Döndürülen yollar, mesafeleri toplamı minimum olan iki yoldur ve bu da bulunan akışın maliyeti. Bu , çıkış grafiğine eklememize veya başka türlü silmemize olanak tanır .e