Biorąc pod uwagę 3CNF z klauzulami ϕ 1 , … , ϕ kϕ1,…,ϕk na zmiennych x 1 , … , x nx1,…,xn . Załóżmy, że zarówno x Ixi i Ż x ixi¯¯¯¯¯ pojawia się we wzorze najwyżej k ıki czasach odpowiednio.
Projektujemy kolorowy DAG G,G którego wierzchołki składają się z trzech części:
- „Przypisanie” wierzchołków v i ( j ) i ˉ v i ( j ) , 1 ≤ i ≤ n , 1 ≤ j ≤ k i . Kolor v i ( j ) za pomocą „koloru” x i ( j ) oraz ˉ v i ( j ) za pomocą ¯ x i ( j ) .vi(j)v¯i(j)1≤i≤n1≤j≤kivi(j)xi(j)v¯i(j)xi¯¯¯¯¯(j)
- „Klauzula” wierzchołki w i ′ ( j ′ ) , 1 ≤ i ′ ≤ k , j ′ = 1 , 2 , 3 . Kolor w i ′ ( j ′ ) z kolorem x i ( j ) (lub ¯ x i ( j ) ), jeżeli ¯ x i (lub x i , odpowiednio.) To j ′wi′(j′)1≤i′≤kj′=1,2,3wi′(j′)xi(j)xi¯¯¯¯¯(j)xi¯¯¯¯¯xij′-ty literał klauzuli ϕ i ′ , i jest to j -ta klauzula zawierająca ten literał.ϕi′j
- „Cięte” wierzchołki s = s 0 , s 1 , … , s n , s n + 1 , … s n + k = t . Pokoloruj je wyraźnymi kolorami innymi niż powyższe.s=s0,s1,…,sn,sn+1,…sn+k=t
Krawędzie obejmują:
- s i - 1 v i ( 1 ) , v i ( j ) v i ( j + 1 ) , v i ( k i ) s i ;si−1vi(1)vi(j)vi(j+1)vi(ki)si
- s i - 1 ˉ v i ( 1 ) , ˉ v i ( j ) ˉ v i ( j + 1 ) , ˉ v i ( k i ) s i ;si−1v¯i(1)v¯i(j)v¯i(j+1)v¯i(ki)si
- oraz s n + i ′ - 1 w i ′ ( j ′ ) , w i ′ ( j ′ ) s n + i ′ .sn+i′−1wi′(j′)wi′(j′)sn+i′
Na przykład z 3CNF
( x 1 ∨ x 2 ∨ ¯ x 3 ) ∧ ( x 1 ∨ ¯ x 2 ∨ x 3 )
budowany jest następujący wykres (kierunki krawędzi są od lewej do prawej).
(x1∨x2∨x3¯¯¯¯¯)∧(x1∨x2¯¯¯¯¯∨x3)
Teraz to nie jest trudno zauważyć, że oryginalny 3CNF jest spe wtedy i tylko wtedy, jeśli istnieje s - t ścieżka z różnymi kolorami wierzchołków w G .stG
(Nawiasem mówiąc, jest to produkt uboczny, że istnienie ścieżki s - t o różnych kolorach wierzchołków w kolorowym DAG jest NP-trudne . Nie znalazłem wielu literatur na temat tego problemu w perspektywie obliczeniowej. Jeśli wiesz, proszę komentarz!)stNP-hard
Jaki jest zatem związek między problemem G i OP? Intuicyjnie zamierzamy zaprojektować macierz h , aby każdy kolor był odwzorowany na wiersz (którym jest osoba), a krawędzie zostały odwzorowane na kolejne kolumny (szczeliny czasowe). Dlatego maksymalne szeregowanie, które zasadniczo przebiega od lewej do prawej w macierzy, odpowiada ścieżce s - t .Ghst
Nasza macierz h ma 2 n + 1 + ∑ i 2 k i + k kolumn, których indeksy zaczynają się od 0 . W poniższym Constrcution X Y są dwie wartości spełniać 1 « X « Y . Stosunki X / 1 , Y / X mogą być dużymi potęgami k i n . Niech K i = 2 i + 2 ∑ i jh2n+1+∑i2ki+k0XY1≪X≪YX/1,Y/Xkn= 1 ki.Ki=2i+2∑ij=1ki
- Dla każdego s i , 0 ≤ i ≤ n , niech h ( s i , K i ) = h ( s i , K i - k i - 1 ) = h ( s i , K i + k i + 1 + 1 ) = Y (jeśli współrzędna istnieje, to samo poniżej).si0≤i≤nh(si,Ki)=h(si,Ki−ki−1)=h(si,Ki+ki+1+1)=Y
- For each xi(j)xi(j), let h(xi(j),Ki−1+j)=Xh(xi(j),Ki−1+j)=X; For each ¯xi(j)xi¯¯¯¯¯(j), let h(¯xi(j),Ki−1+ki+1+j)=Xh(xi¯¯¯¯¯(j),Ki−1+ki+1+j)=X.
- For each ϕi′ϕi′, 1≤i′≤k1≤i′≤k and a literal xx in the clause ϕi′ϕi′, let h(x,Kn+i′)=1h(x,Kn+i′)=1.
- All the other entries are 0.
For example, for the above example graph the corresponding matrix is
Now we claim: the original 3CNF is satisfiable if and only if the maximum value is (2n+1)Y+∑ikiX+k(2n+1)Y+∑ikiX+k.
Rozważ harmonogram osiągający maksymalną wartość. Ponieważ w h są dokładnie kolumny ( 2 n + 1 ) zawierające Y , wszystkie powinny być przykryte. Dla kolumny K i + k i + 1, która ma dwie opcje Y , załóżmy, że szeregowanie przypisuje ją do s i . Ponieważ kolumna K i musi być przypisana do s i , po kolei musimy utracić kolumny K i + 1 do K i + k(2n+1)hYKi+ki+1YsiKisiKi+1i . To samo dzieje się, jeśli szeregowanie przypisze kolumnę K i + k i + 1 do s i + 1 .Ki+kiKi+ki+1si+1
Dlatego też, w celu uzyskania wartości Ď I k I X , musimy wybrać cała reszta dostępnego X „s w matrycy, co odpowiada cesji na zmiennych. Tak więc reszta wartości k jest osiągalna tylko wtedy, gdy przypisanie spełnia każdą klauzulę.∑ikiXXk
Podsumowując, ustalenie maksymalnej wartości harmonogramu prawnego jest trudne . Być może dlatego wszystkie nasze poprzednie próby znalezienia algorytmu nie powiodły się.NP-hard
This solution has problems and will be deleted soon; see templatetypedef's comment.
You can solve this in polynomial time using minimum-cost flow. In the following, all edges have unit capacity.
A minimum-cost flow in this network will have total cost equal to the negative of the best possible profit. (This cost will be negative, but that's not a problem.) There is an optimal integral solution in which every person i has a single edge leaving si with a flow of 1 and a single edge arriving at ti with a flow of 1, and all other edges incident on either si or ti have 0 flow. Let these flow-1 edges for person i be sivj and vkti: then k≥j, since the only paths among v-vertices are those that increase the subscript. If k=j, then person i is allocated no time slots; otherwise, person i is allocated the block of time slots j+1,…,k.
Intuitively, each person "gets" 1 unit of flow from s and chooses a start time (edge) and end time (edge); these start and end edges are the only edges with nonzero cost in the network, and we can represent the value of a block j+1,…,k as the difference of two prefix sums. The unit capacities on the edges between the v-vertices act to prevent 2 people from using the same time slot.
Interestingly, this formulation will work even if the values h(i,j) may be negative.
źródło