Aqui foi minha primeira tentativa de discussão. Estava errado, mas eu o corrigi após o "EDIT:"
Se você pudesse resolver de maneira eficiente o problema de corte máximo com pesos negativos nas bordas, não poderia usá-lo para resolver o problema de corte máximo com pesos positivos nas bordas? Comece com um problema de corte máximo que você deseja resolver cuja solução ideal é b . Agora, coloque uma grande margem de peso negativo (com peso - a ) entre u e v . A solução ideal do novo problema é b - a , portanto, nosso hipotético algoritmo de aproximação fornecerá uma solução com corte máximo cujo valor é no máximo ( b - a ) / 2 pior que o ideal. No gráfico original, o corte máximo ainda é no máximob−auvb−a(b−a)/2( b - a ) / 2 pior que o ideal. Se você escolher um perto de b , isso viola o resultado inapproximability que, se P ≠ NP, você não pode aproximada max-corte para melhor do que um 16 / 17 de fator. (b−a)/2ab≠16/17
EDITAR:
O algoritmo acima não funciona porque você não pode garantir que u e v estejam em lados opostos do corte no novo gráfico, mesmo se eles estivessem originalmente. Eu posso corrigir isso da seguinte maneira, no entanto.uv
Vamos supor que temos um algoritmo de aproximação que nos dará um corte dentro de um fator de 2 de OPT, desde que a soma de todos os pesos das arestas seja positiva.
Como acima, comece com um gráfico G com todos os pesos não negativos nas arestas. Encontraremos um gráfico modificado G ∗ com alguns pesos negativos, de modo que, se pudermos aproximar o corte máximo de G ∗ dentro de um fator de 2, podemos aproximar muito bem o corte máximo de G ..GG∗G∗G
Escolha dois vértices u e v , e espero que eles estão em lados opostos do corte máx. (Você pode repetir isso para todo o possível v para garantir que uma tentativa funcione.) Agora, coloque um grande peso negativo - d em todas as arestas ( u , x ) e ( v , x ) para x ≠ u , ve um grande peso positivo a na borda ( u , v ) . Assume-se que a óptima corte tem peso S P T .vocêvv- d( u , x )( v , x )x ≠ u , vuma( u , v )O PT
Um corte com valor c em G , onde os vértices u e v estão do mesmo lado do corte, agora tem valor em c - 2 d m, em que m é o número de vértices do outro lado do corte. Um corte com ( u , v ) em lados opostos com o valor original c agora tem o valor c + a - ( n - 2 ) d . Assim, se escolhermos d grande o suficiente, poderemos forçar todos os cortes com u e vcGvocêvc−2dmm(u,v)cc+a−(n−2)dduvno mesmo lado para ter valor negativo, por isso, se existe qualquer corte com valor positivo, em seguida, o corte óptima em L * terá u e v em lados opostos. Observe que estamos adicionando um peso fixo ( a - ( n - 2 ) d ) a qualquer corte com u e v em lados opostos.G∗uv(a−(n−2)d)uv
Seja f = ( a - ( n - 2 ) d ) . Escolha a para que f ≈ - 0,98 O P T (justificaremos isso mais tarde). Um corte com peso c em L possuindo u e v em lados opostos torna-se agora um corte com peso c - 0,98 S P T . Isso significa que o corte ideal em G ∗ tem peso 0,02 O P Tf=(a−(n−2)d)af≈−0.98OPTcGuvc−0.98OPTG∗0.02OPT. O nosso novo algoritmo encontra um corte em L * com o peso, pelo menos, 0,01 S P T . Isso se traduz em um corte no gráfico original G com peso de pelo menos 0,99 O P T (uma vez que todos os cortes em G ∗ com peso positivo separam u e v ), o que é melhor que o resultado da inadequação.G∗0.01OPTG0.99OPTG∗uv
Não há problema em escolher d grande o suficiente para fazer qualquer corte com u e v do mesmo lado negativo, pois podemos escolher d tão grande quanto queremos. Mas como escolhemos um modo que f ≈ - 0,99 O P T quando não conhecíamos O P T ? Podemos aproximar muito bem O P T ... se deixarmos T ser a soma dos pesos das arestas em G , sabemos 1duvdaf≈−.99OPTOPTOPTTG2 T≤SPT≤T. Portanto, temos uma gama bastante estreita de valores def, e podemos iterarftomar todos os valores entre-0,49Te-0,99Tem intervalos de0,005T. Para um desses intervalos, garantimos quef≈-0,98OPTe, portanto, uma dessas iterações deve retornar um bom corte.12T≤OPT≤Tff−.49T−.99T0.005Tf≈−0.98OPT
Finalmente, precisamos verificar se o novo gráfico possui pesos de borda cuja soma é positiva. Começamos com um gráfico cujos pesos das arestas tinham soma T e adicionamos f à soma dos pesos das arestas. Desde - 0,99 T ≤ f ≤ - 0,49 T , estamos bem Tf−.99T≤f≤−.49T