2009-10-03 25 views

Respuesta

24

Son los fundamentos teóricos de los conceptos ampliamente utilizados en la informática y la programación, y su comprensión los ayuda a comprender mejor cómo usarlos (y cuáles son sus límites). Los tres básicos que debe encontrar son, en orden creciente de potencia:

  • Finite autómatas, que son equivalentes a las expresiones regulares. Las expresiones regulares son ampliamente utilizadas en la programación para unir cadenas y extraer texto. Son un método simple de describir un conjunto de cadenas válidas usando caracteres básicos, agrupamiento y repetición. Pueden hacer mucho, pero no pueden combinar conjuntos equilibrados de paréntesis.
  • Autómatas de empuje descendente, equivalente a gramáticas sin contexto. Los analizadores de texto/entrada y los compiladores usan esto cuando las expresiones regulares no son lo suficientemente potentes (y una de las cosas que aprendes al estudiar autómatas finitos es lo que las expresiones regulares no pueden hacer, lo cual es crucial para saber cuándo escribir una expresión regular y cuándo usar algo más complicado). Las gramáticas libres de contexto pueden describir "lenguajes" (conjuntos de cadenas válidas) donde la validez en un cierto punto al analizar la cadena no depende de lo que se haya visto.
  • Máquinas de Turing, equivalentes a cálculos generales (todo lo que se puede hacer con una computadora). Algunas de las cosas que aprende cuando cubre estos le permiten comprender los límites de la informática. Un buen curso de teoría le enseñará sobre el problema de detención, que le permite identificar problemas para los cuales es imposible escribir un programa. Una vez que haya identificado ese problema, entonces debe dejar de intentarlo (o refinarlo para hacer algo que sea posible).

Comprender la teoría y las limitaciones de estos diversos mecanismos informáticos le permite comprender mejor los problemas y programas y pensar más profundamente sobre la programación.

Hubo una solicitud de trabajo publicada hace aproximadamente un año en uno de los sitios independientes de intercambio de códigos que pedía, esencialmente, un programa que resolviera el problema de la detención. Varias personas respondieron con ofertas, diciendo que "entendían los requisitos" y que podían "comenzar de inmediato". Fue imposible escribir un programa que cumpliera con los requisitos. Comprender la teoría de la informática le permite no ser el licitador que demuestre, en público, que realmente no comprende la informática (y no se molesta en investigar exhaustivamente un problema antes de declarar comprensión y hacer una oferta).

+2

Todos los lenguajes de programación y todas las computadoras digitales * son * autómatas finitos. –

+4

@S. Lott no del todo Son máquinas de Turing: autómatas finitos combinados con cintas ilimitadas. –

+2

Aunque debe tenerse en cuenta que muchas (la mayoría de estos días?) Las librerías de expresiones regulares aceptan gramáticas * que no son un "lenguaje regular" * y, por lo tanto, no son aceptadas por un FA. –

3

Los autómatas finitos son muy útiles para los protocolos de comunicación y para unir cadenas con expresiones regulares.

0

Pruebe tomar un curso de compiladores. Lo más probable es que cree un compilador o intérprete usando un autómata de estado finito para implementar un analizador de descenso recursivo.

+0

ok m compilación curiosa compilación construcción ..explícame la expresión regular – nicky

0

Cada interfaz gráfica de usuario, cada flujo de trabajo puede ser tratada como autómatas finitos. Piense en cada página como un estado y las transiciones que ocurren debido a ciertos eventos. Tal vez no pueda pasar a una página determinada o a la siguiente etapa del flujo de trabajo hasta que se cumplan una serie de condiciones.

0

Por ejemplo, para gestionar estados de algunos objetos con un ciclo de vida definido. Como ejemplo de esto: pedidos en librería. Una orden puede tener los siguientes estados: -ordered -payed -Envios -done

y programa de la autómatas finitos sabe cómo un estado puede ser cambiada por otra.

0

El autómata finito es un tipo de máquina de estados (SM). En general, los SM se utilizan para analizar formal languages.

Puede usar como lenguaje formal muchas entidades, no solo caracteres.

Y el lenguaje habitual es un tipo de lenguaje formal. Hay alguna teoría que muestran, qué tipo de la SM es mejor analizar un lenguaje regular: http://en.wikipedia.org/wiki/Regular_language

0

autómatas finitos son, por ejemplo, utilizado para analizar los lenguajes formales Esto significa que los autómatas finitos son muy útiles en la creación de técnicas de compilación e interpretación.

Históricamente, la máquina de estados finitos demostró que muchos problemas se pueden resolver con una automatización muy simple.

0

algunos usos de los autómatas finitos:

procesamiento de cadenas de

considerar la búsqueda de todas las apariciones de una cadena corta (cadena de patrón) en un (cadena de texto) larga cadena. Esto se puede hacer procesando el texto a través de un DFA: el DFA para todas las cadenas que finalizan con la cadena del patrón. Cada vez que se alcanza el estado de aceptación, se genera la posición actual en el texto.

Ejemplo: Encontrar 1001 Para encontrar todas las ocurrencias de patrón de 1001, con la estructura DFA para todas las cadenas que terminan en 1001. enter image description here

máquinas de estados finitos

Un máquina de estado finito es un FA junto con acciones en los arcos. Un ejemplo trivial para un enlace de comunicación: enter image description here

Ejemplo FSM: Bot Comportamiento Un bot es un personaje generado por ordenador en un videojuego. enter image description here Tenga en cuenta que, utilizando la máquina de estado finito, permite la automatización.

cartas de estados

estatales tareas tablas modelo como un conjunto de estados y acciones. Extienden diagramas FA. enter image description here Aquí hay una tabla de estado simplificada para un cronómetro.

+0

por favor haz referencia de donde obtuviste eso ... https://people.cs.clemson.edu/~goddard/texts/theoryOfComputation/5.pdf – MimiEAM