Autómata finito no determinista
En NDFA, para un símbolo de entrada particular, la máquina puede moverse a cualquier combinación de estados en la máquina. En otras palabras, no se puede determinar el estado exacto al que se mueve la máquina. Por lo tanto, se llamaNon-deterministic Automaton. Como tiene un número finito de estados, la máquina se llamaNon-deterministic Finite Machine o Non-deterministic Finite Automaton.
Definición formal de un NDFA
Un NDFA se puede representar por una tupla de 5 (Q, ∑, δ, q 0 , F) donde -
Q es un conjunto finito de estados.
∑ es un conjunto finito de símbolos llamados alfabetos.
δes la función de transición donde δ: Q × ∑ → 2 Q
(Aquí se ha tomado el conjunto de potencias de Q (2 Q ) porque en el caso de NDFA, de un estado, puede ocurrir una transición a cualquier combinación de estados Q)
q0es el estado inicial desde donde se procesa cualquier entrada (q 0 ∈ Q).
F es un conjunto de estados finales de Q (F ⊆ Q).
Representación gráfica de un NDFA: (igual que DFA)
Un NDFA está representado por dígrafos llamados diagrama de estado.
- Los vértices representan los estados.
- Los arcos etiquetados con un alfabeto de entrada muestran las transiciones.
- El estado inicial se denota por un solo arco entrante vacío.
- El estado final está indicado por círculos dobles.
Example
Sea un autómata finito no determinista →
- Q = {a, b, c}
- ∑ = {0, 1}
- q 0 = {a}
- F = {c}
La función de transición δ como se muestra a continuación:
Estado actual | Siguiente estado para la entrada 0 | Siguiente estado para la entrada 1 |
---|---|---|
un | a, b | segundo |
segundo | C | a, c |
C | antes de Cristo | C |
Su representación gráfica sería la siguiente:
DFA frente a NDFA
La siguiente tabla enumera las diferencias entre DFA y NDFA.
DFA | NDFA |
---|---|
La transición de un estado es a un único estado siguiente en particular para cada símbolo de entrada. Por eso se llama determinista . | La transición de un estado puede ser a varios estados siguientes para cada símbolo de entrada. Por eso se llama no determinista . |
Las transiciones de cadenas vacías no se ven en DFA. | NDFA permite transiciones de cadenas vacías. |
El retroceso está permitido en DFA | En NDFA, el retroceso no siempre es posible. |
Requiere más espacio. | Requiere menos espacio. |
Un DFA acepta una cadena si pasa a un estado final. | Una cadena es aceptada por un NDFA, si al menos una de todas las posibles transiciones termina en un estado final. |
Aceptadores, clasificadores y transductores
Aceptador (reconocedor)
Un autómata que calcula una función booleana se llama acceptor. Todos los estados de un aceptador son aceptar o rechazar las entradas que se le dan.
Clasificador
UN classifier tiene más de dos estados finales y da una única salida cuando termina.
Transductor
Un autómata que produce salidas basadas en la entrada actual y / o el estado anterior se llama transducer. Los transductores pueden ser de dos tipos:
Mealy Machine - La salida depende tanto del estado actual como de la entrada actual.
Moore Machine - La salida depende solo del estado actual.
Aceptabilidad por DFA y NDFA
Una cadena es aceptada por un DFA / NDFA si el DFA / NDFA que comienza en el estado inicial termina en un estado de aceptación (cualquiera de los estados finales) después de leer la cadena por completo.
Una cadena S es aceptada por un DFA / NDFA (Q, ∑, δ, q 0 , F), si
δ*(q0, S) ∈ F
El idioma L aceptado por DFA / NDFA es
{S | S ∈ ∑* and δ*(q0, S) ∈ F}
Una cadena S ′ no es aceptada por un DFA / NDFA (Q, ∑, δ, q 0 , F), iff
δ*(q0, S′) ∉ F
El idioma L ′ no aceptado por DFA / NDFA (Complemento del idioma aceptado L) es
{S | S ∈ ∑* and δ*(q0, S) ∉ F}
Example
Consideremos el DFA que se muestra en la Figura 1.3. Del DFA, se pueden derivar las cadenas aceptables.
Cadenas aceptadas por el DFA anterior: {0, 00, 11, 010, 101, ...........}
Cadenas no aceptadas por el DFA anterior: {1, 011, 111, ........}