Bahasa apa yang dikenali oleh mesin satu-counter?

15

Mesin penghitung dengan dua atau lebih penghitung biasanya ditunjukkan setara dengan mesin Turing dalam kursus tentang teori perhitungan. Namun, saya belum melihat analisis formal yang bahasa dapat dikenali oleh mesin satu-counter. Apakah bahasa-bahasa ini setara dengan bahasa bebas konteks (mungkin oleh konstruksi cerdas yang mengaitkannya dengan PDA), atau apakah mereka merupakan kelas bahasa yang sama sekali berbeda?

templatetypedef
sumber
2
Buku ini: books.google.co.id/books/about/… oleh Jean Berstel membahas secara mendalam tentang satu bahasa konter dan subset lain dari bahasa bebas konteks, tetapi, cenderung sangat sulit untuk benar-benar melacak salinannya.
Sam Jones
1
@SamJones Memang buku terkenal Transduksi dan Bahasa Bebas Konteks oleh Jean Berstel sudah tidak dicetak. Penulis telah menyediakan versi elektronik dari bab-bab terpenting dari buku ini. www-igm.univ-mlv.fr/~berstel/LivreTransductions/…
Hendrik Jan

Jawaban:

11

One counter automata adalah pushata automata dengan hanya satu simbol yang diperbolehkan pada stack (ditambah simbol bottom tetap). Bahasa yang dikenali oleh satu counter automata membentuk subset yang tepat dari konteks bahasa bebas.

Misalnya automata 1-counter dapat mengenali bahasa yang tidak teratur, tetapi tidak dapat mengenali bahasa { a n b m a m b n } yang bebas konteks dan dapat dikenali oleh 2-counter automata juga.{anbn}{anbmambn}

Jika k-DCA adalah k-counter automata deterministik , dan k-NCA adalah k-counter automata nondeterministic , maka kami memiliki inklusi yang tepat sebagai berikut:

DFA (bahasa reguler) 1-DCA 2-DCA

1-DCA 1-NCA

Jika kita tidak mengizinkan transisi (beralih ke waktu nyata ) maka k-DCA k'-DCA untuk k <k '.ϵ

Hanya untuk menyelesaikan: ada bahasa yang bebas konteks tetapi tidak dapat recgnized oleh automatas counter (k-DCA dengan k 2) (misalnya { w w R } ), dan bahasa diakui oleh automatas counter yang tidak bebas konteks (untuk contoh { a n b n c n } ). Counter automata (khususnya dua counter automata) dapat Turing lengkap hanya jika input dan outputnya disandikan dengan benar (lihat entri Wikipedia untuk detailnya).{wwR}{anbncn}

Vor
sumber
pertanyaan: (1) bahasa dikenali oleh counter automatas yang tidak bebas konteks yang Anda maksud tidak reguler? (2) ada hierarki untuk DCA? Mengapa? Bukankah mereka semua setara Turing (bila ). k2
Hendrik Jan
(1) bukan maksud saya "yang tidak bebas konteks" (cukup pilih bahasa sensitif konteks yang dikodekan dengan benar yang dapat dikenali oleh ak> 1 mesin penghitung) (2) Anda benar, hierarki mengacu pada DCA waktu nyata (saya koreksi jawabannya)
Vor
Sepertinya saya ingat bahwa ada perbedaan antara penghitung yang tidak terikat di kedua arah, dan sehingga "bottom out" di nol?
Raphael
7

Counter automata banyak dipelajari di masa lalu bahasa formal kuno, dalam konteks teori AFA dan AFL (keluarga abstrak automata & bahasa) oleh tim AS dan Prancis (Ginsberg, Greibach, ..., Nivat, Berstel, ...)

Counter automata biasanya didefinisikan sebagai automata keadaan terbatas yang dilengkapi dengan memori eksternal, yang terdiri dari bilangan alami (atau beberapa jika Anda memiliki lebih dari satu penghitung). Angka ini dapat ditambah, dikurangi, dan (biasanya) diuji nol. Perhitungan dimulai dengan nol dan hanya diterima ketika penghitungnya nol di bagian akhir, sebanding dengan penerimaan tumpukan kosong pushdown.

Jika mesin tersebut memiliki setidaknya dua penghitung seperti itu maka itu setara dengan mesin Turing, bahkan dalam kasus deterministik. Bukti dari fakta ini adalah oleh Minsky dan dapat ditemukan di artikel wikipedia yang Anda tautkan. Model ini tentu saja terkait dengan mesin register yang disebutkan di halaman wikipedia yang sama. Masalah pengkodean yang disebutkan dalam artikel wikipedia tidak penting dalam pengaturan ini di sini karena kami menganggap automata dengan rekaman input (setelah semua kita harus membaca string input) sedangkan wikipedia pada halaman ini hanya mengasumsikan penghitung.

Counter automaton ini dapat dilihat sebagai tipe khusus pda, hanya memiliki satu simbol stack, dan bottom-of-stack (yang tidak pernah dipindahkan). Ini memungkinkan otomat untuk menguji apakah penghitung / tumpukan adalah nol, dan bertindak sesuai.

Sebenarnya ada tiga jenis counter automata. Jadi gabungkan hasil dengan bijak atau Anda berakhir dengan kontradiksi (seperti yang terjadi pada saya di masa lalu). Ketiga jenis ini (secara ketat) termasuk dalam bahasa bebas konteks untuk one-counter.

Jenis di atas menyimpan bilangan bulat (atau angka alami, yang tidak masalah) dan dapat menguji isinya dengan nol. Blind toko kontra automata integer tapi tidak bisa tes untuk nol. Meskipun begitu, mereka dapat menghitung di bawah nol. Automata counter blind sebagian tidak dapat menguji nol, tetapi menyimpan nomor alami. Jika mesin mencoba untuk pergi di bawah nol, mesin akan berhenti tanpa menerima. Ini adalah jenis penyimpanan alami untuk memodelkan jaring Petri. Ia juga dihubungkan ke PDA, sekarang dengan simbol tumpukan tunggal tanpa penanda bawah khusus (dan karenanya masalah pengujian untuk nol: kami hanya terjebak ketika muncul elemen tumpukan terakhir). Terkadang nama-nama keluarga yang ditentukan oleh model penghitung respaktif adalah OCL, ROCL dan 1-BLIND.

(Dc)D={w{a,b}#a(w)=#b(w)}abc

Sebagai contoh penelitian yang relevan, Latteux etal memiliki makalah nontrivial "Keluarga Bahasa Satu-Counter Ditutup di Bawah Quotient" (yang sebenarnya tentang ROCL).

Hendrik Jan
sumber