PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ableitung eines regulären Ausdrucks


Moppel
03.06.2005, 14:36
Hallo!

Ich habe ein kleines (großes?) Problem. Hier mal die Aufgabe:

++++++++++
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.

Beispiel:
Gegeben sind die Worte: a, baa, babaa, ab, abb, die zu der Sprache
gehören und die Worte aa, bbaa, baba, die nicht zu der Sprache gehören

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
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 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)+a

Damit 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)*.
++++++++++

Mit anderen Worten: Gegeben sind Strings, diese sollen nach Gemeinsamkeiten (Zyklen) durchsucht werden. Daraus soll dann der reguläre Ausdruck konstruiert werden. Anschließend erfolgt die Prüfung auf Korrektheit des regulären Ausdrucks anhand der Worte, die nicht zu der Sprache gehören. Ist der reguläre Ausdruck korrekt, endet der Algorithmus. Wenn nicht, startet die Prozedur von neuem (allerdings werden die Zyklen jetzt verkleinert).

Wie realisiert man das?

Ich wäre sehr dankbar für jede Art von Tipps oder Hinweisen.

MfG
Moppel