Bukti ketidakteraturan, berdasarkan kompleksitas Kolmogorov

8

Di kelas profesor kami menunjukkan kepada kami 3 metode untuk membuktikan ketidakteraturan:

  1. Teorema Myhill – Nerode
  2. Memompa Lemma untuk bahasa reguler
  3. Bukti ketidakteraturan, berdasarkan kompleksitas Kolmogorov

Sekarang dua yang pertama, teorema Myhill-Nerode dan Pumping lemma, saya mengerti dengan baik dan saya juga bisa melakukan latihan dengan dua metode pertama. Tapi saya tidak mengerti yang ketiga. Definisi metode ketiga adalah sebagai berikut:

Membiarkan  L(Σbool)menjadi bahasa biasa. Membiarkan Lx={y(Σbool)|xyL} untuk setiap x(Σbool). Lalu ada konstanta c, sedemikian rupa untuk semua  x,y(Σbool)

 K(y)log2(n+1)+c

jika  y adalah kata ke-n dalam bahasa  Lx.

Sekarang saya tidak mengerti bagaimana menggunakan teorema ini untuk membuktikan bahwa suatu bahasa tidak teratur, saya tidak begitu mengerti konsepnya. Kami menggunakan kompleksitas kolmogorov sebelumnya untuk menentukan panjang program komputer terpendek dari suatu objek. Bagaimana seseorang membuktikan ketidakteraturan dengan teorema ini? Dan apa pemikiran di baliknya?

Terima kasih banyak!

gammaALpha
sumber

Jawaban:

8

Setahu saya, ini bukan salah satu dari pendekatan "klasik" yang digunakan untuk mengkarakterisasi bahasa biasa.

Pendekatan ini dibahas dalam "Pendekatan Baru untuk Teori Bahasa Formal oleh Kompleksitas Kolmogorov" , oleh Ming Li dan Paul MB Vitanyi (lihat bagian 3.1).

Mereka memberikan beberapa contoh di mana orang dapat menggunakan pernyataan yang Anda sebutkan alih-alih menggunakan lemma pemompaan. Misalnya, membuktikan non-keteraturanL dimana

L={1p|p is prime}.

Diberikan beberapa xΣ, Lx={y|xy=1pp is prime}. Mari kita pilihx=1p dimana p adalah kPerdana Membiarkany1 menjadi kata pertama di Lx. Jelas,y1=1pp dimana p adalah k+1utama. Menurut pernyataan yang Anda sebutkan,K(y1)c (n=1), untuk beberapa konstanta c hanya bergantung pada L (lihat kertas).

Karena ini berlaku untuk semua x, kita dapat mengikat kompleksitas Kolmogorov dari semua elemen di S={y1x|x=1p for prime p y1x is the first string in Lx} dengan konstanta yang sama c. Namun, kami melihatnyaS sebenarnya terdiri dari perbedaan antara bilangan prima berturut-turut, yaitu S={1pk+1pk|k1} dimana pk adalah kPerdana Karena kita tahuS tidak dapat membatasi kompleksitas Kolmogorov (perbedaan utama menjadi sangat besar), ini berarti L tidak bisa teratur.

Ariel
sumber
2
Saya tidak tahu teknik ini. Apakah Anda merasa ingin menambahkan jawaban untuk pertanyaan referensi kami ?
Raphael
1
Ya, saya bisa menambahkannya nanti. Saya harus mengakui bahwa saya juga tidak mengetahui teknik ini, baru saja menemukan makalah ini setelah melihat pertanyaan op. Saya tidak yakin seberapa populer (relatif terhadap metode lain) teknik ini ternyata. Makalah di Arxiv sebenarnya diterbitkan di SIAM pada tahun 1995, jadi itu tidak baru seperti yang saya pikirkan pada awalnya (masih, pendekatan yang menarik dan asli).
Ariel
Terima kasih banyak atas usaha dan contohnya. Bisakah Anda menjelaskan alasannya? 1pp adalah kata pertama dalam  Lx? p adalah k-th prime dan p 'adalah k + 1 prime, jadi sebaiknya kita tidak mengatakan itu y1=1pp? Dan seperti yang saya mengerti, hal 'tidak harus selalu prima, itu sebabnya kami memilih ini?
gammaALpha
1
Awalannya adalah x=1p, kata pertama dalam L dengan awalan x kemudian y1x=1pp seperti yang p adalah prime berikutnya, jadi xy1x=1p+(pp)=1p. Kami memilihx dengan cara ini karena ini memungkinkan kita untuk mengikat kompleksitas Kolmogorov dari semua itu y1xoleh sebuah konstanta. Karena perbedaan utama dapat menjadi besar secara sewenang-wenang, himpunan semua ituy1xtidak terbatas (sehingga tidak dapat memiliki kompleksitas yang terbatas). Saya menambahkan jawaban untuk pertanyaan referensi, itu berisi lebih banyak informasi yang Anda temukan berguna dan contoh lain.
Ariel
3

Contoh lain yang sangat mudah adalah sebagai berikut: gunakan kompleksitas Kolmogorov untuk membuktikannya Lww={www{0,1}} tidak teratur.

Saya memberi Anda bukti yang sangat informal dengan harapan hal itu dapat membantu Anda lebih memahami peran kompleksitas Kolmogorov.

Ide kuncinya adalah sebagai berikut: automata terbatas D (yang mengenali bahasa biasa LD) memiliki jumlah "memori" terbatas; jadi berjalan pada string inputx=yz ketika telah "memproses" bagian pertama dari input y keanggotaan x di LD hanya bergantung pada kondisi saat ini dan bagian kedua dari input z.

Sekarang anggaplah itu Lwwteratur; maka ada DFADww yang mengenalinya.

Membiarkan y menjadi string yang panjangnya tak tertandingi |y|=n|D|

Untuk semua input x=yz, di akhir bagian pertama y, DFA Dww jelas akan berada di negara yang sama qi, dan dengan hipotesis itu hanya akan menerima jika bagian yang tersisa z adalah seperti itu x=yz dapat dibagi menjadi dua bagian yang sama (mis yz=ww); sebagai contoh

 Let y = 10110
       y   z
 x = 10110 0  >> rejected
 x = 10110 1  >> accepted  (w=101, |y|>|z|)
 x = 10110 00 >> rejected
 x = 10110 01 >> rejected
 ....
 x = 10110 10110 >> accepted  (w=10110,  |y|=|z| !!!)
 ....
 x = 10110 1101101 >> accepted (w=101101, |z|<|y|

Tetapi penting untuk memperhatikan bahwa hanya ada satu string z panjangnya |y| yang diterima (z=y).

Jadi diberikan deskripsi Dww, negara qi pada akhir y, dan panjangnya |y| kita dapat mensimulasikan perilaku Dww pada semua 2|y| string dan melihat mana dari mereka itu menerima ... tetapi ia menerima persis z=y.

Begitu juga dengan program ukuran =|Dww|+logi+logy+c

(|Dww| ruang diperlukan untuk menyimpan deskripsi Dww, logi ruang untuk menyimpan qi, logy ruang untuk menyimpan panjang y, c ruang diperlukan untuk instruksi yang mensimulasikan DFA)

kita dapat "merekonstruksi" string y; tapi cukup besary kita punya <|y| yang merupakan kontradiksi karena y tidak tertahankan.

Vor
sumber
Saya tidak tahu teknik ini. Apakah Anda merasa ingin menambahkan jawaban untuk pertanyaan referensi kami ?
Raphael