Eine endliche Sprache ist eine Sprache mit einer endlichen Anzahl von Wörtern. Die einfachsten Fälle sind diejenigen, die überhaupt keine Wörter enthalten, die leere Zeichenfolge und eine einzelne Zeichenfolge, die aus einem einzelnen Symbol besteht (z. B. a
in Ihrem Beispiel).
Ich denke, deine Verwirrung kommt davon, die Regel, die du zitierst, falsch zu lesen (wie einige von denen, die die Frage kommentieren). Der Satz von Kleene ist eine Regel, wenn und nur dann, wenn sie aus endlichen Sprachen erhalten werden kann, indem die drei Operationen Vereinigung, Verkettung, Wiederholung eine endliche Anzahl von Malen angewendet werden. Die Passage spricht nicht über die Anzahl von Operationen an Strings, die benötigt werden, um alle Strings in einer Sprache zu erzeugen, sondern über die Anzahl von Operationen in einfacheren Sprachen, die benötigt werden, um die Sprache zu definieren, die definiert wird. Die Sprache, die Sie erwähnen, wird aufgebaut, indem Sie mit einer endlichen Sprache (der Menge {"a"}) beginnen und den Wiederholungsoperator einmal anwenden. Ein anderer und weniger direkter Weg, den Punkt zu setzen, würde nicht Sprachen und Operationen an Sprachen ansprechen, sondern Ausdrücke, die Sprachen und komplexere Ausdrücke verbinden, die sie kombinieren: Eine Sprache ist genau dann regulär, wenn sie mit a bezeichnet werden kann Regulärer Ausdruck, der eine endliche Anzahl von Operatoren enthält.
Nehmen Sie einen Ausdruck wie a
, bezeichnet die endliche Sprache, die nur das einzelne Wort "a" enthält. Wir können diesem Ausdruck einen einzelnen Wiederholungsoperator hinzufügen, und wir erhalten a*
, die unendliche Sprache, die jede Verkettung von null oder mehr Wörtern aus der ersten Sprache enthält.Jeder endliche Ausdruck E wir ausgehend von Ausdrücke bezeichnen endliche Sprachen und durch die Kombination von einer oder zwei kleineren Ausdrücke F und G mit den Mustern E = F bauen | G, E = FG oder E = F * eine reguläre Sprache bezeichnen wird. Ausdrücke, die endliche Sprachen (Sprachen mit einer endlichen Anzahl von Wörtern) bezeichnen, sind der Grundfall, wenn die Regel in Ausdrücken ausgedrückt wird; Endliche Sprachen sind der Basisfall, wenn die Regel direkt in Sprachen ausgedrückt wird, ohne Umwege zum Ausdruckland.
Wenn wir zulassen, dass union, concatenation und repetion unendlich oft angewendet werden (oder äquivalent, wenn wir unendliche Ausdrücke unter Verwendung der Regeln für reguläre Exressionen zulassen), wird die resultierende Sprache nicht regelmäßig garantiert. Dies ist das Analogon auf der regulären Sprachebene der Beobachtung, dass unendlich große kontextfreie Grammatiken nicht-kontextfreie Sprachen definieren können, wie van Wijngaarden-Grammatiken illustrieren.
Dies wäre wahrscheinlich besser geeignet für math.stackexchange.com. Die Automatentheorie ist nicht wirklich in das Schreiben von Programmen involviert. – Barmar
Siehe [diese Frage] (http://stackoverflow.com/questions/6718202/what-isa-regular-language?rq=1) – Barmar
IIRC, a * ist nur eine reguläre Sprache, wenn a eine reguläre Sprache ist (beachte, dass "a *" bedeutet "alle Elemente in a"). Und damit wäre es kein Widerspruch zu Kleenes Theorem. – waka