NP Süper Mario Akar?


15

Maksimum akış probleminin klasik bir uzantısı "zaman içindeki maksimum akış" problemidir: size, her iki yayın iki parametreye sahip bir kapasiteye sahip olan iki düğüm, kaynak ve lavabo olarak ayırt edilen bir digraf verilir. -birim zamanı ve gecikme. Ayrıca bir zaman ufku de verilir T. Amaç, zamanla, kaynaktan kadar maksimum malzemeyi lavaboya götüren bir akışı hesaplamaktır T. Maksimum değere sahip bir akış, polinom zamanda, minimum maliyet maksimum akışına akıllı bir klasik indirgeme ile hesaplanabilir.

Kenarların üçüncü bir "ömür" parametresine sahip olduğu bu modele ilişkin bir uzantıyla ilgileniyorum. Bir yay ömrü varsa ve t pozitif akış yay aracılığıyla gönderildiği en erken tarihtir, o zaman süresi en yayı yok t+ . Bunu, Süper Mario Kardeşler'de, üzerlerine bastıktan kısa bir süre sonra düşen / yok edilen platformlar gibi düşünebilirsiniz veya bunları, açıldıktan sonra kapatılamayan kenarlara güç vermek için gerekli piller olarak düşünebilirsiniz. . ( Düzeltme :) Karar problemi, aynı zamanda, bir debi değeri alt sınırı verildiğinde, bir zaman akışının Büst sınırını ve debi değeri alt sınırını karşılayacak bir akış zamanlaması yapıp yapamayacağıdır.

Şimdiye kadar bu sorunun güçlü bir şekilde NP-zor olduğunu görebiliyorum (3 bölümlü). Ama aslında NP'de olup olmadığını bilmiyorum: Bir çözümü kompakt olarak ifade etmenin bir yolu var mı? Klasik versiyonda, bu problemi atlatmak için bazı özel optimum akış tipi kullanılır.

Not: yukarıdaki model biraz daha az belirtilmiştir, çünkü düğümlerde akış birikmesine izin verebilir veya izin vermeyebilirsiniz ve ayrık bir zaman modeliniz veya sürekli bir modeliniz olabilir. Bu modellerden herhangi biri için soruyu çözmek mükemmel olurdu.


1
Anladığımdan emin değilim. Belirli bir akış planını kompakt bir şekilde ifade etme ve toplam akışın poli zamanda en az F olduğunu doğrulamada neden bir sorun var?
Suresh Venkat

3
Çıkışı zamanlanmış bir akış olan bir optimizasyon sorununun çıktısının, poli zamanda optimumluk açısından kontrol edilebileceğini nasıl kanıtlayacağınızı düşünüyor olabilirsiniz. Bununla birlikte, çoğu zaman sadece evet / hayır yanıtı olan karar problemlerinin NP'de olduğunu ve akış gibi bazı işlevleri en üst düzeye çıkaran optimizasyon problemlerinin girişe daha düşük bir sınır değeri B ekleyerek tipik olarak bir karar problemine dönüştüğünü ve karar problemi haline geldiğini gösterir. "En az B değerli bir çözüm var mı?"
andy_fingerhut

Suresh: münferit modelde, bir akış planını ifade etmenin doğal yolu her bir yay için tamsayıları alır , ancak bu polinom değildir, sadece giriş boyutunda sözde polinomdur. Sürekli modelde de benzer şekilde bunun nasıl sıkıştırılacağını göremiyorum. T
daveagp

Andy: Haklısın, resmi olarak, bunu bir zaman ufkuna ek olarak daha düşük bir değere sahip olarak bir karar problemi olarak belirtmek benim için daha iyidir, o zaman NP'de olup olmadığını sorabileceğimiz bir şeydir.
daveagp

1
@daveagp: PSPACE sertliğini denediniz mi, örneğin sorununuza QBF'yi düşürdünüz mü?
Yoshio Okamoto

Yanıtlar:


13

Uzun zaman oldu ama bu sorunun P'de olduğundan eminim.

Doktora tezimi 1995 yılında yazdım. Bruce Hoppe tarafından Cornell CS departmanına gönderilen "Verimli Dinamik Ağ akış algoritmaları" na bakınız. Çevrimiçi: http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

