Super Mario Flows in NP?


15

Un'estensione classica del problema del flusso massimo è il problema del "flusso massimo nel tempo": ti viene dato un digrafo, due nodi dei quali si distinguono come sorgente e pozzo, dove ogni arco ha due parametri, una capacità per -unit-time e un ritardo. Vi sono inoltre dato un orizzonte temporale . L'obiettivo è quello di calcolare un flusso nel tempo che ottiene la massima quantità di materiale dalla sorgente al lavandino dal tempo T . Un flusso di valore massimo può essere calcolato in tempo polinomiale mediante una intelligente riduzione classica al flusso massimo a costo minimo.TT

Sono interessato a un'estensione di questo modello in cui i bordi hanno un terzo parametro "durata". Se un arco ha una durata di vita , e t è il primo momento in cui viene inviato un flusso positivo attraverso l'arco, allora distruggiamo l'arco nel tempo t + . Puoi pensare a questo come alle piattaforme di Super Mario Brothers che cadono / vengono distrutte poco dopo averle calpestate, oppure puoi considerarle come batterie necessarie per alimentare i bordi, che non possono essere spente dopo l'accensione . ( Modifica :) Il problema decisionale è, quando viene anche dato un valore di flusso limite inferiore B , se si può programmare un flusso che soddisfi sia il limite superiore dell'orizzonte temporale sia il valore inferiore del flusso.tt+B

Finora posso vedere che questo problema è fortemente NP-difficile (tramite 3 partizioni). Ma in realtà non so se si trova in NP: esiste una garanzia su come esprimere una soluzione in modo compatto? Nella versione classica, viene utilizzato un tipo speciale di flusso ottimale per aggirare questo problema.

Nota: il modello sopra è un po 'sotto specificato, poiché è possibile consentire o impedire lo stoccaggio del flusso sui nodi e si può avere un modello temporale discreto o continuo. Risolvere la domanda per uno di questi modelli sarebbe eccellente.


1
Non sono sicuro di capire. Perché c'è un problema nell'esprimere un determinato piano di flusso in modo compatto e verificare che il flusso totale sia almeno F in poli tempo?
Suresh Venkat,

3
Potresti pensare a come dimostrare che l'output di un problema di ottimizzazione, il cui output è un flusso temporizzato, può essere verificato per l'ottimalità nel tempo polifunzionale. Tuttavia, spesso si mostra che i problemi di decisione con solo risposte sì / no si trovano in NP e che i problemi di ottimizzazione che massimizzano alcune funzioni come il flusso vengono in genere trasformati in un problema di decisione aggiungendo un valore limite inferiore B all'input e il problema di decisione diventa "Esiste una soluzione con valore almeno B?"
andy_fingerhut,

Suresh: diciamo nel modello discreto, il modo naturale di esprimere un piano di flusso richiede numeri interi per ciascun arco, ma questo non è polinomiale, è solo pseudo-polinomiale nella dimensione di input. Allo stesso modo nel modello continuo non vedo come comprimerlo. T
daveagp,

Andy: hai ragione, in termini formali è meglio per me dichiararlo un problema di decisione avendo un valore inferiore rispetto a un orizzonte temporale, quindi è qualcosa per cui potremmo chiedere se risiede in NP.
daveagp,

1
@daveagp: hai provato la durezza PSPACE, ad esempio riducendo il QBF al tuo problema?
Yoshio Okamoto,

Risposte:


13

È passato molto tempo ma sono abbastanza sicuro che questo problema sia in P.

Ho scritto la mia tesi di dottorato al riguardo nel 1995. Vedi "Algoritmi di flusso di rete dinamica efficiente" di Bruce Hoppe presentati al dipartimento Cornell CS. Online all'indirizzo http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

Vedere il capitolo 8 "Estensioni" sezione 8.1 su "bordi mortali"


3
"Era una notte buia e tempestosa. Jack giaceva immobile nella sua cabina - immobile tranne per il suo stomaco, che gli roteava nell'intestino come un folle giro di carnevale ..." (pagina XII, dove l'autore discute di applicazioni pratiche).
Neal Young,

Bella citazione, Neal! :) BTW daveagp fa una buona osservazione sulla necessità di spazio pseudo-polinomiale per memorizzare il "flusso" che risponde alla domanda di decisione. Come non solo trovare un flusso ottimale ma anche rappresentare quel flusso in P sono i capitoli 1-7 della mia tesi di laurea
Bruce Hoppe,

Eccellente! Finalmente ho letto tutto questo. Una volta risolto il primo flusso di flusso al limite, la fattibilità della rete con gli orari di inizio e fine risultanti è in P (supponendo che sia consentito il mantenimento), e quindi il problema originale è in NP: il nostro certificato di dimensioni polinomiali elenca l'ora di inizio per ogni bordo. Super Mario quindi scorre NP-completamente. Domande casuali: il divieto di holdover cambia qualcosa? esiste un algoritmo di approssimazione decente?
daveagp,

2

EDIT: la risposta è ERRATA. Ho assunto l'assunto implicito (sciocco) che quando un flusso di percorso inizia al momento se termina al momento te attraversa il bordo e, blocca il bordo e per questa durata. Tuttavia, questo non è vero. Vedi *.

Nota: forse questo approccio è inutilmente complicato o errato. Anche se ho provato a verificarlo e scriverlo attentamente, non ci ho dedicato molto tempo.

