✖

Estados superfluos

Un autómata finito puede tener estados desde los que no es posible llegar a un estado final y que, por tanto, son inútiles. A estos estados los llamamos estados superfluos. Normalmente queremos eliminarlos, porque solo complican innecesariamente todo el autómata.

Ejemplo de estados superfluos

Tomemos este autómata finito:

Vemos que, en cuanto llegamos a los estados q4 o q5, ya nunca podremos llegar a uno de los estados finales q1 o q2. Estos estados son, por tanto, superfluos y podemos eliminarlos sin más; así obtendremos un autómata nuevo que será equivalente, es decir, aceptará el mismo lenguaje. Tras borrar los estados superfluos, el autómata quedaría así:

Aceptaría, pues, el mismo lenguaje. Sin embargo, hay ocasiones en que conviene tener algunos estados superfluos, por ejemplo cuando construimos un autómata completo.

Definición de estado superfluo

Tomemos un autómata finito A = ⟨Q, Σ, δ, q0, F⟩. Decimos que un estado q ∈ Q es superfluo si no existe ninguna palabra w ∈ Σ∗ ni ningún estado qf ∈ F tales que

⟨q,w⟩↦∗⟨qf,ε⟩.

Cómo eliminar los estados superfluos

Suponemos que en la entrada tenemos un autómata A = ⟨Q, Σ, δ, q0, F⟩ que ya no tiene estados inaccesibles. Iremos hallando los estados que llevan a estados finales, luego los estados que llevan a estados que llevan a estados finales, y así sucesivamente. De este modo obtenemos el conjunto de todos los estados que no son superfluos. Al principio tomamos S0 = F. Construiremos otros conjuntos Si para i ∈ ℕ según esta regla:

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

El conjunto resultante de todos los estados que no son superfluos podemos expresarlo así:

⋃i=1∞Si.

Y el conjunto de los estados superfluos, como

Q∖⋃i=1∞Si.

Dicho de otro modo: si se cumple Si = Si + 1, entonces el conjunto Q ∖ Si contiene los estados superfluos. Ilustraremos el procedimiento con este autómata:

Primero tomamos S0 = {q1, q2}. A continuación construimos el conjunto S1 añadiendo al conjunto S0 todos los estados que llevan a alguno de los estados de S0. Añadimos así los estados q0 y q3, porque de q0 sale una transición hacia q1 y de q3 sale una transición hacia q2. Obtenemos S1 = {q0, q1, q2, q3}. Como S0 ≠ S1, seguimos adelante.

Construimos el conjunto S2. Buscamos todos los estados desde los que se puede llegar a S1 y que todavía no están en S1. Es un único estado, q6, desde el que se puede llegar al estado q3. Obtenemos S2 = {q0, q1, q2, q3, q6}. Como S1 ≠ S2, seguimos adelante.

Construimos el conjunto S3. ¿Existe algún estado nuevo desde el que se pueda llegar a alguno de los estados de S2? No existe: desde los estados q4 y q5 no se puede llegar a ninguno de los estados de S2, y los demás estados ya están en S2. Se cumple, pues, que S3 = {q0, q1, q2, q3, q6}. Como S2 = S3, el algoritmo termina y el conjunto S2 es el conjunto de los estados que no son superfluos. El conjunto {q4, q5} es el conjunto de los estados que sí lo son.

Formalmente, el nuevo autómata equivalente sin estados superfluos se construye así. Tenemos el autómata A = ⟨Q, Σ, δ, q0, F⟩ y construimos un autómata equivalente A′ = ⟨Q′, Σ, δ′, q0, F⟩ sin estados superfluos.

  • Q′=⋃i=1∞Si
  • ∀q ∈ Q′, a ∈ Σ:  δ′(q, a) = δ(q, a) si δ(q, a) ∈ Q′; en caso contrario, δ′(q, a) no está definida

Fuentes

Capítulos: Estados inaccesibles, Estados superfluos, Minimización de autómatas