Membuktikan bahwa diagnosis grafik terarah adalah NP-hard

11

Saya memiliki tugas pekerjaan rumah yang selama ini saya anggap bertentangan, dan saya akan menghargai setiap petunjuk. Ini adalah tentang memilih masalah yang diketahui, NP-kelengkapan yang terbukti, dan membangun pengurangan dari masalah itu ke masalah berikut saya akan memanggil DGD (diagnosis grafik diarahkan).

Masalah

Sebuah contoh dari DGD terdiri dari simpul V = I . O . B , tepi terarah E dan bilangan bulat positif k . Ada tiga jenis simpul: simpul dengan hanya tepi masuk saya , simpul dengan hanya keluar tepi O dan simpul dengan baik masuk dan tepi keluar B . Mari lanjut D = O × aku .(V,E,k)V=I.O.BEkIOBD=O×I

Sekarang, masalahnya adalah apakah kita dapat menutup semua node dengan paling banyak elemen D , yaitukD

SD,|S|k. vV. (v1,v2)S. v1vv2

di mana berarti ada jalur yang diarahkan dari a ke b .abab


Saya berpikir bahwa masalah Dominating Set adalah salah satu yang harus saya kurangi, karena ini juga khawatir tentang menutupi subset node dengan subset lain. Saya mencoba membuat instance DGD dengan terlebih dahulu membuat dua node untuk setiap elemen set yang mendominasi, menyalin semua tepi, dan kemudian menetapkan dari instance DGD sama dengan instance DS.k

Misalkan DS-instance sederhana dengan node , 2 dan 3 dan edge ( 1 , 2 ) dan ( 1 , 3 ) . Ini adalah contoh-ya dengan k = 1 ; set yang mendominasi dalam hal ini hanya terdiri dari simpul 1 . Mengurangi dengan metode yang baru saja dijelaskan, ini akan mengarah ke instance DGD dengan dua jalur ( 1 2 1 ) dan ( 1 3 1 )123(1,2)(1,3)k=11(121)(131); untuk menutup semua node, cukup satu pasangan sudah cukup. Ini akan bekerja dengan sempurna, jika bukan karena set dominasi DS-instance tentu saja tidak dapat ditentukan dalam waktu polinomial, yang merupakan persyaratan di sini.(1,1)

Saya telah menemukan bahwa ada banyak cara yang bagus untuk mengubah tepi dan simpul ketika mengurangi, tetapi masalah saya entah bagaimana mengekspresikan DGD dalam hal k DS . Dominating Set sepertinya merupakan masalah yang pas untuk dikurangi, tetapi karena ini saya pikir mungkin saya harus mencoba mengurangi dari masalah yang tidak memiliki k ?kkk

pengguna8879
sumber
Selamat datang! Saya mencoba mengklarifikasi pernyataan masalah; Apakah ini yang Anda maksudkan? Btw, Anda mungkin ingin memilih nama pengguna yang lebih dikenal daripada "user8879". :)
Raphael
Ya, terima kasih, ini memang versi yang lebih ringkas.
user8879

Jawaban:

9

Mengurangi dari NP-complete SET-COVER sebagai gantinya.

Misalkan dengan k N merupakan instance dari set cover. Definisikan instance ( V , E , k ) dari DGD seperti ini:S1,,Sm{1,,n}kN(V,E,k)

  • V={s1,,sm,o1,,om,e1,,en,o}
  • E={(si,oi)i=1,,n}{(si,ej)jSi}{(ej,o)j=1,,n}
  • k=m+k

Mudah untuk melihat bahwa instance DGD yang dibangun memiliki jawaban positif jika dan hanya jika instance cover yang diberikan memiliki jawaban positif. Secara khusus, semua pasangan ( s i , o i ) harus dipilih tidak peduli apa untuk menutupi semua o i ; maka k dari m pasangan ( s i , o ) harus mencakup semua e j , dan komponen pertama dari mereka yang terpilih adalah solusi dari contoh SET-TUTUP. Jika tidak ada pilihan seperti itu mungkin, instance SET-COVER tidak memiliki solusi juga.m(si,oi)oikm(si,o)ej

Karena konstruksi dimungkinkan dalam waktu polinomial, ini membuktikan SET-COVER DGD.p


Sebagai contoh, perhatikan contoh set cover instance yang diberikan di Wikipedia , yaitu dan set S = { { 1 , 2 , 3 } , { 2 , 4 } , { 3 , 4 } , { 4 , 5 } } . Ini diterjemahkan ke dalam grafik berikut:{1,2,3,4,5}S={{1,2,3},{2,4},{3,4},{4,5}}

contoh
[ sumber ]

Raphael
sumber
1
Ini hampir benar, karena I dan B memang tertutup sepenuhnya, tetapi O tidak. Contoh set-cover adalah instance-ya untuk k = 2, tetapi dalam instance DGD k = 2 meninggalkan s2 dan s3 terbuka. Saya pikir ini mungkin dapat diselesaikan dengan secara otomatis menambahkan tepi dari setiap node di O ke o .
user8879
(si,o)siS
Dapatkan sekarang: buat simpul tambahan di B untuk setiap simpul di O , lalu tautkan ke simpul yang sesuai di O dan ke o . Dalam contoh ini Anda mendapatkan empat jalur tambahan (s1 -> s1 '-> o, dll.). Akhirnya, setelah meningkatkan k dengan empat itu harus lengkap.
user8879
si