Dostaję zestaw , liczbę całkowitą s \ leqslant k i nieujemne liczby całkowite a_ {ij} . Mój problem polega na znalezieniu s podzbiory rozłączne S_j z \ {1, \ ldots, k \} takie, że:
- ; i
- dla wszystkich i .
Jak rozwiązać ten problem? Czy trudno jest znaleźć realne rozwiązanie?
Myślę, że nie jest łatwo rozwiązać problem, ponieważ próbowałem procedury, która zaczyna się od jakiegoś i przypisuje aż do liczby z przypisanych do są większe niż dla niektórych przypisanych . Ale to nie jest poprawne, ponieważ mogłem zostawić część , której nie można przypisać do żadnego (z powodu ich które nie mogą być spełnione).
Metoda brutalnej siły, gdy muszę wygenerować wszystkie podzbiory i przetestować każdy z nich, działa dla mnie ( ), ale jest bardzo nieefektywna.
Odpowiedzi:
Problem ten jest trudny do wyeliminowania przez NP w porównaniu z osłoną wierzchołków.
W zadaniu Pokrycia wierzchołków otrzymujemy wykres i liczbę , a naszym zadaniem jest ustalenie, czy istnieje jakiś podzbiór co najwyżej wierzchołków od tak że każda krawędź w jest padająca co najmniej jednego wierzchołka w . (Równoważnie: Czy można zabić każdą krawędź w poprzez usunięcie co najwyżej wierzchołków?)r U r V E U GG = ( V, E) r U r V. mi U sol r
Po pierwsze, podział do rozłącznych podzbiorów jest równoważna przypisując każdy element w dokładnie jeden z możliwych etykiet. Podstawową ideą redukcji jest utworzenie etykiety dla każdego wierzchołka w i „umożliwienie” przypisania każdej krawędzi tylko jednej z dwóch etykiet odpowiadających jej punktom końcowym, w następującym znaczeniu: przypisanie krawędzi odpowiadającej etykieta nie wprowadza (prawdziwego) ograniczenia co do innych krawędzi, którym można przypisać tę samą etykietę, a przypisanie krawędzi do nie odpowiadającej etykiecie zapobiega przypisaniu tej samej etykiecie innej krawędzi - co oczywiście powoduje zwiększenie liczby wymagane odrębne etykiety.s A s S j v j VZA s ZA s S.jot vjot V.
Aby zbudować instancję problemu z instancji programu Vertex Cover:( G , r )( A , a , s ) ( G , r )
Jeśli jest instancją YES dla Cover Vertex, łatwo zauważyć, że właśnie skonstruowana instancja twojego problemu jest również instancją YES: wystarczy wybrać etykiety odpowiadające wierzchołkom w dowolnym rozwiązaniu , i dla każdej krawędzi przypisz odpowiedni element którakolwiek z etykiet lub została wybrana (wybierz dowolnie, jeśli obie etykiety zostały wybrane). To rozwiązanie wykorzystuje podzbiory i jest poprawne, ponieważ jedynymi obowiązującymi są odpowiednieS j v j U v b v c ∈ E ( b , c ) ∈(G,r) Sj vj U vbvc∈E S b S c s a i j | E |(b,c)∈A Sb Sc s aij etykiety, które mają (nie) efekt zapobiegania więcej niżkrawędzie mają przypisaną tę samą etykietę.|E|
Pozostaje pokazać, że wystąpienie YES twojego problemu oznacza, że oryginał jest wystąpieniem YES okładki wierzchołka. Jest to nieco bardziej skomplikowana, ponieważ ważnego rozwiązania na mogą w przypisaniu krawędź dla etykiety -corresponding , czyli , co oznacza, że nie może niekoniecznie „odczytać” prawidłową pokrywy wierzchołków z ważnego rozwiązania .( G , r ) Y XX=(A,a,s) (G,r) Y X S m m ∉ { i , j } U Y(i,j) Sm m∉{i,j} U Y
Jednakże, przypisywanie innego niż odpowiednie etykiety ma wysoki koszt, który znacznie ogranicza struktury rozwiązania: gdy krawędź jest przypisana taka etykieta z , fakt że zapewnia, że musi to być jedyna krawędź, której przypisano tę etykietę. Tak więc w każdym rozwiązaniu zawierającym taką nieoznaczoną krawędź , moglibyśmy skonstruować alternatywne rozwiązanie w następujący sposób:S m m ∉ { i , j } a ( i ,(i,j) Sm m∉{i,j} Y(i,j)↦ S m Y ′a(i,j),m=1 Y (i,j)↦Sm Y′
Powyższy algorytm musi zakończyć się na jeden z dwóch sposobów: albo zostanie znaleziona nowa etykieta która nie wprowadza sprzeczności, albo zostanie znaleziony pełny cykl wierzchołków. W pierwszym przypadku znaleziono prawidłowe nowe rozwiązanie z zestawami , podczas gdy w drugim przypadku znaleziono prawidłowe nowe rozwiązanie z zestawami ; w obu przypadkach stworzyliśmy nowe, poprawne rozwiązanie z co najmniej jedną dodatkową krawędzią przypisaną do odpowiedniej etykiety. Po powtórzeniu całego tego procesu najwyżejrazy, stworzymy prawidłowe rozwiązanie z którego można odczytać rozwiązanie pierwotnego problemu z pokrywą wierzchołków . s - 1 s | E | Y ″Sz s−1 s |E| Y′′
Ta konstrukcja jest wyraźnie czasem wielomianowym, więc wynika z tego, że twój problem jest trudny do NP.
źródło