Comportamento simile a XOR nelle reti di flusso


8

XOR non è il nome corretto, ma sto cercando un tipo di comportamento esclusivo.

Attualmente sto risolvendo una serie di problemi diversi (assegnazione) modellando le reti di flusso ed eseguendo un algoritmo min-cost-max-flow. Le reti di flusso sono abbastanza utili perché molti problemi possono essere ridotti a loro in modo semplice e comprensibile. Nel mio caso si tratta di corrispondenze con alcuni vincoli aggiuntivi. Poiché questi vincoli stanno diventando più complessi, mi chiedevo se esistessero alcune costruzioni esistenti per modellare comportamenti specifici.

In questo caso, voglio limitare il flusso in uscita di un nodo a un singolo fronte.

Dato un grafico , capacità integrali e costi . Un nodo arbitrario viene chiamato . I vicini diretti sono chiamati . Possiamo sostituire i bordi (rosso) con qualche costruzione in modo che solo un bordo possa ricevere flusso ? Ciò significa che se riceve un flusso (ad es. ) nessun altro bordo (rosso) può ricevere flusso.G=(V,E)c(u,v)k(u,v)AB1,..BnAB1,...ABnAB15/10

Potremmo aggiungere nodi / bordi intermedi e giocare con costi e capacità. La capacità totale della nostra nuova costruzione deve rimanere invariata e il costo delle diverse alternative deve rimanere in qualche modo proporzionale.

Quindi le mie domande sono:

  1. Ci sono costruzioni come questa in generale? (Qualsiasi parola chiave, collegamento, documento)
  2. Puoi suggerire una soluzione al mio problema specifico?

Per essere chiari, si tratta di un problema di flusso minimo costo massimo o di flusso minimo costo , in cui è necessario inviare una determinata quantità di flusso nel modo più economico possibile?
Paresh,

È un problema minimo costo massimo flusso. Aggiornato la mia domanda.
Patrick Schmidt,

1
Posso chiederti qual è stato il problema originale che hai mappato in una rete di flusso con queste restrizioni? Lo chiedo perché esiste una semplice soluzione alternativa e voglio solo assicurarmi che non fosse l'algoritmo originale che stai cercando di mappare su max-flow.
Paresh,

1
Ciò significa che esiste un solo vertice in cui è necessario applicare questa condizione di 1 solo flusso di ricezione del bordo in uscita? Oppure questa limitazione è per tutti i vertici (nel qual caso la mia risposta dovrebbe fornirti la soluzione più semplice)? Inoltre, non ho capito bene come hai modellato il tuo problema nella costruzione di cui sopra.
Paresh,

1
I problemi di flusso che limitano i flussi a essere percorsi sono di solito definiti "flussi instabili". Il flusso instabile a costo minimo è NP-Hard in generale. Tuttavia, quella versione ha esigenze oltre i bordi, che manca alla tua versione.
Nicholas Mancuso,

Risposte:


6

In generale, la risposta è no. Se mettiamo restrizioni simili a XOR sui bordi in uscita di un vertice, possiamo dimostrare che trovare un flusso min-cut-max è NP-Hard. La tecnica è di ridurre il 3-SAT ad esso.

Supponiamo che ci siano variabili nelle clausole 3-SAT e . Creiamo un grafico codifica l'istanza del problema 3-SAT. Per ogni variabile , creiamo un vertice collegato alla sorgente con un limite di capacità . Altri due vertici , che sono collegati a , vengono creati per rappresentare prendendo il valore 0 o 1 anche con bordi di capacità .nx1,x2,...,xnmc1,c2,...,cmG(V,E)xivisui,wivixi

Per ciascuna delle clausole , creiamo un vertice corrispondente ad essa e è collegato alle variabili o alle loro negazioni nella clausola con bordi di capacità . Ad esempio, se , lo colleghiamo a con bordi di capacità. Tutti gli sono collegati al lavandino con bordi di capacità 1.cioiGoi1ci=(x3x4¬x5)u3,u4,w5oi

Poiché e non possono assumere lo stesso valore, mettiamo la limitazione XOR sui bordi , , . Si può dimostrare che esiste un flusso massimo di dimensione se e solo se l'istanza 3-SAT è soddisfacente. Poiché il problema è banalmente in e la riduzione è polinomiale, concludiamo che la versione decisionale del flusso della rete di restrizione XOR è NP-Complete.xi¬xi(vi,ui)(vi,wi)i=1,2,3,...,nmNP


3

