¿Por qué deberíamos estudiar las tres formas de representación de autómatas finitos?


9

DFA, NFA y epsilon NFA los tres nos permiten representar un lenguaje regular particular. Con cualquiera de esas representaciones podemos llegar a la misma expresión regular, entonces ¿por qué necesitamos estudiar las tres formas de representación de autómatas finitos? Puede haber alguna explicación sobre lo que NFA puede hacer que DFA no puede hacer, es decir, NFA podría ayudarnos a diseñar incertidumbres. Por ejemplo, al diseñar un juego (ajedrez), tenemos muchas opciones para mover una pieza en particular desde una ubicación en particular que se puede representar fácilmente usando NFA. Pero, ¿de qué sirve epsilon NFA cuando se puede hacer lo mismo con NFA o DFA?


2
Hay más de tres. Estos son solo los que se encuentran típicamente en los libros de texto. Las transiciones de Epsilon son útiles para probar teoremas, pero no estoy seguro de haberlas visto usar en modelos por su propio bien.
wvxvw

3
@wvxvw, el algoritmo para traducir una expresión regular a un NFA usa las transiciones de una manera muy natural. No son "solo para pruebas", son bastante naturales en un entorno no determinista. ϵ
vonbrand

Respuestas:


13

Agregue gramáticas regulares para un cuarto. Hay otros...

ϵ

Las expresiones regulares (y también las gramáticas regulares) son formalismos completamente diferentes, que describen el mismo conjunto de lenguajes. Nuevamente, la prueba de este hecho explora importantes relaciones cruzadas, y son un ejemplo de que los formalismos pueden parecer muy diferentes, basarse en conceptos radicalmente diferentes, pero describen los mismos lenguajes. De nuevo, en un entorno bastante simple.

Para uso en el "mundo real", puede comenzar con una expresión regular y obtener un DFA mínimo para la búsqueda de alto rendimiento. Los circuitos digitales son esencialmente DFA, su comprensión es fundamental en la ingeniería informática. Por último, pero no menos importante, a menudo los sistemas pueden modelarse como "estar en un estado" y "moverse a otro" con estímulos externos, incluso si el sistema está muy lejos de un DFA real, verlo de esta manera podría ayudar a comprenderlo.

Agregado más tarde: como señaló Raphael, puede ser más eficiente interpretar un NFA directamente para la búsqueda, porque crear un DFA puede ser costoso y un NFA puede ser mucho más pequeño.


1
"Hay otros" - docenas ....
Raphael

1
Es posible que desee mencionar que NFA puede ser útil (si DFA es la única alternativa) porque pueden ser mucho más pequeños, pero usar uno para verificar si se acepta una palabra no es mucho más costoso.
Raphael

5

Hay una amplia variedad de razones para estudiar las diferentes formas / correspondencias de los DFA frente a los NFA. Aquí hay algunos puntos destacados seleccionados algunos de la teoría de complejidad avanzada.

  • Los NFA son un modelo interesante para el "cálculo paralelo". Uno puede considerar el avance de los estados a través de la NFA como una versión paralela de la computación DFA. por lo tanto, los cálculos de DFA frente a NFA reflejan parte de la distinción entre el cálculo secuencial y el paralelo. al comparar ambos contextos, también ayuda a estudiar la complejidad algorítmica inherente de los problemas.

  • Los NFA a menudo se usan en sistemas de coincidencia de expresiones regulares (bastante ubicuo en todos los idiomas, especialmente en los modernos generados en la era de Unix), que generalmente permiten descripciones de expresiones regulares que se convierten en NFA, y luego posiblemente se convierten en DFA para ayudar con una búsqueda más eficiente.

  • Hay bastantes problemas abiertos que permanecen en las áreas y a menudo se estudian en base a la correspondencia DFA / NFA. consulte, por ejemplo, si quedan problemas abiertos en los DFA (cstheory stackexchange). Sorprendentemente, algunos de ellos están vinculados con áreas muy profundas de CS, incluido el problema P vs NP, es decir, la falta de intersección de los DFA . También otra área abierta es, por ejemplo, calcular el NFA mínimo para un DFA .

  • también para una idea relacionada, vea esta pregunta semifamosa / altamente votada en cstheory.se : ¿Cuál es la iluminación que se supone que debo lograr después de estudiar autómatas finitos?

  • existen aplicaciones muy diversas de DFA vs NFA y la correspondencia entre los dos a menudo se explota en ellas. la coincidencia de patrones de cadena se menciona anteriormente, pero las construcciones DFA / NFA se usan a menudo en el reconocimiento de voz (automatizado). véase, por ejemplo, este artículo altamente citado: Transductores ponderados de estado finito en reconocimiento de voz / Mohri, Pereira, Riley


2

DFA tiene una implementación más fácil que NFA ya que su próximo estado está determinado por una función y los NFA ayudan al usuario a expresar fácilmente lo que quiere como salida, porque el NFA puede elegir entre múltiples rutas. y epsilon-NFA es una extensión de NFA donde las transiciones se pueden hacer sin tomar ningún símbolo de entrada.


2
Resumiendo: los NFA transmiten la idea del no determinismo, que es una idea muy profunda (sus "inventores", Michael O. Rabin y Dana S. Scott, ganaron el premio Turing por estas ideas)
Ran G.

1

Hay algo desagradable en la cantidad de estados de DFA. Explota, a veces .

En resumen, si el número de estados es simplemente demasiado alto (todavía finito pero vivimos en un mundo físico), entonces debe aumentar el nivel de abstracción para hacer frente a la complejidad a expensas de alguna desaceleración. Los otros modelos, como los NFA y AFA, son para proporcionar formas más sucintas para representar los idiomas regulares.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.