Praktische Informatik 2 Aufgabenblatt Nr. 9 Aufgabe 1 (8 Punkte

Werbung
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
Herunterladen