✖

Κλειστότητα Kleene κανονικής γλώσσας

Έστω μια κανονική γλώσσα L. Θα αποδείξουμε ότι η κλειστότητα Kleene της γλώσσας L είναι πάλι κανονική γλώσσα.

Τι είναι η κλειστότητα μιας γλώσσας

Την κλειστότητα Kleene της γλώσσας L τη συμβολίζουμε L∗. Περιέχει όλες τις λέξεις που μπορούν να προκύψουν από την παράθεση πεπερασμένου πλήθους λέξεων της γλώσσας L. Την κλειστότητα μπορούμε να την ορίσουμε ως:

L∗={a1∘a2∘⋯∘an|ai∈L,n∈N},

όπου το ∘ δηλώνει την πράξη της παράθεσης. Η κλειστότητα περιέχει και την κενή λέξη, δηλαδή το ϵ.

Αυστηρή διατύπωση της μεθόδου

Θα ακολουθήσουμε πολύ παρόμοια πορεία με την παράθεση γλωσσών. Μόνο που αντί να συνδέσουμε δύο διαφορετικά αυτόματα, θα συνδέσουμε ένα αυτόματο με τον εαυτό του – από τις τελικές καταστάσεις του αυτομάτου θα φέρουμε ε-μεταβάσεις προς την αρχική κατάσταση του αυτομάτου. Η κλειστότητα όμως πρέπει να περιέχει και την κενή λέξη. Πώς θα το πετύχουμε; Μπορούμε να κάνουμε την αρχική κατάσταση τελική. Τότε το αυτόματο θα αποδεχόταν την κενή λέξη, αλλά θα μπορούσε να αποδεχτεί και κάποια άλλη λέξη. Γι' αυτό δημιουργούμε μια νέα αρχική κατάσταση και από αυτήν τη νέα αρχική κατάσταση φέρνουμε μια ε-μετάβαση προς την αρχική κατάσταση του αρχικού αυτομάτου.

Έχουμε μια κανονική γλώσσα L1 και ένα αυτόματο που την αποδέχεται:

A1=⟨Q1,Σ1,δ1,q0,F1⟩

Κατασκευάζουμε το μη ντετερμινιστικό αυτόματο A = ⟨Q, Σ, δ, qs, F⟩, για το οποίο ισχύει:

  • Q = Q1 ∪ {qs}
  • Σ= Σ1
  • F = F1 ∪ {qs}

Τη συνάρτηση μετάβασης δ ορίζουμε ως εξής:

δ(q,a)={δ1(q,a)ανq∈Q1∧q∉F1δ1(q,a)ανq∈F1∧a≠ϵδ1(q,a)∪{q0}ανq∈F1∧a=ϵ{q0}ανq=qs∧a=ϵ∅ανq=qs∧a≠ϵ

Παράδειγμα

Έστω το αυτόματο A1, που αποδέχεται τις λέξεις 00 ή 11:

Η κλειστότητα Kleene της γλώσσας L(A1) είναι λοιπόν η γλώσσα όλων των λέξεων που αποτελούνται από ζεύγη 00 και 11, για παράδειγμα 0000, 110011, 11110000 κτλ. Το αυτόματο που θα αποδεχόταν αυτή την κλειστότητα θα το κατασκευάζαμε δημιουργώντας μια νέα αρχική κατάσταση qs με ε-μετάβαση προς την πρώην αρχική κατάσταση q0 και προσθέτοντας ε-μεταβάσεις από τις καταστάσεις q3 και q4 προς την κατάσταση q0:

Μπορούμε να επαληθεύσουμε ότι αυτό το αυτόματο πράγματι αποδέχεται τις λέξεις 0000, 110011, 11110000, αλλά δεν αποδέχεται, για παράδειγμα, τη λέξη 1010.

Πηγές

Κεφάλαια: Κλειστότητα κανονικών γλωσσών, Ένωση, Τομή, Διαφορά, Συμπλήρωμα, Παράθεση, Κλειστότητα Kleene