Was ist ein guter Algorithmus zum Generieren von zufälligen DFAs?


9

Ich generiere zufällige DFAs, um einen DFA-Reduktionsalgorithmus auf ihnen zu testen.

Der Algorithmus, der ich jetzt bin verwendet , ist wie folgt: für jeden Zustand , für jedes Symbol des Alphabets , fügen bis zu einem gewissen zufälligen Zustand. Jeder Staat hat die gleiche Wahrscheinlichkeit, ein Endzustand zu werden.qcδ(q,c)

Ist dies eine gute Methode, um unvoreingenommene DFAs zu generieren? Außerdem generiert dieser Algorithmus keinen Trimm-DFA (einen DFA ohne veraltete Zustände). Ich frage mich also, ob es eine bessere Möglichkeit gibt, zufällige DFAs zu generieren, die irgendwie sicherstellen können, dass es sich um einen Trimm-DFA handelt.


2
Es gibt keine natürliche Verteilung von zufälligen DFAs, also liegt es an Ihnen. Was möchten Sie erreichen?
Yuval Filmus

Ich generiere zufällige DFAs, um einen DFA-Reduktionsalgorithmus auf ihnen zu testen.
Duncan

Vielleicht möchten Sie von einem kleinen Satz minimaler DFAs ausgehen und diese in die Luft jagen? Auf diese Weise wissen Sie, dass die Minimierung tatsächlich zum richtigen Ergebnis führt.
AdrianN

Fragen Sie sich, testen Sie einen nicht optimalen Reduktionsalgorithmus oder finden Sie den einzigartigen minimalen optimalen DFA?
VZN

2
Wenn Sie Datenstrukturen zum Testen generieren, ist Unparteilichkeit nicht wichtig. Wichtig ist, dass Sie gute Chancen haben, interessante Verhaltensweisen auszulösen. Um eine Analogie zu ziehen, müssen Sie beim Testen eines geometrischen Algorithmus sicherstellen, dass bei einigen Ihrer Tests drei Punkte ausgerichtet sind und andere Dinge, die in einer zufälligen Verteilung niemals auftreten würden.
Gilles 'SO - hör auf böse zu sein'

Antworten:


6

Lesen Sie [1] und die Diskussion in Abschnitt 4, Zufällige Automatengenerierung. Das Papier vergleicht verschiedene DFA-Minimierungsalgorithmen. Es wird ein einheitlicher Zufallsgenerator verwendet, der kanonische Zeichenfolgendarstellungen vollständiger DFAs mit Zuständen und Symbolen erzeugt. Sie diskutieren auch andere Methoden.nk


[1] Almeida, M., Moreira, N. & Reis, R. (2007). Zur Leistung von Algorithmen zur Minimierung von Automaten. Logik und Theorie der Algorithmen, 3.


Was bedeutet "kanonische Zeichenfolgendarstellungen"?
Duncan

@drowse Die kanonische Reihenfolge wird über die Menge der Zustände definiert, indem der Automat in einer Breite zuerst durchlaufen wird, wobei an jedem Knoten die ausgehende Reihenfolge unter Verwendung der (Gesamt-) Reihenfolge von . Lesen Sie die Referenzen im Papier. Σ
Juho

4

Sie sollten sich die Homepage von Cyril Nicaud ansehen . Insbesondere sind die folgenden Referenzen für Ihre Frage relevant:

F. Bassino, J. David und C. Nicaud, Aufzählung und zufällige Erzeugung möglicherweise unvollständiger deterministischer Automaten, Pure Mathematics and Applications 19 (2-3) (2009) 1-16.

F. Bassino und C. Nicaud. Aufzählung und zufällige Generierung zugänglicher Automaten. Theor. Comp. Sc. . 381 (2007) 86-104.


3

Es gibt Algorithmen zum zufälligen Generieren von DFAs bis zu einer Permutation http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz .

In dem obigen Artikel wird jedoch auch erwähnt, dass fast alle DFAs bereits minimal sind. Nicht minimale DFAs sind wie Primzahlen ... es gibt nur wenige davon. Und wenn Sie diesen Algorithmus verwenden, um den Minimierungsalgorithmus zu testen, ist es so, als würden Sie einen Algorithmus mit einem einfachen Zufallszahlengenerator auf Primzahlen testen. Um mehr nicht minimale DFAs zu erhalten, können Sie den Algorithmus ändern, indem Sie einen Senkenstatus hinzufügen und einen wichtigen Prozentsatz der Übergänge in diesen Senkenstatus umleiten.

Wenn Sie jedoch aus meiner Sicht die Schnelligkeit Ihrer Implementierung testen möchten, vergleichen Sie sie mit dem, wofür Sie sie verwenden möchten: Erstellen Sie mit zufälligen Wortmengen oder zufälligem REGEX einen NFA oder einen DFA und minimieren Sie dann den resultierenden DFA .


2

p=1/.nnist die Anzahl der Knoten im Diagramm. Ihre Strategie oder Erdos-Renyi garantieren jedoch nicht, dass alle Staaten im EDA miteinander verbunden sind [eine natürliche Einschränkung, die hinzugefügt werden muss].



(v1,b,v2)v1v2b
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.