Você refinou o seu problema um pouco mais nos comentários. Para ser mais específico, você tem um DAG com todas as arestas que flui para longe da fonte e para a pia t (isto é, todas as bordas estão em um caminho de s para t ). Você deseja encontrar o corte mínimo entre duas peças do DAG, onde a primeira peça está conectada a s e a segunda conectada a t . Para esse problema, uma variação do algoritmo de programação linear padrão para MIN-CUT funciona, mesmo com pesos de borda negativos.ststst
Usamos a mesma notação que na Wikipedia . O custo da aresta é c i j . Colocamos uma função potencial p i em cada nó e deixamos d i j = p i - p j . O LP é
m(i,j)cijpidij=pi−pj
m i n i m i z e s u b j e c t t o ∑( i , j ) ∈ Eceu jdeu j deu j=pEu-pj ∀ ( i , j ) ∈ E deu j≥ 0 ∀ ( i , j ) ∈ E ps= 1 pt= 0
Essas equações garantem que , pois todo vértice está em algum caminho s - t . Da mesma forma, como d i j = p i - p j não é negativo, os potenciais em qualquer caminho de s a t estão diminuindo. Nós ainda precisa mostrar que não é uma solução óptima para o LP com todos p i seja 0 ou 1 . Isso decorre do fato de que o valor para uma solução do LP acima é o valor esperado do corte C w , onde0 ≤ pEu≤ 1stdeu j= pEu- pjstpEu0 01 1CW é escolhido aleatoriamente em [ 0 , 1 ] , e onde corte C wW[ 0 , 1 ]CWé obtido colocando todos os vértices com p i ≥ w no primeiro conjunto de vértices e todos os vértices com p iEupEu≥ w no segundo conjunto.pEu< w