Saya telah menemukan bahwa jika saya tidak memahami etimologi di balik istilah cs / pemrograman, biasanya itu berarti saya telah melewatkan atau salah paham beberapa konsep mendasar yang penting.
Saya tidak mengerti mengapa bintang Kleene juga disebut penutupan Kleene. Apakah ini terkait dengan penutupan dalam pemrograman, fungsi dengan variabel non-lokal terikat?
... pada refleksi, mungkin itu karena memungkinkan set terbuka berakhir untuk ditulis dalam bentuk ekspresi tertutup?
... yah dengan cara menjelaskan karet-bebek yang bagus , sekarang saya menebak itu saja, tetapi masih akan menyambut jawaban yang berwibawa.
automata
regular-expressions
mallardz
sumber
sumber
Jawaban:
Suatu himpunan ditutup di bawah beberapa operator jika hasil dari menerapkan operator pada hal-hal dalam himpunan selalu dalam himpunan. Sebagai contoh, bilangan asli ditutup dengan penambahan karena, setiap kali dan m adalah bilangan alami, n + m adalah bilangan alami. Di sisi lain, naturals tidak ditutup dengan pengurangan karena, misalnya, 3 - 5 bukan bilangan alami.n m n+m 3−5
The penutupan dari satu set di bawah beberapa operator adalah himpunan terkecil yang mengandung S yang tertutup di bawah operator. Sebagai contoh, penutupan bilangan asli di bawah pengurangan adalah bilangan bulat; penutupan bilangan asli di bawah penambahan hanyalah bilangan alami, karena himpunan sudah ditutup.S S
Jadi, "penutupan Kleene" bukan nama alternatif untuk "bintang Kleene". Bintang Kleene adalah operatornya; penutupan Kleene dari suatu set adalah penutupan set itu di bawah operator.
sumber
Pendeknya
Nama penutupan Kleene jelas dimaksudkan untuk berarti penutupan di bawah beberapa operasi string.
Namun, analisis yang cermat (terima kasih atas komentar kritis oleh OP mallardz), menunjukkan bahwa bintang Kleene tidak dapat ditutup dalam penggabungan, yang lebih sesuai dengan operator Kleene plus.
Operator bintang Kleene sebenarnya sesuai dengan penutupan di bawah operasi daya yang berasal dari penggabungan.
Nama bintang Kleene berasal dari representasi sintaksis operasi dengan bintang
*
, sedangkan penutupan adalah apa yang dilakukannya.Ini dijelaskan lebih lanjut di bawah ini.
Ingatlah bahwa penutupan pada umumnya, dan bintang Kleene pada khususnya, adalah operasi pada set, di sini pada set string, yaitu pada bahasa. Ini akan digunakan dalam penjelasan.
Penutupan subset di bawah operasi selalu ditentukan
Satu set ditutup di bawah beberapa n operasi -ary f IFFC n f selalu didefinisikan untuk setiap n -tuple argumen dalam C dan
C = { f ( c 1 , ... , c n ) ∣ ∀ c 1 , ... , c n ∈ C } .f n C C= { f( c1, ... , cn) ∣ ∀ c1, ... , cn∈ C}
Dengan memperluas ke set nilai dengan cara yang biasa, yaitu f ( S 1 , ... , S n ) = { f ( s 1 , … , s n ) ∣ ∀ s i ∈ S i . 1 ≤ i ≤ n } kita dapat menulis ulang kondisi sebagai persamaan himpunan: C = f ( C , ... , C )f
Untuk domain (atau set) dengan operasi f yang selalu didefinisikan pada D , dan set S ⊂ D , Penutupan S di bawah f adalah set terkecil S fD f D S⊂ D S f Sf
mengandung yang memenuhi persamaan:
S f = { f ( s 1 , … , s n ) ∣ ∀ s 1 , … , s n ∈ S f } .S Sf= { f( s1, … , Sn) ∣ ∀ s1, … , Sn∈ Sf}
Lebih tepatnya dengan persamaan himpunan, penutupan bawah f dapat didefinisikan oleh:S f
Ini adalah contoh definisi titik tetap paling sedikit, sering digunakan dalam semantik, dan juga digunakan dalam bahasa formal. Tata bahasa bebas konteks dapat dilihat sebagai sistem persamaan bahasa (yaitu persamaan set string), di mana non-terminal berdiri untuk variabel bahasa. Solusi titik tetap paling tidak mengasosiasikan bahasa ke setiap variabel, dan bahasa yang terkait dengan simbol awal adalah yang didefinisikan oleh tata bahasa CF.
Memperluas konsep
Penutupan sebagaimana didefinisikan di atas hanya dimaksudkan untuk memperluas subset menjadi set minimal S f sehingga operasi f selalu didefinisikan.S Sf f
Sebagai berkomentar oleh mallardz OP, ini bukan penjelasan yang cukup, karena tidak akan menyertakan kata kosong di S f jika tidak sudah di S . Memang penutupan ini sesuai dengan definisi Kleene plus dan bukan ke bintang Kleene .ϵ Sf S
+
*
Sebenarnya, ide penutupan dapat diperluas, atau dipertimbangkan dengan cara yang berbeda.
Perpanjangan ke sifat aljabar lainnya
Dalam perjalanan untuk memperpanjangnya (meskipun itu tidak lagi disebut penutupan ) menganggap lebih umum ekstensi ke himpunan memiliki sifat aljabar spesifik sehubungan dengan operasi f .Sf f
Jika Anda mendefinisikan sebagai himpunan terkecil yang mengandung S yang merupakan Monoid untuk fungsi biner f , maka Anda memerlukan elemen closure dan netral yang merupakan kata kosong ϵ .Sf S f ϵ
Perpanjangan melalui operasi turunan
Ada cara kedua yang lebih tepat adalah masalah penutupan. Saat Anda menentukan penutupan , Anda dapat mempertimbangkannya sehubungan dengan beberapa argumen, sementara Anda mengizinkan nilai dari seluruh set D untuk argumen lainnya.S⊂ D D
Mempertimbangkan (untuk kesederhanaan) fungsi biner atas D , Anda dapat mendefinisikan S f , 1 sebagai himpunan terkecil yang mengandung S yang memenuhi persamaan: S f , 1 = { f (f D Sf, 1 S
atau dengan persamaan set:
Ini juga masuk akal ketika argumen tidak termasuk set yang sama. Maka Anda mungkin memiliki penutupan sehubungan dengan beberapa argumen dalam satu set, sambil mempertimbangkan semua nilai yang mungkin untuk argumen lain (banyak variasi dimungkinkan).
Diberi Monoid -(M,f,ϵ) − misalnya monoid string dengan concatenation mana f adalah operasi biner asosiatif pada elemen himpunan M dengan elemen identitas
ϵ , Anda dapat menentukan kekuatan elemen u ∈ M sebagai:
∀ u ∈ M .− f M ϵ u∈M
Dan ini benar-benar memberi kita operasi bintang Kleene ketika konstruksi diterapkan pada operasi rangkaian Monoid bebas string.
Sejujurnya, saya tidak yakin saya tidak selingkuh. Tapi definisi hanyalah apa yang Anda buat, dan itulah satu-satunya cara yang saya temukan untuk benar-benar mengubah bintang Kleene menjadi penutup. Saya mungkin berusaha terlalu keras.
Komentar diterima.
Menutup satu set di bawah operasi yang tidak selalu ditentukan
Ini adalah pandangan yang sedikit berbeda dan penggunaan konsep penutupan. Pandangan ini tidak benar-benar menjawab pertanyaan, tetapi tampaknya baik untuk mengingatnya untuk menghindari kemungkinan kebingungan.
membangun set lainD′ D f′
Begitulah bilangan bulat dibangun dari bilangan asli, dengan mempertimbangkan sekumpulan pasangan bilangan asli yang dikutip oleh relasi ekivalensi (dua pasang adalah ekuivalen jika kedua elemen berada dalam urutan yang sama dan memiliki perbedaan yang sama).
Ini juga bagaimana rasional dapat dibangun dari bilangan bulat.
Dan inilah bagaimana real klasik dapat dibangun dari rasional, meskipun konstruksinya lebih kompleks.
sumber
Operator Kleene plus juga memenuhi aksioma ini, demikian juga operator penutupan di bawah definisi ini.
sumber