Algorithme de Brzozowski de minimisation d'un automate fini

De testwiki
Version datée du 5 octobre 2024 à 16:37 par imported>JeanCASPAR (correction lien)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Modèle:Article principal

En théorie des automates, et notamment des automates finis déterministes, lModèle:'algorithme de Brzozowski de minimisation d'un automate fini, publié par Janusz A. Brzozowski en 1963[1], est un algorithme de minimisation d'un automate fini fondé sur une double transposition et une double déterminisation.

L'algorithme est, avec l'algorithme de Moore et l'algorithme de Hopcroft, l'un des trois algorithmes principaux de minimisation d'un automate fini déterministe. Ce n'est pas le plus efficace, mais il est plus simple à expliquer. Il est remarquable que la minimisation se ramène ainsi à deux opérations conceptuellement très différentes : la transposition et la déterminisation.

Prérequis

Soit 𝒜=(Q,,I,T) un automate fini (déterministe ou non déterministe), où I et T sont les ensembles d'états respectivement initiaux et terminaux et où est l'ensemble des transitions, sur un alphabet fixé.

Automate transposé

L'automate transposé de 𝒜 , noté tr(𝒜), est l'automate obtenu en inversant le sens des transitions, et en échangeant les états initiaux avec les états terminaux. Formellement, c'est l'automate défini par

tr(𝒜)=(Q,R,T,I),

R={(p,a,q)(q,a,p)}.

Automate déterminisé

L'automate déterminisé de 𝒜, noté det(𝒜) [2], est l'automate déterministe, dont tous les états sont accessibles, équivalent à l'automate de départ 𝒜, obtenu par la procédure usuelle de construction par sous-ensembles.

Algorithme

L'algorithme de minimisation part d'un automate 𝒜 reconnaissant un langage L (déterministe ou non) et construit l'automate

𝒜(L)=det(tr(det(tr(𝒜)))).

L'automate 𝒜(L) est l'automate déterministe minimal reconnaissant L.

L'algorithme de minimisation d'un automate fini 𝒜 est donc en deux étapes :

  1. Calculer det(tr(𝒜)), en transposant l'automate puis en le déterminisant, par la procédure usuelle par exemple, qui ne conserve que les états accessibles ;
  2. Répéter l'opération 1 sur l'automate det(tr(𝒜)) obtenu.

La première étape se fait à partir d'un automate fini 𝒜 quelconque, déterministe ou non, la deuxième par contre prend en argument l'automate déterministe accessible complet det(tr(𝒜)).

Complexité

La complexité en temps et en place de l'algorithme est exponentielle dans le pire des cas en fonction de la taille de l'automate de départ, car l'automate intermédiaire 𝒜 peut être exponentiel. On pourrait penser que la complexité est doublement exponentielle puisqu'il y a deux déterminisations consécutives, mais ce n'est pas le cas : Le coût d’une déterminisation est en O(|𝒜|+|det(𝒜)|), l’automate intermédiaire tr(det(tr(A))) est de taille O(2n), l’automate final aussi, d’où une complexité totale en O(2n). Un exemple où la borne est atteinte est fourni par le langage Kn des mots de longueur au moins n sur un alphabet à deux lettres a et b, et dont la n-ième lettre est un a, en d'autres termes :

Kn={a,b}n1a{a,b}*.

Ce langage est reconnu par un automate à n+1 états plus un état puits, mais son transposé, une fois déterminisé, requiert 2n états[3].

Il a été observé[3] que l'algorithme semble donner des résultats meilleurs dans la pratique que l'on pourrait penser. Ceci pose la question de la complexité en moyenne de l’algorithme. Un article de De Felice et Nicaud[4]Modèle:,[5] apporte une réponse à cette question : l'algorithme de Brzozowski est génériquement super-polynomial. Ce terme technique signifie que la complexité en moyenne, et même que la complexité générique de l'algorithme est plus grande que tout polynôme. Le terme « complexité générique » signifie que l'on est autorisé à « ignorer », dans le calcul de la moyenne, un ensemble de cas particulièrement désavantageux, sous réserve que cet ensemble de cas soit de taille négligeable en un sens que l'on peut préciser.

Justification

L'énoncé précis qui justifie la construction est le suivant : Modèle:Théorème

La démonstration n’est pas très difficile : soit L le langage reconnu par l'automate déterministe complet 𝒜=(Q,q0,T) et soit tr(𝒜)=(Q,T,q0,) l'automate transposé reconnaissant M=L.

Pour prouver que 𝒜 est minimal, on montre que si u1M=v1M, alors Tu=Tv dans l'automate 𝒜. Ceci prouve que 𝒜 est isomorphe à l'automate minimal de M.

Soit p un état de Tu. Comme 𝒜 est accessible, il existe un mot w tel que pw=q0 dans tr(𝒜). On a donc uwM et aussi vwM. Comme 𝒜 est déterministe, p est l'unique état tel que pw=q0 dans tr(𝒜). Tout chemin de T vers q0 étiqueté par vw passe par l'état p, et donc pTv. Ceci montre que TuTv. L'inclusion dans l’autre sens se montre de la même façon.

Notes et références

Modèle:Références

Bibliographie


Modèle:Palette Modèle:Portail