Autómata finito no determinista

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
NFA for (0 sometida1)* 1 (0 sometida1)3.
Un DFA para ese idioma tiene al menos 16 estados.

En la teoría de los autómatas, una máquina de estados finitos se llama autómata finito determinista (DFA), si

  • cada una de sus transiciones es única determinado por su estado fuente y símbolo de entrada, y
  • leer un símbolo de entrada es necesario para cada transición estatal.

Un autómata finito no determinista (NFA), o una máquina de estados finitos no determinista, no necesita obedecer estas restricciones. En particular, cada AFD es también un AFN. A veces, el término NFA se utiliza en un sentido más estricto, refiriéndose a una NFA que no es un DFA, pero no en este artículo.

Utilizando el algoritmo de construcción de subconjuntos, cada NFA se puede traducir a un DFA equivalente; es decir, un DFA que reconoce el mismo lenguaje formal. Al igual que los DFA, los NFA solo reconocen lenguajes regulares.

Las NFA fueron introducidas en 1959 por Michael O. Rabin y Dana Scott, quienes también demostraron su equivalencia con las DFA. Los NFA se utilizan en la implementación de expresiones regulares: la construcción de Thompson es un algoritmo para compilar una expresión regular en un NFA que puede realizar de manera eficiente la coincidencia de patrones en cadenas. Por el contrario, el algoritmo de Kleene se puede utilizar para convertir un NFA en una expresión regular (cuyo tamaño es generalmente exponencial en el autómata de entrada).

Los NFA se han generalizado de múltiples maneras, por ejemplo, autómatas finitos no deterministas con movimientos ε, transductores de estado finito, autómatas pushdown, autómatas alternos, autómatas ω y autómatas probabilísticos. Además de los DFA, otros casos especiales conocidos de NFA son autómatas finitos inequívocos (UFA) y autómatas finitos de autoverificación (SVFA).

Introducción informal

Hay dos formas de describir el comportamiento de una NFA y ambas son equivalentes. La primera forma hace uso del no determinismo en nombre de una NFA. Para cada símbolo de entrada, la NFA pasa a un nuevo estado hasta que se hayan consumido todos los símbolos de entrada. En cada paso, el autómata “elige” de manera no determinista; una de las transiciones aplicables. Si existe al menos una "carrera de la suerte", es decir, alguna secuencia de elecciones que conducen a un estado de aceptación después de consumir completamente la entrada, se acepta. De lo contrario, es decir, si ninguna secuencia de elección puede consumir toda la entrada y conducir a un estado de aceptación, la entrada se rechaza.

En la segunda forma, la NFA consume una cadena de símbolos de entrada, uno por uno. En cada paso, siempre que sean aplicables dos o más transiciones, "clona" en muchas copias apropiadas, cada una siguiendo una transición diferente. Si no se aplica ninguna transición, la copia actual se encuentra en un callejón sin salida y "muere". Si, después de consumir la entrada completa, alguna de las copias está en estado de aceptación, la entrada se acepta; de lo contrario, se rechaza.

Definición formal

Para una introducción más elemental de la definición formal, consulte la teoría de los autómatas.

Autómata

An NFA está representado formalmente por un 5-tuple, , que consiste en

  • un conjunto finito de estados .
  • un conjunto finito de símbolos de entrada .
  • a) Función de transición : .
  • an inicial (o Empieza) estado .
  • un conjunto de estados distinguido aceptar (o final) estados .

Aquí, denota el conjunto de poder .

Idioma reconocido

Given an NFA , su idioma reconocido es denotado por , y se define como el conjunto de todas las cuerdas sobre el alfabeto que son aceptados .

Loosely correspondiente a las explicaciones informales anteriores, hay varias definiciones formales equivalentes de una cadena aceptada :

  • es aceptado si una secuencia de estados, , existe en tal que:
    1. Para
    2. .
En palabras, la primera condición dice que la máquina comienza en el estado inicial . La segunda condición dice que dado cada carácter de cuerda , la máquina pasará de estado a estado según la función de transición . La última condición dice que la máquina acepta si la última entrada de hace que la máquina se detenga en uno de los estados aceptados. Para para ser aceptado por , no es necesario que cada secuencia estatal termine en un estado de aceptación, es suficiente si uno lo hace. De lo contrario, i.e. si es imposible para nada obtener de a un estado desde by following , se dice que el autómata rechazos la cuerda. El conjunto de cuerdas acepta es el idioma reconocida por y este lenguaje es denotado .
  • Alternativamente, es aceptado si , donde se define recursivamente por:
    1. Donde es la cuerda vacía, y
    2. para todos .
