✖

États inutiles

Un automate fini peut avoir des états depuis lesquels il est impossible d’atteindre un état final, et qui sont donc inutiles. On les appelle des états inutiles. En général, on veut les supprimer, car ils compliquent l’automate pour rien.

Exemple d’états inutiles

Considérons cet automate fini :

On voit qu’une fois arrivé dans l’état q4 ou q5, on ne peut plus jamais atteindre l’un des états finals q1 ou q2. Ces états sont donc inutiles et on peut simplement les supprimer, ce qui donne un nouvel automate, équivalent au premier : il accepte le même langage. Après suppression des états inutiles, l’automate ressemblerait à ceci :

Il accepterait le même langage. Il arrive cependant qu’il soit utile de garder certains états inutiles, par exemple quand on construit un automate complet.

Définition d’un état inutile

Soit un automate fini A = (Q ; Σ ; δ ; q0 ; F). On dit qu’un état q ∈ Q est inutile s’il n’existe aucun mot w ∈ Σ∗ ni aucun état qf ∈ F tels que

(q;w)↦∗(qf;ε).

Comment supprimer les états inutiles

On suppose que l’automate donné A = (Q ; Σ ; δ ; q0 ; F) n’a déjà plus d’états inaccessibles. On cherche pas à pas les états qui mènent à des états finals, puis les états qui mènent à des états qui mènent à des états finals, et ainsi de suite. On obtient ainsi l’ensemble de tous les états qui ne sont pas inutiles. Au départ, on pose S0 = F. On construit les ensembles suivants Si pour i ∈ ℕ* selon la règle :

Si={q∈Q|∃a∈Σ:δ(q,a)∈Si−1}∪Si−1

On peut exprimer l’ensemble de tous les états qui ne sont pas inutiles ainsi :

⋃i=1∞Si.

Et l’ensemble des états inutiles ainsi :

Q∖⋃i=1∞Si.

Autrement dit : si Si = Si + 1, alors l’ensemble Q ∖ Si contient les états inutiles. Illustrons la méthode sur cet automate :

On pose d’abord S0 = {q1 ; q2}. On construit ensuite l’ensemble S1 en ajoutant à S0 tous les états qui mènent à l’un des états de S0. On ajoute donc les états q0 et q3, car une transition mène de q0 à q1 et une autre de q3 à q2. On obtient S1 = {q0 ; q1 ; q2 ; q3}. Comme S0 ≠ S1, on continue.

On construit l’ensemble S2. On cherche donc tous les états depuis lesquels on peut atteindre S1 et qui ne sont pas encore dans S1. Il n’y en a qu’un, q6, depuis lequel on peut atteindre l’état q3. On obtient S2 = {q0 ; q1 ; q2 ; q3 ; q6}. Comme S1 ≠ S2, on continue.

On construit l’ensemble S3. Existe-t-il un nouvel état depuis lequel on peut atteindre l’un des états de S2 ? Non : depuis q4 et q5, on ne peut atteindre aucun des états de S2, et les autres états sont déjà dans S2. On a donc S3 = {q0 ; q1 ; q2 ; q3 ; q6}. Comme S2 = S3, l’algorithme s’arrête et l’ensemble S2 est l’ensemble des états qui ne sont pas inutiles. L’ensemble {q4 ; q5} est l’ensemble des états inutiles.

Formellement, on construit le nouvel automate équivalent sans états inutiles ainsi. Soit l’automate A = (Q ; Σ ; δ ; q0 ; F) ; on construit un automate équivalent A′ = (Q′ ; Σ ; δ′ ; q0 ; F) sans états inutiles.

  • Q′=⋃i=1∞Si
  • ∀q ∈ Q′, a ∈ Σ:  δ′(q, a) = δ(q, a) si δ(q, a) ∈ Q′, sinon δ′(q, a) n’est pas définie

Sources

Chapitres: États inaccessibles, États inutiles, Minimisation d’un automate