Hai affinato di più il tuo problema nei commenti. Per essere più precisi, si dispone di un DAG con tutti i bordi che scorre lontano dalla sorgente e verso il lavandino t (cioè, tutti i bordi sono su un percorso da s a t ). Si desidera trovare il taglio minimo tra due pezzi del DAG, in cui il primo pezzo è collegato a s , e il secondo collegato a t . Per questo problema, funziona una variazione dell'algoritmo di programmazione lineare standard per MIN-CUT, anche con pesi di bordo negativi.StStSt
Usiamo la stessa notazione di Wikipedia . Il costo del bordo è c i j . Mettiamo una potenziale funzione p i su ciascun nodo e lasciamo d i j = p i - p j . L'LP è
m i n i m i z e( i , j )cio jpiodio j= pio- pj
m i n i m i z e s u b j e c t t o Σ( i , j ) ∈ Ecio jdio j dio j= pio- pj ∀ ( i , j ) ∈ E dio j≥ 0 ∀ ( i , j ) ∈ E pS= 1 pt= 0
Queste equazioni garantiscono che , poiché ogni vertice si trova su un percorso s - t . Allo stesso modo, poiché d i j = p i - p j non è negativo, i potenziali su qualsiasi percorso da s a t stanno diminuendo. Dobbiamo ancora dimostrare che esiste una soluzione ottimale al LP tutte p io sia 0 o 1 . Ciò deriva dal fatto che il valore per una soluzione dell'LP sopra è il valore atteso del taglio C w , dove0 ≤ pio≤ 1Stdio j= pio- pjStpio01Cw viene scelto casualmente in [ 0 , 1 ] e dovesi ottiene iltaglio C w inserendo tutti i vertici i con p i ≥ w nella prima serie di vertici e tutti i vertici con p i < w nella seconda serie.w[ 0 , 1 ]Cwiopio≥ wpio< w