Kompleksitas jenis topologi dengan posisi terbatas

15

Saya diberikan sebagai masukan DAG dari simpul dimana setiap simpul adalah tambahan label dengan beberapa .GnxS(x){1,,n}

Jenis topologi dari adalah suatu penambangan dari simpul ke sedemikian rupa sehingga untuk semua , , jika ada jalur dari ke dalam maka . Saya ingin memutuskan apakah ada semacam topologi sehingga untuk semua , .GfG{1,,n}xyxyGf(x)f(y)Gxf(x)S(x)

Apa kerumitan masalah keputusan ini?

[Catatan: Jelas ini dalam NP. Jika Anda melihat grafik dari pasangan vertex / posisi yang diperbolehkan, dengan tepi yang tidak terarah di antara pasangan yang bertentangan karena melanggar urutan, Anda mendapatkan grafik klik terpisah di mana Anda ingin memilih paling banyak satu pasangan per klik, paling banyak satu pasangan per posisi dan paling banyak satu pasangan per dhuwur - sepertinya terkait dengan pencocokan 3 dimensi tapi saya tidak bisa melihat apakah masih sulit dengan struktur tambahan dari masalah khusus ini.]

a3nm
sumber

Jawaban:

9

Saya pikir masalah ini NP-hard. Saya mencoba membuat sketsa pengurangan dari MinSAT. Dalam masalah MinSAT kami diberi CNF dan tujuan kami adalah untuk meminimalkan jumlah klausa yang puas. Masalah ini NP-hard, lihat misalnya, http://epubs.siam.org/doi/abs/10.1137/S0895480191220836?journalCode=sjdmec

