Conversión de NDFA a DFA
Planteamiento del problema
Dejar X = (Qx, ∑, δx, q0, Fx)Ser un NDFA que acepte el lenguaje L (X). Tenemos que diseñar un DFA equivalenteY = (Qy, ∑, δy, q0, Fy) tal que L(Y) = L(X). El siguiente procedimiento convierte el NDFA en su DFA equivalente:
Algoritmo
Input - Un NDFA
Output - Un DFA equivalente
Step 1 - Crear tabla de estado a partir del NDFA dado.
Step 2 - Cree una tabla de estado en blanco bajo posibles alfabetos de entrada para el DFA equivalente.
Step 3 - Marque el estado de inicio del DFA con q0 (Igual que el NDFA).
Step 4- Descubra la combinación de estados {Q 0 , Q 1 , ..., Q n } para cada posible alfabeto de entrada.
Step 5 - Cada vez que generamos un nuevo estado DFA bajo las columnas del alfabeto de entrada, tenemos que aplicar el paso 4 nuevamente; de lo contrario, vaya al paso 6.
Step 6 - Los estados que contienen cualquiera de los estados finales del NDFA son los estados finales del DFA equivalente.
Ejemplo
Consideremos el NDFA que se muestra en la figura siguiente.
q | δ (q, 0) | δ (q, 1) |
---|---|---|
un | {a B C D e} | {Delaware} |
segundo | {C} | {mi} |
C | ∅ | {segundo} |
re | {mi} | ∅ |
mi | ∅ | ∅ |
Usando el algoritmo anterior, encontramos su DFA equivalente. La tabla de estado del DFA se muestra a continuación.
q | δ (q, 0) | δ (q, 1) |
---|---|---|
[un] | [a B C D e] | [Delaware] |
[a B C D e] | [a B C D e] | [b, d, e] |
[Delaware] | [mi] | ∅ |
[b, d, e] | [c, e] | [mi] |
[mi] | ∅ | ∅ |
[c, e] | ∅ | [segundo] |
[segundo] | [C] | [mi] |
[C] | ∅ | [segundo] |
El diagrama de estado del DFA es el siguiente: