View Full Version : Beispiel 3.5
Fresh Prince
26-10-2008, 17:25
Also ich hab das so angefangen : 13328
DanyToss
28-10-2008, 15:26
Meiner Meinung nach ist die Sprache von Fresh Prince falsch erkannt.
L = (a) (a , b)*
Wobei ich mir da noch keine 100% sicher bin. (Sehe im moment nur, dass man damit das Leerwort nicht erzeugen könnte)
Bianconeri
28-10-2008, 23:05
Irgendwie schaff ich es mit Willi.m's Grammatik nicht das Wort aaaabab zu bilden, was mit der ursprünglichen Grammatik aber schon geht. Also entweder ich bin einfach zu blöd eine Ableitung dafür zu finden oder die Grammatik stimmt nicht.
S -> A -> aS -> aA -> aaS -> aaA -> aaaS -> aaaB -> aaaaBbB -> aaaa eps b B -> aaaab aBbB -> aaaaba eps bB -> aaaabab eps -> aaaabab
Bianconeri
28-10-2008, 23:26
Das gibts ja nicht ich versuch das schon zum 10. Mal glaub ich und bin nie darauf gekommen. Ich red mich mal darauf aus, dass ich schon zu müd bin ;)
Danke jedenfalls.
Kannst du mir vielleicht kurz schreiben, wie du auf die Grammatik gekommen bist. Ich find da nirgends was wie man von einer mehrdeutigen Grammatik auf eine eindeutige kommt. Mehrdeutige hab ich schon mehrere zusammengebracht zu der Sprache.
schrankk
29-10-2008, 17:02
Wie beschriftet man eigentlich Knoten? Geht man einfach von links nach rechts jede Stufe durch, oder abhängig von Ableitungsvorgang (Links-, Rechts-, Parallelableitung)?
/*edit: ist genau Ableitungsvorgang wichtig, aber ganze Beschriftungen allgemein sind irrelevant (kaum in welchem Buch findet man so was)*/
Und dritte Frage: wie bildet man eine eindeutige Grammatik aus einer mehrdeutigen?
/*edit: so wie ich es nun verstanden habe, gibt es keinen Algorithmus für alle Fälle*/
Wie sieht die durch in unserem Beispiel gegebene Grammatik erzeugte Sprache aus? Oder ist es irrelevant?
schrankk
29-10-2008, 18:59
meiner Meinung nach ist die erzeugte Sprache:
L(G) = \lbrace a^n b^m a^k | ( 0 \leq m \leq n ) \wedge ( k\geq 0 ) \rbrace
edit: und dann in diesem Zusammenhang die Menge von Produktionen P einer eindeutigen Grammatik sieht folgendermaßen aus:
\lbrace S \to ABA|\epsilon; A \to \underline{a}A|\epsilon; B \to \underline{a}B\underline{b}|\epsilon \rbrace
Was sagt ihr?
Ja, und gab es bereits bei irgendeinem Forum-Teilnehmer die Übung?? Könnte mir jemand mit diesem Beispiel weiterhelfen? :o
Octavius
29-10-2008, 22:02
@schrankk: ich denke du liegst falsch, denn wenn ich das richtig sehe wären auch andere wörter möglich
z.b.
S -> aSbS -> (erstes S wird eps. zweites S aSbS): abaSbs -> (beide S werden eps.): -> abab
wäre aber schon interessant welche Sprache eigentlich erzeugt wird, um dann von der Sprache vlt. auf die eindeutige Grammatik schließen zu können....ich probiers mal......(zu der Lösung ganz oben...ich verstehs noch nicht ^^...)
schrankk
29-10-2008, 22:24
so ein mist! du hast natürlich recht, danke!! :thumb:
trotzdem ich probiers noch morgen mal, wer weiß, wann die richtige gedanke plötzlich kommt?! wenn ichs doch nicht schaffe, zahlen sich meine bemühungen bei der prüfung sicher aus! :engel:
wäre aber schon interessant welche Sprache eigentlich erzeugt wird, um dann von der Sprache vlt. auf die eindeutige Grammatik schließen zu können....ich probiers mal......(zu der Lösung ganz oben...ich verstehs noch nicht ^^...)
die sprache die erzeugt wird:
1) muss immer mit a beginnen
2) für jedes b in einer folge von b's müssen mindestens genausoviele a stehen (da S->aSbS die einzige möglichkeit ist um an b zu kommen, erstes S ersetzen gibt für jedes b auch ein weiteres a nach vorne)
3) kann auf a oder b enden
Meine Lösung (evtl einfacher zu verstehen)
S->aS|A|eps
A->aAbS|eps
crashOverride
29-10-2008, 22:43
Hi,
Wie wärs mit:
G' = < {S, A, B}, {a, b}, {S --> ABA | eps., A --> aA | eps., B --> abB | eps. }, {S} >
mfg
damit kannst du kein "aabb" erzeugen
schrankk
29-10-2008, 22:59
S->aS|A|eps
A->aAbS|eps
ist aber mMn nicht eindeutig, da es verschiedene Linksableitungen gibt! Z.B. fürs Wort aab:
1) S->aS->aA->aaAbS->aabS->aabA->aab //zuerst S->A, dann A->Eps
2) S->aS->aA->aaAbS->aabS->aab //gleich S->Eps
und schon fürs Eps allein:
1) S->Eps
2) S->A->Eps
crashOverride
29-10-2008, 23:11
@Lukas
aber mit G (Angabe) kann ich ja auch kein aabb erzeugen!
mfg
Ich bin drauf gekommen, weils im Buch steht...
Schau das Beispiel mit den imperativen Programmiersprachen
Anw => if expr then Anw
| if expr then Anw else Anw
| others
Anw=S / if expr then = a / else = b / others = epsilon|
Octavius
30-10-2008, 00:14
@Lukas
aber mit G (Angabe) kann ich ja auch kein aabb erzeugen!
mfg
leider doch...
S -> aSbS -> (erstes S wird aSbS): aaSbSbS -> (alle S werden eps.): aabb
ist aber mMn nicht eindeutig, da es verschiedene Linksableitungen gibt! Z.B. fürs Wort aab:
1) S->aS->aA->aaAbS->aabS->aabA->aab //zuerst S->A, dann A->Eps
2) S->aS->aA->aaAbS->aabS->aab //gleich S->Eps
und schon fürs Eps allein:
1) S->Eps
2) S->A->Eps
hm hab ich wohl beim ausprobieren von mehreren lösungen übersehen, man kann theoretisch S-> eps weglassen und für jedes eps das man statt S haben möchte S->A->eps umformen
Weitere Mehrdeutigkeiten sind aber glaube ich nicht drin in der Grammatik
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.