Hallo,
ich denke mal, dass man bei der Aufgabe Fallunterscheidungen machen muss: r=s, also kein c, s=0, also kein b und r!=s, s>0.
Wie kann man den letzten Fall umsetzen? Hat jemand eine Idee? Ist das ganze kontextsensitiv oder so?
Bin für jeden Tip(p) dankbar…
rehi!
nein, du brauchst keine fallunterscheidungen.
versuche einfach, aus der subtraktion eine addition zu machen, indem du etwas geschickt umformst bzw. anders schreibst. du kommst dann auf eine schöne neue beschreibung der worte der sprache, die du gut als cfg formulieren kannst.
gruß,
bj
Dies habe ich noch verstanden. Aber wie kann ich das Wort immer richtig sortiern, so dass erst a dann b und dann c kommt? Bei einer kontextfreien Grammatik darf (so habe ich es zumindest verstanden) auf der linken Seite nur ein Nonterminal stehen. So muss ich, wenn ich die Sprache erweitere, ja immer an mehreren Stellen schreiben, zwischen a und b und zwischen b und c um das Wort immmer richtig sortiert zu habe. Ich wäre für Hilfe dankbar.
ich muss gestehen deinen letzten satz nur so halb verstanden zu haben…aber schau dir am besten mal an, wie man DUP darstellt als cfg…dann siehst du so bissle das system.
habe aus der Substraktion ne Addition gemacht, komme allerdings immer noch nicht weiter. gibt es noch einen Trick, den man anwenden kann?
wie was trick?
was ist denn der normale weg und wieso funktioniert der hier nicht?
das ganze läuft so ähnlich wie bei DUP,
wenn in einem wort 2 buchstaben mit der gleichen anzahl auftauchen sollen,
dann müssen sie halt zusammen in der produktion auftauchen wie bei DUP: S -> aSb
Hä, wieso ind der gleichen Anzahl? Das ist doch gar nicht gesagt: Beispiel: a^rb^sc^r-s r=4 dann geht folgendes:
aaaabbbb; aaaacccc; Das ist ja noch einfach (so wie bei DUP)
aber was ist mit: aaaabccc; aaaabbcc; aaaabbbc Da heißt es eben nicht, dass wenn ein a erzeugt wird auch ein b oder ein c erzeugt wird, weil es ja verschiedene Möglichkeiten gibt. Ich hab zwar ne Form gefunden, dass das erezugt werden kann, aber es sind dann auch Wörter wie z.B. aaaabcbc möglich und das darf doch nich, oder!? Soll dir cfg nur die angegebene Sprache erzeugen oder auch (unter anderem) diese Sprache? Ich denk mal eher ersteres und dann geht meine Lösung nicht.
Hä, wieso ind der gleichen Anzahl? Das ist doch gar nicht gesagt: Beispiel: a^rb^sc^r-s r=4 dann geht folgendes:
aaaabbbb; aaaacccc; Das ist ja noch einfach (so wie bei DUP)
aber was ist mit: aaaabccc; aaaabbcc; aaaabbbc Da heißt es eben nicht, dass wenn ein a erzeugt wird auch ein b oder ein c erzeugt wird, weil es ja verschiedene Möglichkeiten gibt.
jo schon mal gut erkannt,
aber das bedeutet schon, dass immer wenn ein a erzeugt wird
genau ein b oder c erzeugt wird,
Ich hab zwar ne Form gefunden, dass das erezugt werden kann, aber es sind dann auch Wörter wie z.B. aaaabcbc möglich und das darf doch nich, oder!? Soll dir cfg nur die angegebene Sprache erzeugen oder auch (unter anderem) diese Sprache?
genau diese sprache, keine andere mit mehr wörtern
Ich denk mal eher ersteres und dann geht meine Lösung nicht.
ich kann mir vorstellen, wie diese grammatik aussieht, die du da hast,
und die dürfte schon die halbe miete sein,
jetzt musst du ja nur noch dafür sorgen,
dass die b und c nicht durcheinandergeraten,
zum beispiel mit verschiedenen nonterminalen und einer reihenfolge
(erst die produktion(en) mit dem b, dann die mit dem c oder andersrum)