Super Mario płynie w NP?


15

Klasycznym rozszerzeniem problemu maksymalnego przepływu jest problem „maksymalnego przepływu w czasie”: otrzymujesz wykrój, którego dwa węzły są rozróżniane jako źródło i zlew, przy czym każdy łuk ma dwa parametry, wydajność na czas i opóźnienie. Jesteś również biorąc pod uwagę horyzont czasowy . Celem jest, aby obliczyć przepływ w czasie której dostaje maksymalną ilość materiału od źródła do zlewu przez czas . Przepływ o maksymalnej wartości można obliczyć w czasie wielomianowym poprzez sprytną klasyczną redukcję do maksymalnego przepływu o minimalnym koszcie.TT.T.

Interesuje mnie rozszerzenie tego modelu, w którym krawędzie mają trzeci parametr „żywotności”. Jeśli łuk ma długość życia , a jest najwcześniejszym momentem, w którym dodatni przepływ jest przesyłany przez łuk, wówczas niszczymy łuk w czasie . Możesz myśleć o tym jak o platformach w Super Mario Brothers, które wypadają / są niszczone wkrótce po nadepnięciu na nie, lub możesz myśleć o nich jako o bateriach potrzebnych do zasilania krawędzi, których nie można wyłączyć po włączeniu . ( Edytuj :) Problemem decyzyjnym jest, gdy przy danej wartości przepływu dolna granica , czy można zaplanować przepływ spełniający zarówno górną granicę horyzontu czasowego, jak i dolną granicę wartości przepływu.t t + Btt+b

Jak dotąd widzę, że ten problem jest silnie NP-trudny (przez 3 partycje). Ale tak naprawdę nie wiem, czy jest to w NP: czy jest jakaś gwarancja sposobu wyrażenia rozwiązania w sposób zwarty? W wersji klasycznej stosuje się specjalny rodzaj optymalnego przepływu w celu obejścia tego problemu.

Uwaga: powyższy model jest nieco nieokreślony, ponieważ możesz zezwolić lub zabronić gromadzenia zapasów przepływu w węzłach i możesz mieć dyskretny model czasowy lub ciągły. Rozwiązanie problemu dla któregokolwiek z tych modeli byłoby doskonałe.


1
Nie jestem pewien, czy rozumiem. Dlaczego problem polega na zwięzłym wyrażeniu konkretnego planu przepływu i sprawdzeniu, czy całkowity przepływ wynosi co najmniej F w czasie wielofazowym?
Suresh Venkat

3
Być może zastanawiasz się, jak udowodnić, że wyjście problemu optymalizacji, którego wyjściem jest przepływ czasowy, można sprawdzić pod kątem optymalności w czasie wielozakresowym. Często jednak pokazuje się, że problemy decyzyjne z tylko odpowiedziami tak / nie występują w NP, a problemy optymalizacyjne, które maksymalizują niektóre funkcje, takie jak przepływ, są zwykle przekształcane w problem decyzyjny poprzez dodanie dolnej wartości granicznej B na wejściu, a problem decyzyjny staje się „Czy istnieje rozwiązanie o wartości co najmniej B?”
andy_fingerhut

Suresh: powiedzmy w modelu dyskretnym, że naturalny sposób wyrażenia planu przepływu zajmuje liczb całkowitych dla każdego łuku, ale nie jest to wielomian, tylko rozmiar pseudo-wielomianu. Podobnie w modelu ciągłym nie widzę, jak to skompresować. T
daveagp

Andy: Masz rację, pod względem formalnym lepiej jest, żebym określił to jako problem decyzyjny, mając dolną granicę wartości poza horyzontem czasowym, to jest coś, o co moglibyśmy zapytać, czy leży w NP.
daveagp

1
@daveagp: Czy próbowałeś twardości PSPACE, na przykład redukując QBF do swojego problemu?
Yoshio Okamoto

Odpowiedzi:


13

Minęło dużo czasu, ale jestem pewien, że ten problem występuje w P.

Pracę doktorską napisałem na ten temat w 1995 r. Patrz „Efektywne algorytmy przepływu dynamicznej sieci” Bruce'a Hoppe'a przedłożone w departamencie Cornell CS. Online pod adresem http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

Zobacz rozdział 8 „Rozszerzenia” sekcja 8.1 o „śmiertelnych krawędziach”


3
„To była ciemna i burzowa noc. Jack leżał nieruchomo w swojej kabinie - nieruchomy, z wyjątkiem jego żołądka, który wirował w jego brzuchu jak szalona przejażdżka karnawałowa ...” (strona XIII, gdzie autor omawia praktyczne zastosowania).
Neal Young,

