Kısa ve şişman yollar bulma


10

Motivasyon: Standart büyütme yolu maksimum akış algoritmalarında, iç döngü, yönlendirilmiş, ağırlıklı bir grafikte kaynaktan batmaya giden yollar bulmayı gerektirir. Teorik olarak, algoritmanın irrasyonel kenar kapasiteleri olduğunda bile sona ermesi için bulduğumuz yollara kısıtlamalar koymamız gerektiği iyi bilinmektedir. Örneğin Edmonds-Karp algoritması bize en kısa yolları bulmamızı söyler .

Ampirik olarak, yağ bulmak da isteyebiliriz (bunun için daha iyi bir terim var mı?). Örneğin, kapasite ölçeklendirmeyi kullanırken , en az debi taşıyabilecek en kısa yolları buluruz . Yolun ne kadar sürebileceği konusunda herhangi bir kısıtlama yoktur. Artık herhangi bir yol bulamadığımızda, ϵ değerini düşürüyor ve tekrarlıyoruz.ϵϵ

Maksimum akışın çok özel bir uygulaması için artırım yolları seçimini optimize etmekle ilgileniyorum ve kısa ve şişman yollar arasındaki bu dengeyi keşfetmek istiyorum. (Not: Sorunu her zaman çözmem gerekli değildir. En çok duvar süresinde en kısa akış akışını bulmakla ilgileniyorum.)

Soru: En kısa yol yaklaşımı ile kapasite ölçeklendirme yaklaşımı arasında enterpolasyon yapmanın standart bir yolu var mı? Yani, hem kısa hem de yağ olan yolları bulmak için bir algoritma var mı, ideal olarak bazı parametreler, yol boyunca şişmanlık için takas yapmaya ne kadar istekli olduğumuzu kontrol edecektir? Aşırı uçlarda, bir uçta en kısa yolları, diğer uçta kapasite ölçekleme tarzı yolları kurtarmak istiyorum.


3
Hem kısalığı hem de şişmanlığı aynı anda optimize etmeye çalışırsanız, çoğu durumda NP sertliği anlamına gelen çok kriterli optimizasyon alanlarına girdiğinizi unutmayın.
Raphael

@dan x: Maksimum akış için kapasite ölçekleme algoritmalarının farkındayım, ancak tanımladığınız algoritmanın farkında değilim. Kapasite ölçeklendirme sürümünüzü ayrıntılı olarak açıklayan bir referansınız (konferans kağıdı, dergi makalesi, yazılı ders (ler) vb.) Var mı? Orada başlatmak için bilinen bir "iyi yolu" olduğunu ve eksiltme merak ediyorum (bu iyi tanımlanmış şekline bağlı aradığınız gibi, çok doğal olarak "parametreli" algoritması neden olabilir). ϵ
Daniel Apon

@Daniel Apon - bu slaytların 31. sayfasında kapasite ölçeklendirmesi için sözde kod var: cs.princeton.edu/~wayne/kleinberg.../07maxflow.pdf
dan_x

@Raphael - Örneğin, uzunluk ve şişmanlığın doğrusal bir kombinasyonu olabilecek tek bir hedef aradığımı unutmayın. Bu hala çok kriterli bir optimizasyon olarak mı görülüyor?
dan_x

Ayrıca, optimal olmasa bile "oldukça iyi" bir yol izlemeye hazırım. Kapasite ölçeklemede, örneğin, en az kadar yağ olan herhangi bir yolu seçeriz . Hem kısalığı hem de şişmanlığı hesaba katan bazı analoglardan memnun olurum. ϵ
dan_x

Yanıtlar:


2

"Oldukça iyi ama mutlaka optimal değil" hakkındaki yorumunuzun ruhuna göre, aşağıdaki fikri kesinlikle iyimserlik garantisi olmadan sunuyorum!

Bütünlük için, burada bahsettiğiniz sözde kod (Not: bağlı algoritma kenar kapasitelerinin 1 ve C arasında tamsayılar olduğunu ve bu akış ve kalan kapasite değerlerinin ayrılmaz olduğunu varsayar):

Ölçekleme-Maks-Akış (G, s, t, C) {
   foreach e ∈ E f (e) ← 0
   Δ ← 2'den küçük veya C'ye eşit en küçük güç
   G_f ← artık grafik

   yaparken (Δ ≥ 1) {
      G_f (Δ) ← Δ-artık grafik
      while (G_f (Δ) 'de P genişletme yolu var) {
         f ← ​​büyütme (f, C, P)
         güncelleme G_f (Δ)
      }
      Δ ← Δ / 2
   }
   dönüş f
}

ϵϵ=Δϵ

0ρ1ρ

ϵρ

ϵ(ρ)ϵ+(1ρ)

ρ=0ρ=10<ρ<1ϵ1


Fikir için teşekkürler - aklımdakilere yaklaşıyor. Benim tek endişem bunun kapasite ölçeklemesi için sadece farklı bir "bozulma programı" olması değil mi?
dan_x

Daha agresif bir şekilde çürüyorsanız, daha kısa yollar elde edersiniz ve daha az agresif bir şekilde çürüyorsanız daha şişman yollar elde edersiniz. Aklımda olan şey, her yolun ne kadar yağ ve ne kadar kısa olduğuna bağlı olarak bir puan alacağıydı, o zaman algoritma skorlu tüm yolları bir eşikten daha büyük bulacaktır.
dan_x

Ama bunu yapmanın standart bir yolu yoksa, oturup istediğimi yapan bir algoritma elde etmek için biraz düşünebilirim.
dan_x
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.