Bagaimana merasakan secara intuitif bahwa suatu bahasa itu teratur

9

Diberi bahasa , bagaimana saya bisa mengatakan secara langsung, tanpa melihat aturan produksi, bahwa bahasa ini tidak teratur?L={anbncn}

Saya bisa menggunakan memompa lemma tetapi beberapa orang mengatakan hanya melihat tata bahasa bahwa ini bukan yang biasa. Bagaimana itu mungkin?

doniyor
sumber
1
Siapa saja dapat melihat bahasa apa pun dan mengatakan bahwa itu tidak biasa. Saya tidak yakin intuisi, pada dasarnya, sama banyak berperan di sini seperti pengalaman. Ini adalah bahasa yang cukup sederhana (meskipun tidak biasa) dan merupakan bahasa yang tidak bisa dihindari dalam mempelajari bahasa formal. Setelah Anda diberi tahu bahwa itu tidak biasa, dan telah membuktikan bahwa itu tidak biasa menggunakan teknik bukti yang valid, Anda biasanya tidak memerlukan bukti untuk meyakinkan orang lain, karena mereka semua membuktikannya sendiri ketika mereka diperkenalkan kepada subyek.
Patrick87
ya, tapi kadang-kadang di kuliah mereka hanya mengikuti beberapa bukti matematika kering, tetapi mereka benar-benar kurang penjelasan intuisi dengan contoh
doniyor
Lupakan . Apakah Anda pernah mendapatkan merasa bahwa sebuah n b n tidak teratur? anbncnanbn
Uday Reddy
2
Melihat tata bahasa dan memproklamirkan karena tata bahasa tidak teratur bahasa tidak teratur adalah kekeliruan. Ada banyak tata bahasa non-reguler untuk bahasa reguler. Waspadalah! Yang mengatakan, memutuskan apakah tata bahasa biasa adalah mudah; cukup periksa produksinya.
Raphael

Jawaban:

11

Properti utama DFA's / NFA's adalah kurangnya memori tidak terbatas. Jika Anda melihat bahasa dan satu-satunya algoritma (yang nantinya harus diterjemahkan ke dalam Finite Automaton) Anda dapat memikirkan untuk membutuhkan properti ini, yaitu, Anda merasa bahwa algoritma apa pun yang mengenalinya perlu mengingat banyak hal yang berubah-ubah. (seperti dalam contoh Anda) maka bahasa itu mungkin tidak teratur.n

Tentu saja, Anda harus selalu ingat bahwa intuisi matematis bisa salah, dan satu-satunya cara untuk memastikan intuisi Anda adalah dengan membuktikannya.

EDIT: Saya akan menjawab pertanyaan terakhir di komentar di sini, karena kurangnya ruang.

kalian berbicara tentang memori tidak terbatas yang Anda maksud adalah alasan mengapa itu tidak teratur. tetapi ^ nb ^ m juga dapat memiliki memori tidak terbatas jika saya mau, bukan? ini masih memberi saya kedamaian.


ambnm,n
anbnabini Ini akan membutuhkan memori tidak terbatas. Ketika saya melihat suatu bahasa dan melihat bahwa algoritma apa pun yang dapat saya pikirkan membutuhkan memori tanpa batas, intuisi saya bahwa bahasa tersebut tidak teratur semakin kuat. Jika saya tidak dapat menemukan algoritma "pintar" (yang membutuhkan jumlah memori konstan) dalam jumlah waktu yang masuk akal (berapa banyak waktu yang masuk akal terserah Anda) Saya akan mencoba membuktikan bahasanya tidak teratur.
Semoga ini membuatnya sedikit lebih jelas.

Boris Trayvas
sumber
terima kasih, bukti matematika membawa intuisi, tetapi lihat aturan produksi ini: S -> ab | aSb. ini untuk ^ nb ^ n yang mengatakan bahwa itu juga tidak biasa. tetapi a ^ mb ^ n teratur dengan m, n> = 1. kenapa ini? ini sebenarnya bentuk yang sama, kan? saya tidak mengerti perbedaan antara kedua bahasa ini
doniyor
1
Untuk a ^ nb ^ n Anda perlu melacak 2 hal: pertama, bahwa jumlah a sama dengan jumlah b (ini adalah bagian yang tidak mungkin untuk DFA), dan kedua bahwa tidak ada 'b' diikuti oleh 'a' ' Untuk a ^ mb ^ n Anda tidak peduli tentang nilai m, n. Anda hanya peduli bahwa setidaknya ada satu 'a' dan setidaknya satu 'b' dan bahwa tidak ada 'b' diikuti oleh 'a'. Berbicara secara informal, Anda hanya perlu mengingat 3 hal.
Boris Trayvas
oh oke, sekarang saya mengerti.
doniyor
jadi pesanan juga merupakan hal yang sangat penting, bukan? seperti aabbcc diterima tetapi tidak aabcbc hanya karena pesanannya tidak oke. Baik?
doniyor
1
"Properti utama dari bahasa reguler adalah kurangnya memori yang tidak terbatas." - Saya tahu apa yang Anda maksud, tapi kalimat itu tidak masuk akal. "Anda merasa bahwa algoritma apa pun yang mengenalinya perlu mengingat banyak hal yang berubah-ubah" - Ini memang satu-satunya intuisi yang saya tahu juga, tetapi jenisnya sangat, sangat berbahaya; lihat di sini .
Raphael
5

Saya bisa menggunakan lemma pemompaan

anbn

Cara yang baik untuk menguji intuisi Anda adalah dengan melihat bahasa-bahasa ini:

  1. {xyyzx,y,z{a,b}+}
  2. {xyyzx,y,z{a,b}}
  3. {xyyzx,y,z{a,b,c}+}
  4. {xyyzx,y,z{a,b,c}}

Yang bebas konteks?

Raphael
sumber
1
Jika ada yang tahu contoh bagus yang sama untuk perbatasan bahasa reguler, tolong katakan demikian. Tolong jangan rusak jawabannya di komentar.
Raphael
Raphael - pekerjaan bagus! terima kasih telah memberikan contoh dan untuk menguji saya secara eksplisit.
doniyor
@doniyor, mari kita lanjutkan diskusi ini dalam obrolan
Raphael
4

Anda benar-benar dapat memutuskan apakah suatu bahasa biasa menggunakan perhitungan yang cukup mudah, daripada melakukan pembuktian penuh. Anda hanya perlu menerapkan satu kriteria yang sangat kuat: Bahasa adalah biasa jika dan hanya jika memiliki banyak negosiasi.

LxxLwxwLL={anbn}aL={an1bn|n1}bL=akL={ankbn|nk}L

DDSaaLDS

James Koppel
sumber
b \ L berarti: jika saya membagi L dengan b, maka saya akan mendapatkan set kosong ?. apakah itu karena saya sebenarnya harus mulai membaca kata dari awal? dan bukan dari belakang?
doniyor
1
bL=L/b
1
Berikut ini adalah slide deck yang baik yang menjelaskan tentang quotients, dan bagaimana membangun DFA dari mereka: cs.cmu.edu/~cdm/pdf/Minimization.pdf
James Koppel
oh oke terima kasih banyak sekarang saya mendapatkan sedikit. mmm ... biarkan aku mempelajari ini lagi untuk sementara waktu ...
doniyor