Niezły cytat, Neal! :) BTW daveagp ma rację, że potrzebuje przestrzeni pseudo-wielomianowej do przechowywania „przepływu”, który odpowiada na pytanie decyzyjne. Jak nie tylko znaleźć optymalny przepływ, ale także przedstawić, że przepływ w P to rozdziały 1-7 mojej pracy doktorskiej
Bruce Hoppe

Doskonały! W końcu to wszystko przeczytałem. Gdy naprawimy, gdy pierwszy przepływ dotrze do krawędzi, udowodnienie, że wykonalność sieci z wynikowymi czasami rozpoczęcia i zakończenia jest w P (zakładając, że dozwolone jest przechodzenie), a zatem pierwotny problem dotyczy NP: nasz certyfikat wielomianowy podaje czas rozpoczęcia każda krawędź. Super Mario przepływa więc NP całkowicie. Losowe pytania: czy zakaz zatrzymania coś zmienia? czy istnieje porządny algorytm aproksymacyjny?
daveagp

2

EDYCJA: odpowiedź jest ZŁA. Przyjąłem (głupie) domniemane założenie, że kiedy przepływ ścieżki rozpoczyna się w czasie s, a kończy w czasie ti przechodzi przez krawędź e, blokuje krawędź e na ten czas. To jednak nie jest prawda. Widzieć *.

Uwaga: Być może takie podejście jest niepotrzebnie skomplikowane lub nieprawidłowe. Chociaż próbowałem to zweryfikować i dokładnie zanotować - nie spędziłem nad tym dużo czasu.

Zakładając, że „gromadzenie zapasów” jest niedopuszczalne, np. Przepływ musi zostać niezwłocznie przekazany. Niech oznacza liczbę krawędzi, a N długość wejściową. Nie określiłem czasu ciągłego ani dyskretnego, ponieważ nie wziąłem go pod uwagę. Powinien działać dla dyskretnego myślenia, dla ciągłości jestem pewien, że jestem pewien.mN

Następnie możemy opisać to rozwiązanie jako zestaw „ścieżek przepływów” od źródła do ujścia. Ścieżka przepływu jest poczwórna która składa się z następujących elementów: Prosta ścieżka P od źródła do ujścia; Czas ścieżki przepływu począwszy s ; Ilość przepływu przez ścieżkę a ; Przepustowość r .(P,s,a,r)Psar

