Oto moja pierwsza próba kłótni. To było złe, ale naprawiłem to po „EDYCJI:”
Jeśli potrafisz skutecznie w przybliżeniu rozwiązać problem maksymalnego cięcia przy ujemnych obciążeniach krawędzi, czy nie możesz go użyć do rozwiązania problemu maksymalnego cięcia przy dodatnich obciążeniach krawędzi? Zacznij od problemu maksymalnego cięcia, który chcesz rozwiązać, którego optymalnym rozwiązaniem jest b . Teraz umieść dużą ujemną krawędź wagi (o wadze - a ) między u i v . Optymalnym rozwiązaniem nowego problemu jest b - a , więc nasz hipotetyczny algorytm aproksymacyjny dostarczy Ci rozwiązanie z maksymalnym cięciem, którego wartość jest co najwyżej ( b - a ) / 2 gorsza niż optymalna. Na oryginalnym wykresie maksymalne cięcie jest nadal co najwyżejb−auvb−a(b−a)/2 ( b - a ) / 2(b−a)/2 gorsze niż optymalne. Jeśli zdecydujesz się blisko B , ten jest niezgodny wynik inapproximability że jeśli P ≠ NP, nie można przybliżona maksymalna kroju lepiej niż 16 / 17 czynnika. ab≠16/17
EDYTOWAĆ:
Powyższy algorytm nie działa, ponieważ nie można zagwarantować, że u i v znajdują się po przeciwnych stronach cięcia na nowym wykresie, nawet jeśli były pierwotnie. Mogę to jednak naprawić w następujący sposób.uv
Załóżmy, że mamy algorytm aproksymacji, który da nam cięcie w granicach 2 OPT, o ile suma wszystkich wag krawędzi jest dodatnia.
Jak wyżej, zacznij od wykresu G ze wszystkimi nieujemnymi wagami na krawędziach. Znajdziemy zmodyfikowany wykres G ∗ z pewnymi ujemnymi wagami, tak że jeśli będziemy w stanie przybliżać maksymalne cięcie G ∗GG∗G∗ ze współczynnikiem 2, możemy bardzo dobrze przybliżać maksymalne cięcie G.G
Wybierz dwa wierzchołki u i v i miej nadzieję, że znajdują się one po przeciwnych stronach maksymalnego cięcia. (Możesz to powtórzyć dla wszystkich możliwych v, aby upewnić się, że jedna próba zadziała.) Teraz połóż dużą ujemną wagę - d na wszystkich krawędziach ( u , x ) i ( v , x ) dla x ≠ u , v i dużej dodatnia waga a na krawędzi ( u , v ) . Załóżmy, że optymalne cięcie ma ciężar O P T .uvv−d(u,x)(v,x)x≠u,va(u,v)OPT
Redukcja o wartości C na G , w którym wierzchołki U i V są po tej samej stronie cięcia, teraz wartości w ° C - 2 d, m , gdzie m jest liczbą wierzchołków na drugiej stronie cięcia. Cięcie z ( u , v ) po przeciwnych stronach o pierwotnej wartości c ma teraz wartość c + a - ( n - 2 ) d . Zatem jeśli wybieramy d wystarczająco duże, możemy wymusić wszystkie cięcia za pomocą u i vcGuvc−2dmm(u,v)cc+a−(n−2)dduvpo tej samej stronie, aby mieć wartość ujemną, więc jeśli istnieje jakiekolwiek cięcie o wartości dodatniej, wówczas optymalne cięcie w G ∗ będzie miało u i v po przeciwnych stronach. Zauważ, że dodajemy stały ciężar ( a - ( n - 2 ) d ) do każdego cięcia za pomocą u i v po przeciwnych stronach.G∗uv(a−(n−2)d)uv
Niech f = ( a - ( n - 2 ) d ) . Wybierz tak, że f ≈ - 0,98 O P T (będziemy usprawiedliwiać tym później). Redukcja o masie C na G o u i v w przeciwnych stronach się teraz cięte z masy c - 0,98 O P T . Oznacza to, że optymalne cięcie w G ∗ ma wagę 0,02 O P Tf=(a−(n−2)d)af≈−0.98OPTcGuvc−0.98OPTG∗0.02OPT . Nasz nowy algorytm znajduje cięcie w G ∗G∗o masie co najmniej 0,01 O P T . Przekłada się to na cięcie na oryginalnym wykresie G o wadze co najmniej 0,99 O P T (ponieważ wszystkie cięcia w G ∗ o dodatniej wadze oddzielają u i0.01OPTG0.99OPTG∗u v ), co jest lepsze niż wynik niedopuszczalności.v
Nie ma problemu z wybraniem d wystarczająco dużego, aby każde cięcie z u i v po tej samej stronie było ujemne, ponieważ możemy wybrać d tak duże, jak chcemy. Ale skąd możemy wybrać tak, że f ≈ - .99 O P T kiedy nie wiemy O P T ? Naprawdę dobrze możemy przybliżać O P T ... jeśli pozwolimy T być sumą wag krawędzi w G , znamy 1duvdaf≈−.99OPTOPTOPTTG2T≤OPT≤T12T≤OPT≤T. So we have a fairly narrow range of values for ff, and we can iterate over ff taking all values between −.49T−.49T and −.99T−.99T at intervals of 0.005T0.005T. For one of these intervals, we are guaranteed that f≈−0.98OPTf≈−0.98OPT, and so one of these iterations is guaranteed to return a good cut.
Finally, we need to check that the new graph has edge weights whose sum is positive. We started with a graph whose edge weights had sum TT, and added ff to the sum of the edge weights. Since −.99T≤f≤−.49T−.99T≤f≤−.49T, we're O.K.