¿Cuál es el uso de finite automata? Y todos los conceptos que estudiamos en la teoría de la computación. Nunca he visto sus usos todavía.¿Cuál es el uso de autómatas finitos?
Respuesta
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).
Los autómatas finitos son muy útiles para los protocolos de comunicación y para unir cadenas con expresiones regulares.
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.
ok m compilación curiosa compilación construcción ..explícame la expresión regular – nicky
Los autómatas se utilizan en aplicaciones de hardware y software. Lea la sección de implementación aquí http://en.wikipedia.org/wiki/Finite-state_machine#Implementation
También hay una noción de programación basada en autómatas. Selecciona esta http://en.wikipedia.org/wiki/Automata-based_programming
aplausos
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.
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.
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
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.
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.
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:
Ejemplo FSM: Bot Comportamiento Un bot es un personaje generado por ordenador en un videojuego. 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. Aquí hay una tabla de estado simplificada para un cronómetro.
por favor haz referencia de donde obtuviste eso ... https://people.cs.clemson.edu/~goddard/texts/theoryOfComputation/5.pdf – MimiEAM
- 1. Python autómatas finitos biblioteca
- 2. autómatas en ocaml
- 3. ¿cuál es el uso básico de alignment_storage?
- 4. ¿Cuál es el uso de singletonList?
- 5. ¿Cuál es el uso de window.external?
- 6. ¿Cuál es el uso previsto de IllegalStateException?
- 7. ¿Cuál es el uso correcto de DataContext.Refresh()?
- 8. ¿Cuál es el uso de @SuppressWarnings
- 9. ¿Cuál es el uso correcto de EnsureChildControls()?
- 10. ¿Cuál es el uso de la sintaxis = =?
- 11. ¿Cuál es el uso de Log4j API?
- 12. ¿Cuál es el uso principal de MarshalByRefObject?
- 13. ¿Cuál es el uso de LOCAL_MODULE_TAGS?
- 14. ¿Cuál es el uso de AtomicReferenceArray?
- 15. ¿Cuál es el uso de typedef?
- 16. ¿Cuál es el uso de "indulgente"?
- 17. ¿Cuál es el uso de - [NSUserDefaults registerDefaults:]?
- 18. ¿cuál es el uso de string.Clone()?
- 19. ¿Cuál es el uso de Deployment.Current.Dispatcher.BeginInvoke (() => {...})?
- 20. ¿Cuál es el uso de Indexers?
- 21. ¿Cuál es el uso del uso de init() en JavaScript?
- 22. ¿Cuál es el propósito del uso?
- 23. cómo dibujar autómatas en Java
- 24. compilador de máquina de estados finitos
- 25. CGRectIntegral ¿cuál es su uso?
- 26. ¿cuál es el uso de indicadores de función?
- 27. ¿Cuál es el uso de un objeto de unión constante?
- 28. Imagen de fondo de CSS: ¿Cuál es el uso correcto?
- 29. ¿Cuál es el uso de QName y clase de operador?
- 30. ¿Cuál es el uso de los mensajes de confirmación?
Todos los lenguajes de programación y todas las computadoras digitales * son * autómatas finitos. –
@S. Lott no del todo Son máquinas de Turing: autómatas finitos combinados con cintas ilimitadas. –
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. –