DFA atau NFA membaca melalui string input dengan satu kepala, bergerak dari kiri ke kanan. Tampaknya wajar untuk bertanya-tanya tentang mesin negara-terbatas yang memiliki banyak kepala , yang masing-masing bergerak melalui input dari kiri ke kanan, tetapi tidak harus di tempat yang sama dalam input dengan yang lain.
Mari kita mendefinisikan mesin keadaan terbatas dengan kepala sebagai berikut:
Sebuah k-head NFA adalah tuple , di mana:
Seperti biasa, adalah himpunan status terbatas, adalah abjad terbatas, adalah status awal, dan adalah himpunan status penerimaan. Biarkan menunjukkan sekumpulan karakter termasuk string kosong.
( p , ( σ 1 , σ 2 , … , σ k ) , q ) p ( σ 1 , σ 2 , … , σ k ) σ i i ε q adalah relasi transisi: transisi artinya, jika mesin dalam keadaan , ia dapat membaca sedemikian rupa sehingga adalah karakter berikutnya untuk head (atau jika kepala itu tidak bergerak), dan kemudian pindah ke keadaan .
Menjalankan mesin jenis ini (jalur apa pun yang dimulai dari kondisi awal dan berakhir pada status penerimaan) menghasilkan bukan satu string, tetapi string yang berbeda (dibentuk dengan menggabungkan karakter di sepanjang proses). Kemudian kita mengatakan bahwa prosesnya valid jika string identik.k
The bahasa mesin adalah himpunan string tersebut bahwa ada lari valid dari mesin mana string diproduksi bersama run yang semuanya sama dengan .
Pertanyaan: Apa kelas bahasa yang dikenali oleh mesin seperti itu? Apakah sudah dipelajari?
Pengamatan pertama adalah bahwa mesin tersebut menghasilkan kelas yang lebih besar dari bahasa biasa. Misalnya, bahasa
dikenali oleh NFA -kepala berikut dengan status:
(Di sini, tepi yang berlabel menunjukkan transisi formulir .)
Namun, pengamatan kedua adalah bahwa tidak semua bahasa bebas konteks diakui; misalnya, sepertinya bahasa Dyck tidak dapat dikenali oleh mesin - head ini.