Reguläre Sprachen / Automatentheorie (Anfänger)

Hallo,

Hier ist eine Aufgabe die ich gerne besser verstehen würde.
Sei A die Sprache{0^n 1^n | n >= 0} (sollte heißen 0 hoch n, 1 hoch n)

  • Was kann man damit alles erzeugen?
  • Kann man das in einem endlichen Automaten darstellen lassen?
  • Ist die Sprache regulär? Ist die Sprache Kontextfrei?

Ich habe mit diese Schreibweise noch Probleme {0^n 1^n | n >= 0}. Weiß deswegen nicht was man damit erzeugen kann. Ja klar, unendlich viele 0en und 1en. Aber kann man jetzt nur 0101010101 erzeugen oder auch 000111 oder sogar auch 011011000 (also egal welche reihefolge, hauptsache es gibt ganu so viele 0en wie 1en)?

Wenn ich das verstehen würde könnte ich eventuell die nächten Fragen beantworten. Zumindest versuchen einen Automaten zu bauen.

Die letzt Frage muss ich glaube ich mit dem Pumping Lemma beweisen. Egal wie toll das in Wiki beschrieben ist, irgendwie ist das noch ein Brocken…

Vielleicht kann ja Jemand was dazu sagen

Gruß

Hallo WaldiWo,

{0^n 1^n | n>=0} bedeutet, dass du Wörter erzeugen kannst, die mit beliebig vielen Nullen anfangen, gefolgt von genausovielen Einsen. Genausoviele müssen es deswegen sein, weil beides vom gleichen n abhängt. „Beliebig viele“ kann auch „keins“ bedeuten. Das leere Wort lässt sich also auch erzeugen.

Soetwas wie 010101 liesse sich also nicht erzeugen. Etwas wie 000111 hingegen schon.
010101 liesse sich zB mit dem regulären Ausdruck (01)* erzeugen.

Wenn du eine Sprache in obiger Mengenschreibweise vorliegen hast, kannst du normalerweise einfach die angegebenen Komponenten in vorgegebener Menge hintereinander schreiben.
{0^n 1^m 2^n | n,m > 0} wäre zb mindestens eine 0 gefolgt von mindestens einer 1, gefolgt von genauso vielen 2en wie du Nullen hattest. Wichtig dabei ist halt, die „Hochzahlen“ im Auge zu behalten.

Die Frage, ob sich die Sprache mit einem endlichen Automaten darstellen lässt und die, ob die Sprache regulär ist, lassen sich übrigens zusammenfassen: Endliche Automaten und reguläre Sprachen beschreiben die gleiche Sprachklasse. Ein regulärer Ausdruck lässt sich also in einen regulären Ausdruck überführen und andersrum. (Ob du das bei deiner Aufgabe verwenden darfst, hängt natürlich davon ab, ob ihr das schon in der Vorlesung behandelt habt :wink: )

Um zu zeigen, dass eine Sprache regulär ist, reicht es aus, wenn du einen regulären Ausdruck angibst, der die Sprache beschreibt. Wenn du keinen findest, ist es etwas unschön :wink: Dann stehst du nämlich entweder auf dem Schlauch oder es gibt wirklich keinen.
Du wirst von dem Kurs ja sicherlich Unterlagen haben. Schlag da vlt nochmal nach, wo die Grenzen von regulären Sprachen liegen, was sich damit nicht mehr darstellen lässt. Vermutlich habt ihr da schon Beispiele zu behandelt? Das lässt sich eigentlich alles auf ein ähnliches Muster zurückführen, so dass du auch damit argumentieren kannst.

Bei Kontextfreiheit ist es ähnlich. Wenn du eine kontextfreie Grammatik findest, die die Sprache darstellen kann, ist die Sprache mindestens kontextfrei. In dem Fall musst du nur noch ausschließen, dass sie nicht auch mit einem regulären Ausdruck darstellbar ist. (In der Praxis wirst du meist zuerst den regulären Ausdruck ausschließen.)
Auch für die kontextfreien Sprachen gibt es Grenzen. Wenn ihr in der Vorlesung Beispiele behandelt habt und du auf eine ähnliche Struktur stößt, kannst du das dann eigentlich analog dazu zeigen oder einfach darauf verweisen (kommt drauf an, was dein Prof. erlaubt).

Auf sowas wie das Pumping-Lemma brauchst du eigentlich nur dann zurückgreifen, wenn dein Prof. explizit auf den Beweis besteht und einen Verweis auf den Vorlesungsstoff nicht akzeptiert (zur Übung zb :wink: ). Der Verweis sollte aber natürlich schon begründet sein.

Viel Erfolg!

Grüße, e.

Vielen dank!

Gruß