Download Endbericht

Transcript
3.2. AUTOMATEN
119
geschieht implizit während der Minimierung. Daher empfiehlt sich die BrzozowskiMinimierung vor allem für diesen Automatentyp.
Das Verfahren ist bezüglich Rechenzeit und Speicherplatzbedarf heuristisch. Beide
sind im worst-case im Verhältnis zur DFA-Zustandsanzahl exponentiell (da determinisiert wird), in vielen Fällen beobachtet man jedoch erstaunlich gute Rechenzeiten.
• Hopcroft-Minimierung: Bei diesem Verfahren wird ebenfalls eine Partition der
Zustände berechnet, allerdings startet man dabei mit der Partition, die nur aus zwei
Mengen besteht, nämlich der Menge akzeptierender und der Menge nicht akzeptierender Zustände. Diese Partition wird schrittweise verfeinert, so dass am Ende die
gleiche Partition entsteht wie bei der oben erwähnten Huffman-Minimierung. Es
wird aber bei n Zuständen nur Rechenzeit O(n · log n) benötigt. Die Alphabetgröße
bzw. die Anzahl verschiedener Symbolmengen in der Eingabe geht als Konstante in
die Laufzeit ein.
3.2.1.8
Weitere Funktionalität
Eine wichtige Anforderung für Bibliotheken ist, dass sie flexibel sind. Dazu gehört, dass
sie mit universellen Formaten umgehen können. Eine Interaktion mit schon vorhandenen
System ist wünschenswert.
3.2.1.8.1
XML Für viele Anwendungen reicht es nicht aus, dass Automaten nur tem-
porär existieren, es ist häufig notwendig, sie weiterzuverarbeiten oder sie auf einem Sekundärspeicher persistent zu machen.
Für diese beiden Zwecke steht die Möglichkeit zur Verfügung, zu einem Automaten eine
XML-Repräsentation zu berechnen. Diese kann (in Form eines org.w3c.dom.DocumentObjektes) entweder direkt weiterverarbeitet oder als Textdatei gespeichert werden.
Die dabei entstehenden Ergebnisse sollen möglichst redundanzfrei, aber noch von Menschen lesbar sein. Daher wurde keine Standardlösung gewählt, sondern ein eigener Weg
beschritten. Die wichtigste Idee dabei ist, Objekte als Teil-XML-Bäume darzustellen, wobei einfache Attribute eines Objekts (z. B. vom Typ String oder int) als Attribute des
Wurzelknoten modelliert werden und komplexere member-Objekte bzw. Sammlungen davon als Unterbäume repräsentiert werden. Diese Lösung ist keine allgemeine, sondern
wurde nur für Objekte erdacht, die Teile von Automaten sind (Zustände, Transitionen,
...).
Für ein Objekt, das auf diese Weise dargestellt werden soll, muss eine ConverterImplementierung zur Verfügung stehen (siehe Abbildung 3.8). Converter ist eine ab-