Supponendo che lo `stoccaggio 'non sia consentito, ad esempio il flusso deve essere trasferito immediatamente. Sia denotare il numero di spigoli e N la lunghezza di input. Non ho specificato il tempo continuo o discreto, dal momento che non l'ho preso in considerazione. Dovrebbe funzionare per pensiero discreto, per continuo ne sono sicuro.mN

Quindi, possiamo descrivere la soluzione come un insieme di "percorsi-flussi" dalla sorgente al sink. Un flusso di percorso è un quadruplo che consiste di quanto segue: Un semplice percorso P dalla sorgente al sink; Ora di inizio del percorso del flusso s ; Quantità di flusso attraverso il percorso a ; Velocità di trasmissione r .(P,S,un',r)PSun'r

Lascia che una soluzione sia data da un insieme di flussi di percorso. Siamo in grado di verificare se la soluzione fornita da questi flussi di percorso è corretta nel tempo polinomiale in | F | e N :F|F|N

  • Per ogni vantaggio un momento del tempo t , sommare la velocità di flusso di tutti i flussi di percorso che superano e al tempo t . Ogni flusso di percorso ha un tempo di inizio e di fine, quindi dobbiamo solo considerare i momenti del tempo in cui un flusso di percorso inizia o termina (tra questi momenti non cambia nulla rispetto ai flussi di percorso che superano il bordo e .etete
  • Per ogni percorso del flusso possiamo verificare se tutti di essa il flusso arriva al lavandino prima volta .T
  • Per ogni bordo possiamo verificare se un flusso di percorso passa dopo che è stato distrutto o meno.
  • Il limite inferiore del flusso possiamo semplicemente verificare, sommando le quantità di flusso dei percorsi di flusso.B

Ora, siamo 'solo' bisogno di dimostrare che il numero di percorso-flussi è polinomiale in .N

Per una data soluzione possiamo determinare il tempo in cui un certo flusso ha passato un bordo e quando il bordo è stato distrutto. Converti questo in un problema con una soluzione equivalente: ci sono limiti fissi su ogni fronte quando può essere usato e quando no - un orario di inizio e fine. Lascia indica l'insieme di tutti questi tempi.{t1,...,tK}

Prendi in considerazione una soluzione non compatta e (inizialmente) una serie vuota di flussi di percorso. L'idea è che troviamo in modo iterativo un flusso di percorso nella soluzione non compatta, lo rimuoviamo e lo memorizziamo nel nostro set di flussi di percorso.

tiotjio<jtptq[tp,tq][tio,tj]Fio,jtjtj

[io,j][tio,tj][tio+1,tj-1]|FS,t|m

Ftio,tjtio+1tj-1

Σio,j[K]|Fio,j|cm3c


Per me il limite di decomposizione sembra difettoso, proverò a fornire un controesempio illustrativo. Supponiamo che la rete sia solo un fronte sorgente> sink di capacità 100, ritardo 0, durata della vita 100. Consideriamo ora questo schema di flusso: nell'intervallo di tempo [0, 1) invia il flusso alla velocità di 1; in [1, 2) al ritmo di 2, ecc. fino al tasso 100 in [99, 100). Qualsiasi decomposizione ha bisogno di = = 100 percorsi-flussi che contraddicono la tua richiesta come la capisco. Devo dire che Ford e Fulkerson evitano questo ostacolo nella loro soluzione classica (senza durata della vita) considerando un tipo specifico di soluzione ottimale, non arbitraria.
daveagp,

Questo può probabilmente essere evitato massimizzando anche la "durata della vita" del flusso, ma c'è un altro problema nella dimostrazione, l'ho modificato per chiarirlo.
Ruub

1

Per come lo capisco, dovresti memorizzare solo un numero per arco, che rappresenta l'istante in cui il flusso inizia a essere inviato attraverso l'arco. Ciò presuppone che in seguito l'arco sia reso inutilizzabile. Se, in caso contrario, l'arco può essere riutilizzato dopo che ha smesso di essere utilizzato, dovrebbe avere soluzioni arbitrariamente vicine alle soluzioni al flusso massimo nel tempo (poiché il flusso potrebbe interrompere l'invio per un periodo di tempo arbitrariamente piccolo e quindi ricominciare a pompare ).


Non riesco a capire quale sia la tua richiesta.
Tsuyoshi Ito,

Non penso sia corretto. Ad esempio, immagina una rete con tre nodi, l'origine s, il terminale t e un altro nodo v, con tre archi a1 = (s, v), a2 = (s, v), a3 = (v, t). Le capacità degli archi sono tutte 1 e i tempi di viaggio sono impostati su 0 per a1 e a3 e 100 per a2. Le durate sono 1 per a1 e 1000 per a2 e a3. Quindi, al tempo 0 si può inviare un'unità di flusso attraverso a1 e a3 da s a t, e inizia a inviare un'unità di flusso attraverso a2. Durante il tempo da 1 a 99, a3 non porta alcun flusso, poiché a1 è sparito, ma al momento 100, il flusso attraverso a2 arriva a v e a3 viene usato di nuovo.
Yoshio Okamoto,

Se capisco correttamente, affermi in parte che una volta risolti i tempi di nascita / morte dei bordi, il problema rimanente può essere risolto utilizzando l'approccio classico max-flow over time, ma non vedo come sia il caso.
daveagp,

@Yoshio: In quel caso, se, invece di iniziare a inviare immediatamente un'unità di flusso lungo a2, smettessi di inviare i flussi del tutto, dopo un tempo arbitrariamente breve a1 potrebbe essere usato ancora una volta, e ciò produrrebbe una soluzione migliore.
Leandro M.,

@Dave: no, non è esattamente quello che pretendo. Quello che sto dicendo è che o ogni arco può essere usato solo un numero finito di volte, oppure le soluzioni al problema dovrebbero approssimare arbitrariamente le soluzioni al flusso massimo nel tempo. Sono preoccupato per i dettagli della definizione del problema, in breve.
Leandro M.,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.