En palabras, es el conjunto de todos los estados accesibles desde el estado consumiendo la cuerda . La cuerda es aceptado si algún estado aceptado en puede ser alcanzado desde el estado inicial por consumir .

Estado inicial

La definición de autómata anterior utiliza un estado inicial único, que no es necesario. A veces, los NFA se definen con un conjunto de estados iniciales. Existe una construcción sencilla que traduce un NFA con múltiples estados iniciales a un NFA con un único estado inicial, lo que proporciona una notación conveniente.

Ejemplo

El diagrama de estado para M. No es determinista ya que en estado p leer un 1 puede llevar a p o a q.
Todas las posibles carreras M en la cadena de entrada "10".
Todas las posibles carreras M en la cadena de entrada "1011".
Etiquetas: símbolo de entrada, node label: estado, verde: Empieza el estado, rojo: aceptar estado(s).

El siguiente autómata , con un alfabeto binario, determina si la entrada termina con un 1. Vamos. Donde la función de transición puede definirse por esta tabla de transición estatal (cf. imagen superior izquierda):

Input
Estado
0 1

Desde el set contiene más de un estado, no es determinista. El idioma de puede ser descrito por el lenguaje regular dado por la expresión regular (0|1)*1.

Todas las secuencias de estado posibles para la cadena de entrada "1011" se muestran en la imagen inferior. La cuerda es aceptada por ya que una secuencia de estado satisface la definición anterior; no importa que otras secuencias no lo hagan. La imagen puede ser interpretada en un par de formas:

  • En términos de la explicación anterior "de mala suerte", cada camino en la imagen denota una secuencia de opciones de .
  • En términos de la explicación "cerrar", cada columna vertical muestra todos los clones de en un momento dado en el tiempo, múltiples flechas que emanan de un nodo indican la clonación, un nodo sin flechas emanantes indicando la "muerte" de un clon.

La viabilidad de leer la misma imagen de dos maneras también indica la equivalencia de ambas explicaciones anteriores.

  • Considerando la primera de las definiciones formales anteriores, "1011" es aceptada ya que al leerlo puede atravesar la secuencia del estado , que satisface las condiciones 1 a 3.
  • En cuanto a la segunda definición formal, el cálculo inferior muestra que , por consiguiente , por consiguiente , por consiguiente , y por lo tanto ; ya que ese conjunto no se descompone , se acepta la cuerda "1011".

En contraste, la cadena "10" es rechazada por (todas las posibles secuencias de estado para esa entrada se muestran en la imagen superior derecha), ya que no hay manera de llegar al único estado de aceptación, , leyendo el símbolo final 0. Mientras tanto se puede alcanzar después de consumir la inicial "1", esto no significa que la entrada "10" sea aceptada, sino que significa que se aceptaría una cadena de entrada "1".

Equivalencia con DFA

Un autómata finito determinista (DFA) puede verse como un tipo especial de NFA, en el que para cada estado y símbolo, la función de transición tiene exactamente un estado. Por tanto, está claro que todo lenguaje formal que pueda ser reconocido por una DFA puede ser reconocido por una NFA.

Por el contrario, para cada NFA, existe un DFA que reconoce el mismo lenguaje formal. El DFA se puede construir utilizando la construcción powerset.

Este resultado muestra que las NFA, a pesar de su flexibilidad adicional, no pueden reconocer idiomas que no pueden ser reconocidos por algunas DFA. También es importante en la práctica para convertir NFA más fáciles de construir en DFA ejecutables de manera más eficiente. Sin embargo, si la NFA tiene n estados, la DFA resultante puede tener hasta 2n estados, lo que a veces hace que la construcción no sea práctica para NFA grandes..

NFA con movimientos ε

El autómata finito no determinista con ε-movimientos (NFA-ε) es una generalización adicional de NFA. En este tipo de autómata, la función de transición se define adicionalmente en la cadena vacía ε. Una transición sin consumir un símbolo de entrada se denomina transición ε y se representa en los diagramas de estado mediante una flecha denominada "ε". Las transiciones ε proporcionan una manera conveniente de modelar sistemas cuyos estados actuales no se conocen con precisión: es decir, si estamos modelando un sistema y no está claro si el estado actual (después de procesar alguna cadena de entrada) debe ser q o q', entonces podemos agregar una transición ε entre estos dos estados, poniendo así el autómata en ambos estados simultáneamente.

Definición formal

An NFA-ε está representado formalmente por un 5-tuple, , que consiste en

  • un conjunto finito de estados
  • un conjunto finito de símbolos de entrada llamado el alfabeto
  • a) Función de transición
  • an inicial (o comienzo) estado
  • un conjunto de estados distinguido como estados aceptados (o finales) .

