Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz/Softwaretechnologie Fachbereich Biologie und Informatik / Institut für Informatik Johann Wolfgang Goethe-Universität Frankfurt am Main Praktische Informatik 2 Sommersemester 2002 Aufgabenblatt Nr. 9 Abgabe: Mittwoch 26. Juni 2002 vor! der Vorlesung Aufgabe 1 (8 Punkte) Betrachten Sie den NEA AN = ({A, B, C, D, E}, {0, 1}, δ, A, {B, E}) wobei die Übergangsfunktion δ durch folgende Tabelle gegeben sei: δ A B C D E 0 {A, B} {C, D} {C, D} {E} {E} 1 {B} ∅ ∅ {A} {E} a) Konstruieren Sie zu AN einen äquivalenten DEA AD , indem Sie das in der Vorlesung vorgestellte Verfahren verwenden. Gehen Sie strukturiert vor und kommentieren Sie die einzelnen Schritte, so daß aus Ihrer Lösung die Anwendung des Verfahrens deutlich wird. (6 Punkte) b) Zeichnen Sie den Automaten AD , wobei Sie Zustände, die vom Startzustand nicht erreicht werden können, weglassen können. (2 Punkte) Aufgabe 2 (12 Punkte) Auf dem letzten Aufgabenblatt wurde ein DEA in Haskell implementiert durch die Definition jeweils einer Funktion für jeden Zustand. Hier sollen DEA’s jetzt allgemein durch Tabellen realisiert werden. Betrachten Sie dazu folgende Typen: > -- DTF = Deterministic Transition Function > type DTF state alpha = state -> alpha -> state > newtype DFA state alpha = > DFA ([state], [alpha], DTF state alpha, state, [state]) 1 a) Programmieren Sie in Haskell eine Funktion > mkDFA :: (Eq state, Eq alpha) => > state -> [state] -> [((state, alpha), state)] -> DFA state alpha die aus einem Startzustand, einer Liste von Endzuständen und einer Liste von Zustandsübergängen der Form ((q, a), q’) für δ(q, a) = q 0 den entsprechenden Automaten vom Typ DFA state alpha erzeugt. (4 Punkte) b) Implementieren Sie Funktionen > runDFA :: Eq state => DFA state alpha -> [alpha] -> state > acceptDFA :: Eq state => DFA state alpha -> [alpha] -> Bool um einen DEA auf einem Eingabewort vom Typ [alpha] laufen zu lassen und entweder den Endzustand zu ermitteln (runDEA) oder True zu liefern, genau dann wenn das Wort in der vom DEA erzeugten Sprache liegt (acceptDFA). Überprüfen Sie, ob Sie die in der Vorlesung erwähnten Ressourcenschranken einer vernünftigen Implementierung einhalten. (3 Punkte) c) Sie könnten nun den NEA aus der vorigen Aufgabe simulieren, indem Sie den dort konstruierten äquivalenten DEA verwenden. Dieser kann aber über exponentiell viele Zustände gegenüber dem ursprünglichen NEA verfügen. Ändern Sie daher die Typen und Funktionen aus den vorigen Aufgabenteilen so ab, daß ein NEA implementiert wird und testen Sie die Implementierung mit dem NEA aus der vorigen Aufgabe. (5 Punkte) 2