¿Cuál es un buen algoritmo para generar DFA aleatorios?


9

Estoy generando DFA aleatorios para probar un algoritmo de reducción de DFA en ellos.

El algoritmo que estoy usando en este momento es el siguiente: para cada estado , para cada símbolo en el alfabeto , agregue a algún estado aleatorio. Cada estado tiene la misma probabilidad de convertirse en un estado final.qCδ(q,C)

¿Es este un buen método para generar DFA imparciales? Además, este algoritmo no genera un DFA de recorte (un DFA sin estados obsoletos), por lo que me pregunto si hay una mejor manera de generar DFA aleatorios que de alguna manera puedan garantizar que sea un recorte.


2
No existe una distribución natural de DFA aleatorios, por lo que depende de usted. ¿Qué quieres lograr?
Yuval Filmus

Estoy generando DFA aleatorios para probar un algoritmo de reducción de DFA en ellos.
Duncan

¿Quizás quiera comenzar con un pequeño conjunto de DFA mínimos y hacerlos explotar? De esa manera, sabrá que la minimización en realidad llega al resultado correcto.
adrianN

preguntándose, ¿está probando un algoritmo de reducción no óptimo o está encontrando el DFA óptimo mínimo único?
vzn

2
Si está generando estructuras de datos para pruebas, no es imparcial. Lo importante es tener una buena posibilidad de desencadenar comportamientos interesantes. Para tomar una analogía, cuando prueba un algoritmo geométrico, debe asegurarse de que algunas de sus pruebas tengan tres puntos alineados y otras cosas que nunca ocurrirían en una distribución aleatoria.
Gilles 'SO- deja de ser malvado'

Respuestas:


6

Vea [1] y la discusión en la Sección 4, Generación de Autómatas Aleatorios. El documento compara diferentes algoritmos de minimización de DFA. Se utiliza un generador aleatorio uniforme que produce representaciones de cadenas canónicas de DFA completos con estados y k símbolos. También discuten otros métodos.nortek


[1] Almeida, M., Moreira, N. y Reis, R. (2007). Sobre el rendimiento de los algoritmos de minimización de autómatas. Lógica y Teoría de Algoritmos, 3.


¿Qué significa "representaciones de cadenas canónicas"?
Duncan

Σ

4

Deberías mirar la página de Cyril Nicaud . En particular, las siguientes referencias son relevantes para su pregunta:

F. Bassino, J. David y C. Nicaud, Enumeración y generación aleatoria de autómatas deterministas posiblemente incompletos, Matemáticas puras y aplicaciones 19 (2-3) (2009) 1-16.

F. Bassino y C. Nicaud. Enumeración y generación aleatoria de autómatas accesibles. Theor Comp. Carolina del Sur. . 381 (2007) 86-104.


3

Existen algoritmos para generar aleatoriamente DFA hasta una permutación http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz .

Pero, también se menciona en el documento anterior que casi todos los DFA ya son mínimos. Los DFA no mínimos son como números primos ... solo hay unos pocos. Y si usa este algoritmo para probar el algoritmo de minimización, será como si estuviera probando un algoritmo en número primo con un simple generador de números aleatorios. Para tener más DFA no mínimos, puede alterar el algoritmo agregando un estado sumidero y redirigir un porcentaje importante de las transiciones a este estado sumidero.

Pero desde mi punto de vista, si desea probar la rapidez de su implementación, compárela con lo que desea usar: con conjuntos de palabras aleatorias o REGEX aleatorio, cree un NFA o un DFA, y luego minimice el DFA resultante .


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.