"Ölümlü kenarlar" ile ilgili Bölüm 8 "Eklentiler" bölümüne bakın.


3
"Karanlık ve fırtınalı bir geceydi. Jack kabinde hareketsiz yattı - karnının dışında çılgınca bir karnaval yolculuğu gibi dönüyor ..." (sayfa xiii, yazarın pratik uygulamaları tartıştığı yer).
Neal Young

Güzel teklif, Neal! :) BTW daveagp, karar sorusunu cevaplayan "akışı" saklamak için sözde polinom alanına ihtiyaç duyma konusunda iyi bir noktaya değiniyor. Sadece optimal akışı bulmakla kalmayıp aynı zamanda P'deki akışın tezimin 1-7 bölümü olduğunu da temsil eder
Bruce Hoppe

Mükemmel! Sonunda bütün bunları okudum. İlk kez akış bir kenara çarptığında, sonuçta ortaya çıkan başlangıç ​​ve bitiş zamanları ile ağın fizibilitesinin P (beklemeye izin verildiği varsayılır) P'dir ve bu nedenle orijinal sorun NP'dedir: polinom boyutlu sertifikamız, her kenar. Süper Mario bu nedenle NP-tamamen akar. Rastgele sorular: yasaklamayı yasaklamak bir şeyi değiştirir mi? iyi bir yaklaşım algoritması var mı?
daveagp

2

EDIT: cevap YANLIŞ. (Aptalca) örtük bir varsayım yaptım, yol akışı s zamanında başladığında ve t zamanında sona erdiğinde ve e kenarından geçtiğinde, bu süre boyunca e kenarını bloke eder. Ancak, bu doğru değildir. Görmek *.

Not: Belki de bu yaklaşım gereksiz yere karmaşık veya yanlıştır. Doğrulamaya çalıştım ve dikkatli bir şekilde yazdım - ancak üzerinde çok fazla zaman harcamadım.

Stoklamaya izin verilmediğini varsayarak, örneğin akışın derhal aktarılması gerekir. Let kenarlarının sayısı ve anlamında olabildikleri , N giriş uzunluğu. Dikkate almadığım için sürekli veya ayrık zaman belirtmedim. Ayrık düşünce için çalışmalı, sürekli için eminim.mN-

Ardından, çözümü kaynaktan batmaya "yol akışları" kümesi olarak tanımlayabiliriz. Bir yol akışı, aşağıdakilerden oluşan dörtlüdür : Kaynaktan lavaboya basit bir P yolu ; Yol akış süresi Başlangıç s ; Yol boyunca akış miktarı a ; Verim oranı r(P,s,bir,r)Psbirr .

