• Keine Ergebnisse gefunden

perfekten Automaten

3.3 Aufzählen von Automaten

Ausgabewertpermutation gilt dies analog, ist aber auch mit einer Sortierregel gemäß Al-gorithmus 3.29 möglich. Eine Kontrolle der Menge Fvon Terminalzuständen ist nicht notwendig, da kein Zustand die Mengenzugehörigkeit zuEoderFändert.

Algorithmus 3.10: Testen der Automaten

1 InitiateAutomaton

2 do

3 if Validate then

4 IssueAutomaton

5 while NextAutomaton

In diesem Abschnitt sind verschiedene Methoden vorgestellt, die Untersuchung kon-zentriert sich dabei auf die in der Praxis meist verwendeten Automaten mit geordneten Zustandsübergängen (normiert), die alle Zustände nutzen (vereinfacht), ohne Präfix sind und keine reduzierbaren Zustände enthalten. Ziel ist es, eine Heuristik zu erstellen, aus der sich Automaten mit mehr Zuständen ergeben.

3.3.1 Gezieltes Testen

Eine Idee ist, eine Logik zu erstellen, die einen beliebigen Automaten als Eingabe erhält und einen gültigen Automaten ausgibt, der als nächstes in der Aufzählung erscheint.

So ist es vielleicht möglich, durch Kombination von Zwei-Zustandsautomaten Mehr-Zustandsautomaten zu erhalten.

Leider hat sich weder für Zwei- noch für Drei-Zustandsautomaten eine Minimierbar-keit gezeigt. Das Ergebnis eines solchen Verfahrens entspricht der Logik, die sich mit den Verfahren aus Abschnitt 3.2 erstellen lässt, und bietet keine Vorteile gegenüber der sim-plen Aufzählung durch Algorithmus 3.10. Zum Einsatz kam dabei das mit [BHMSV84]

vorgestellte Verfahren ESPRESSO II aus [BHM85], das in den meisten Fällen die beste Minimierungslösung zeigt, wie in [GB89] beschrieben ist.

3.3.2 Perfektes Orakel – Aufzählung durch Logik-Minimierung Anstatt die Automaten mit der in Abschnitt 3.1.3 beschriebenen Methode durchzugehen, könnte auch eine Logik erstellt werden, die als Eingabe einen Zählerwert, die Ordinalzahl bezogen auf die Ergebnisse, erhält und den zugehörigen Automaten ausgibt. Aber auch hier hat sich mit den gleichen Minimierungsverfahren gezeigt, dass keine Reduzierung bei der Erstellung möglich ist. Es wird lediglich eine Art Speicherabbild erstellt und die gültigen Automaten in einer Liste angegeben. Zudem bleibt auch hier das Problem, dass zuerst eine Liste aller gültigen Automaten zu erstellen ist.

3.3.3 DCP: Dekomposition

Die Dekomposition einer binären Funktion basiert auf dem Verfahren, dass in [Ash59]

beschrieben ist und in [Ive62] eine Umsetzung gefunden hat. Eine Funktion f(~x) =y∈ {0,1} wird dabei in Unterfunktionen zerlegt und der Eingangswert~x∈ {0,1}n mittels

~u in zwei Eingangswerte aufgeteilt. Der Vektor2~u hat je Eingangsbit ein Bit, um die Zuteilung anzugeben. Die Teile von ximit ui=0 durchlaufen eine Funktion~a, deren ein Bit breites Ergebnis zusammen mit den anderen Werten aus~x in eine weitere Funktion gelangen, die oder-verknüpft aus drei Teilen besteht. Zum einen der Teil~b für den Fall,

2Für Vektoren soll allgemein gelten, dass deren einzelne Werte per Index angesprochen werden können, also z. B.~u= u1 · · · un

.

3.3 Aufzählen von Automaten dass das Ergebnis von~a gleich 0 ist, des weiteren ein Teil~c für den Fall, dass~a gleich 1 ist, sowie einen von~a unabhängigen Teild, dessen Werte ausschließlich von x~ imit ui=1 stammen. Zusammengetragen ist dies in Abbildung 3.11.

d~

≥1

~x= x1 · · · xn y

xi∀ui=0

xi∀ui=1

~a a

für a=0:

~b

~c für a=1:

Abbildung 3.11: Prinzip der Dekomposition