Membagi simpul menjadi dua kelompok - beberapa akan mewakili literal, yang lain klausa, jadi mana v adalah jumlah variabel dari CNF (biasanya dilambangkan dengan n ) dan c adalah jumlah klausa. Arahkan sebuah tepi dari masing-masing literal-vertex ke simpul-klausa tempat itu terjadi. Tentukan S untuk literal-vertex yang mewakili x i sebagai(di manaadalah parameter arbitrer), sehinggadanataudan{ i , i + v + k } k f ( x i ) = i f ( ˉ x i ) = i + v + k f ( ˉ x i ) = i f ( x i ) = i + v + k S = { v +n=2v+cvncSxi{i,i+v+k}kf(xi)=if(x¯i)=i+v+kf(x¯i)=if(xi)=i+v+k. Untuk setiap klausa-simpul, misalkan , jadi dari klausa-simpul adalah `` kecil ''.S={v+1,,v+k,2v+k+1,,n}k

Sekarang CNF memiliki tugas di mana setidaknya klausa salah jika dan hanya jika masalah Anda dapat diselesaikan untuk contoh di atas. Masalah MinSAT adalah persis untuk menguji apakah rumus CNF memiliki tugas yang membuat setidaknya klausa salah, jadi ini menunjukkan bahwa masalah Anda NP-hard.kφk

Untuk membantu Anda memahami pengurangan ini, inilah intuisi: label kecil ( ) sesuai dengan nilai kebenaran False, dan label besar ( ) sesuai ke True. Batasan untuk simpul-literal memastikan bahwa setiap benar atau salah dan bahwa memiliki nilai kebenaran yang berlawanan. Tepi memastikan bahwa jika ada literal Benar, maka semua klausa-simpul yang mengandungnya juga ditetapkan Benar. (Sebaliknya, jika semua literal dalam klausa ditetapkan False, maka struktur grafik ini memungkinkan verteks klausa untuk ditetapkan False atau True.) Akhirnya, pilihan memastikan bahwa dari klausa-simpul ditetapkan False dan1,2,,v+kv+k+1,,2v+kxixi¯kkckdari mereka ditugaskan Benar. Jadi, jika ada semacam topologi yang valid dari grafik ini, maka ada tugas untuk variabel yang membuat setidaknya dari klausa dari false (semua klausa-simpul yang ditugaskan False, plus kemungkinan beberapa dari yang ditugaskan Benar). Sebaliknya, jika ada tugas untuk variabel yang membuat setidaknya dari klausa dari salah, maka ada semacam topologi yang valid dari grafik ini (kita mengisi label untuk simpul-literal dengan cara yang jelas; dan untuk setiap klausakφkφφitu benar, kami memberikan label klausa-vertex yang sesuai dengan True; simpul-klausa lainnya dapat menerima label yang sesuai dengan nilai kebenaran arbitrer).

domotorp
sumber
Terima kasih atas jawaban anda! Saya mencoba memahami sketsa Anda. Maukah Anda menjelaskan apa itu ? k
a3nm
1
@ a3nm: k adalah parameter yang diberikan untuk input MinSAT.
domotorp
1
@ Marszio: SAT tidak setara dengan MinSAT dengan , seperti dalam masalah yang terakhir kita akan meminta semua klausa menjadi salah. Anda φ tidak memiliki semua klausul tugas palsu. Tentu saja ini tidak membuktikan pengurangan saya benar ...k=|c|ϕ
domotorp
Ini adalah pengurangan yang luar biasa! @ a3nm, saya telah menyarankan edit untuk jawaban untuk menjelaskan pengurangan elegan domotorp lebih detail; jika disetujui, semoga akan membantu Anda memahami ide-ide dengan lebih jelas.
DW
@domotorp: Anda benar, saya benar-benar merindukan apa itu MinSAT. Pengurangan bagus !!!
Marzio De Biasi
2

Perhatikan bahwa jika Anda mengendurkan masalah dengan membiarkan menjadi arbitrer (tidak harus bijektif), maka itu menjadi polinomial. Algoritme berproses dengan cara yang sama dengan pengurutan topologis: Anda memberi nomor pada simpul satu per satu, mempertahankan set U dari simpul yang tidak bernomor yang tetangganya telah diberi nomor. Jika memungkinkan, Anda memilih simpul x U dan beri angka dengan elemen terkecil S ( x ) lebih besar dari jumlah tetangganya. Tidak sulit untuk melihat bahwa instance ( G , S ) memiliki solusi jika algoritma sebelumnya berjalan pada ( G ,fUxUS(x)(G,S) berakhir dengan semua simpul diberi nomor.(G,S)

Super0
sumber
Poin wajar, relaksasi ini berarti heuristik serakah bekerja, dan itu bahkan dalam kasus di mana bukan jumlah simpul tetapi nilai yang berubah-ubah. Apakah kita setuju bahwa dalam kasus terakhir, di mana injeksi dan surjektivitas tidak setara lagi, Anda perlu bersantai keduanya (dan bukan hanya satu) agar heuristik rakus bekerja? n
a3nm
2

Pengamatan sepele adalah bahwa jika untuk semua x , maka masalah ini dapat dipecahkan dalam waktu polinomial, dengan mereduksi menjadi 2SAT.|S(x)|2x

Begini caranya. Memperkenalkan variabel untuk setiap simpul x dan setiap i sedemikian rupa sehingga saya S ( x ) . Untuk setiap pasangan x , y dari simpul, jika ada jalur dari x ke y , kita mendapatkan beberapa kendala: jika i S ( x ) , j S ( y ) , dan i > j , maka kita mendapatkan batasan ¬ v x , sayavx,ixiiS(x)x,yxyiS(x)jS(y)i>j . Bijektivitas memberi kita satu set kendala: untuk setiap pasangan x , y dari simpul dengan x y , jika i S ( x ) dan i S ( y ) , kita tambahkan ¬ v x , i¬ v y , i . Akhirnya, persyaratan bahwa setiap simpul harus diberi label memberi kita satu set kendala lagi: untuk setiap x , jika S (¬vx,i¬vy,jx,yxyiS(x)iS(y)¬vx,i¬vy,ix , kita mendapatkan batasan v x , iv x , j . (Perhatikan bahwa hanya set kendala terakhir yang mengeksploitasi janji bahwa | S ( x ) |2 untuk setiap x .)S(x)={i,j}vx,ivx,j|S(x)|2x

Saya menyadari pengamatan ini tidak akan membantu Anda dalam situasi khusus Anda. Maaf tentang itu

DW
sumber