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.
complexity-theory
np-hard
regular-expressions
Glen Takahashi
sumber
sumber
Jawaban:
Masalahnya adalah NP-hard.
Kami menunjukkan ini dengan mengurangi penutup simpul:
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 .0∗1(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
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:
Terakhir, Anda dapat mengatur "silang" sehingga melalui V D adalah atas regexes dan C o uVA VD Co u n t e r E1 E4
Memecahkan teka-teki silang regex ini memberi Anda penutup titik ukuran 2 untuk simpulVSEBUAH, VB VC, VB
Jika kita mengubah k menjadi 1 dan menjadiCo u n t e r 0∗∣∣0∗10∗
sumber
Pertanyaannya tetap lengkap NP bahkan ketika semua ekspresi reguler sama. http://arxiv.org/abs/1411.5437
sumber