Eine rekursive Ermittlung, mit der zusätzlich~a eine Dekomposition erfährt, ist in [Hof74, Seite 59ff.] dargestellt; das ausführende APL/360-Programm ist dort auf Seite 139 zu finden. Mit Algorithmus 3.11 ist das Verfahren nochmals veranschaulicht, die dort aufgerufene Funktion „Ausgabe“ stellt die abstrahierte Ausgabe des Berechnungs-ergebnisses dar und ist hier nicht näher erläutert. Als Parameter des Funktionsaufrufes erhält „dcp“ die Funktion f in Form eines Vektors~y, dessen Elemente den jeweiligen Ausgabewert für die einzelnen Eingangswerte angeben, z. B. bei x=0 ergibt sich der Index 0 und somit der zugehörige Ausgabewert y0.

Auch hier hat das Verfahren weder für einen Index noch den Vorgängeralgorithmus als Eingabe ein Ergebnis hervorgebracht. So ist für die Indexierung der interessanten Zwei-Zustandsautomaten für die Bits von s1,1, y1,0sowie y1,1keine Dekomposition mög-lich. Für Drei-Zustandsautomaten hat sich für kein einziges Bit eine Zerlegung gezeigt.

Von daher ist dieses Verfahren ungeeignet, da sich keine geeigneten Automaten mit mehr Zuständen aus bereits bekannten Automaten kombinieren lassen.

3.3.4 Aufzählen und Überspringen

Wie sich bisher gezeigt hat, gibt es keine allgemeine Schlussfolgerung, die eine Erwei-terung auf mehr Zustände zulässt. Außer für die offensichtlichen Fälle, bei denen alle Zustände die gleichen Ausgaben aufweisen, ist insbesondere bei der Reduzierung kein Schema vorhanden.

Bleibt als Alternative, nur eine ungefähre Lösung zu erstellen, um in etwa den nächs-ten interessannächs-ten Automanächs-ten aufzuzählen, ohne dabei einen geeignenächs-ten Automanächs-ten zu überspringen. Dies entspricht einem Abschätzen der Kriterien, wobei die Kriterien ein-zeln zu betrachten sind. Der dabei berechnete Sprung, der die meisten Automaten über-springt, wird verwendet.

Neben dieser Sprungtechnik ist auch noch eine Abänderung zur reinen Überprüfung interessant. Zum Beispiel für die Normierung erfolgt mit Algorithmus 3.6 eine Neusor-tierung der Zustände und dann ein Vergleich. Stattdessen reicht eine Kontrolle aus. Dies geschieht mit Algorithmus 3.15.

Da sich die einzelnen Kriterien und Ergebnisse nicht trivial beschreiben lassen, ist deren Anwendung ausführlich in Abschnitt 3.4 ab Seite 46 beschrieben. Die Tabelle 3.2

Algorithmus 3.11: Dekomposition

1 function dcp(~y= y1 · · · yn )

2 n :=⌈log2|~y|⌉

3 u,u,˘ u :=´ 1,n−1,1

4 do

5 if 2u then˘

6 ~u := u1 · · · un

mit ui∈ {0,1}und u=∑i∈N0ui2i

7 ~f :=

f1,1 · · · f1,2u˘

... . .. ... f2u´,1 · · · f2u´,2u˘

mit (bei j>n gilt yj =0)

∀0≤ j<2⌈log2n⌉: f

k∈{k|hk=0}uk2ok,k∈{k|hk=1}uk2lk=yj wobei (oi+1=ojhi=hj=0 ∧ i<k< j ∧(∄k : hk=0))und (li+1=ljhi=hj=1 ∧ i<k< j∧ (∄k : hk=1))sowie

~h= h1 · · · hn

mit hk ∈ {0,1}und j=∑i∈N0hi2i

8 ~d := d1 · · · d2u´

mit∀i : di=

1 wenn∀j : fj,i=1 0 sonst

9 ~e := e1 · · · e2u´

mit∀i : ei=

1 wenn∀j : fj,i=0 0 sonst

10 ~g := g1 · · · g2u´

mit∀i : gi= (diei)

11 if∀i : gi=1 then

12 ~a :=

a1

... a2u˘

 mit∀i : ai=0

13 ~b := b1 · · · b2u´

mit∀i : bi=0

14 ~c := c1 · · · c2u´

mit∀i : ci=0

15 Ausgabe(~y,~a,~b,~c,d,~ ~u)

16 else

17 ~a :=

a1

... a2u˘

 mit∀i : ai=

fi,j wenn∃j∀k< j : gk=1∧gj=0 0 sonst

18 ~b := b1 · · · b2u´

mit∀i : bi=

1 wenn∀j : ¬aj= fj,i

