Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Wann ist eine Grammatik kontextfrei? (http://www.informatikerboard.de/board/thread.php?threadid=276)


Geschrieben von Daniel07 am 13.10.2007 um 14:48:

  Wann ist eine Grammatik kontextfrei?

Hallo,

ich habe letztens eine einfache Frage gesehen die ich nicht kurz und knapp beantworten konnte.

Wann ist eine Grammatik kontextfrei?

Kann die Frage kurz und knapp beantwortet werden? Wäre super.

Danke und Grüße
Daniel



Geschrieben von Tobias am 13.10.2007 um 15:18:

 

Eine Grammatik [latex](N, \Sigma, P, S)[/latex] ist kontextfrei, wenn es nur Produktionsregeln der Form [latex]A \to \alpha[/latex] gibt mit Nichtterminalsymbol [latex]A \in N[/latex] und Satzform [latex]\alpha \in (N \cup \Sigma)^\ast[/latex].

Also kurz: Durch Produktionsregeln darf immer nur ein Nichtterminalsymbol auf eine Satzform abgeleitet werden.



Geschrieben von Daniel07 am 13.10.2007 um 16:40:

 

also nur die Möglichkeit und Art der Produktionsregeln?

Bei einer CfG können Produktionen der Art: S-> aBCa |aBC|Abc|AbC

und bei regulären Sprachen können nur Produktionen der Art: S-> aA|epsilon oder S->Aa|epsilon.

Wie werden enstehen wörter bei regulären Grammatiken?
Kannst du mir vielleicht ein kleines Beispiel geben?

Wie lautet die Grammatik zu abc?

So zB.:?
S->aB
B->bc |epsilon

??

Vielen Dank und Grüße
Daniel



Geschrieben von Tobias am 13.10.2007 um 17:34:

 

[latex]S \to abc[/latex] wäre die einfachste Möglichkeit.



Geschrieben von Daniel07 am 13.10.2007 um 17:45:

 

ja aber wenn ich nur a erzeugen will dann würde es ja wie oben nicht gehen.

Dann
S->aA
A->bc|epsilon ????

Würde es so gehen?



Geschrieben von Tobias am 13.10.2007 um 19:16:

 

Ich glaube du musst erstmal sagen, welche reguläre Sprache du als Grammatik ausdrücken willst.



Geschrieben von Daniel07 am 13.10.2007 um 19:25:

 

Also ich habe das letzte auf eine reguläre Sprache/Grammatik bezogen.

abc ist eine Wort das von einer regulären Grammatik erzeugt werden soll.

Alternativ hatte ich gedacht soll auch nur a| abc erzeugt werden können.

Also sowohl "a" als auch "abc" soll meine reguläre Grammatik erzeugen.

Gruß
Daniel



Geschrieben von Tobias am 13.10.2007 um 19:30:

 

Ja, dann stimmt deine Grammatik. Ist ja auch leicht zu überprüfen, da du A nur zu bc oder Epsilon ableiten kannst.



Geschrieben von Daniel07 am 13.10.2007 um 19:55:

 

mir geht es mehr um die form.
Wollte den Unterschied von regulären und kontextfreien Produktionen verstehen.
Da es ja eine reguläre Grammatik sein sollte müsste dann die Produktion wie folgt nicht erlaubt sein: 1. S-> aAB

2. S->aAc ?

Fragen:
A: Ist die reguläre Grammatik wie bei 1 richtig? also mehrere Nichtterminale nach a ?

B: Die 2. Grammatik müsste allerdings eine CfG sein oder?


Danke und Grüße
Daniel



Geschrieben von Tobias am 13.10.2007 um 21:14:

 

Das kann man so allgemein nicht behaupten, denn

S-> aAB
A -> a
B -> b

erzeugt eine reguläre Sprache.



Geschrieben von Daniel07 am 13.10.2007 um 21:23:

 

Ja dann sehe ich denn Unterschied zu einer CfG darin, dass man in der Lage ist folgendes zu machen: S-aABc also noch die Option noch ein Nichtterminal einzufügen.



Geschrieben von Tobias am 13.10.2007 um 21:31:

 

Nein, das hat garnichts damit zu tun. Denn du kannst soviele Nichtterminale wie du willst haben, wenn diese z.B. nur auf ein einfaches Terminalsymbol abgeleitet werden.



Geschrieben von Daniel07 am 13.10.2007 um 22:10:

 

hmm..
OK, kannst du dann bitte je ein Beispiel zu einer reguläre und kontextfreien Grammatik nennen, so dass ich den Unterschiede sehe?

Danke und Grüße
Daniel



Geschrieben von Daniel07 am 14.10.2007 um 13:27:

 

Das wäre sehr nett. Ich denke, dass ich es dann besser verstehen würde.

VLG
Daniel



Geschrieben von Tobias am 14.10.2007 um 14:18:

 

Und da findest du selber keine Beispiele?

Nimm z.B. die Palindrome


Forensoftware: Burning Board, entwickelt von WoltLab GmbH