Menghitung jumlah kata yang diterima oleh NFA asiklik

8

Membiarkan M menjadi NFA asiklik.

Sejak M asiklik, L(M) terbatas.

Bisakah kita menghitung |L(M)| dalam waktu polinomial?

Jika tidak, bisakah kita memperkirakannya?


Perhatikan bahwa jumlah kata tidak sama dengan jumlah jalur penerimaan di M, yang mudah dihitung.


Izinkan saya menyebutkan satu pendekatan yang jelas tidak berhasil: ubah NFA menjadi DFA (yang juga akan asiklik), lalu hitung jumlah jalur penerimaan di DFA. Ini tidak menghasilkan algoritma waktu polinomial, karena konversi dapat menyebabkan ledakan eksponensial dalam ukuran DFA.

BPR
sumber
Teknik untuk automata arbitrary terbawa, lihat misalnya di cstheory.SE .
Raphael
1
@ Raphael - Saya khawatir saya tidak mengerti jawaban Anda di sana. Secara khusus, tampaknya tidak bekerja untuk NFA yang ambigu. Menghitung jumlah kata dalam UFA sama dengan menghitung jumlah jalur penerimaan, yang, sebagaimana disebutkan dalam pertanyaan, sederhana.
RB

Jawaban:

2

Inilah salah satu pendekatan yang saya harapkan akan memberi Anda pendekatan faktor-multiplikatif, dengan waktu polinomial berjalan.

Membiarkan L menjadi bahasa biasa yang merupakan bagian dari {0,1}nmisalnya L=L(M){0,1}n. Kami akan mencoba menghitung ukuran perkiraanL.

Pada level tinggi, pendekatan kami adalah perkiraan |L| akan terlihat seperti ini:

  1. Pilih sebagian kecil pdimana 0<p<1.

  2. Pilih bahasa biasa R sedemikian rupa sehingga, secara kasar, R adalah himpunan bagian acak dari {0,1}n ukuran kira-kira p2n (yaitu, |R|p2n).

  3. Periksa apakah LRtidak kosong. Perhatikan bahwa pemeriksaan ini dapat dilakukan dalam waktu polinomial.

Lakukan berulang kali langkah 1-3 untuk berbagai nilai p. Ini memberi Anda beberapa informasi yang memungkinkan Anda memperkirakan|L|.

Khususnya, jika |L|=m, maka kita harapkan

Pr[LR=]=(1p)mepm.

Jadi, jika Anda memilih dan ulangi langkah 1-3 beberapa kali, Anda akan melihat persimpangan kosong sekitar 37% dari waktu. Jika Anda melihat persimpangan kosong secara signifikan lebih sering daripada itu, maka tambah dan coba lagi. Jika Anda melihat persimpangan kosong jauh lebih jarang daripada itu, Anda mungkin mengurangi dan coba lagi.p=1/mpp

Dengan cara ini, menggunakan sesuatu seperti pencarian biner, Anda harus dapat memperkirakanke dalam faktor perkiraan multiplikatif.|L|

Anda masih harus memilih cara untuk memilih agar teratur tetapi juga berperilaku seperti subset acak. Ada banyak kemungkinan, tetapi satu cara yang baik mungkin untuk memilih hash 2-universal acak , pilih secara acak, dan biarkan . Memilih memberi Anda himpunan acak dengan ukuran yang tepat, dan karena adalah 2-universal, semua matematika di atas harus bekerja dengan baik.Rh:{0,1}m{0,1,2,,k1}y{0,1,,k1}R={x{0,1}n:h(x)=y}k=1/pRh

Ini akan menyelesaikan masalah Anda untuk kasus di mana semua string di NFA memiliki panjang yang sama, katakanlah . Jika mereka memiliki panjang yang bervariasi, maka Anda dapat menangani setiap panjang yang mungkin secara terpisah. Karena adalah asiklik, panjang maksimum string apa pun dalam paling banyak adalah jumlah negara dalam , jadi ini tidak meningkatkan runtime terlalu banyak.nML(M)M

(Konstruksi ini mungkin mengingatkan Anda tentang teorema Vazirani-Vazirani tentang SAT yang tidak ambigu.)

DW
sumber
0

Asumsikan bahwa Anda dapat menghitung dalam polinomial jumlah kata-kata dari bahasa yang diberikan oleh NFA asiklik. Dalam hal ini, dengan mempertimbangkan dua NFA asiklik dan , Anda dapat menghitung dalam polinomial waktu kardinal (resp. ) dari bahasa (resp. ). Dengan produk langsung (menjaga asiklisitas) Anda juga dapat menghitung dalam waktu polinom kardinal dari persimpangan dua bahasa ini. Kedua automata menerima bahasa yang sama iff . Oleh karena itu, Anda dapat menguji kesetaraan dua bahasa hingga yang diberikan oleh asiklik automata dalam polinomial, yang dikenal sebagai masalah NP-complete. Jadi, kecualiA1A2n1n2A1A2n3n1=n2=n3P=NP, Anda tidak dapat menyelesaikan masalah Anda dalam waktu polinomial.

nevro
sumber
kutipan diperlukan untuk hasil kekerasan
A.Schulz