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:
Pilih sebagian kecil pdimana 0<p<1.
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).
Periksa apakah L∩Rtidak 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[L∩R=∅]=(1−p)m≈e−pm.
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,…,k−1}y∈{0,1,…,k−1}R={x∈{0,1}n:h(x)=y}k=⌈1/p⌉Rh
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.)