PDA

View Full Version : Beispiel 3.5


willi.m
26-10-2008, 16:54
Mein Vorschlag

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.

willi.m
28-10-2008, 23:12
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:

Lukas.P
29-10-2008, 22:36
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

Lukas.P
29-10-2008, 22:58
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

willi.m
30-10-2008, 00:13
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

Lukas.P
30-10-2008, 00:22
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