1) Los lenguajes regulares son definidos por expresiones regulares y son aceptados por autómatas finitos deterministas. 2) Un autómata finito determinista (AFD) está compuesto por un conjunto finito de estados, un alfabeto, una función de transición y un estado inicial y final. 3) Los AFD se usan para generar lenguajes formales reconociendo cadenas que llevan el autómata del estado inicial al final.
1) El documento cubre las sentencias if-else y switch en Java, incluyendo expresiones legales y formas de usar asignaciones. 2) También explica los diferentes tipos de ciclos como while, do-while y for, así como etiquetas como break y continue. 3) Finalmente, cubre el manejo de excepciones mediante el uso de bloques try-catch-finally y la propagación y jerarquía de excepciones en Java.
Este documento trata sobre autómatas finitos. Explica la clasificación de autómatas finitos determinísticos y no determinísticos, y cómo convertir un autómata finito no determinístico a uno determinístico usando el algoritmo de subconjuntos. También cubre la representación de expresiones regulares usando autómatas finitos no determinísticos y la minimización de estados en un autómata finito. Por último, presenta un caso de estudio sobre la construcción de un vehículo que evade obstáculos us
Este documento describe los tipos de datos primitivos y conceptos básicos en C como variables, identificadores, sentencias condicionales y de iteración. Incluye una tabla con los tipos de datos comunes como char, int, float y double junto con su tamaño en bits y rango de valores. También explica conceptos como declaración de variables, sentencias if-else, switch y bucles como for, while y do-while.
Este documento explica las aplicaciones de las derivadas en tres oraciones: Las derivadas miden la tasa de cambio de una función y permiten estudiar puntos de inflexión, máximos y mínimos. También se utilizan en métodos como el de Newton y en aproximaciones lineales. Isaac Newton y Gottfried Leibniz son reconocidos como los creadores del cálculo diferencial que incluye el concepto de derivada.
Este documento compara las estructuras condicionales y de control en los lenguajes C, Java y Visual Basic. Explica cómo se declaran y manipulan variables en cada lenguaje y provee ejemplos de código. También resume brevemente las características de SQL y compara Oracle e Informix.
Este documento presenta una clase sobre aplicaciones de la derivada dictada en la Universidad de Los Lagos. Explica conceptos como funciones crecientes y decrecientes, determinación de intervalos de monotonía, máximos y mínimos relativos, concavidad, puntos de inflexión e interpretaciones geométrica y física de la derivada. El profesor Rodrigo Solís impartió la clase a tres alumnos de la carrera de Ingeniería Civil Vespertina.
1) El documento cubre las sentencias if-else y switch en Java, incluyendo expresiones legales y formas de usar asignaciones. 2) También explica los diferentes tipos de ciclos como while, do-while y for, así como etiquetas como break y continue. 3) Finalmente, cubre el manejo de excepciones mediante el uso de bloques try-catch-finally y la propagación y jerarquía de excepciones en Java.
Este documento trata sobre autómatas finitos. Explica la clasificación de autómatas finitos determinísticos y no determinísticos, y cómo convertir un autómata finito no determinístico a uno determinístico usando el algoritmo de subconjuntos. También cubre la representación de expresiones regulares usando autómatas finitos no determinísticos y la minimización de estados en un autómata finito. Por último, presenta un caso de estudio sobre la construcción de un vehículo que evade obstáculos us
Este documento describe los tipos de datos primitivos y conceptos básicos en C como variables, identificadores, sentencias condicionales y de iteración. Incluye una tabla con los tipos de datos comunes como char, int, float y double junto con su tamaño en bits y rango de valores. También explica conceptos como declaración de variables, sentencias if-else, switch y bucles como for, while y do-while.
Este documento explica las aplicaciones de las derivadas en tres oraciones: Las derivadas miden la tasa de cambio de una función y permiten estudiar puntos de inflexión, máximos y mínimos. También se utilizan en métodos como el de Newton y en aproximaciones lineales. Isaac Newton y Gottfried Leibniz son reconocidos como los creadores del cálculo diferencial que incluye el concepto de derivada.
Este documento compara las estructuras condicionales y de control en los lenguajes C, Java y Visual Basic. Explica cómo se declaran y manipulan variables en cada lenguaje y provee ejemplos de código. También resume brevemente las características de SQL y compara Oracle e Informix.
Este documento presenta una clase sobre aplicaciones de la derivada dictada en la Universidad de Los Lagos. Explica conceptos como funciones crecientes y decrecientes, determinación de intervalos de monotonía, máximos y mínimos relativos, concavidad, puntos de inflexión e interpretaciones geométrica y física de la derivada. El profesor Rodrigo Solís impartió la clase a tres alumnos de la carrera de Ingeniería Civil Vespertina.
El documento describe los autómatas finitos deterministas (AFD), incluyendo su definición formal, ejemplos de AFD, y cómo representar y analizar lenguajes aceptados por AFD. Un AFD se define como una quíntupla que describe los estados, alfabeto, estado inicial, función de transición y estados finales. Se explican conceptos como estados accesibles, conexos, y cómo construir un analizador léxico a partir de un AFD.
Este documento presenta los conceptos básicos de la programación lineal. Explica que la programación lineal resuelve problemas de optimización donde las relaciones entre variables son lineales. Define la estructura matemática general de un problema de programación lineal, incluyendo la función objetivo y las restricciones lineales. También describe las características y supuestos de la programación lineal. Finalmente, incluye un ejemplo de problema de producción para ilustrar cómo formular un modelo de programación lineal.
Este documento presenta información sobre estructuras selectivas y condicionales en algoritmos. Explica qué son las condicionales, cómo funcionan las instrucciones condicionales "si" y "sino", y diferentes tipos de condicionales como simples y compuestas. También cubre anidamiento de condicionales y provee ejemplos de pseudocódigo y diagramas de flujo para ilustrar el uso de condicionales.
Este documento describe diferentes tipos de autómatas, incluyendo autómatas finitos deterministas y no deterministas, autómatas con pilas, máquinas de Turing y autómatas celulares. También cubre autómatas probabilísticos y extensiones a autómatas finitos. Los autómatas son modelos matemáticos útiles para estudiar computabilidad y lenguajes formales.
Este documento describe los procesos estocásticos markovianos y cómo se pueden reconstruir a partir de muestras discretas. Explica que la función de covarianza de un filtro RC determina la influencia temporal entre valores del proceso. Luego presenta fórmulas para calcular las funciones básicas, de reconstrucción y error de reconstrucción para un proceso con 4 muestras. Finalmente, analiza cómo varían estas funciones según el intervalo entre muestras.
DISEÑO DE SISTEMAS DIFUSOS Y CONTROL LÓGICO DIFUSOESCOM
Este documento describe los componentes básicos y el funcionamiento de los sistemas de control lógico difusos. Explica que estos sistemas usan reglas lingüísticas para controlar procesos, y constan de cuatro etapas: fusificación, evaluación de reglas, defusificación y una base de conocimiento con conjuntos difusos y reglas. Como ejemplo, se detalla un sistema de control de presión de calderas usando 7 conjuntos lingüísticos y 49 reglas difusas.
Este documento describe las sentencias de control de flujo en programación, las cuales permiten cambiar el orden de ejecución de las sentencias. Explica las estructuras de selección como if/else y switch, las cuales ejecutan un bloque u otro dependiendo de una condición, y también cubre los bloques de sentencias, if anidados y else-if. Además, detalla el funcionamiento y sintaxis de switch.
Este documento presenta información sobre autómatas de estado finito. Explica que un autómata finito es un conjunto de nodos y aristas que representan trayectorias para generar expresiones bajo un alfabeto. Describe los elementos clave de un autómata finito como estados, estado inicial, estados aceptadores y transiciones. También distingue entre autómatas finitos determinísticos (DFA) y no determinísticos (NFA), y provee ejemplos para ilustrar el funcionamiento de los DFA.
Este documento describe los autómatas finitos deterministas (AFD). Explica que un AFD es una máquina abstracta que procesa cadenas de entrada y las acepta o rechaza dependiendo de si el estado final alcanzado es de aceptación o no. Define los cinco componentes de un AFD y cómo se mueve la unidad de control al leer los símbolos de la cadena de entrada según la función de transición. Finalmente, da un ejemplo para ilustrar el proceso de aceptación de una cadena.
Este documento presenta un manual de programación en C/C++. Explica conceptos básicos como variables, constantes, tipos de datos, expresiones y operadores. También cubre estructuras de datos como arreglos y estructuras, así como entrada y salida de datos utilizando funciones como printf, scanf y ficheros. Finalmente, introduce sentencias de control de flujo como if/else, switch y bucles while y do-while, así como el uso de funciones y parámetros.
Este documento presenta un reporte de investigación sobre recursividad. Explica conceptos clave como recursión directa e indirecta y características de funciones recursivas como el caso base y caso recursivo. También discute ventajas de programación recursiva como su cercanía a descripciones matemáticas. Finalmente, concluye que recursividad es fundamental en matemáticas y computación para implementar estructuras de repetición.
Este documento introduce la lógica difusa y sus componentes principales: la fuzzificación, las reglas de inferencia y la defuzzificación. Explica que la lógica difusa se basa en grados de verdad en lugar de valores booleanos y permite modelar sistemas no lineales. Además, describe brevemente algunas aplicaciones como sistemas de control y electrodomésticos.
Este documento presenta los resultados de implementar algoritmos de hormigas para resolver el problema del viajante de comercio (TSP). Se implementaron tres versiones: sistema de hormigas (SH), sistema de hormigas elitistas (SHE) y sistema de colonia de hormigas (SCH). Estos algoritmos se probaron en tres instancias de TSP (CH130, A280 y P654) y se compararon sus resultados. También se implementó un algoritmo greedy para comparación. El documento concluye que los algoritmos de hormigas son efectivos para problemas de baja complejidad.
La convolución es una función que transforma una señal de entrada en una nueva señal de salida de manera lineal y continua. En sistemas unidimensionales, la convolución de dos funciones g(x) y f(x) depende del valor de f(x) en cada punto x, pero no de la posición de x. En sistemas discretos como imágenes digitales, la convolución de funciones f(x,y) y g(x,y) depende de la matriz de valores de g. La convolución tiene propiedades similares a la multiplicación
Este documento presenta una guía sobre estructuras de control selectivas en programación, incluyendo definiciones, clasificaciones y ejemplos. Explica estructuras selectivas simples, dobles, múltiples y en cascada, proporcionando diagramas de flujo, pseudocódigo y ejemplos en C para cada una. El objetivo es apoyar a estudiantes de programación básica en el uso de estas técnicas para formular algoritmos.
1) El documento explica las sentencias if, else if, else y switch en Java. 2) También cubre los bucles while, do y for, incluyendo el for-each introducido en Java 6. 3) Se proveen ejemplos de código para ilustrar el uso correcto de estas sentencias de control de flujo.
El documento describe las estructuras de control en programación, incluyendo estructuras de decisión como if/else y switch, y estructuras de bucle como while, do/while, for y foreach. Estas estructuras permiten modificar el orden de ejecución del código mediante condiciones o iteraciones.
Este documento describe las estructuras condicionales que permiten ejecutar instrucciones de forma condicional dependiendo de si se cumple o no una condición. Explica los operadores lógicos y relacionales usados para comparaciones, y provee ejemplos del uso de las estructuras Si, Si-No y Switch.
Este documento contiene el código fuente de dos archivos (BabosinCanvas.java y DBVGameCanvas.java) que implementan un videojuego de plataformas 2D en Java ME. El código dibuja sprites, controla la animación y movimiento del personaje principal mediante el teclado, e implementa colisiones para detectar cuando el personaje choca con obstáculos u otros sprites como autos y enemigos.
El curso Fundamentos de Programación tiene como objetivo principal adquirir las habilidades básicas de programación para resolver problemas usando lenguajes de programación. Los objetivos específicos incluyen aplicar destrezas para resolver problemas de ingeniería, conocer técnicas de programación modular, estructurada y orientada a objetos, y utilizar al menos un lenguaje de programación como C. El curso se enfoca en conceptos fundamentales como algoritmos, variables, tipos de datos, estructuras de control y datos, y introduce conceptos de programación orientada a objetos.
El documento describe los autómatas finitos deterministas (AFD), incluyendo su definición formal, ejemplos de AFD, y cómo representar y analizar lenguajes aceptados por AFD. Un AFD se define como una quíntupla que describe los estados, alfabeto, estado inicial, función de transición y estados finales. Se explican conceptos como estados accesibles, conexos, y cómo construir un analizador léxico a partir de un AFD.
Este documento presenta los conceptos básicos de la programación lineal. Explica que la programación lineal resuelve problemas de optimización donde las relaciones entre variables son lineales. Define la estructura matemática general de un problema de programación lineal, incluyendo la función objetivo y las restricciones lineales. También describe las características y supuestos de la programación lineal. Finalmente, incluye un ejemplo de problema de producción para ilustrar cómo formular un modelo de programación lineal.
Este documento presenta información sobre estructuras selectivas y condicionales en algoritmos. Explica qué son las condicionales, cómo funcionan las instrucciones condicionales "si" y "sino", y diferentes tipos de condicionales como simples y compuestas. También cubre anidamiento de condicionales y provee ejemplos de pseudocódigo y diagramas de flujo para ilustrar el uso de condicionales.
Este documento describe diferentes tipos de autómatas, incluyendo autómatas finitos deterministas y no deterministas, autómatas con pilas, máquinas de Turing y autómatas celulares. También cubre autómatas probabilísticos y extensiones a autómatas finitos. Los autómatas son modelos matemáticos útiles para estudiar computabilidad y lenguajes formales.
Este documento describe los procesos estocásticos markovianos y cómo se pueden reconstruir a partir de muestras discretas. Explica que la función de covarianza de un filtro RC determina la influencia temporal entre valores del proceso. Luego presenta fórmulas para calcular las funciones básicas, de reconstrucción y error de reconstrucción para un proceso con 4 muestras. Finalmente, analiza cómo varían estas funciones según el intervalo entre muestras.
DISEÑO DE SISTEMAS DIFUSOS Y CONTROL LÓGICO DIFUSOESCOM
Este documento describe los componentes básicos y el funcionamiento de los sistemas de control lógico difusos. Explica que estos sistemas usan reglas lingüísticas para controlar procesos, y constan de cuatro etapas: fusificación, evaluación de reglas, defusificación y una base de conocimiento con conjuntos difusos y reglas. Como ejemplo, se detalla un sistema de control de presión de calderas usando 7 conjuntos lingüísticos y 49 reglas difusas.
Este documento describe las sentencias de control de flujo en programación, las cuales permiten cambiar el orden de ejecución de las sentencias. Explica las estructuras de selección como if/else y switch, las cuales ejecutan un bloque u otro dependiendo de una condición, y también cubre los bloques de sentencias, if anidados y else-if. Además, detalla el funcionamiento y sintaxis de switch.
Este documento presenta información sobre autómatas de estado finito. Explica que un autómata finito es un conjunto de nodos y aristas que representan trayectorias para generar expresiones bajo un alfabeto. Describe los elementos clave de un autómata finito como estados, estado inicial, estados aceptadores y transiciones. También distingue entre autómatas finitos determinísticos (DFA) y no determinísticos (NFA), y provee ejemplos para ilustrar el funcionamiento de los DFA.
Este documento describe los autómatas finitos deterministas (AFD). Explica que un AFD es una máquina abstracta que procesa cadenas de entrada y las acepta o rechaza dependiendo de si el estado final alcanzado es de aceptación o no. Define los cinco componentes de un AFD y cómo se mueve la unidad de control al leer los símbolos de la cadena de entrada según la función de transición. Finalmente, da un ejemplo para ilustrar el proceso de aceptación de una cadena.
Este documento presenta un manual de programación en C/C++. Explica conceptos básicos como variables, constantes, tipos de datos, expresiones y operadores. También cubre estructuras de datos como arreglos y estructuras, así como entrada y salida de datos utilizando funciones como printf, scanf y ficheros. Finalmente, introduce sentencias de control de flujo como if/else, switch y bucles while y do-while, así como el uso de funciones y parámetros.
Este documento presenta un reporte de investigación sobre recursividad. Explica conceptos clave como recursión directa e indirecta y características de funciones recursivas como el caso base y caso recursivo. También discute ventajas de programación recursiva como su cercanía a descripciones matemáticas. Finalmente, concluye que recursividad es fundamental en matemáticas y computación para implementar estructuras de repetición.
Este documento introduce la lógica difusa y sus componentes principales: la fuzzificación, las reglas de inferencia y la defuzzificación. Explica que la lógica difusa se basa en grados de verdad en lugar de valores booleanos y permite modelar sistemas no lineales. Además, describe brevemente algunas aplicaciones como sistemas de control y electrodomésticos.
Este documento presenta los resultados de implementar algoritmos de hormigas para resolver el problema del viajante de comercio (TSP). Se implementaron tres versiones: sistema de hormigas (SH), sistema de hormigas elitistas (SHE) y sistema de colonia de hormigas (SCH). Estos algoritmos se probaron en tres instancias de TSP (CH130, A280 y P654) y se compararon sus resultados. También se implementó un algoritmo greedy para comparación. El documento concluye que los algoritmos de hormigas son efectivos para problemas de baja complejidad.
La convolución es una función que transforma una señal de entrada en una nueva señal de salida de manera lineal y continua. En sistemas unidimensionales, la convolución de dos funciones g(x) y f(x) depende del valor de f(x) en cada punto x, pero no de la posición de x. En sistemas discretos como imágenes digitales, la convolución de funciones f(x,y) y g(x,y) depende de la matriz de valores de g. La convolución tiene propiedades similares a la multiplicación
Este documento presenta una guía sobre estructuras de control selectivas en programación, incluyendo definiciones, clasificaciones y ejemplos. Explica estructuras selectivas simples, dobles, múltiples y en cascada, proporcionando diagramas de flujo, pseudocódigo y ejemplos en C para cada una. El objetivo es apoyar a estudiantes de programación básica en el uso de estas técnicas para formular algoritmos.
1) El documento explica las sentencias if, else if, else y switch en Java. 2) También cubre los bucles while, do y for, incluyendo el for-each introducido en Java 6. 3) Se proveen ejemplos de código para ilustrar el uso correcto de estas sentencias de control de flujo.
El documento describe las estructuras de control en programación, incluyendo estructuras de decisión como if/else y switch, y estructuras de bucle como while, do/while, for y foreach. Estas estructuras permiten modificar el orden de ejecución del código mediante condiciones o iteraciones.
Este documento describe las estructuras condicionales que permiten ejecutar instrucciones de forma condicional dependiendo de si se cumple o no una condición. Explica los operadores lógicos y relacionales usados para comparaciones, y provee ejemplos del uso de las estructuras Si, Si-No y Switch.
Este documento contiene el código fuente de dos archivos (BabosinCanvas.java y DBVGameCanvas.java) que implementan un videojuego de plataformas 2D en Java ME. El código dibuja sprites, controla la animación y movimiento del personaje principal mediante el teclado, e implementa colisiones para detectar cuando el personaje choca con obstáculos u otros sprites como autos y enemigos.
El curso Fundamentos de Programación tiene como objetivo principal adquirir las habilidades básicas de programación para resolver problemas usando lenguajes de programación. Los objetivos específicos incluyen aplicar destrezas para resolver problemas de ingeniería, conocer técnicas de programación modular, estructurada y orientada a objetos, y utilizar al menos un lenguaje de programación como C. El curso se enfoca en conceptos fundamentales como algoritmos, variables, tipos de datos, estructuras de control y datos, y introduce conceptos de programación orientada a objetos.
Este documento describe la capa de aplicación del modelo OSI y los componentes clave de esta capa: aplicaciones, servicios y protocolos. Explica que las aplicaciones son programas que los usuarios utilizan directamente para comunicarse a través de la red, mientras que los servicios de red ayudan a preparar los datos para su transmisión. También cubre varios protocolos importantes de la capa de aplicación como HTTP, SMTP y FTP que especifican los formatos de datos necesarios para funciones comunes de comunicación en Internet.
Este documento describe un módulo de capacitación sobre ambientes virtuales de aprendizaje. El módulo incluye actividades como familiarizarse con las herramientas de comunicación de una plataforma de aprendizaje en línea, aprender conceptos clave sobre la participación en entornos virtuales, y discutir estrategias de moderación y evaluación para cursos en línea. El objetivo general es preparar a los participantes para funcionar con éxito tanto como estudiantes como docentes en entornos de educación virtual.
The Java Platform, Micro Edition (Java ME) Software Development Kit (SDK) 3.0 integrates Connected Limited Device Configuration (CLDC), Connected Device Configuration (CDC), and Blu-ray Disc Java (BD-J) technology into a single development environment. It includes emulators for different devices, on-device debugging tools, application profiling tools, and a modular architecture. The SDK supports the latest APIs and provides a lightweight development environment for creating Java ME applications.
Este documento describe la generación de código intermedio y su optimización como parte del proceso de compilación. Explica que el código intermedio es una representación independiente de la máquina que se asemeja al código objeto. Luego detalla dos formas comunes de representación intermedia: el código de tres direcciones y su implementación mediante cuádruplos o tripletes. Finalmente, ilustra un ejemplo de código fuente y su correspondiente código de tres direcciones para el cálculo del factorial.
This document defines key economic terms and concepts. It discusses the science of economics and how economists study everyday life and basic human needs. It also covers conditional sentences in grammar and poses questions about the relationship between work, needs, and how students can fulfill their needs.
Este documento describe el modelado de sistemas dinámicos mediante el uso del espacio de estados. Explica que el espacio de estados permite modelar sistemas lineales y no lineales con múltiples entradas y salidas que pueden ser variables o invariantes en el tiempo. Define conceptos clave como sistema, variable de estado, ecuaciones de estado y de salida. Finalmente, concluye que el espacio de estados proporciona una forma flexible de modelar sistemas que se aproxima mejor a su comportamiento real.
El artículo describe la conversión de un autómata finito no determinista (AFN) a un autómata finito determinista (AFD) utilizando la construcción por subconjuntos. El algoritmo de construcción por subconjuntos se basa en calcular la clausura transitiva del AFN para determinar los estados del AFD. El artículo presenta el código de un programa en C++ que implementa este algoritmo y convierte un AFN dado a un equivalente AFD.
PROGRAMACIÓN CONCURRENT
Modelar un sistema usando redes de Petri
Una red de Petri está formada por lugares, transiciones, arcos dirigidos y marcas o fichas
Carl Petri creo en 1962, una herramienta matemática para el estudio de las comunicaciones con los Autómatas.
Este documento describe los autómatas de estados finitos. En la primera sección se define formalmente lo que son los autómatas determinísticos y no determinísticos, y se muestra cómo representarlos gráficamente. Luego, se incluyen ejemplos de autómatas que reconocen diferentes lenguajes regulares. Finalmente, se discuten conceptos como estados, transiciones entre estados, y el lenguaje reconocido por un autómata.
Presentacion 2 - Maquinas de Estado Finitojunito86
Presentacion del grupo 2 sobre Maquinas de Estado Finito, para el curso de Matematicas Discretas Avanzadas.
Por
Xaimara Perez
Antonio Caban
Andrea Pena
Jose A. Valentin
Este documento introduce el concepto de máquinas de estado y cómo se pueden implementar con Arduino. Explica qué es una máquina de estado y cómo se pueden modelar estados y transiciones entre estados. Luego, presenta ejemplos de máquinas de estado como un contador y cómo reescribir el sketch de parpadeo de Arduino como una máquina de estado de dos estados. Finalmente, muestra cómo implementar una máquina de estado de parpadeo de LED en código C para Arduino.
Este documento trata sobre circuitos secuenciales y máquinas de estados finitos. Los circuitos secuenciales son aquellos cuyas salidas en un momento dependen de las entradas actuales y pasadas, permitiéndoles memorizar información. Las máquinas de estados finitos son un modelo abstracto que permite determinar si una cadena pertenece a un lenguaje o generar nuevos símbolos, y se representan comúnmente mediante diagramas de transición.
Una máquina de estado finito (MEF) describe el comportamiento de un sistema reactivo mediante un número determinado de estados y transiciones entre estados. Las transiciones ocurren en respuesta a eventos externos e internos y pueden generar eventos de salida. Las MEF se representan gráficamente mediante diagramas de estado finito que muestran los estados y transiciones posibles.
Este documento resume los conceptos clave relacionados con las variables de estado y la representación de sistemas dinámicos en ecuaciones de estado. Explica que las variables de estado describen los procesos internos de un sistema y cómo transformar ecuaciones diferenciales en ecuaciones de estado. También describe métodos para construir ecuaciones de estado a partir de modelos matemáticos y diferentes formas de representar sistemas en ecuaciones de estado, dependiendo de si son continuos o discretos, variantes o invariantes en el tiempo.
1. El documento describe los conceptos básicos del control en el espacio de estados, incluyendo definiciones de variables de estado, vector de estado, espacio de estados y ecuaciones de estado.
2. Explica cómo obtener la función de transferencia a partir de un modelo de espacio de estados y las formas canónicas de la función de transferencia.
3. Cubre temas como análisis de lazo cerrado, controlabilidad, observabilidad y estabilidad en sistemas de control.
Este documento presenta una introducción a los algoritmos. Define un algoritmo como un conjunto finito de instrucciones precisas que realizan una tarea y culminan en un estado final reconocible. Explica que la máquina de Turing de Alan Turing proporciona una definición matemáticamente precisa de algoritmo. Además, cubre temas como la especificación, implementación y eficiencia de los algoritmos, así como diferentes clases de algoritmos como fuerza bruta y divide y conquista.
Simulación de Recepción de llamadas del ECU911 para dar un servicio a la ciudadanía, aplicando funciones de
activación tansig y logsig en Redes Neuronales.
El documento describe los espacios de estados y problemas de búsqueda. Un espacio de estados representa un problema como un grafo donde los nodos son estados y los arcos son transiciones entre estados basadas en reglas. Resolver un problema significa encontrar un camino en el grafo desde un estado inicial hasta uno objetivo aplicando las reglas. Los problemas se pueden modelar como deterministas o no deterministas dependiendo de si hay múltiples sucesores por estado o reglas.
Este documento describe las máquinas de estado algorítmicas (ASM) como una técnica para el diseño de circuitos digitales secuenciales a nivel de transferencia de registros. Un ASM consta de una unidad de control y una ruta de datos. Se presenta un ejemplo de multiplicación de números binarios implementado como un ASM, incluyendo el diagrama de flujo y la identificación de los componentes de la ruta de datos.
Este documento explica los autómatas finitos y su representación mediante ecuaciones de estado. Define los autómatas finitos como modelos computacionales que realizan cálculos automáticos sobre una entrada para producir una salida. Explica que están compuestos por un alfabeto, un conjunto finito de estados, una función de transición, un estado inicial y un conjunto de estados finales. Además, describe cómo se pueden representar mediante ecuaciones de estado y cómo reconocen lenguajes.
Este documento describe las estructuras condicionales en C, incluyendo sentencias if, else if, else y operador ternario ?. También cubre la sentencia switch que permite comprobar múltiples casos de una variable y ejecutar código asociado al caso coincidente.
Este documento describe los autómatas de estados finitos (FSA), incluyendo que son diagramas con nodos y arcos etiquetados que reconocen lenguajes regulares. Explica que un FSA puede tener múltiples estados finales y puede ser determinista o no determinista. También cubre cómo las expresiones regulares y gramáticas regulares son equivalentes a los lenguajes reconocidos por los FSA.
Introducción a la Teoría de Autómatas by Yeredithyeredith1
El documento introduce conceptos básicos de la teoría de autómatas, incluyendo: autómatas finitos como máquinas abstractas de cálculo, representaciones de autómatas finitos deterministas a través de tablas de transición y diagramas de transición, y expresiones regulares como un equivalente algebraico para describir lenguajes reconocidos por autómatas. Además, presenta ejemplos y ejercicios para ilustrar estos conceptos.
[1] El documento describe los fundamentos de los algoritmos genéticos, incluyendo sus componentes principales como la selección, el entrecruzamiento y la mutación. [2] Explica cómo los AG representan soluciones mediante cromosomas y cómo optimizan una población de soluciones a través de generaciones sucesivas. [3] También introduce el concepto de esquemas para representar similitudes entre cromosomas.
Este documento presenta una introducción al curso de Ingeniería de Software. Explica que el curso estudiará las actividades del ciclo de vida de un proyecto de software con el objetivo de comprender los procesos y técnicas de desarrollo de software, aplicar enfoques de gestión de requisitos y despliegue de soluciones, y desarrollar habilidades profesionales. El curso cubrirá temas como requisitos, diseño, arquitectura, metodologías y mejores prácticas, y evaluará a los
Este documento lista 30 herramientas digitales para crear recursos educativos como infografías, mapas mentales, presentaciones interactivas, e-books, videos y más. Algunas de las herramientas mencionadas incluyen iNFOGR.AM para crear infografías, Mohiomp para visualizar contenido en Dropbox, Evernote y Drive, y Eduteka que ofrece una suite de metodologías y herramientas educativas.
Este documento describe los conceptos y niveles de pruebas de software. Explica que las pruebas deben realizarse en todas las fases del desarrollo y no solo al final, y que incluyen pruebas de unidad, integración y sistema para verificar el correcto funcionamiento de cada unidad, la integración de unidades y el producto completo.
Este documento proporciona una guía sobre cómo instalar y usar el Android SDK, incluyendo información sobre aplicaciones Android, la arquitectura del framework, opciones de instalación, componentes de la instalación y demos para funciones como intents, fragmentos, gráficos 2D y 3D, proveedores de contenido y más.
El documento describe la comunicación como un proceso inherente a las relaciones entre seres vivos que implica la emisión y recepción de señales con la intención de transmitir un mensaje. Explica que para que la comunicación sea exitosa, el receptor debe poder decodificar el mensaje e interpretarlo correctamente, y luego responder, cerrando así el ciclo comunicativo. Además, señala que no es posible no comunicar y que la mediación surge para resolver problemas de comunicación a través de más comunicación.
Este documento describe tres modelos de mediación: el modelo Harvard, el modelo circular-narrativo y el modelo transformativo. Explica los objetivos, valores, rol del mediador, proceso y finalización de cada modelo. También incluye información sobre la negociación colaborativa y sus elementos.
Este documento introduce los lenguajes regulares y expresiones regulares. Explica que los lenguajes regulares son los más simples en la jerarquía de Chomsky y se definen recursivamente usando operaciones como unión, concatenación y clausura. También define formalmente las expresiones regulares, notando que cada expresión regular denota un lenguaje regular.
El documento describe los conceptos clave de Extreme Programming (XP) relacionados con la ingeniería de requerimientos mediante historias de usuario, incluyendo el juego de planificación. Explica cómo las historias de usuario se utilizan para gestionar los requerimientos de manera dinámica y flexible, y cómo se descomponen en tareas de programación. También cubre temas como los niveles de detalle adecuados para las historias de usuario, la información que deben contener, y cómo se estima el esfuerzo asociado a las historias y
Este documento describe el proyecto Semillero Internet of Things de la Universidad Pontificia Bolivariana. El proyecto involucra a varios semilleros de investigación y dependencias de la universidad con el objetivo de desarrollar aplicaciones móviles. Se identifican usos académicos como la organización del tiempo, comunicación, acceso a información y colaboración. Se proponen aplicaciones como un asistente virtual con realidad aumentada, una aplicación de biblioteca y calendario, e integración con sistemas institucionales. El trabajo del semestre
Para subir una aplicación a Google Play, primero debes crear una cuenta de Google, registrarte como desarrollador en la consola de Google Play pagando $25 USD, y registrarte en Google Wallet. Luego, accedes a la consola para desarrolladores, seleccionas "Añadir nueva aplicación", subes el archivo APK y recursos, y especificas detalles como nombre, descripción, categoría e idioma. Finalmente, configuras las opciones de publicación como ubicaciones y contacto antes de publicar la aplicación.
El documento describe los analizadores descendentes predictivos y el método predictivo recursivo LL(1) para el análisis sintáctico. Explica que los analizadores LL(1) determinan la regla de producción a aplicar en cada paso en función del símbolo terminal que se encuentra en la cabeza de lectura, y que requieren que la gramática sea no ambigua, factorizada por la izquierda y no recursiva por la izquierda. También presenta el procedimiento general para la implementación de un analizador LL(1).
El documento describe varios conceptos clave de la arquitectura de software, incluyendo estilos arquitectónicos como centrado en datos, flujo de datos y llamada y retorno, así como patrones arquitectónicos como tuberías y filtros, pizarrón y cliente-servidor. Explica que los estilos arquitectónicos definen familias de sistemas en términos de componentes, interfaces y restricciones, mientras que los patrones arquitectónicos proveen esquemas genéricos para solucionar problemas recurrentes.
El documento presenta el Rational Unified Process (RUP), un proceso de desarrollo de software iterativo e incremental centrado en la arquitectura y dirigido por casos de uso. RUP define fases, hitos, roles, actividades y artefactos. Se compone de cuatro fases principales (Inception, Elaboration, Construction y Transition) donde se desarrollan iteraciones para entregar incrementos del producto.
El documento describe la arquitectura de sistemas de software, incluyendo los componentes principales, los tres niveles de abstracción (estilo, patrón de diseño y patrón arquitectónico), y ejemplos como el patrón MVC. Explica que el patrón MVC separa la lógica de negocio de la interfaz de usuario a través de los roles de Modelo, Vista y Controlador.
Este documento presenta una propuesta de intervención para mejorar la enseñanza del curso de Teoría de la Computación en la Universidad Pontificia Bolivariana mediante el uso de tecnologías de la información y la comunicación (TIC). La propuesta busca complementar la enseñanza tradicional con actividades prácticas basadas en proyectos, el desarrollo de prototipos, y el uso de entornos mediados por TIC para promover el aprendizaje colaborativo. El objetivo general es diseñar e implementar un modelo de formación que des
Este documento describe los conceptos fundamentales de los procesos de ingeniería de software. Explica que un proceso de software es un conjunto de actividades que producen un producto de software, e identifica cuatro actividades fundamentales: especificación, desarrollo, validación y evolución del software. También señala que los procesos de software son importantes para gestionar de manera efectiva el desarrollo de software en diferentes industrias y aplicaciones.
El documento describe los procesos de análisis e ingeniería de requisitos en el desarrollo de software. Explica que el análisis implica entender el problema más que iniciar el diseño de la solución, y que la ingeniería de requisitos se enfoca en describir las necesidades del sistema. Además, detalla que no existe una única mejor forma de escribir requisitos, pero que lo más común es usar lenguaje natural complementado con diagramas, y que el documento IEEE 830 estandariza la información que debe contener un documento de requis
Este documento presenta información general sobre Windows Phone. Detalla algunas de las características clave de la plataforma como su enfoque en las personas y la comunicación, la forma inteligente de usar aplicaciones, e Internet más allá del explorador. También incluye secciones sobre el hardware compatible con Windows Phone y herramientas para desarrolladores.
This document discusses object-oriented modeling and the Unified Modeling Language (UML). It introduces key concepts in modeling including systems, models, and views. Models abstract and simplify a system, while views depict selected aspects of a model. The document then discusses why software needs to be modeled, and introduces concepts, types, and classes in software modeling. It describes the relationship between the application domain and solution domain in object-oriented modeling. Finally, it provides an overview of commonly used UML diagrams including use case diagrams, class diagrams, sequence diagrams, statechart diagrams, and activity diagrams.
El documento describe los conceptos clave de la ingeniería de software, incluyendo el análisis y modelado de problemas, la escritura de requisitos, y la relación entre requisitos y arquitectura. Explica que el análisis del problema es más importante que iniciar el diseño de la solución, y que los requisitos deben expresar las propiedades y comportamiento del sistema dentro de las restricciones de diseño.
1. Cap¶
³tulo 3
Teor¶ de aut¶matas y
³a o
lenguajes regulares.
Los lenguajes regulares son de¯nidos mediante expresiones regulares y son
aceptados por un tipo especial de m¶quina de estados ¯nitos llamada aut¶ma-
a o
ta.
Un aut¶mata puede verse c¶mo una caja negra que reciben una entrada y
o o
produce una salida. El autom¶ta se dice que es ¯nito ya que realiza un
a
n¶ mero ¯nito de instrucciones y determina la salida, en ese momento el
u
aut¶mata termina su ejecuci¶n.
o o
Existen dos tipos de a¶ tomatas ¯nitos: deterministas y no deterministas.
u
La diferencia r¶dica en que el determinista, dada la entrada, en cada paso
a
s¶lo tiene una opci¶n para continuar, mientras que el no determinista puede
o o
tener varias opciones. Para que la diferencia sea clara veamos los siguiente
ejemplos:
Ejemplo 1 Determinista: Mar¶a le dice a Beto que va a tirar un volado: si
³
cae sol, entonces ella gana y si cae aguila ella pierde.
Ejemplo 2 No Determinista: Ahora Mar¶a le propone a Beto que si cae sol
³
ella gana y si cae aguila entonces hay dos opciones, que ella acepte que ha
perdido o tira un nuevo volado con las mismas reglas.
En este cap¶³tulo estudiaremos primero los autom¶tas ¯nitos deterministas,
a
despu¶s los no deterministas y ¯nalmente veremos la relaci¶n entre los au-
e o
tom¶tas ¯nitos y las expresiones regulares.
a
Teor¶ de la Computaci¶n
³a o Maricela Quintana
23
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
2. ¶
3.1. AUTOMATAS FINITOS DETERMINISTAS.
3.1 Aut¶matas ¯nitos deterministas.
o
Un aut¶mata ¯nito determinista AFD, es una m¶quina abstracta que dada
o a
una entrada produce una salida. Esta m¶quina tiene un n¶mero ¯nito de
a u
estados, (m¶quina de estados ¯nitos) de forma que al ejecutarse la m¶quina
a a
est¶ en el estado inicial y cuando termina debe estar en un estado ¯nal o en
a
un estado inv¶lido o de error.
a
La m¶quina va del estado inicial al ¯nal mediante una serie de estados in-
a
termedios; el cambio de estado est¶ determinado por el estado en el que se
a
encuentra la m¶quina y el s¶
a ³mbolo a procesar de la entrada.
Figura~3.1: Un aut¶mata ¯nito determinista.
o
Un AFD es utilizado para determinar si una cadena dada como entrada per-
tenece al lenguaje que el autom¶ta reconoce. Es claro que el funcionamiento
a
del aut¶mata obedece a las reglas de cambio de estado; estas reglas son es-
o
peci¯cadas mediante una funci¶n de transici¶n ¶ diagrama de transiciones,
o o o
que podemos decir de¯ne a la m¶quina de estados.
a
3.1.1 Introducir el concepto de diagrama de transicio-
nes o m¶quina de estados.
a
Un aut¶mata ¯nito es el modelo matem¶tico de un sistema que cuenta con
o a
un n¶mero in¯nito de con¯guraciones internas o estados.
u
Un diagrama de transici¶n o una funci¶n de transici¶n especi¯ca lo que la
o o o
m¶quina debe hacer si su situaci¶n cumple con ciertas condiciones. La si-
a o
tuaci¶n de un AFD, que reconoce un lenguaje, est¶ formado por el estado
o a
Teor¶ de la Computaci¶n
³a o Maricela Quintana
24
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
3. CAP¶ ¶
³TULO 3. TEOR¶ DE AUTOMATAS Y LENGUAJES
³A
REGULARES.
en que el autom¶ta est¶ y el s¶
a a ³mbolo que se est¶ analizando de la entrada.
a
As¶ la funci¶n de transici¶n del AFD de la ¯gura 3.1 es:
³ o o
E a b c d
0 1 ; 3 ;
1 ; 2 3 1
2 ; 2 3 ;
3 ; ; ; ;
La lectura de las reglas del diagrama de transici¶n es como sigue:
o
² Si estas en el estado cero y el s¶
³mbolo a procesar es a,entonces ve al
estado uno.
² Si estas en el estado uno y el s¶
³mbolo a procesar es c, entonces ve al
estado tres.
Otra forma de representar el comportamiento del AFD es mediante un dia-
grama de transici¶n, ¶ste es un grafo donde los nodos representan estados, y
o e
las °echas transiciones entre estados ocasionadas por la lectura del caracter
etiquetado en el arco.
Al observar el diagrama de transici¶n podr¶
o ³amos preguntarnos >cu¶l es el es-
a
tado inicial? o >cu¶les son los estados ¯nales? En el rengl¶n correspondiente
a o
³mbolo a, >qu¶ signi¯ca ;? Para dar respuesta a estas
al estado dos, bajo el s¶ e
preguntas, no basta con tener la funci¶n de transici¶n, necesitamos los dem¶s
o o a
componentes del AFD.
3.1.2 Especi¯car cu¶les son los elementos que confor-
a
man a una m¶quina de estados.
a
Un aut¶mata ¯nito determinista (AFD) M es una tupla M = (S; §; ±; S0 ; F )
o
donde
² S es el conjunto ¯nito de estados.
² § es un alfabeto.
Teor¶ de la Computaci¶n
³a o Maricela Quintana
25
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
4. ¶
3.1. AUTOMATAS FINITOS DETERMINISTAS.
² ± es una funci¶n de transici¶n:
o o
± : S£§!S (3.1)
b
± : S £ §¤ ! S (3.2)
² S0 es el estado inicial.
² F µ S es el conjunto de estados ¯nales.
La forma de denotar el estado inicial en un diagrama de transici¶n es me-
o
diante una punta de °echa. Los estados ¯nales se especi¯can colocando un
circulo interno en el nodo (ver ¯gura 3.1).
Un AFD lee la entrada de izquierda a derecha; un s¶ ³mbolo a la vez. Una vez
que el s¶³mbolo ha sido procesado ya no tiene ning¶n efecto en el resto del
u
proceso. En cualquier paso de la ejecuci¶n, el resultado depende unicamente
o ¶
del estado actual y la cadena a procesar. A esta combinaci¶n estado-cadena"
o
se le llama descripci¶n instant¶nea.
o a
Una descripci¶n instant¶nea de un aut¶mata es un par (s; x) donde s repre-
o a o
senta el estado donde se encuentra el aut¶mata en un momento dado, y x es
o
una cadena conteniendo los caracteres de entrada a¶ n no le¶
u ³dos. Si x = ay y
±(Si ; a) = Sj tenemos que:
(Si ; ay) `M (Sj ; y) (3.3)
¤
³mbolo `M signi¯ca en un paso del autom¶ta. De manera similar `M y
El s¶ a
+
`M signi¯can en cero o m¶s pasos y en uno o m¶s pasos respectivamente.
a a
¤
Un AFD reconoce a la cadena w como parte del lenguje si: (S0 ; w) `M (Si ; ¸)
y (Si 2 F )
P
Ejemplo 3 Las cadenas sobre = fa; bg que tienen a la subcadena bb o no
tienen a la subcadena aa son aceptadas por el DFA M de la ¯gura 3.2.
P
M = fS = fS0 ,S1 ,S2 ,S3 ,S4 ,S5 g, = fa; bg, ±, S0 , F = fS0 ,S1 ,S4 ,S5 gg
a) funci¶n de transici¶n
o o
Teor¶ de la Computaci¶n
³a o Maricela Quintana
26
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
5. CAP¶ ¶
³TULO 3. TEOR¶ DE AUTOMATAS Y LENGUAJES
³A
REGULARES.
Figura~3.2: Un aut¶mata que acepta strings conteniendo bb o no conteniendo
o
aa.
E a b
0 1 4
1 2 4
2 2 3
3 2 5
4 1 5
5 5 5
b) Descripciones de las cadenas abbab, babab, aab,aabba
² (S0 ; abbab) `M (S1 ; bbab) `M (S4 ; bab) `M (S5 ; ab) `M (S5 ; b) `M
(S5 ; ¸)
² (S0 ; babab) `M (S4 ; abab) `M (S1 ; bab) `M (S4 ; ab) `M (S1 ; b) `M
(S4 ; ¸)
² (S0 ; aab) `M (S1 ; ab) `M (S2 ; b) `M (S3 ; ¸)
² (S0 ; aabba) `M (S1 ; abba) `M (S2 ; bba) `M (S3 ; ba) `M (S5 ; a) `M
(S5 ; ¸)
3.1.3 Explicar que una m¶quina de estados (aut¶mata)
a o
es util para generar lenguajes.
¶
Un aut¶mata puede ser usado para representar un lenguaje, si se considera
o
P
la entrada como una cadena de caracteres ¤ . La cadena x es aceptada por
Teor¶ de la Computaci¶n
³a o Maricela Quintana
27
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
6. ¶
3.1. AUTOMATAS FINITOS DETERMINISTAS.
un AFD M si ¤
(S0 ; w) `M (Si ; ¸) y Si 2 F (3.4)
P
Ejemplo 4 Queremos generar L sobre = f1; 2g de todas las palabras que
contienen s¶lo un uno (al inicio) y por lo menos un dos al ¯nal. Es decir que
o
12, 1222, 12222 son palabras que pertenecen al lenguaje. De manera similar,
el aut¶mata de la ¯gura 3.3 reconoce a L = abb¤ .
o
Figura~3.3: Un aut¶mata que reconoce abb¤
o
3.1.4 De¯nir los t¶rminos: lenguaje generado por un
e
aut¶mata y equivalencia entre aut¶matas.
o o
El lenguaje de un AFD M, denotado L(M) es el conjunto de cadenas sobre
P¤
aceptadas por M. L siempre es regular.
¤
L(M ) = fwj(S0 ; w) `M (Si ; ¸) y Si 2 F g (3.5)
Ejemplo 5 El lenguaje generado por el AFD de la ¯gura 3.4 es L(M ) = ab+
Dos aut¶matas M1 y M2 son equivalentes si aceptan el mismo lenguaje, esto
o
es, L(M1 ) = L(M2 ).
Ejemplo 6 Los autom¶tas de las ¯guras 3.3 y 3.4 reconocen los lenguajes
a
L1 = abb y L2 = ab , dado que abb¤ = ab+ los aut¶matas reconocen el
¤ +
o
mismo lenguaje y por lo tanto son equivalentes.
Teor¶ de la Computaci¶n
³a o Maricela Quintana
28
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
7. CAP¶ ¶
³TULO 3. TEOR¶ DE AUTOMATAS Y LENGUAJES
³A
REGULARES.
Figura~3.4: Aut¶mata que reconoce ab+
o
3.1.5 Establecer las caracter¶
³sticas particulares de un
aut¶mata determinista.
o
Un aut¶mata determinista produce como salida dos posibles respuestas: ca-
o
dena aceptada o rechazada. Un AFD por de¯nici¶n debe procesar toda la
o
entrada.
Ejemplo 7 Al procesar la entrada w=ababb en el AFD de la ¯gura 3.3 ocurra
lo siguiente
(S0 ; ababb) `M (S1 ; babb) `M (S2 ; abb) `M (;; abb)
En ese momento sabemos perfectamente que la salida sera: rechazada.
El tipo de determinismo de los aut¶matas mostrados es llamado determi-
o
nismo incompleto. En ¶stos cada con¯guraci¶n tiene a lo m¶s una acci¶n
e o a o
especi¯cada. Las transiciones de la m¶quina est¶n de¯nidas por una funci¶n
a a o
P
parcial ± : S £ ! S. En el momento en que es posible determinar que una
cadena es rechazada, el proceso termina. Si el procesamiento termina antes
de haber analizado toda la cadena de entrada, la cadena es rechazada.
Una especi¯caci¶n incompleta de un DFA es transformada f¶cilmente a un
o a
DFA equivalente a~ adiendo un estado de error. En este estado se entra cada
n
vez que la m¶quina llega a una con¯guraci¶n para la cual no se ha especi¯cado
a o
alguna acci¶n. En este punto, la m¶quina lee el resto de la cadena y termina.
o a
Ejemplo 8 Para convertir el DFA de la ¯gura 3.3 especi¯cado incompleta-
mente, debemos agregar el estado S3 y las transiciones siguientes:
±(S0 ; b) = S3 , ±(S1 ; a) = S3 , ±(S2 ; a) = S3 , ±(S3 ; a) = S3 , ±(S3 ; b) = S3
El estado S3 ser¶ el estado de error. As¶ el procesamiento de la entrada
a ³
ababb es:
(S0 ; ababb) `M (S1 ; babb) `M (S2 ; abb) `M (S3 ; abb) `M (S3 ; bb) `M
(S3 ; b) `M (S3 ; ¸)
Teor¶ de la Computaci¶n
³a o Maricela Quintana
29
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
8. ¶
3.2. AUTOMATAS NO-DETERMINISTAS.
3.2 Aut¶matas no-deterministas.
o
Los aut¶matas que se analizaron en la secci¶n anterior responden de manera
o o
¶
determinista a una entrada. Esto signi¯ca que siempre responden de manera
unica a una entrada. Los aut¶matas no-deterministas pueden responder de
¶ o
varias maneras a una entrada. Inclusive pueden cambiar de estado sin leer
ning¶n caracter de entrada. A ¶sto se le llama transici¶n vac¶ (o transici¶n
u e o ³a o
¸) .
3.2.1 Especi¯car las caracter¶
³sticas de aut¶mata no-
o
determin¶
³stico
Un aut¶mata ¯nito no determinista (AFN) M es una tupla M = (S; §; ±; S0 ; F )
o
donde
² S es el conjunto ¯nito de estados.
² § es un alfabeto.
² ± es una funci¶n de transici¶n:
o o
± : S £ (§ [ f¸g) ! S ¤ (3.6)
² S0 es el estado inicial.
² F µ S es el conjunto de estados ¯nales.
Note que a diferencia de los aut¶matas deterministas, la regla de transi-
o
ci¶n de los AFN indica que un caracter (o ninguno) puede llevarnos de un
o
¶
estado a varios otros. Esto implica que hay varios caminos de ejecuci¶n que el
o
aut¶mata debe seguir. Si en alguno de los caminos de ejecuci¶n el aut¶mata
o o o
acepta una cadena de entrada, la cadena es aceptada. Es decir:
^
L(M ) = fx 2 §¤ j ± (S0 ; x) F 6= ;g (3.7)
Teor¶ de la Computaci¶n
³a o Maricela Quintana
30
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
9. CAP¶ ¶
³TULO 3. TEOR¶ DE AUTOMATAS Y LENGUAJES
³A
REGULARES.
3.2.2 Introducir el concepto de transiciones m¶ltiples
u
y transiciones nulas.
Un AFN permite varias transiciones posibles a partir de un mismo s¶³mbolo.
Adem¶s, puede haber transiciones nulas (o instant¶neas) no ocasionadas por
a a
s¶
³mbolos.
Ejemplo 9 Suponga que tenemos
X
M = (Q; ; ±; q0 ; fq2 ; q4 g) (3.8)
donde
± 0 1
q0 fq0 ; q3 g fq0 ; q1 g
q1 ; fq2 g
q2 fq2 g fq2 g
q3 fq4 g ;
q4 fq4 g fq4 g
^
Encontremos ± (q0 ; 01001) viendo las descripciones instant¶neas de la eje-
a
cuci¶n:
o
(q0 ; 01001) ` (fq0 ; q3 g; 1001) ` (fq0 ; q1 g [ ;; 001) ` (fq0 ; q3 g [ ;; 01)
` (fq0 ; q3 g [ fq4 g; 1) ` (fq0 ; q1 g [ ; [ fq4 g; ¸)
^
Por lo que ± (q0 ; 01001) = fq0 ; q1 ; q4 g: En esta corrida hubo varios cami-
nos de ejecuci¶n representados por la uni¶n de diferentes estados actuales.
o o
Note que un ; signi¯ca un camino que no puede continuar. La cadena es
aceptada por el aut¶mata pues
o
fq0 ; q1 ; q4 g fq2 ; q4 g = fq4 g 6= ;
Una transici¶n instant¶nea puede ser usada, aprovechando los m¶ ltiples
o a u
caminos de ejecuci¶n, para unir funcionalidades de aut¶matas.
o o
Ejemplo 10 En la ¯gura siguiente podemos ver el uso de las transiciones
vac¶ para obtener, en el primer caso, un aut¶mata que reconoce L(M1 ) [
³as o
L(M2 ), y en el segundo caso L(M1 )L(M2 ):
Teor¶ de la Computaci¶n
³a o Maricela Quintana
31
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a
10. ¶
3.2. AUTOMATAS NO-DETERMINISTAS.
λ λ
L(M1)
λ
L(M1) L(M2)
λ L(M2) λ
Figura~3.5: Uso de transiciones vac¶
³as.
3.2.3 Describir las facilidades que proporcionan este
tipo de aut¶matas para el dise~o de ciertos ti-
o n
pos de lenguajes, as¶ como las di¯cultades que
³
presentan para su automatizaci¶n.
o
Los AFN tienen un poder de representaci¶n mayor que los AFD, pues con
o
pocos estados es posible representar un funcionamiento complejo. Sin em-
bargo el poder de expresi¶n es el mismo, pues cualquier AFN tiene un AFD
o
equivalente.
Puede resultar dif¶ construir un programa que simule un AFN pues se
³cil
necesita guardar un espacio de estados enorme. Es por ello que normalmente
son convertidos a su AFD equivalente.
3.2.4 Explicar c¶mo puede convertirse un aut¶mata
o o
no-determin¶³stico a uno determin¶
³stico.
Primero hay que ver c¶mo quitar las transiciones nulas para transformar un
o
AFN-2 a su equivalente AFN. Primero hay que calcular
[
b
± : S £ (§ f¸g)¤ ! S (3.9)
utilizando la notaci¶n de cerradura-¸(q), que es el conjunto de v¶rtices p tales
o e
que hay un camino de ¸ entre q y p.
Teor¶ de la Computaci¶n
³a o Maricela Quintana
32
ITESM-CEM Dept. C.C. Jes¶s S¶nchez
u a