Tecnología

Inicio

¿Cómo diferenciar entre DFA y NDFA

¿Cómo diferenciar entre DFA y NDFA


Deterministas y no deterministas autómatas finitos son dos tipos de "máquinas" conceptuales diseñados para comprobar si una determinada cadena de símbolos obedece a ciertas reglas - si es aceptable como un mensaje en un lenguaje o código. El autómatas lee un solo símbolo a la vez, y existe siempre en un determinado "estado". Cada estado de un autómata puede estar en cuenta un conjunto de reglas para reaccionar a la siguiente símbolo para ser leído - que puede cambiar a otro estado particular, o seguir siendo el mismo. Si, después de una cadena completa ha sido leído, el autómata ha entrado en uno de un conjunto de estados finales aceptables "," la cadena es gramaticalmente aceptables dentro del lenguaje de los autómatas va a evaluar.

Instrucciones

1 Examinar las normas de los autómatas. Estos incluyen: todos los estados posibles de los autómatas, su conjunto de estados finales y los efectos de cada símbolo posible en cada estado.

2 Comprobar para ver si alguno de los estados de los autómatas tienen múltiples reacciones posibles a un símbolo particular. Si alguno lo hacen, los autómatas no es determinista - un NDFA. Por ejemplo, si el estado inicial de un autómata puede reaccionar con el símbolo "A", ya sea desplazando a un segundo estado o por el resto de la misma, es un NDFA. Un NDFA devuelve un resultado positivo si hay alguna manera de alcanzar un estado final utilizando una cadena dada.

3 Tenga en cuenta que existe un AFD para cada NDFA. Debido a que un NDFA devolver un resultado positivo para una cadena específica deben tener al menos un camino de éxito a través de él de esa cuerda, debe por necesidad ser un DFA correspondiente que aceptará esa cadena, que contiene sólo las reglas para el camino único que se utilizó. Aquí hay un ejemplo muy sencillo: Supongamos que tiene una NDFA con un estado final llamada S1, cuyo estado inicial S0 responde al símbolo "A" ya sea cambiando a S1 o al permanecer en S0. Esta máquina aceptaría una cadena que consiste simplemente en "A", porque no hay un camino posible a S1; y hay un DFA correspondiente en el que "A" siempre cambia S1 a S0, prescindiendo de la ruta no utilizado.