Diberikan 3CNF dengan klausa pada variabel . Misalkan dan muncul di rumus masing-masing paling kali .ϕ 1 , … , ϕ k x 1 , … , x n x i ¯ x i k iϕ1,…,ϕkx1,…,xnxixi¯¯¯¯¯ki
Kami merancang DAG berwarna yang simpulnya terdiri dari tiga bagian:GG
- "Penugasan" simpul dan , , . Warnai dengan "color" , dan dengan .v i ( j ) ˉ v i ( j ) 1 ≤ i ≤ n 1 ≤ j ≤ k ivi(j)v¯i(j)1≤i≤n1≤j≤ki v i ( j ) x i ( jvi(j) )xi(j)ˉvi(j)v¯i(j)¯xi(j)xi¯¯¯¯¯(j)
- "Klausul" simpul w i ′ ( j ′ ) , 1 ≤ i ′ ≤ k , j ′ = 1 , 2 , 3 . Warna w i ′ ( j ′ ) dengan warna x i ( j ) (atau ¯ x i ( j ) ) jika ¯ x i (atau , resp.) Adalah -th literal dari klausawi′(j′)1≤i′≤kj′=1,2,3wi′(j′)xi(j)xi¯¯¯¯¯(j)xi¯¯¯¯¯xixij′j′ϕi′ϕi′ , dan itu adalah klausa ke- mengandung literal ini.jj
- "Potong" simpul . Warnai mereka dengan warna berbeda yang berbeda dari atas.s=s0,s1,…,sn,sn+1,…sn+k=ts=s0,s1,…,sn,sn+1,…sn+k=t
Tepi meliputi:
- 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
- dan s n + i ′ - 1 w i ′ ( j ′ ) , w i ′ ( j ′ ) s n + i ′ .sn+i′−1wi′(j′)wi′(j′)sn+i′
Misalnya, dari 3CNF
( x 1 ∨ x 2 ∨ ¯ x 3 ) ∧ ( x 1 ∨ ¯ x 2 ∨ x 3 )
grafik berikut dibuat (Arah tepi dari kiri ke kanan).
(x1∨x2∨x3¯¯¯¯¯)∧(x1∨x2¯¯¯¯¯∨x3)
Sekarang tidak sulit untuk melihat bahwa 3CNF asli satisfiable jika dan hanya jika ada s - t path dengan warna vertex yang berbeda di G .stG
(Ngomong-ngomong, itu adalah produk sampingan bahwa keberadaan s - t path dengan berbagai warna titik dalam DAG berwarna adalah NP-hard . Saya tidak menemukan banyak literatur tentang masalah ini dalam perspektif komputasi. Jika Anda tahu, tolong komentar!)stNP-hard
Jadi apa hubungan antara masalah G dan OP? Secara intuitif apa yang akan kita lakukan adalah merancang matriks h , sehingga setiap warna dipetakan ke baris (yang adalah orang), dan ujungnya dipetakan ke kolom berturut-turut (slot waktu). Oleh karena itu penjadwalan maksimum, yang pada dasarnya bergerak dari kiri ke kanan dalam matriks, sesuai dengan jalur s - t .Ghst
Matriks kami h memiliki 2 n + 1 + Σ i 2 k i + k kolom, dengan indeks mulai dari 0 . Dalam berikut constrcution X merupakan Y dua nilai memuaskan 1 « X « Y . Rasio X / 1 , Y / X dapat menjadi kekuatan besar k dan n . Mari K i = 2 i + 2 Σ i jh2n+1+∑i2ki+k0XY1≪X≪YX/1,Y/Xkn= 1 ki.Ki=2i+2∑ij=1ki
- Untuk setiap s i , 0 ≤ i ≤ n , misalkan h ( s i , K i ) = h ( s i , K i - k i - 1 ) = h ( s i , K i + k i + 1 + 1 ) = Y (jika koordinat ada, sama di bawah).si0≤i≤nh(si,Ki)=h(si,Ki−ki−1)=h(si,Ki+ki+1+1)=Y
- Untuk setiap x i ( j ) , misalkan h ( x i ( j ) , K i - 1 + j ) = X ; Untuk setiap ¯ x i ( j ) , biarkan h ( ¯ x i ( j ) , K i - 1 + k i + 1 + j ) = X .xi(j)h(xi(j),Ki−1+j)=Xxi¯¯¯¯¯(j)h(xi¯¯¯¯¯(j),Ki−1+ki+1+j)=X
- Untuk setiap ϕ i ′ , 1 ≤ i ′ ≤ k dan literal x dalam klausa ϕ i ′ , misalkan h ( x , K n + i ′ ) = 1 .ϕi′1≤i′≤kxϕi′h(x,Kn+i′)=1
- Semua entri lainnya adalah 0.
Sebagai contoh, untuk contoh grafik di atas matriks yang sesuai adalah
Sekarang kita mengklaim: yang 3CNF asli satisfiable jika dan hanya jika nilai maksimum adalah ( 2 n + 1 ) Y + Σ i k i X + k .(2n+1)Y+∑ikiX+k
Pertimbangkan penjadwalan yang mencapai nilai maksimum. Karena ada persis ( 2 n + 1 ) kolom di h mengandung Y , mereka semua harus ditutupi. Untuk kolom K i + k i + 1 yang memiliki dua pilihan Y , misalkan penjadwalan memberikannya ke s i . Karena kolom K i harus ditugaskan ke s i , oleh konsistensi kita harus kehilangan kolom K i + 1 hingga K i + k(2n+1)hYKi+ki+1YsiKisiKi+1i . Hal yang sama terjadi jika penjadwalan menetapkan kolom K i + k i + 1 ke s i + 1 .Ki+kiKi+ki+1si+1
Oleh karena itu, dalam rangka untuk memiliki nilai Σ i k i X , kita harus pilih semua sisa tersedia X 's dalam matriks, yang sesuai dengan tugas pada variabel. Jadi nilai sisa k dapat dicapai jika dan hanya jika penugasan memenuhi setiap klausa.∑ikiXXk
Sebagai kesimpulan, menentukan nilai maksimum penjadwalan hukum adalah NP-hard . Mungkin itu sebabnya semua upaya kami sebelumnya untuk menemukan algoritma gagal.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 ii has a single edge leaving sisi with a flow of 1 and a single edge arriving at titi with a flow of 1, and all other edges incident on either sisi or titi have 0 flow. Let these flow-1 edges for person ii be sivjsivj 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.
sumber