0 sonst

19 ~c := c1 · · · c2u´

mit∀i : ci=

1 wenn∀j : aj= fj,i 0 sonst

20 if∀i : gibicithen

21 Ausgabe(~y,~a,~b,~c,d,~ ~u)

22 if∃i : ai6=0 then

23 dcp(~a)

24 u :=u+1

25 u :=´ |{αii=1 bei u=∑i∈N0αi2i}|

26 u :=˘ nu´

27 while u<2n

3.3 Aufzählen von Automaten zeigt die Anzahl der möglichen Automaten für den Algorithmus 3.1 von Seite 26, um die Zielwertsuche des Problems aus Abschnitt 3.1.1 zu bearbeiten. Die Zahlen sprechen für sich. Sie zeigen für|S|=4,|X|=2 und|Y|=8 mit zmax=15, dass das Überspringen ein erfolgreiches Verfahren ist, um die aufgezählte Anzahl möglicher, aber uninteressan-ter Automaten zu reduzieren. Gefunden wurden 512 Automaten, die in zmax+1 Expe-rimenten mit insgesamt 49 Schritten jeweils jeden Wert z von 0 bis zmaxerreicht haben, ausgehend vom Startwert 0 und Zustand 0; der erste gefundene Automat ist in Abbildung 3.12 dargestellt.

Tabelle 3.2: Ergebnis der reduzierten Suche für Zielwertsuche

Menge Anzahl

Wertkonstellationen 1 099 511 627 776

Aufgezählt 2 147 483 663

Relevant 1 425 746 368

⇒Sprünge 721 737 295

⇒ungeprüft übersprungen 1 097 364 144 113

Gefunden 512

0 1 2 3 Ausgabewerte

0 −1

1 +1

2 −2

3 +2

4 −4

5 +4

6 −8

7 +8

Abbildung 3.12: Ein Automat zur Durchführung der Zielwertsuche

3.3.5 Vorausschauende Berechnung

Das Verfahren des vorherigen Abschnitts 3.3.4 greift erst für die Berechnung bei einem uninteressanten Automaten, wie der nächste gültige Automat zu finden ist. Stattdessen ist denkbar, gleich eine Vorausberechnung vorzunehmen.

Hierzu wird, statt zu addieren und auf einen Fehlerfall zu prüfen, h im Voraus be-rechnet. Da jedoch mehr erfolgreiche Automaten gefunden als übersprungen werden, ist eine vorausschauende Alternative zu aufwendig, wie anhand der Zahlen in Tabelle 3.5 zu sehen ist. Des weiteren ist eine komplexere Berechnung notwendig, da allein schon für die Reduktion ein konkreter Automat benötigt wird, der dann temporär zu generieren ist.

Dies bringt im Endeffekt keinen Unterschied zur vorherigen Lösung.

3.3.6 Genetik

Ein genetisch gewonnener Automat basiert auf einem beliebigen, zufällig ausgewählten Automaten. Dieser erfährt solange Modifikationen, bis ein Optimum erreicht ist. Dieses Verfahren, zum Beispiel beschrieben in [Poh00], kann schneller zu einem erfolgreichen Ergebnis führen. Es kann aber genauso passieren, dass die Veränderungen an einem lo-kalen Optimum hängen bleiben. Zudem ist ein Optimum als Kriterium festzulegen, um ein Ende für die Suche zu haben.

Der Unterschied zu dem Verfahren in Abschnitt 3.3.4 stellt die Rückkopplung des Simulationsergebnisses dar. Die Aufstellung von Kriterien ist, wenn überhaupt, lediglich für den ersten Schritt eines zufällig ausgewählten Automaten notwendig.

Damit ist ein simulationslastiges Verfahren gegeben, bestehend aus den Schritten Be-stimmung der Fitness, Selektion, Rekombination, Mutation und Reinsertion. Um nun allgemein gültige Ergebnisse zu erhalten, sind zahlreiche Simulationen durchzuführen, wenn jeweils eine Minimalanforderung erfüllt ist. Ansonsten kann das Simulationsver-fahren vorzeitig abgebrochen werden, um einen alternativen, entsprechend geänderten Algorithmus zu testen.

Allerdings ist ein allgemein gültiges Verfahren zu entwerfen, so dass nicht von einer effektiv durchführbaren Simulationsbasis ausgegangen werden kann. Von daher ist die genetische Automatengewinnung hierfür nicht geeignet, im konkreten Einzelfall ist aber eine Betrachtung durchaus angebracht.