Aquí, denota el conjunto de poder y denota cuerda vacía.

Ε-cierre de un estado o conjunto de estados

Para un estado , vamos denota el conjunto de estados que son accesibles por las siguientes transiciones ε en la función de transición , es decir, si hay una secuencia de estados tales que

  • ,
  • para cada uno , y
  • .

es conocido como cierre de epsilon(también ε-closure) de .

The ε-closure of a set de estados de un NFA se define como el conjunto de estados alcanzables de cualquier estado en ε-transitions. Formalmente, para , definir .

Función de transición extendida

Similar al NFA sin movimientos ε, la función de transición of an NFA-ε can be extended to strings. Informalmente, denota el conjunto de todos los estados que el autómata pudo haber alcanzado al comenzar en estado y leer la cuerda La función puede definirse recursivamente como sigue.

  • , por cada estado y dónde denota el cierre de la epsilon;
Informalmente: Leer la cuerda vacía puede conducir el autómata del estado a cualquier estado del cierre de epsilon
  • para cada estado cada cadena y cada símbolo
Informalmente: Leyendo la cuerda puede conducir el autómata del estado a cualquier estado en el conjunto recurrentemente computado ; después de eso, leer el símbolo puede conducir desde a cualquier estado en el cierre de epsilon

Se dice que el autómata acepta una cadena si

es decir, si la lectura puede conducir el autómata desde su estado de inicio a algunos estados aceptados en

Ejemplo

El diagrama de estado para M

Vamos. ser un NFA-ε, con un alfabeto binario, que determina si la entrada contiene un número uniforme de 0s o un número uniforme de 1s. Tenga en cuenta que 0 ocurrencias es incluso un número de ocurrencias también.

En notación formal, sea

Input
Estado
0 1 ε
S0{} {} {}S1, S3}
S1{}S2} {}S1} {}
S2{}S1} {}S2} {}
S3{}S3} {}S4} {}
S4{}S4} {}S3} {}

puede considerarse como la unión de dos DFA: uno con estados y el otro con estados . El idioma de puede ser descrito por el lenguaje regular dado por esta expresión regular . Definimos usando ε-moves pero se puede definir sin utilizar ε-moves.

Equivalencia con NFA

Para mostrar que NFA-ε es equivalente a NFA, primero tenga en cuenta que NFA es un caso especial de NFA-ε, por lo que queda por mostrar que para cada NFA-ε existe un NFA equivalente.

Dado un NFA con movimientos de epsilón definir un NFA Donde

y

para cada estado y cada símbolo utilizando la función de transición ampliada definido anteriormente.

Uno tiene que distinguir las funciones de transición y viz. y y sus extensiones a cadenas, y respectivamente. Por construcción, no tiene ε-transitions.

Uno puede probar que para cada cadena , por inducción sobre la longitud

Basado en esto, se puede demostrar que si, y sólo si, para cada cadena

  • Si esto se deriva de la definición
  • De lo contrario, déjalo con y
Desde y tenemos
todavía tenemos que mostrar el ""Dirección.
  • Si contiene un estado en entonces contiene el mismo estado, que se encuentra en .
  • Si contiene y entonces también contiene un estado en viz.
  • Si contiene y entonces el estado en debe estar en

Dado que NFA es equivalente a DFA, NFA-ε también es equivalente a DFA.

Propiedades de cierre

NFA compuesta aceptando la unión de los idiomas de algunos NFA dados N()s) y N()t). Para una cadena de entrada w en el sindicato de idiomas, el autómata compuesto sigue una transición ε de q al estado de inicio (círculo de color izquierdo) de un subautomatono apropiado N()s) o N()t) - que, siguiendo w, puede llegar a un estado aceptado (círculo de color derecho); desde allí, estado f puede ser alcanzado por otro ε-transition. Debido a las transiciones ε, el NFA compuesto es correctamente no determinista, incluso si ambos N()s) y N()t) eran DFA; viceversa, la construcción de un DFA para el lenguaje sindical (incluso dos DFA) es mucho más complicada.

El conjunto de idiomas reconocidos por las NFA se cierra mediante las siguientes operaciones. Estas operaciones de cierre se utilizan en el algoritmo de construcción de Thompson, que construye un NFA a partir de cualquier expresión regular. También se pueden utilizar para demostrar que las NFA reconocen exactamente los idiomas habituales.

  • Unión (cf. cuadro); es decir, si el idioma L1 es aceptado por algunos NFA A1 y L2 por algunos A2, entonces un NFA Au se puede construir que acepte el idioma L1L2.
  • Intersección; similarmente, de A1 y A2 NFA Ai puede ser construido que acepta L1L2.
  • Concatenación
  • Negation; similarly, from A1 NFA An puede ser construido que acepta la*L1.
  • Cierre de Kleene

