Estados inaccesibles
Un autómata finito puede tener estados a los que no es posible llegar. A estos estados los llamamos estados inaccesibles. Normalmente queremos eliminarlos, porque solo complican innecesariamente todo el autómata.
Ejemplo de estados inaccesibles
Tomemos este autómata:
Vemos que, hagamos lo que hagamos, nunca llegaremos al estado q3, porque no entra en él ninguna transición. Del estado q3 decimos, por tanto, que es inaccesible. Una pregunta: ¿sería accesible el estado q3 si entrara en él alguna transición desde otro estado? Si trazáramos una arista desde uno de los estados q0, q1, q2, q5, sería accesible. Si añadiéramos otro nodo y trazáramos una transición desde él…
…entonces, naturalmente, los dos estados q3 y q4 serían inaccesibles.
Definición de estado inaccesible
Primero definimos el estado accesible. Tomemos un autómata finito A = ⟨Q, Σ, δ, q0, F⟩. Decimos que un estado q ∈ Q es accesible si existe una palabra w ∈ Σ∗ tal que
Un estado q ∈ Q es inaccesible si no es accesible.
Cómo eliminar los estados inaccesibles
Si un autómata ya tiene algunos estados inaccesibles, conviene eliminarlos. Construimos así un autómata equivalente A′ = ⟨Q′, Σ, δ′, q0, F′⟩ que no tendrá estados inaccesibles.
Construiremos de forma iterativa el conjunto de estados accesibles. Empezamos con el conjunto S0 = {q0}, porque el estado inicial es sin duda accesible. El conjunto siguiente lo construimos así:
Dicho en lenguaje llano, el conjunto S0 está dado siempre; el conjunto S1 lo construimos tomando todos los estados del conjunto S0 y averiguando adónde llevan las transiciones para todos los símbolos de Σ. Unimos estos estados con el conjunto original de estados S0. Con el mismo procedimiento obtenemos el conjunto S2 y los siguientes. Es evidente que se cumplirá Si − 1 ⊆ Si.
El conjunto de estados accesibles se puede obtener entonces así:
Puede parecer extraño que intentemos unir infinitos conjuntos Si, pero el autómata contiene solo un número finito de estados. Eso significa que en algún momento los conjuntos Sj y Sj + 1 y todos los siguientes serán iguales, de modo que incluso después de unir infinitos conjuntos podemos obtener un conjunto finito de estados.
Volvamos al autómata
e intentemos hallar el conjunto de estados accesibles. Empezamos planteando la igualdad básica
Ahora calculamos el conjunto S1. Debemos hallar todas las transiciones desde el estado q0 y añadir sus estados de destino al conjunto S0. Como se cumple q0 → a q1 y q0 → bq2, el conjunto S1 contendrá además los estados q1 y q2:
A continuación construimos el conjunto S2. Miramos adónde podemos llegar desde los estados q0, q1, q2. El único estado nuevo es q5, al que podemos llegar desde el estado q1:
Después construimos el conjunto S3. ¿Podemos llegar desde los estados q0, q1, q2, q5 a algún estado nuevo? No, así que el conjunto S3 contendrá los mismos elementos que S2:
Como S2 = S3, también S3 = S4 = S5 = … Si unimos todos los Si, obtenemos el conjunto S2, porque ningún otro elemento se añadirá ya en ningún otro conjunto.
El conjunto de estados accesibles del autómata es, por tanto, igual a {q0, q1, q2, q5}. Los estados inaccesibles los obtenemos mediante la simple diferencia de conjuntos:
El conjunto de estados inaccesibles de nuestro autómata es {q3, q4}. Eliminamos del autómata A todos los estados inaccesibles y todas las transiciones que contenían algún estado inaccesible. Es decir, el autómata equivalente sin estados inaccesibles A′ = ⟨Q′, Σ, δ′, q0, F′⟩ al autómata A = ⟨Q, Σ, δ, q0, F⟩ lo definimos como:
- ∀q ∈ Q′, a ∈ Σ: δ′(q, a) = δ(q, a)
Fuentes
Capítulos: Estados inaccesibles, Estados superfluos, Minimización de autómatas