✖

Minimización de autómatas

Por minimización de un autómata entendemos hallar un autómata equivalente que contenga el menor número posible de estados. Incluso un autómata que no contiene ningún estado superfluo puede simplificarse todavía más.

Ejemplo

Tomemos este autómata:

El autómata acepta únicamente las palabras 01 y 11. Es evidente que existe un autómata más sencillo, con tres estados, que acepta el mismo lenguaje. Los estados q1 y q2 pueden fusionarse en un nuevo estado {q1, q2}; las transiciones que llegaban a q1 o a q2 llegarán al nuevo estado, y lo mismo ocurre con las transiciones que salían de q1 y de q2. Obtenemos este autómata:

Este autómata acepta, evidentemente, el mismo lenguaje que el anterior y, además, tiene menos estados.

Equivalencia de estados

Tomemos un autómata A = ⟨Q, Σ, δ, q0, F⟩. Definimos el lenguaje del estado q ∈ Q, que denotamos L(q), como

L(q)=L(⟨Q,Σ,δ,q,F⟩)

Es decir, cambiamos el estado inicial del autómata A de q0 a q y calculamos el lenguaje que acepta ese autómata. Dicho de otro modo, en el lenguaje L(q) están todas las palabras w tales que, en el autómata A, desde el estado q llegamos con la palabra w a un estado final del autómata. Si volvemos al autómata anterior, se cumple L(q1) = {1}.

Decimos que dos estados distintos q1 y q2 son equivalentes si se cumple

L(q1)=L(q2)

¿Qué significa esto? Si los estados q1, q2 son equivalentes, al convertirlos en estados iniciales del autómata generarán el mismo lenguaje. Dicho de otro modo: si el autómata llega a las configuraciones ⟨q1, w⟩ y ⟨q2, w⟩, en ambos casos debe aceptar o en ambos casos rechazar.

Si volvemos al autómata anterior, los estados q1 y q2 son equivalentes, porque si estamos en el estado q1, solo podemos aceptar la palabra de entrada si la parte aún no leída de la palabra es igual a 1. Lo mismo ocurre si estamos en el estado q2.

Minimizar un autómata consiste, por tanto, en hallar los estados equivalentes y eliminarlos fusionándolos en un único estado nuevo, igual que hicimos en el ejemplo anterior.

Cómo hallar los estados equivalentes

¿Qué estados no serán equivalentes con toda seguridad? Un estado final y uno no final no pueden ser equivalentes, porque el lenguaje del estado final es distinto del lenguaje del estado no final: el estado final acepta con seguridad la palabra ε y el no final no. Mostraremos el procedimiento directamente con un ejemplo. Tomemos este autómata:

Empezamos creando dos conjuntos de estados:

S1=F={q3,q6},S2=Q∖F={q0,q1,q2,q4,q5}.

Ahora creamos la tabla de transiciones y conservamos la información sobre los grupos S1 y S2:

grupoestado01S1q3q5q4q6——S2q0q1q2q1—q3q2—q3q4q6—q5q6—

Ahora modificamos la tabla: en lugar de escribir directamente a qué estados se va con cada símbolo, anotamos solo el grupo al que pasamos. Por ejemplo, desde el estado q3 con 0 llegamos al estado q5, que está en el grupo S2. En lugar de q5 escribimos, pues, en la tabla S2:

grupoestado01S1q3S2S2q6——S2q0S2S2q1—S1q2—S1q4S1—q5S1—

Ahora dividimos de nuevo ambos grupos. En los mismos grupos colocamos siempre los estados que pasan a los mismos grupos para todos los símbolos. Por ejemplo, los estados q3 y q6 no estarán en el mismo grupo, porque ni con 0 ni con 1 van al mismo grupo. En cambio, los estados q1 y q2 estarán en el mismo grupo, porque ninguno de los dos tiene transición para 0 y ambos van con 1 al grupo S1. Creamos así nuevos grupos:

grupoestado01q3S2S2q6——q0S2S2q1—S1q2—S1q4S1—q5S1—

En cada grupo tenemos las mismas transiciones. Nombramos los grupos recién creados y volvemos a averiguar a cuál de estos nuevos grupos se dirigen los estados:

grupoestado01S1q3S5S5S2q6——S3q0S4S4S4q1—S1q2—S1S5q4S2—q5S2—

En este momento realizamos otra división de los grupos. Pero vemos que ya no podemos dividir más; obtendríamos los mismos grupos, porque los estados q1 y q2 tienen las mismas transiciones respecto de los grupos, pero ya están en el mismo grupo y no hay ningún otro estado en el grupo S4. El algoritmo de búsqueda de estados equivalentes ha terminado. De cada grupo nos basta elegir un estado; los demás los borramos, y todas las transiciones que llevaban a los estados borrados llevarán al único estado que hemos elegido.

Podemos elegir, por ejemplo, que nuestro nuevo autómata tenga los estados q3, q6, q0, q1, q4 y eliminar los estados q2 y q5. Todas las transiciones que llevaban a q2 llevarán ahora a q1 y todas las que llevaban a q5 llevarán a q4:

Procedimiento de minimización de un autómata

  1. Eliminamos los estados inaccesibles,
  2. eliminamos los estados superfluos,
  3. eliminamos los estados equivalentes.

Fuentes

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