Qual é um bom algoritmo para gerar DFAs aleatórios?


9

Estou gerando DFAs aleatórios para testar um algoritmo de redução de DFA neles.

O algoritmo que estou usando agora é o seguinte: para cada estado , para cada símbolo no alfabeto c , adicione δ ( q , c ) a algum estado aleatório. Cada estado tem a mesma probabilidade de se tornar um estado final.qcδ(q,c)

Esse é um bom método para gerar DFAs imparciais? Além disso, esse algoritmo não gera um DFA aparado (um DFA sem estados obsoletos), então, estou me perguntando se existe uma maneira melhor de gerar DFAs aleatórios que, de alguma forma, possam garantir que seja aparado?


2
Não há distribuição natural de DFAs aleatórios, então é com você. O que você quer alcançar?
Yuval Filmus

Estou gerando DFAs aleatórios para testar um algoritmo de redução de DFA neles.
Duncan

Talvez você queira começar com um pequeno conjunto de DFAs mínimos e expandi-los? Dessa forma, você sabe que a minimização realmente chega ao resultado certo.
Adriann

Você está testando um algoritmo de redução não ideal ou está encontrando o DFA ideal mínimo e único?
vzn

2
Se você estiver gerando estruturas de dados para teste, imparcial não é importante. O importante é ter uma boa chance de desencadear comportamentos interessantes. Para fazer uma analogia, ao testar um algoritmo geométrico, você precisa garantir que alguns de seus testes tenham três pontos alinhados e outras coisas que nunca ocorreriam em uma distribuição aleatória.
Gilles 'SO- stop be evil'

Respostas:


6

Confira [1] e a discussão na Seção 4, Geração aleatória de autômatos. O documento faz referência a diferentes algoritmos de minimização do DFA. É usado um gerador aleatório uniforme que produz representações de cordas canônicas de DFAs completos com estados e símbolos k . Eles também discutem outros métodos.nk


[1] Almeida, M., Moreira, N. & Reis, R. (2007). Sobre o desempenho de algoritmos de minimização de autômatos. Lógica e Teoria de Algoritmos, 3.


O que significa "representações canônicas de cordas"?
Duncan

Σ

4

Você deve olhar a página inicial de Cyril Nicaud . Em particular, as seguintes referências são relevantes para sua pergunta:

F. Bassino, J. David e C. Nicaud, enumeração e geração aleatória de autômatos determinísticos possivelmente incompletos, Pure Mathematics and Applications 19 (2-3) (2009) 1-16.

F. Bassino e C. Nicaud. Enumeração e geração aleatória de autômatos acessíveis. Theor. Comp. Sc. . 381 (2007) 86-104.


3

Existem algoritmos para gerar DFAs aleatoriamente até uma permutação http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz .

Porém, também é mencionado no artigo acima que quase todos os DFAs já são mínimos. DFAs não mínimos são como números primos ... existem apenas alguns deles. E se você usar esse algoritmo para testar o algoritmo de minimização, será como se você estivesse testando um algoritmo em número primo com um simples gerador de números aleatórios. Para ter DFAs não mínimos, você pode alterar o algoritmo adicionando um estado de coletor e redirecionar uma porcentagem importante das transições para esse estado de coletor.

Mas, do meu ponto de vista, se você quiser testar a rapidez da sua implementação, verifique com o que deseja usá-la: com conjuntos de palavras aleatórios ou REGEX aleatório, crie um NFA ou DFA e minimize o DFA resultante .


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.