Jadi, saya tahu bahwa menguji apakah bahasa reguler adalah himpunan bagian dari bahasa biasa dapat ditentukan, karena kita dapat mengonversi keduanya menjadi DFA, menghitung , dan kemudian menguji apakah bahasa ini kosong.S R ∩ ˉ S
Namun, karena ini memerlukan konversi ke DFA, ada kemungkinan bahwa DFA, dan dengan demikian algoritma pengujian, akan bersifat eksponensial dalam hal jumlah status dalam input NFA.
Apakah ada cara yang diketahui untuk melakukan ini dalam waktu polinomial? Apakah masalah ini secara umum telah terbukti Co-NP lengkap?
Perhatikan bahwa masalahnya adalah di Co-NP sejak kata diterima oleh tetapi tidak oleh akan menjadi sertifikasi polinomial yang .
EDIT: ini tidak benar, karena tidak ada jaminan bahwa kata seperti itu akan jumlahnya banyak di sejumlah negara.
Jawaban:
Masalah dalam menentukan penahanan bahasa dalam NFA adalah -complete. Untuk membuktikan ini, mudah untuk mengurangi dari masalah universaility untuk NFA (menguji apakah ) Jadi, dengan cara tertentu, Anda harus menentukan, tetapi Anda dapat melakukannya sambil jalan.PSPACE L(A)=Σ∗
Pengamatan Anda tentang ko-NP salah (tapi bagus). Saksi semacam itu memang dapat diperiksa dalam waktu polinomial di saksi , tetapi saksi terpendek itu sendiri mungkin eksponensial dalam panjang input. Karena , maka memutuskan non-penahanan juga -complete.PSPACE=co−PSPACE PSPACE
Untuk hal-hal keadaan yang lebih hati-hati, memutuskan apakah adalah dalam ukuran (karena hanya yang perlu dilengkapi), dan dalam ukuran .L(A)⊆L(B) PSPACE B B NLOGSPACE A
sumber
Anda harus melihat kertas Jean-François Raskin Antichain Algorithms for Finite Automata .
Dalam percobaan kami, uji inklusi berbasis antikain melakukan satu atau dua urutan besarnya lebih baik daripada pendekatan "tradisional".
Jika saya ingat dengan benar, algoritma ini diterapkan di perpustakaan libAMoRE ++ .
sumber
Salah satu perpustakaan FSM terbaik, paling teliti dan sangat dioptimalkan, tersedia gratis secara online adalah perpustakaan F&T AT&T . Ini mengimplementasikan "perbedaan fsm" persis seperti yang Anda gambarkan, membutuhkan FSM bebas epsilon yang ditentukan untuk melakukan perbedaan. Satu ide adalah untuk meminimalkan satu atau kedua FSM sebelum melakukan perbedaan, yang mungkin membantu dalam beberapa kasus. (Yaitu penentuan tidak sama dengan meminimalkan.) Paket ini juga memiliki minimalisasi "perkiraan" atau "serakah" yang dirancang mungkin lebih cepat dari minimalisasi penuh.
Namun, mempelajari masalah yang sama, saya percaya ada beberapa generalisasi atau konstruksi FSM yang tidak muncul dalam literatur yang dapat membantu dengan masalah ini dengan menghindari langkah determinisasi, yaitu pada dasarnya membalikkan NFA tanpa membuat tambahan FSM yang ditentukan. Idenya adalah untuk melintasi tepi NFA "secara paralel" dan melacak set node yang merupakan bagian dari "superstate" saat ini (set negara) seperti halnya dengan algoritma penentuan standar. Kemudian, komplemen NFA menerima jika dan hanya jika set node superstate saat ini "semua tidak dapat menerima" (berbeda dengan konstruksi yang menentukan yang menerima jika "ada menerima").
Namun, saya belum pernah melihat ini ditulis sebelumnya dan tidak melihatnya melalui pencarian online cepat. Ada banyak referensi yang menyarankan atau menyiratkan bahwa satu-satunya cara untuk bekerja dengan komplemen NFA adalah dengan menentukannya.
Berikut adalah dua referensi "terdekat" yang mungkin berguna untuk beberapa ide. Saya akan tertarik untuk mendengar ada / orang lain yang "lebih dekat". Anda menyebutkan Anda sedang mengerjakan verifikasi program, yang mungkin merupakan bidang yang memiliki lebih banyak riset langsung tentang masalah tersebut.
[1] Konstruksi titik-temu dari Finata Automata Nondeterministic menggunakan Notasi Nazir Ahmad Zafar, Nabeel Sabir, dan Amir Ali
[2] Konstruksi Pelengkap untuk Nondeterministic Automata pada Infinite Words Orna Kupferman dan Moshe Vardi
sumber