Ich habe festgestellt, dass, wenn ich die Etymologie hinter einem CS / Programmierbegriff nicht verstehe, dies normalerweise bedeutet, dass ich ein wichtiges zugrunde liegendes Konzept verpasst oder missverstanden habe.
Ich verstehe nicht, warum der Kleene-Stern auch als Kleene-Verschluss bezeichnet wird. Handelt es sich um Programmierschließungen, eine Funktion mit gebundenen nichtlokalen Variablen?
... bei Überlegungen vielleicht, weil es erlaubt, eine offene Menge in einer geschlossenen Ausdrucksform zu schreiben?
... nun ja, auf eine gute, alte Art und Weise, die Gummi-Enten erklärt , denke ich, dass es das ist, aber ich würde trotzdem eine maßgebliche Antwort begrüßen.
automata
regular-expressions
Mallardz
quelle
quelle
Antworten:
Ein Satz wird unter einigen Operatoren geschlossen , wenn das Ergebnis der Anwendung des Operators auf Elemente im Satz immer im Satz enthalten ist. Zum Beispiel werden die natürlichen Zahlen unter Hinzufügung geschlossen, weil, wenn und m natürliche Zahlen sind, n + m eine natürliche Zahl ist. Auf der anderen Seite werden die Naturals nicht durch Subtraktion geschlossen, da zum Beispiel 3 - 5 keine natürliche Zahl ist.n m n+m 3−5
Das Schließen einer Menge unter einem Operator ist die kleinste Menge, die S enthält , das unter dem Operator geschlossen ist. Zum Beispiel ist das Schließen der natürlichen Zahlen unter Subtraktion die ganzen Zahlen; Das Schließen der zu addierenden natürlichen Zahlen ist nur die natürliche Zahl, da die Menge bereits geschlossen ist.S S
"Kleene Closure" ist also keine alternative Bezeichnung für "Kleene Star". Der Kleene-Stern ist der Operator; Der Kleene-Abschluss eines Sets ist der Abschluss des Sets unter dem Betreiber.
quelle
In einer Nussschale
Der Name Kleene-Verschluss soll eindeutig den Verschluss unter einer Schnuroperation bedeuten .
Eine sorgfältige Analyse (dank eines kritischen Kommentars des OP mallardz) zeigt jedoch, dass der Kleene-Stern nicht unter Verkettung geschlossen werden kann, was eher dem Kleene-Plus-Operator entspricht.
Der Kleene-Sternoperator entspricht tatsächlich einer Schließung unter der aus der Verkettung abgeleiteten Kraftoperation.
Der Name Kleene Stern kommt von der syntaktischen Darstellung der Operation mit einem Stern
*
, während das Schließen das ist, was es tut.Dies wird weiter unten erläutert.
Denken Sie daran, dass das Schließen im Allgemeinen und Kleene Star im Besonderen eine Operation an Mengen ist, hier an Mengen von Zeichenketten, dh an Sprachen. Dies wird in der Erklärung verwendet.
Schließen einer Teilmenge unter einer Operation immer definiert
Eine Menge wird unter einer n- jährigen Operation f geschlossen, wenn f immer für ein n- Tupel von Argumenten in C definiert ist und C = { f ( c 1 , … , c n ) ∣ ∀ c 1 , … , c n ∈ C } .C n f f n C C= { f( c1, … , Cn) ∣ ∀ c1, … , Cn∈ C}
Durch übliche Erweiterung von auf Wertemengen, dh f ( S 1 , … , S n ) = { f ( s 1 , … , s n ) ∣ ∣ s i ∈ S i . 1 ≤ i ≤ n } wir können die Bedingung als gesetzte Gleichung umschreiben: C = f ( C , … , C )f
Für eine Domäne (oder Menge) mit einer Operation f , die immer für D definiert ist , und einer Menge S ⊂ D ist der Abschluss von S unter f die kleinste Menge S f, die S enthält und die folgende Gleichung erfüllt: S f = { f ( s 1 , … , s n ) ∣ ∀ s 1 , … , s n ∈ S f } .D f D S⊂ D S f Sf S Sf= { f( s1, … , Sn) ∣ ∀ s1, … , Sn∈ Sf}
Genauer gesagt, mit einer festen Gleichung kann der Abschluss von unter f definiert werden durch:S f
Dies ist ein Beispiel für die am wenigsten festgelegte Definition, die häufig in der Semantik und auch in formalen Sprachen verwendet wird. Eine kontextfreie Grammatik kann als ein System von Sprachgleichungen (dh String-Set-Gleichungen) angesehen werden, bei denen die nicht-terminalen für Sprachvariablen stehen. Die am wenigsten festgelegte Lösung ordnet jeder Variablen eine Sprache zu, und die Sprache, die somit dem Anfangssymbol zugeordnet ist, ist diejenige, die durch die CF-Grammatik definiert ist.
Das Konzept erweitern
Der oben definierte Abschluss soll nur eine Teilmenge in eine minimale Menge S f erweitern, so dass die Operation f immer definiert ist.S Sf f
Wie von der OP mallardz bemerkt, ist dies keine ausreichende Erklärung, da das leere Wort in S f nicht enthalten ist, wenn es nicht bereits in S enthalten ist . In der Tat entspricht dieser Verschluss der Definition des Kleene-Plus und nicht des Kleene-Sterns .ϵ Sf S
+
*
Tatsächlich kann die Idee der Schließung erweitert oder auf unterschiedliche Weise betrachtet werden.
Erweiterung auf andere algebraische Eigenschaften
Auf dem Weg zu seiner Erweiterung (obwohl es nicht länger als Abschluss bezeichnet wird ) wird allgemein eine Erweiterung auf eine Menge mit spezifischen algebraischen Eigenschaften in Bezug auf die Operation f betrachtet .Sf f
Wenn Sie als die kleinste Menge definieren, die S enthält , das ein Monoid für die Binärfunktion f ist , benötigen Sie sowohl einen Abschluss als auch ein neutrales Element, das das leere Wort ϵ ist .Sf S f ϵ
Erweiterung durch eine abgeleitete Operation
Es gibt einen zweiten Weg, der genauer gesagt ein Problem der Schließung ist. Wenn Sie den Abschluss von , können Sie ihn in Bezug auf einige der Argumente berücksichtigen, während Sie Werte aus der gesamten Menge D für die anderen Argumente zulassen .S⊂ D D
Unter Berücksichtigung (der Einfachheit halber) eine binäre Funktion über D können Sie definieren , S f , 1 als die kleinste Menge enthalten , S : daß die Gleichung S f , 1 = { f ( s 1 , s 2 ) | ∀ s 1 ∈ S f , 1 ∧ ∧ s 2 ∈ D }f D Sf, 1 S
oder mit gesetzten Gleichungen:
Dies ist auch dann sinnvoll, wenn die Argumente nicht zur gleichen Menge gehören. Dann haben Sie möglicherweise einen Abschluss in Bezug auf einige Argumente in einem Satz, während Sie alle möglichen Werte für die anderen Argumente berücksichtigen (viele Variationen sind möglich).
Und dies gibt uns die Kleene-Stern-Operation, wenn die Konstruktion auf die Verkettungsoperation des freien Monoids von Zeichenfolgen angewendet wird.
Um ganz ehrlich zu sein, bin ich mir nicht sicher, ob ich nicht betrogen habe. Aber eine Definition ist nur das, was Sie daraus machen, und nur so konnte ich den Kleene-Stern tatsächlich in einen Verschluss verwandeln. Ich versuche es vielleicht zu sehr.
Kommentare sind willkommen.
Schließen eines Sets unter einer Operation, die nicht immer definiert ist
Dies ist eine etwas andere Ansicht und Verwendung des Konzepts der Schließung. Diese Ansicht beantwortet die Frage nicht wirklich, aber es scheint gut, sie im Hinterkopf zu behalten, um mögliche Verwirrungen zu vermeiden.
Auf diese Weise werden Ganzzahlen aus natürlichen Zahlen gebildet, wobei die Menge der natürlichen Zahlenpaare berücksichtigt wird, die durch eine Äquivalenzrelation ausgedrückt werden (zwei Paare sind äquivalent, wenn sich die beiden Elemente in derselben Reihenfolge befinden und denselben Unterschied aufweisen).
Auf diese Weise können auch Rationalen aus den ganzen Zahlen gebildet werden.
Und so können klassische Realitäten aus den Rationalitäten gebaut werden, obwohl die Konstruktion komplexer ist.
quelle
Das klassische Beispiel ist die topologische Schließung , die auch erfüllt⊥∗=⊥ (x∨y)∗=x∗∨y∗
Der Kleene-Plus-Operator erfüllt auch diese Axiome und ist daher auch ein Closure-Operator im Sinne dieser Definition.
quelle