Membiarkan menjadi NFA asiklik.
Sejak asiklik, terbatas.
Bisakah kita menghitung dalam waktu polinomial?
Jika tidak, bisakah kita memperkirakannya?
Perhatikan bahwa jumlah kata tidak sama dengan jumlah jalur penerimaan di , 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.
Jawaban:
Inilah salah satu pendekatan yang saya harapkan akan memberi Anda pendekatan faktor-multiplikatif, dengan waktu polinomial berjalan.
MembiarkanL menjadi bahasa biasa yang merupakan bagian dari {0,1}n misalnya L=L(M)∩{0,1}n . Kami akan mencoba menghitung ukuran perkiraanL .
Pada level tinggi, pendekatan kami adalah perkiraan|L| akan terlihat seperti ini:
Pilih sebagian kecilp dimana 0<p<1 .
Pilih bahasa biasaR sedemikian rupa sehingga, secara kasar, R adalah himpunan bagian acak dari {0,1}n ukuran kira-kira p2n (yaitu, |R|≈p2n ).
Periksa apakahL∩R tidak kosong. Perhatikan bahwa pemeriksaan ini dapat dilakukan dalam waktu polinomial.
Lakukan berulang kali langkah 1-3 untuk berbagai nilaip . Ini memberi Anda beberapa informasi yang memungkinkan Anda memperkirakan|L| .
Khususnya, jika|L|=m , maka kita harapkan
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/m p p
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.R h:{0,1}m→{0,1,2,…,k−1} y∈{0,1,…,k−1} R={x∈{0,1}n:h(x)=y} k=⌈1/p⌉ R h
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.n M L(M) M
(Konstruksi ini mungkin mengingatkan Anda tentang teorema Vazirani-Vazirani tentang SAT yang tidak ambigu.)
sumber
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, kecualiA1 A2 n1 n2 A1 A2 n3 n1=n2=n3 P=NP , Anda tidak dapat menyelesaikan masalah Anda dalam waktu polinomial.
sumber