Pozwól, że rozwiązaniem będzie zbiór przepływów ścieżkowych. Możemy zweryfikować, czy rozwiązanie podane przez te ścieżki przepływu jest poprawne w wielomianie czasowym w | F | i N :F|F|N

  • Dla każdego zbocza momentu t dodaj sumę przepustowości wszystkich przepływów ścieżki przechodzących przez e w czasie t . Każdy przepływ ścieżki ma czas rozpoczęcia i zakończenia, dlatego musimy jedynie wziąć pod uwagę momenty, w których przepływ ścieżki zaczyna się lub kończy (między tymi momentami nic się nie zmienia w odniesieniu do przepływów ścieżki, które przekraczają krawędź e .etete
  • Dla każdej ścieżki przepływowy możemy zweryfikować, czy wszystkim jest to strumień dotrze do zlewu przed czasem .T
  • Dla każdej krawędzi możemy zweryfikować, czy przepływ ścieżki przechodzi po jej zniszczeniu, czy nie.
  • Dolną granicę przepływu możemy po prostu sprawdzić, sumując wielkości przepływu ścieżek przepływu.b

Teraz „tylko” trzeba pokazać, że liczba path-płynie jest wielomian w .N

Dla danego rozwiązania możemy określić czas, w którym pewien przepływ przekroczył krawędź i kiedy krawędź została zniszczona. Przekształć to w problem z równoważnym rozwiązaniem: istnieją twarde granice na każdej krawędzi, kiedy można jej użyć, a kiedy nie - czas rozpoczęcia i zakończenia. Niech oznacza zbiór wszystkich tych czasów.{t1,...,tk}

Zastanów się nad jakimś niekompaktowym rozwiązaniem i (początkowo) pustym zestawem ścieżek przepływów. Chodzi o to, że iteracyjnie znajdujemy ścieżkę przepływu w nie kompaktowym rozwiązaniu, usuwamy ją i przechowujemy w naszym zestawie ścieżek przepływu.

Znaleźć ścieżki przepływów to początek i koniec od i t j , ı < j , ale nie kończy pomiędzy każdym t p i t q takie, że [ T P , T Q ] [ t i , t j ] . Niech K I , J oznacza zbiór ścieżki przepływów między t J i t j o właściwościach opisanych powyżej.titji<jtptq[tp,tq][ti,tj]Fi,jtjtj

Załóżmy, że już usunęliśmy wszystkie przepływy ścieżek dla wszystkich mniejszych przedziałów niż . Chciwie znajduj przepływy ścieżek, które zaczynają się i kończą w [ t i , t j ] . Kiedy go znajdziemy, usuń ten przepływ z rozwiązania i odpowiednio dostosuj przepustowości wierzchołków oraz ilość przepływu wysyłanego ze źródła do tonącego. Dla tego przepływu ścieżki maksymalizujemy przepustowość. Oznacza to, że dla co najmniej jednej krawędzi osiągnęliśmy maksymalną przepustowość lub po usunięciu tego przepływu ścieżki nie ma już przepływu przez tę krawędź. Należy zauważyć, że dotyczy to okresu [ t i + 1 , t j[i,j][ti,tj]. W obu przypadkach nie ma już przepływu przez tę krawędź i możemy stwierdzić, że | F s , t | m.[ti+1,tj1]|Fs,t|m

(*) Dlaczego poprzednie twierdzenie jest prawdziwe? Cóż, każdy inny przepływ ścieżka w zaczyna się przed t i + 1 i kończy się po t j - 1 . Dlatego muszą nakładać się na siebie w czasie, gdy używają określonej krawędzi. Ponieważ przepływ jest zmaksymalizowany dla przepływu ścieżki, musi istnieć krawędź tam, gdzie jest ciasno.Fti,tjti+1tj1

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


Dla mnie związany z rozkładem wygląda na wadliwy, postaram się podać przykładowy kontrprzykład. Załóżmy, że sieć jest tylko jednym źródłem-> krawędź ujścia o pojemności 100, opóźnienie 0, żywotność 100. Rozważmy teraz ten harmonogram przepływu: w przedziale czasu [0, 1) wysyłaj przepływ z prędkością 1; w [1, 2) z częstością 2 itd. do 100 w [99, 100). Każdy rozkład potrzebuje> = 100 ścieżek-przepływów, co jest sprzeczne z twoim twierdzeniem, jak rozumiem. Powinienem wspomnieć, że Ford i Fulkerson unikają tej przeszkody w swoim klasycznym rozwiązaniu (bez żywotności), rozważając konkretny rodzaj optymalnego rozwiązania, a nie arbitralne.
daveagp

Można tego prawdopodobnie uniknąć poprzez maksymalizację „żywotności” przepływu, ale jest jeszcze jeden problem w dowodzie, edytowałem go, aby było jasne.
Ruub

1

W moim rozumieniu musisz zapisać tylko jedną liczbę na łuk, co oznacza moment, w którym przepływ zaczyna być wysyłany przez łuk. Zakłada się, że potem łuk stanie się niezdatny do użytku. Jeśli w przeciwnym razie łuk może zostać ponownie użyty po tym, jak przestanie być używany, powinien mieć rozwiązania arbitralnie zbliżone do rozwiązań zapewniających maksymalny przepływ w czasie (ponieważ przepływ może przestać być wysyłany przez dowolnie krótki czas, a następnie ponownie zacząć pompować ).


Nie rozumiem twojego roszczenia.
Tsuyoshi Ito,

Nie sądzę, żeby to było poprawne. Na przykład wyobraźmy sobie sieć z trzema węzłami, źródłem s, terminalem t i innym węzłem v, z trzema łukami a1 = (s, v), a2 = (s, v), a3 = (v, t). Możliwości łuków wynoszą 1, a czasy podróży są ustawione na 0 dla a1 i a3 oraz 100 dla a2. Żywotność wynosi 1 dla a1 i 1000 dla a2 i a3. Następnie w czasie 0 można wysłać jedną jednostkę przepływu przez a1 i a3 od s do t i rozpocząć wysyłanie jednej jednostki przepływu przez a2. W czasie od 1 do 99, a3 nie przepływa, ponieważ a1 zniknął, ale w czasie 100 przepływ przez a2 dociera do v, a a3 jest ponownie używane.
Yoshio Okamoto,

Jeśli dobrze rozumiem, po części twierdzicie, że po ustaleniu czasów narodzin / śmierci krawędzi, pozostały problem można rozwiązać, stosując klasyczne podejście maksymalnego przepływu w czasie, ale nie rozumiem, jak to jest.
daveagp

@Yoshio: W takim przypadku, jeśli zamiast natychmiastowego wysyłania jednej jednostki przepływu wzdłuż a2, przestaniesz całkowicie wysyłać przepływy, po arbitralnie krótkim czasie a1 może być ponownie użyty, co dałoby lepsze rozwiązanie.
Leandro M.

@Dave: nie, nie do końca tak twierdzę. Mówię, że albo każdy łuk może być użyty tylko skończoną liczbę razy, albo rozwiązania problemu powinny arbitralnie zbliżyć rozwiązania do maksymalnego przepływu w czasie. Krótko mówiąc, jestem zaniepokojony szczegółami definicji problemu.
Leandro M.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.