Qu'est-ce qu'un bon algorithme pour générer des DFA aléatoires?


9

Je génère des DFA aléatoires pour tester un algorithme de réduction DFA sur eux.

L'algorithme que j'utilise actuellement est le suivant: pour chaque état , pour chaque symbole de l'alphabet c , ajoutez δ ( q , c ) à un état aléatoire. Chaque état a la même probabilité de devenir un état final.qcδ(q,c)

Est-ce une bonne méthode pour générer des DFA non biaisés? En outre, cet algorithme ne génère pas de DFA de découpage (un DFA sans états obsolètes), donc je me demande s'il existe un meilleur moyen de générer des DFA aléatoires qui peuvent en quelque sorte garantir qu'il est découpé?


2
Il n'y a pas de distribution naturelle des DFA aléatoires, c'est donc à vous de décider. Que veux tu accomplir?
Yuval Filmus

Je génère des DFA aléatoires pour tester un algorithme de réduction DFA sur eux.
Duncan

Vous souhaitez peut-être partir d'un petit ensemble de DFA minimaux et les faire exploser? De cette façon, vous savez que la minimisation arrive réellement au bon résultat.
adrianN

vous vous demandez, testez-vous un algorithme de réduction non optimal ou trouve-t-il le DFA optimal minimal unique?
vzn

2
Si vous générez des structures de données pour les tests, l'impartialité n'est pas importante. Ce qui est important, c'est d'avoir de bonnes chances de déclencher des comportements intéressants. Pour faire une analogie, lorsque vous testez un algorithme géométrique, vous devez vous assurer que certains de vos tests auront trois points alignés et d'autres choses qui ne se produiraient jamais dans une distribution aléatoire.
Gilles 'SO- arrête d'être méchant'

Réponses:


6

Consultez [1] et la discussion de la section 4, Génération aléatoire d'automates. Le document compare différents algorithmes de minimisation DFA. Un générateur aléatoire uniforme est utilisé qui produit des représentations de chaînes canoniques de DFA complets avec états et k symboles. Ils discutent également d'autres méthodes.nk


[1] Almeida, M., Moreira, N. et Reis, R. (2007). Sur les performances des algorithmes de minimisation des automates. Logique et théorie des algorithmes, 3.


Que signifie «représentations de chaînes canoniques»?
Duncan

Σ

4

Vous devriez regarder la page d'accueil de Cyril Nicaud . En particulier, les références suivantes sont pertinentes pour votre question:

F. Bassino, J. David et C. Nicaud, Énumération et génération aléatoire d'automates déterministes éventuellement incomplets, Mathématiques pures et applications 19 (2-3) (2009) 1-16.

F. Bassino et C. Nicaud. Dénombrement et génération aléatoire d'automates accessibles. Théor. Comp. Caroline du Sud. . 381 (2007) 86-104.


3

Il existe des algorithmes pour générer aléatoirement des DFA jusqu'à une permutation http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz .

Mais, il est également mentionné dans le document ci-dessus que presque tous les DFA sont déjà minimes. Les DFA non minimaux sont comme des nombres premiers ... ils sont peu nombreux. Et si vous utilisez cet algorithme pour tester l'algorithme de minimisation, ce sera comme si vous testiez un algorithme sur un nombre premier avec un simple générateur de nombres aléatoires. Afin d'avoir plus de DFA non minimaux, vous pouvez modifier l'algorithme en ajoutant un état récepteur et rediriger un pourcentage important des transitions vers cet état récepteur.

Mais de mon point de vue, si vous voulez tester la rapidité de votre implémentation, vérifiez-la par rapport à ce que vous voulez l'utiliser: avec des ensembles de mots aléatoires ou REGEX aléatoire, créez un NFA ou un DFA, puis minimisez le DFA résultant .


2

p=1/nnest le nombre de nœuds dans le graphique. cependant, votre stratégie, pas plus qu'Erdos-Renyi, ne garantit que tous les États du DFA sont connectés [une contrainte naturelle à ajouter].



(v1,b,v2)v1v2b
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.