Bir çözüm yol akışları kümesi ile verilsin . Bu yol akışları tarafından verilen çözümün zaman polinomunda doğru olup olmadığını doğrulayabiliriz | F | ve N :F|F|N-

  • Her kenar için ve zaman bir anda t , yol-akışlarının üzerinden gidiyor tüm üretim oranıdır kadar ekleyin e sürenin sonunda t . Her yol akışının bir başlangıç ​​ve bitiş zamanı vardır, bu nedenle yalnızca bir yol akışının başladığı veya bittiği anları dikkate almamız gerekir (bu anlar arasında, e kenarından geçen yol akışlarına göre hiçbir şey değişmez.etete .
  • Her yol akışı için, tüm akışının zamanından önce lavaboya ulaşıp ulaşmadığını doğrulayabiliriz .T
  • Her kenar için, bir yol akışının yok edildikten sonra geçip geçmediğini doğrulayabiliriz.
  • Akış alt sınırı, akış yollarının akış miktarlarını toplayarak basitçe kontrol edebiliriz.B

Şimdi, 'sadece' yol akışlarının sayısının N'de polinom olduğunu göstermemiz gerekiyorN- .

Belirli bir çözüm için, bir akışın bir kenarı geçtiği zamanı ve kenarın ne zaman yok edildiğini belirleyebiliriz. Bunu eşdeğer bir çözümle ilgili bir soruna dönüştürün: Her kenarda, ne zaman kullanılabilir ve ne zaman kullanılamaz - başlangıç ​​ve bitiş zamanı vardır. Let tüm bu zamanların kümesini gösterir.{t1,...,tk}

Kompakt olmayan bir çözüm ve (başlangıçta) boş bir yol akışı kümesi düşünün. Fikir, kompakt olmayan çözümde yinelenen bir yol akışı bulmamız, onu kaldırmamız ve yol akışları setimizde saklamamızdır.

titji<jtptq[tp,tq][ti,tj]Fi,jtjtj

[i,j][ti,tj][ti+1,tj1]|Fs,t|m

Fti,tjti+1tj1

i,j[k]|Fi,j|cm3c


Bence ayrışma sınırı hatalı görünüyor, açıklayıcı bir karşı örnek vermeye çalışacağım. Ağın sadece bir kaynak olduğunu düşünün-> kapasite 100, lavabo kenarı 100, gecikme 0, kullanım ömrü 100. Şimdi bu akış çizelgesini düşünün: zaman aralığında [0, 1) 1 oranında akış gönderin; [1, 2) 'de 2 oranında, vb. [99, 100)' de 100'e kadar. Herhangi bir ayrışma, iddiamı anladığım gibi çelişkili olan = 100 yol akışına ihtiyaç duyar. Ford ve Fulkerson'ın klasik çözümlerinde (yaşam süreleri olmadan) bu engelden, keyfi değil, belirli bir optimal çözümü düşünerek kaçındığını belirtmeliyim.
daveagp

Bu muhtemelen akışın 'ömrünü' en üst düzeye çıkararak önlenebilir, ancak kanıtta başka bir sorun var, bunu netleştirmek için düzenledim.
Ruub

1

Anladığım gibi, arkın içinden akışın gönderilmeye başladığı anı temsil eden ark başına sadece bir sayı depolamanız gerekir. Bundan sonra, arkın kullanılamaz hale getirildiği varsayılmaktadır. Aksi takdirde, ark kullanılmayı bıraktıktan sonra tekrar kullanılabilirse, zaman içinde maksimum akışa çözümlere keyfi olarak yakın çözümlere sahip olmalıdır (çünkü akış keyfi olarak az bir süre gönderilmeyi durdurabilir ve sonra tekrar pompalanmaya başlayabilir ).


Talebinizin ne olduğunu anlayamıyorum.
Tsuyoshi Ito

Bunun doğru olduğunu düşünmüyorum. Örneğin, üç düğümlü bir ağ düşünün, kaynak s, terminal t ve başka bir düğüm v, üç ark a1 = (s, v), a2 = (s, v), a3 = (v, t). Yayların kapasiteleri 1'dir ve seyahat süreleri a1 ve a3 için 0 ve a2 için 100 olarak ayarlanmıştır. Ömrü a1 için 1 ve a2 ve a3 için 1000'dir. Daha sonra, 0 zamanında kişi a1 ve a3 içinden s'den t'ye bir birim akış gönderebilir ve a2'den bir birim akış göndermeye başlayabilir. 1 ila 99 arasında, a1 gitmediği için a3 akış taşımaz, ancak 100 zamanında a2'den akış v'ye ulaşır ve a3 tekrar kullanılır.
Yoshio Okamoto

Doğru anlarsam, kısmen kenarların doğum / ölüm zamanları düzeltildikten sonra, kalan sorunun zaman içindeki klasik maksimum akış yaklaşımı kullanılarak çözülebileceğini iddia edersiniz, ancak bunun nasıl olduğunu görmüyorum.
daveagp

@Yoshio: Bu durumda, a2 boyunca bir birim akışı hemen göndermeye başlamak yerine, keyfi olarak kısa bir süre a1'in bir kez daha kullanılabilmesinden sonra akışları göndermeyi tamamen durdurduysanız ve bu daha iyi bir çözüm sağlayacaktır.
Leandro

@Dave: hayır, tam olarak iddia ettiğim şey bu değil. Söylediğim şey, ya her bir arkın sadece sınırlı sayıda kullanılabileceği ya da problemin çözümlerinin, çözümleri zaman içinde maksimum akışa keyfi olarak yaklaştırması gerektiğidir. Kısaca sorun tanımının ayrıntıları hakkında endişeliyim.
Leandro
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.