Ableitung eines regulären Ausdruckes aus einer gegebenen Menge von Sätzen einer regulären Sprache
-
Hallo!
Ich bin ein ziemlicher Newbie was Programmierung angeht. Ich habe zwar schon mal ein bisserl' was in C++ gecodet, aber keine größeren Programme (Java & Prolog hab' ich mir auch schon mal zu Gemüte geführt). Allerdings ist das alles schon 'ne Weile her.
Ich habe folgendes Problem:
Ich habe von meinem Prof ein Projektthema im Fach "Automaten und formale Sprachen" erhalten, mit dem folgenden Inhalt:Entwicklung einer Methode zur Ableitung eines regulären Ausdruckes aus
einer gegebenen Menge von Sätzen einer regulären Sprache, die durch
diesen Ausdruck spezifiziert wird.
Worte mit gleichem Präfix, die zu der Sprache gehören, werden
zusammengefaßt:
· a + ab + abb = a(e + b + bb) =verallgemeinert=> ab. Überprüfung der
Verallgemeine-rung mit den Worten, die nicht zu der Sprache gehören -
von diesen wird keines durch den Ausdruck abgedeckt: aa, bbaa, baba sind
nicht Element von ab*
· baa, babaa = (ba + baba)a = verallgemeinert=> (ba)+a. Überprüfung der
Verallgemeinerung mit den Worten, die nicht zu der Sprache gehören -
von diesen wird keines durch den Ausdruck abgedeckt: aa, bbaa, baba sind
nicht Element von (ba)+aDamit ist der gesuchte Ausdruck: ab* + (ba)+a
Wenn ein Wort, das nicht zu der Sprache gehört, durch einen Teilausdruck
abgedeckt wird, dann ist dieser zu allgemein und er muß spezialisiert
werden. Das Kann durch anhängen oder Voranstellen von Symbolen oder
durch Benutzung einer Teilmenge geschehen. Z.B ist ab + abab spezieller
als (ab).Nun Weiß ich allerdings nicht so richtig, wie ich die ganze Sache angehen soll. Ist solch ein Problem mit C++ (effizient) lösbar? Oder sollte ich vielleicht doch eine andere Sprache probieren (Prolog ist ja für Sprachanalyse geeignet...)? Ich will mich halt nicht ewig in eine Sprache einarbeiten, um dann feststellen zu müssen, dass die Sprache für das Problem nichts taugt. Wie gesagt, Programmieren gehört nicht unbedingt zu meinen Steckenpferden, deshalb tue ich mich da doch etwas schwer.
Ich hoffe mal, dass ich nicht gänzlich im falschen Forum gelandet bin...
Ich würde mich freuen, wenn ihr mir die eine oder andere Anregung geben könntet.
Vielen Dank im Voraus!MfG Moppel