Dado que los NFA son equivalentes a autómatas finitos no deterministas con ε-movimientos (NFA-ε), los cierres anteriores se prueban utilizando las propiedades de cierre de NFA-ε.

Propiedades

La máquina arranca en el estado inicial especificado y lee una cadena de símbolos de su alfabeto. El autómata utiliza la función de transición de estado Δ para determinar el siguiente estado utilizando el estado actual y el símbolo recién leído o la cadena vacía. Sin embargo, "el siguiente estado de una NFA depende no sólo del evento de entrada actual, sino también de un número arbitrario de eventos de entrada posteriores". Hasta que ocurran estos eventos posteriores, no es posible determinar en qué estado se encuentra la máquina". Si, cuando el autómata ha terminado de leer, está en estado de aceptación, se dice que la NFA acepta la cadena; en caso contrario, se dice que rechaza la cadena.

El conjunto de todas las cadenas aceptadas por una NFA es el idioma que acepta la NFA. Este idioma es un idioma regular.

Para cada NFA se puede encontrar un autómata finito determinista (DFA) que acepta el mismo lenguaje. Por lo tanto, es posible convertir una NFA existente en una DFA con el fin de implementar una máquina (quizás) más simple. Esto se puede realizar utilizando la construcción del conjunto de potencias, lo que puede conducir a un aumento exponencial en el número de estados necesarios. Para obtener una prueba formal de la construcción de Powerset, consulte el artículo sobre construcción de Powerset.

Implementación

Hay muchas maneras de implementar una NFA:

  • Convertirse en el equivalente DFA. En algunos casos esto puede causar soplo exponencial en el número de estados.
  • Mantenga una estructura de datos fija de todos los estados en los que el NFA podría estar actualmente. En cuanto al consumo de un símbolo de entrada, une los resultados de la función de transición aplicada a todos los estados actuales para obtener el conjunto de los próximos estados; si se permiten movimientos ε, incluya todos los estados alcanzables por tal movimiento (closure ε). Cada paso requiere al máximo s2 computaciones, donde s es el número de estados del NFA. En el consumo del último símbolo de entrada, si uno de los estados actuales es un estado final, la máquina acepta la cadena. Una cuerda de longitud n puede ser procesado en el tiempo O(ns2), y espacio O()s).
  • Cree múltiples copias. Para cada uno n la NFA crea hasta n−1 copias de la máquina. Cada uno entrará en un estado separado. Si, al consumir el último símbolo de entrada, al menos una copia del NFA está en el estado de aceptación, el NFA aceptará. (Esto también requiere almacenamiento lineal con respecto al número de estados del NFA, ya que puede haber una máquina para cada estado del NFA).
  • Explicitamente propagar fichas a través de la estructura de transición de la NFA y coincidir cuando una señal llega al estado final. Esto a veces es útil cuando el NFA debe codificar un contexto adicional sobre los acontecimientos que desencadenaron la transición. (Para una implementación que utiliza esta técnica para hacer un seguimiento de referencias de objetos tienen un vistazo a Tracematches.)
  • Es PSPACE-completo probar, dado un NFA, si es universalSi hay una cuerda que no acepta. Lo mismo es cierto problema de inclusión, es decir, dadas dos NFAs, es el idioma de uno un subconjunto del idioma del otro.

Aplicación de NFA

Las NFA y las DFA son equivalentes en el sentido de que si un idioma es reconocido por una NFA, también lo será por una DFA y viceversa. El establecimiento de dicha equivalencia es importante y útil. Es útil porque construir un NFA para reconocer un idioma determinado es a veces mucho más fácil que construir un DFA para ese idioma. Es importante porque los NFA se pueden utilizar para reducir la complejidad del trabajo matemático necesario para establecer muchas propiedades importantes en la teoría de la computación. Por ejemplo, es mucho más fácil probar las propiedades de cierre de lenguajes regulares utilizando NFA que DFA.

Contenido relacionado

Tarjeta perforada

Una tarjeta perforada es un trozo de papel rígido que contiene datos digitales representados por la presencia o ausencia de agujeros en posiciones...

CPython

CPython es la implementación de referencia del lenguaje de programación Python. Escrito en C y Python, CPython es la implementación predeterminada y más...

Arquitectura Harvard

La Arquitectura Harvard es un modelo de arquitectura informática que separa físicamente la memoria de código de programa de la memoria de almacenamiento de...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save