Apakah teka-teki silang regex NP-keras?


13

Saya bermain-main beberapa hari lalu di situs web ini: http://regexcrossword.com/ dan itu membuat saya bertanya-tanya apa cara terbaik untuk menyelesaikannya.

Bisakah Anda memecahkan masalah berikut dalam waktu polinomial atau NP-keras?

Diberi kisi NxM dengan N ekspresi reguler untuk kolom dan M untuk baris, temukan solusi apa pun untuk kisi sehingga semua ekspresi reguler terpenuhi, atau katakan bahwa tidak ada solusi.


Belum melihat situs, tetapi pertanyaan dengan Regex cenderung PSPACE lengkap, kelas yang setidaknya sekeras NP
jmite

1
@jmite Menebak string yang sesuai dengan beberapa ekspresi reguler adalah "mudah" karena kita tidak harus mendapatkan beberapa properti global dari ekspresi reguler. Sebenarnya, saya pikir masalahnya ada di NP (lihat komentar di bawah jawaban FrankW.)
Raphael

Jawaban:


11

Masalahnya adalah NP-hard.

Kami menunjukkan ini dengan mengurangi penutup simpul:

Diberikan grafik dan ambang k , apakah ada subset V V kardinalitas paling banyak k , sehingga setiap sisi dalam E adalah insiden setidaknya satu simpul dalam V ?G=(V,E)kVVkEV

Kami menerjemahkan ini menjadi teka-teki silang regex dengan kolom dan | V | baris sebagai berikut:|E|+1|V|

Semua kolom, kecuali yang pertama, berhubungan dengan tepi. Mereka mendapatkan regex .01(0|1)

Semua baris berhubungan dengan suatu titik. Mereka mendapatkan regex yang memungkinkan untuk menulis

  • a di kolom pertama dan setiap kolom yang terkait dengan insiden tepi ke simpul itu dan nol di semua kolom lainnya, atau1

  • 0

Akhirnya, kolom pertama menghitung ukuran penutup simpul. Ia mendapat regex, yang memungkinkan paling banyak yang .k

Korespondensi antara solusi untuk teka-teki silang regex dan penutup vertex harus jelas.

Contoh:

Temukan penutup vertex ukuran 2 untuk grafik berikut:

https://i.imgur.com/TY6sjjV.png

VA=0|10110

VB=0|11101

VC=0|10011

VD=0|11000

Counter=0|010|01010

E1=01(0|1)

E2=01(0|1)

E3=01(0|1)

E4=01(0|1)

Terakhir, Anda dapat mengatur "silang" sehingga melalui V D adalah atas regexes dan C o uVAVDCHaikamunterE1E4

Memecahkan teka-teki silang regex ini memberi Anda penutup titik ukuran 2 untuk simpul VSEBUAH,VBVC,VB

Jika kita mengubah k menjadi 1 dan menjadiCHaikamunter0|010


2
Karena kita dapat a) menghitung NFA berukuran polinomi untuk ekspresi reguler serta menebak b) solusi dan c) (ukuran linear) perhitungan semua NFA dan d) memverifikasi (dalam waktu polinomial) bahwa perhitungan sesuai dengan kata-kata yang ditebak, masalahnya juga di NP.
Raphael

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.