Per la tua prima domanda, non conosco alcuna tecnica generale o regola empirica che puoi utilizzare per modellare restrizioni arbitrarie nelle reti di flusso. La maggior parte degli esempi che ho visto sono generalmente basati su alcune intuizioni sulla natura delle restrizioni e spesso all'inizio sembrano arbitrarie.

Per il tuo caso particolare, devo ancora trovare una buona mappatura al flusso massimo. Tuttavia, posso suggerire una semplice soluzione alternativa (potresti averlo già capito): Profondità Prima ricerca dalla fonte .s

Poiché il flusso è limitato a un solo fronte in uscita per ogni vertice, ciò che hai è un percorso dalla sorgente alla destinazione. Questo percorso soddisfa le due proprietà che può trasportare il flusso massimo tra tutti gli altri percorsi dalla sorgente alla destinazione , e che ha il costo più basso tra tutti quei percorsi che potrebbero trasportare lo stesso flusso dalla alla .stst

  • Avviare un DFS das
  • Mentre scendi dal DFS, tieni traccia dell'attuale capacità minima di tutti i bordi incontrati finora.
  • Tieni inoltre traccia del costo totale attuale (lunghezza del percorso) rilevato finora.
  • Se viene raggiunto durante il DFS, confrontare questi due valori con i valori globali e, se necessario, aggiornare i valori globali.t
  • Backtrack da e continuare con la DFS.t

Fondamentalmente, si enumera tutti i percorsi da a utilizzando il DFS e si sceglie quello che soddisfa i criteri di costo minimo e flusso massimo. Lo stesso DFS richiede tempo , che è più efficiente di un algoritmo di flusso massimo.stO(|E|)


Grazie, ma poiché voglio applicare la regola a un sottoinsieme di vertici, la soluzione non sarà così semplice.
Patrick Schmidt,

2

Per costruire sulla risposta di Paresh, se tutte le capacità massime sono una (e tutto il resto è intero), puoi anche dividere ciascun nodo in due in modo che il nodo (n-) abbia tutti i bordi in, il nodo (n +) abbia tutto bordi e (n-) e (n +) sono collegati con un bordo di capacità massima 1. Risolvi questa nuova rete a costo minimo e il gioco è fatto.

Se le capacità massime non sono tutte una, il problema è più difficile. È possibile formulare il problema come MIP (Mixed Integer Program). Gli unici vincoli interi sono i vincoli XOR.

Fortunatamente, questi possono essere modellati come set ordinati speciali - digitare SOS1 (vedi http://en.wikipedia.org/wiki/Special_ordered_set ). La maggior parte dei solutori MIP rappresenta specificamente i vincoli SOS1 e li gestirà in modo molto più efficiente (a volte è necessario dirlo, a volte lo capirà - controlla i tuoi documenti del risolutore).

Sebbene il MIP finirà per convergere alla risposta ottimale, per modelli molto grandi, potresti non avere il tempo di aspettare che finisca. Far convergere MIP di grandi dimensioni è spesso più arte che ingegneria.

Il prossimo suggerimento è molto più lavoro. È possibile utilizzare un solutore di rete a costo minimo come subroutine e possedere una ramificazione sui bordi XOR utilizzando le tecniche SOS1. Ad esempio, su ciascun ramo, disattivare la metà meno utilizzata dei bordi esterni, risolvere la rete a costo minimo (molto velocemente), ripetere fino a quando tutti i vincoli XOR sono soddisfatti.

È possibile assegnare la priorità alla sequenza di ramificazione in base ai propri criteri (volume del flusso, costo del volume X, capacità riservata, numero di fronti possibili, ecc.). Guidando tu stesso la ricerca, puoi approfondire le parti della soluzione più importanti per te.

Non indichi se sai sempre se il tuo problema è fattibile o meno. Se è sempre possibile, potresti essere in grado di cavartela con una strategia di ramificazione che è "backtrack free", cioè seguirla come un'euristica.

Se il problema non è garantito, un MIP potrebbe scomparire per sempre. Un'euristica basata su quanto sopra può ancora essere utile per trovare rapidamente una soluzione con un numero relativamente basso di violazioni.


-2

In generale, la risposta è sconosciuta, non impossibile!

concludiamo che la versione decisionale del flusso della rete di restrizione XOR è NP-Complete. quindi (è possibile, possiamo farlo) se e solo se P = NP.


3
Completa la tua risposta con riferimenti e maggiori dettagli.
vonbrand

Nessun riferimento necessario, questa risposta sta solo sottolineando che se P = NP, è ancora possibile. cioè il problema è NP-Complete, ma se P = NP possiamo risolverlo.
Albert Hendriks,
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.