Este documento describe la conversión de un autómata finito no determinista (AFN) a un autómata finito determinista (AFD) utilizando el algoritmo de construcción de subconjuntos. El algoritmo construye los estados del AFD como subconjuntos de estados del AFN y la tabla de transiciones de manera que el AFD simule todos los posibles movimientos del AFN. Se implementa este algoritmo para convertir un ejemplo de AFN al lenguaje (a|b)*abb a un equivalente AFD.
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 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 la transformada de Laplace, un método operacional para resolver ecuaciones diferenciales lineales. La transformada de Laplace convierte funciones como sinusoidales, exponenciales y sinusoidales amortiguadas en funciones algebraicas de una variable compleja, permitiendo transformar ecuaciones diferenciales en ecuaciones algebraicas. También se detallan las transformadas de Laplace de funciones como exponenciales, escalón, rampa y sinusoidales.
Este documento describe el funcionamiento de diferentes tipos de latch y flip-flop digitales secuenciales, incluyendo sus configuraciones, tablas de verdad y diagramas de tiempo. Explica latch S-R con entradas activas a alto y bajo nivel, latch S-R y D con entrada de habilitación, y flip-flop S-R, JK, D y T. También incluye un análisis de resultados y una tabla con aplicaciones típicas de diferentes tipos de flip-flop.
El documento describe los circuitos contadores y sus componentes básicos como los flip-flops. Explica el funcionamiento de diferentes tipos de flip-flops como RS, JK, T y D. También describe el diseño de contadores digitales secuenciales usando flip-flops y tablas de transición. Finalmente, muestra ejemplos de diseño e implementación de contadores en un simulador.
Este documento presenta el diseño de sistemas secuenciales síncronos. Explica los conceptos de máquina de estados finitos, autómata de Moore y autómata de Mealy. Luego, muestra un ejemplo completo del diseño de un sistema secuencial que controla el tráfico en una confluencia de vías férreas, incluyendo tablas de estados, transiciones, asignación de variables de estado y tablas de verdad.
Este documento describe máquinas de estado finito (FSM), que son circuitos secuenciales cuyo comportamiento se puede representar mediante un número finito de estados. Explica que las FSM se implementan utilizando lógica combinacional y flip-flops, y que su diseño involucra determinar los estados y transiciones entre ellos en un diagrama de estado, y traducir esto a una tabla de estado. Luego, asigna valores binarios a los estados, diseña circuitos combinacionales para la salida y próximo estado, y usa esto para implementar un
Este documento presenta un resumen sobre máquinas de estado finito. Explica que una máquina de estado finito es una máquina abstracta que reconoce cadenas de caracteres y da una respuesta de "SÍ" o "NO" basada en las transiciones entre estados, las cuales se escogen por el siguiente carácter de la cadena. Describe los componentes clave de una máquina de estado finito como los estados, transiciones, estado inicial y estado final. También explica conceptos como máquinas equivalentes e isomorfismo entre máquinas.
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 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 la transformada de Laplace, un método operacional para resolver ecuaciones diferenciales lineales. La transformada de Laplace convierte funciones como sinusoidales, exponenciales y sinusoidales amortiguadas en funciones algebraicas de una variable compleja, permitiendo transformar ecuaciones diferenciales en ecuaciones algebraicas. También se detallan las transformadas de Laplace de funciones como exponenciales, escalón, rampa y sinusoidales.
Este documento describe el funcionamiento de diferentes tipos de latch y flip-flop digitales secuenciales, incluyendo sus configuraciones, tablas de verdad y diagramas de tiempo. Explica latch S-R con entradas activas a alto y bajo nivel, latch S-R y D con entrada de habilitación, y flip-flop S-R, JK, D y T. También incluye un análisis de resultados y una tabla con aplicaciones típicas de diferentes tipos de flip-flop.
El documento describe los circuitos contadores y sus componentes básicos como los flip-flops. Explica el funcionamiento de diferentes tipos de flip-flops como RS, JK, T y D. También describe el diseño de contadores digitales secuenciales usando flip-flops y tablas de transición. Finalmente, muestra ejemplos de diseño e implementación de contadores en un simulador.
Este documento presenta el diseño de sistemas secuenciales síncronos. Explica los conceptos de máquina de estados finitos, autómata de Moore y autómata de Mealy. Luego, muestra un ejemplo completo del diseño de un sistema secuencial que controla el tráfico en una confluencia de vías férreas, incluyendo tablas de estados, transiciones, asignación de variables de estado y tablas de verdad.
Este documento describe máquinas de estado finito (FSM), que son circuitos secuenciales cuyo comportamiento se puede representar mediante un número finito de estados. Explica que las FSM se implementan utilizando lógica combinacional y flip-flops, y que su diseño involucra determinar los estados y transiciones entre ellos en un diagrama de estado, y traducir esto a una tabla de estado. Luego, asigna valores binarios a los estados, diseña circuitos combinacionales para la salida y próximo estado, y usa esto para implementar un
Este documento presenta un resumen sobre máquinas de estado finito. Explica que una máquina de estado finito es una máquina abstracta que reconoce cadenas de caracteres y da una respuesta de "SÍ" o "NO" basada en las transiciones entre estados, las cuales se escogen por el siguiente carácter de la cadena. Describe los componentes clave de una máquina de estado finito como los estados, transiciones, estado inicial y estado final. También explica conceptos como máquinas equivalentes e isomorfismo entre máquinas.
1) El documento presenta un trabajo sobre autómatas y lenguajes formales independientes del contexto. 2) Analiza conceptos como autómatas de pila y expresiones regulares para validar campos de texto. 3) El objetivo general es reconocer lenguajes independientes del contexto y sus aplicaciones.
Este documento describe máquinas de estado, incluyendo su definición, clasificación y análisis y diseño de máquinas de estado síncronas. Explica que las máquinas de estado son circuitos secuenciales con un número determinado de estados posibles y que pueden ser retroalimentados o temporizados con una señal de reloj. Además, clasifica las máquinas de estado en síncronas y asincrónicas y según si sus salidas dependen solo del estado actual (Moore) o también de las entradas (Mealy). Finalmente,
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 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.
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 describe los conceptos fundamentales relacionados con el diseño de sistemas secuenciales, incluyendo máquinas de estados finitos, autómatas de Moore y Mealy, diagramas y tablas de estados, y el proceso de diseño de un sistema secuencial mediante la especificación de sus estados, transiciones, y funciones de salida y transición. También incluye un ejemplo detallado que ilustra cada paso del proceso de diseño para un sistema concreto.
El documento describe los conceptos de circuitos combinacionales y secuenciales. Explica que los circuitos combinacionales tienen salidas que dependen solo de las entradas actuales, mientras que los circuitos secuenciales tienen salidas que dependen tanto de las entradas actuales como de las entradas pasadas debido a que tienen memoria. También describe máquinas de estado finitas y autómatas de estado finito, incluyendo ejemplos de su representación y funcionamiento.
En este tema analizaremos los dos tipos de autómatas deterministas y no deterministas, veremos cada uno de los elementos y restricciones de estos autómatas y en que consiste cada uno de ellos.
El documento describe las definiciones matemáticas y propiedades de varias funciones unitarias comúnmente utilizadas en procesamiento de señales e ingeniería, incluyendo la función escalón unitario, función signo unitario, función rectangular unitario, función rampa unitario, función triángulo unitario, función seno cardinal unitario, función gaussiana unitario, función delta de Dirac unitario y función peinilla de Dirac unitario.
Este documento explica las aplicaciones fundamentales de la derivada, incluyendo calcular la pendiente de la tangente, estudiar la monotonía y curvatura de funciones, encontrar puntos de inflexión, máximos y mínimos, y resolver problemas de optimización. También cubre conceptos como la tasa de variación instantánea y los teoremas de Rolle, Lagrange y Cauchy, los cuales son herramientas importantes para aplicar la derivada.
Una función de transferencia es un modelo matemático que relaciona la respuesta de un sistema a una señal de entrada mediante un cociente. Laplace fue uno de los primeros en describir estos modelos matemáticamente. La función de transferencia se puede determinar como la transformada de Laplace de la respuesta dividida por la transformada de Laplace de la señal de entrada, y representa la respuesta de un sistema inicialmente inerte a un impulso.
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 presenta un resumen de las transformaciones de Laplace. Define la transformada de Laplace y sus propiedades como la linealidad y las propiedades de traslación en el tiempo y la frecuencia. Explica cómo usar las transformadas de Laplace para resolver ecuaciones diferenciales lineales con condiciones iniciales. Finalmente, establece las condiciones para la existencia de la transformada de Laplace y su transformada inversa.
Este documento describe las familias lógicas de circuitos integrados. Explica que una familia lógica es un conjunto de circuitos integrados que pueden interconectarse sin necesidad de interfaces. Luego describe algunas familias lógicas comunes como TTL y CMOS, y sus características como niveles lógicos, velocidad de operación y fan-out. Finalmente, cubre temas como diagramas de Karnaugh y expresiones lógicas en forma de productos mínimos.
Este documento describe los autómatas finitos deterministas (AFD). Explica que un AFD está compuesto por un conjunto finito de estados, un estado inicial, un alfabeto de entrada, una función de transición y un conjunto de estados finales. También describe cómo un AFD funciona al leer símbolos de entrada y cambiar de estado, y cómo se puede representar formalmente o mediante tablas de transición o diagramas de estados. Finalmente, define el lenguaje aceptado por un AFD como el conjunto de cadenas que llevan al autómata a
Este documento presenta diferentes formas canónicas de representación por variables de estado para sistemas de control lineales e invariantes en el tiempo, incluyendo las formas canónicas de controlabilidad, observabilidad, modal y de Jordan. También discute ecuaciones de estado en tiempo discreto y la matriz de función de transferencia pulso para sistemas discretos de múltiples entradas y salidas. El documento contiene ejemplos y diagramas de bloques para ilustrar cada forma canónica.
El documento describe las funciones de transferencia, que son modelos matemáticos que relacionan la salida de un sistema con su entrada. Explica que una función de transferencia se define como la transformada de Laplace de la respuesta dividida por la transformada de Laplace de la entrada. También describe formas gráficas de representar funciones de transferencia, como diagramas de polos y ceros, diagramas de Bode y diagramas de Black.
Este documento presenta las aplicaciones fundamentales de las derivadas en matemáticas. Explica conceptos como la monotonía, curvatura y puntos de inflexión de funciones, así como cómo usar derivadas para encontrar máximos y mínimos. También cubre la regla de L'Hôpital, tasas de variación, teoremas como los de Rolle y Cauchy, y aplicaciones como la optimización y representación gráfica de funciones. Concluye que las derivadas tienen muchas aplicaciones prácticas en ingeniería, física y economía, más allá de
Los autómatas finitos no deterministas (AFND) permiten múltiples transiciones posibles ante una situación dada y transiciones sin símbolos de entrada. Un AFND se define como una tupla que incluye un conjunto de estados, una función de transición que mapea pares de estados y símbolos a subconjuntos de estados, un estado inicial y un conjunto de estados finales. El lenguaje aceptado por un AFND incluye todas las cadenas que pueden llevar al AFND a un estado final. Los AFND y autómatas finitos
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.
1) El documento presenta un trabajo sobre autómatas y lenguajes formales independientes del contexto. 2) Analiza conceptos como autómatas de pila y expresiones regulares para validar campos de texto. 3) El objetivo general es reconocer lenguajes independientes del contexto y sus aplicaciones.
Este documento describe máquinas de estado, incluyendo su definición, clasificación y análisis y diseño de máquinas de estado síncronas. Explica que las máquinas de estado son circuitos secuenciales con un número determinado de estados posibles y que pueden ser retroalimentados o temporizados con una señal de reloj. Además, clasifica las máquinas de estado en síncronas y asincrónicas y según si sus salidas dependen solo del estado actual (Moore) o también de las entradas (Mealy). Finalmente,
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 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.
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 describe los conceptos fundamentales relacionados con el diseño de sistemas secuenciales, incluyendo máquinas de estados finitos, autómatas de Moore y Mealy, diagramas y tablas de estados, y el proceso de diseño de un sistema secuencial mediante la especificación de sus estados, transiciones, y funciones de salida y transición. También incluye un ejemplo detallado que ilustra cada paso del proceso de diseño para un sistema concreto.
El documento describe los conceptos de circuitos combinacionales y secuenciales. Explica que los circuitos combinacionales tienen salidas que dependen solo de las entradas actuales, mientras que los circuitos secuenciales tienen salidas que dependen tanto de las entradas actuales como de las entradas pasadas debido a que tienen memoria. También describe máquinas de estado finitas y autómatas de estado finito, incluyendo ejemplos de su representación y funcionamiento.
En este tema analizaremos los dos tipos de autómatas deterministas y no deterministas, veremos cada uno de los elementos y restricciones de estos autómatas y en que consiste cada uno de ellos.
El documento describe las definiciones matemáticas y propiedades de varias funciones unitarias comúnmente utilizadas en procesamiento de señales e ingeniería, incluyendo la función escalón unitario, función signo unitario, función rectangular unitario, función rampa unitario, función triángulo unitario, función seno cardinal unitario, función gaussiana unitario, función delta de Dirac unitario y función peinilla de Dirac unitario.
Este documento explica las aplicaciones fundamentales de la derivada, incluyendo calcular la pendiente de la tangente, estudiar la monotonía y curvatura de funciones, encontrar puntos de inflexión, máximos y mínimos, y resolver problemas de optimización. También cubre conceptos como la tasa de variación instantánea y los teoremas de Rolle, Lagrange y Cauchy, los cuales son herramientas importantes para aplicar la derivada.
Una función de transferencia es un modelo matemático que relaciona la respuesta de un sistema a una señal de entrada mediante un cociente. Laplace fue uno de los primeros en describir estos modelos matemáticamente. La función de transferencia se puede determinar como la transformada de Laplace de la respuesta dividida por la transformada de Laplace de la señal de entrada, y representa la respuesta de un sistema inicialmente inerte a un impulso.
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 presenta un resumen de las transformaciones de Laplace. Define la transformada de Laplace y sus propiedades como la linealidad y las propiedades de traslación en el tiempo y la frecuencia. Explica cómo usar las transformadas de Laplace para resolver ecuaciones diferenciales lineales con condiciones iniciales. Finalmente, establece las condiciones para la existencia de la transformada de Laplace y su transformada inversa.
Este documento describe las familias lógicas de circuitos integrados. Explica que una familia lógica es un conjunto de circuitos integrados que pueden interconectarse sin necesidad de interfaces. Luego describe algunas familias lógicas comunes como TTL y CMOS, y sus características como niveles lógicos, velocidad de operación y fan-out. Finalmente, cubre temas como diagramas de Karnaugh y expresiones lógicas en forma de productos mínimos.
Este documento describe los autómatas finitos deterministas (AFD). Explica que un AFD está compuesto por un conjunto finito de estados, un estado inicial, un alfabeto de entrada, una función de transición y un conjunto de estados finales. También describe cómo un AFD funciona al leer símbolos de entrada y cambiar de estado, y cómo se puede representar formalmente o mediante tablas de transición o diagramas de estados. Finalmente, define el lenguaje aceptado por un AFD como el conjunto de cadenas que llevan al autómata a
Este documento presenta diferentes formas canónicas de representación por variables de estado para sistemas de control lineales e invariantes en el tiempo, incluyendo las formas canónicas de controlabilidad, observabilidad, modal y de Jordan. También discute ecuaciones de estado en tiempo discreto y la matriz de función de transferencia pulso para sistemas discretos de múltiples entradas y salidas. El documento contiene ejemplos y diagramas de bloques para ilustrar cada forma canónica.
El documento describe las funciones de transferencia, que son modelos matemáticos que relacionan la salida de un sistema con su entrada. Explica que una función de transferencia se define como la transformada de Laplace de la respuesta dividida por la transformada de Laplace de la entrada. También describe formas gráficas de representar funciones de transferencia, como diagramas de polos y ceros, diagramas de Bode y diagramas de Black.
Este documento presenta las aplicaciones fundamentales de las derivadas en matemáticas. Explica conceptos como la monotonía, curvatura y puntos de inflexión de funciones, así como cómo usar derivadas para encontrar máximos y mínimos. También cubre la regla de L'Hôpital, tasas de variación, teoremas como los de Rolle y Cauchy, y aplicaciones como la optimización y representación gráfica de funciones. Concluye que las derivadas tienen muchas aplicaciones prácticas en ingeniería, física y economía, más allá de
Los autómatas finitos no deterministas (AFND) permiten múltiples transiciones posibles ante una situación dada y transiciones sin símbolos de entrada. Un AFND se define como una tupla que incluye un conjunto de estados, una función de transición que mapea pares de estados y símbolos a subconjuntos de estados, un estado inicial y un conjunto de estados finales. El lenguaje aceptado por un AFND incluye todas las cadenas que pueden llevar al AFND a un estado final. Los AFND y autómatas finitos
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.
Este documento describe los autómatas finitos determinísticos y no determinísticos. Define un autómata finito como una máquina que puede aceptar entradas y producir salidas basadas en su estado interno. Explica que un autómata finito determinístico tiene exactamente un estado siguiente para cada par estado-entrada, mientras que un autómata no determinístico puede tener múltiples estados siguientes. También cubre las representaciones de tablas de transición y diagramas de estado, y cómo manejar transiciones epsilon.
Examen final Autómatas y Lenguajes FormalesDiego Perdomo
1. La operación estrella en expresiones regulares permite representar cadenas de longitud variable formadas por repeticiones de una expresión regular α. Específicamente, α* denota las cadenas vacía, α, αα, ααα, etc. donde α se repite cero o más veces.
2. Una máquina de Turing se inicializa colocando la cinta en blanco y la cabeza sobre la primera posición, y luego se introduce la cadena de entrada en la cinta. El estado inicial se coloca una vez introducida la cadena.
3. Un autómata finit
Este documento describe los lenguajes regulares, incluyendo que pueden ser reconocidos por autómatas finitos o expresiones regulares. Explica los autómatas finitos deterministas y no deterministas, y cómo se pueden representar mediante tablas de transición de estados o diagramas de estados. También cubre expresiones regulares y la operación de clausura de Kleene. Por último, introduce el lema de bombeo para demostrar que ciertos lenguajes infinitos no son regulares.
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.
Este documento propone un algoritmo que reduce la complejidad computacional al convertir un Autómata Finito No Determinístico (AFND) a un Autómata Finito Determinístico (AFD). Los algoritmos existentes tienen una complejidad exponencial O(2n) debido a las múltiples combinaciones de estados posibles entre los autómatas. El nuevo algoritmo solo considera los estados alcanzables desde el estado inicial, eliminando los estados inalcanzables y reduciendo así la complejidad computacional.
Este documento trata sobre la función de transferencia de sistemas lineales invariantes en el tiempo. Explica que la función de transferencia es la relación entre la transformada de Laplace de la salida y la entrada de un sistema, y permite determinar la respuesta del sistema para cualquier entrada. También describe cómo obtener la función de transferencia a partir de ecuaciones diferenciales, y los conceptos de polos, ceros y estabilidad. Por último, muestra un ejemplo de cómo hallar polos y ceros usando MATLAB.
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.
El documento define los autómatas de pila y explica sus componentes. Los autómatas de pila analizan cadenas de manera similar a los autómatas finitos pero con la adición de una memoria interna en forma de pila, lo que incrementa su potencial de procesamiento de lenguaje. Los autómatas de pila pueden reconocer lenguajes que los autómatas finitos no pueden, como las cadenas formadas por xnyn. El documento también discute cómo los autómatas de pila pueden usarse para aceptar len
Este documento describe las máquinas de estado finito, las cuales reconocen cadenas de caracteres y dan una respuesta de "sí" o "no" basada en las transiciones entre estados. Estas máquinas comienzan en un estado inicial y se mueven a estados siguientes basados en los caracteres de la cadena, hasta que la cadena termina o no hay más transiciones posibles. Si el estado final es alcanzado con la cadena vacía, la respuesta es "sí", de lo contrario es "no".
Este documento describe las máquinas de estado finito, las cuales reconocen cadenas de caracteres y dan una respuesta de "SÍ" o "NO" basada en las transiciones entre estados. El proceso comienza en un estado inicial y se mueve a estados siguientes según el carácter analizado, hasta que la cadena esté vacía o no haya más transiciones posibles. Si el estado final es alcanzado con la cadena vacía, la respuesta es "SÍ", de lo contrario es "NO".
Este documento resume los conceptos de autómatas finitos determinísticos y no determinísticos. Explica que los autómatas finitos no determinísticos pueden tener múltiples estados siguientes para un símbolo dado, mientras que los determinísticos solo tienen un estado siguiente único. También demuestra que para cualquier autómata finito no determinístico existe un equivalente determinístico y describe el algoritmo para construirlo. Finalmente, presenta el algoritmo para minimizar un autómata finito determinístico mediante la agrupación de
Este documento describe los circuitos secuenciales asíncronos o autómatas finitos asíncronos, los cuales funcionan sin un reloj. Explica que estos circuitos no permiten cambios simultáneos en las variables de entrada para evitar carreras críticas. También describe los modelos de Mealy y Moore, y los pasos para diseñar este tipo de circuitos, incluyendo construir una tabla primitiva de estados y reducir los estados.
Este documento resume los conceptos clave de los autómatas finitos y las expresiones regulares. Explica que los autómatas finitos son modelos matemáticos que reconocen patrones en cadenas de entrada y los aceptan si conducen a un estado final. Incluye ejemplos de autómatas finitos deterministas y no deterministas, y define sus componentes. También provee una bibliografía sobre el tema.
El documento describe las funciones de transferencia, que son modelos matemáticos que relacionan la salida de un sistema con su entrada. Explica que una función de transferencia se define como la transformada de Laplace de la respuesta dividida por la transformada de Laplace de la entrada. También describe formas gráficas de representar funciones de transferencia como diagramas de polos y ceros, diagramas logarítmicos de Bode, y diagramas de Black.
Este documento proporciona instrucciones sobre el uso de varios comandos de MATLAB para el análisis y simulación de sistemas de control, incluyendo comandos para calcular raíces, respuestas temporales, lugar de las raíces, diagramas de Bode, y sistemas de realimentación. Explica cómo definir funciones de transferencia y aplicar comandos como impulse, step, rlocus, bode, feedback y margin para analizar las propiedades de dichas funciones.
Presentacion Autómata finito No deterministicoAnyela Baez
Un autómata finito no determinista (AFND) es un autómata finito que puede tener más de una transición posible desde un estado dado para un símbolo particular, a diferencia de los autómatas finitos deterministas. Los AFND pueden reconocer el mismo lenguaje que los autómatas finitos deterministas y son útiles para simplificar la construcción y demostración de propiedades en teoría de la computación.
Presentación Autómatas Finito No DeterministicoScarlinr
Un autómata finito no determinista (AFND) es un autómata que puede tener más de una transición posible desde un estado dado para un símbolo dado, a diferencia de los autómatas finitos deterministas. Los AFND permiten representar lenguajes de forma más simple que los autómatas deterministas y son equivalentes a ellos en poder de reconocimiento. Pueden implementarse de varias formas como convirtiéndolos a autómatas deterministas equivalentes o manteniendo múltiples copias del autómata.
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.
1. agosto 2003 61INGENIERÍA DE SISTEMAS E INFORMÁTICA
Vol. (6) 1: pp. 61-70
RESUMEN
El artículo presenta la conversión
de un autómata finito no
determinista (AFN) a un autómata
finito determinista (AFD), haciendo
uso de la construcción por
subconjuntos. El algoritmo de
construcción por subconjuntos se
basa en la clausura transitiva o
cerradura ? , la implementación se
realiza mediante un programa en
lenguaje C++ , cuyo código y
salida se presentan en su totalidad.
Palabras Claves: Autómata finito
no determinista. Autómata finito
determinista. Grafo de
transiciones. Construcción de
subconjuntos.
ABSTRACT
This article presents the change
from a non-determinist fnite
automaton (AFN) into a determinist
finite automaton (AFD), making use
of a subset construction. The
subset construction algorithm is
based on the transitive closure or
? ?lock. Its implementation is done
through a C++ language program,
whose code and output are
thoroughly presented.
Key Words: Non-Determinist
Finite Automaton. Determinist Finite
Automaton. Transition graph.
Subset construction.
CONVERSIÓN
DEUNAFNAUNAFD
(1)
EdgarRuizL.
(2)
EduardoRaffoL.
(1)
DocentedelDepartamentodeIngenieríadeSistemaseInformática.
FacultaddeIngenieríaIndustrial,UNMSM
E-mail:eruizl@unmsm.edu.pe
(2)
DocentedelDepartamentodeIngenieríadeSistemaseInformática.
FacultaddeIngenieríaIndustrial,UNMSM
E-mail:eraffol@unmsm.edu.pe
(*)
Losfundamentosteóricoshansidotomadosdelaprimerareferenciamencionadaenlabibliografía.Elprogramaenlenguaje
C++presentalaimplementacióndedichosalgoritmos.
AUTÓMATAS FINITOS(*)
Un reconocedor de un lenguaje es un programa que toma como entrada una cadena “x y”,
responde "si" si x es una frase del programa, y "no", si no lo es. Se compila una expresión regular
en un reconocedor construyendo un diagrama de transiciones generalizado llamado autómata finito.
Un autómata finito puede ser determinista o no determinista, donde "no determinista" significa que en
un estado se puede dar el caso de tener mas de una transición para el mismo símbolo de entrada.
Autómatas finitos no deterministas
Un autómata finito no determinista (abreviado, AFN) es un modelo formado por:
1. Un conjunto de estados denotados como: estados S.
2. Un conjunto de símbolos de entrada S (el alfabeto símbolos de entrada).
3. Una función de transición mover que transforma pares estado-símbolo en conjuntos de estados.
4. Un estado S0 que se considera el estado de inicio (o inicial).
5. Un conjunto de estados F considerados como estados de aceptación (o finales).
Un AFN se puede representar mediante un grafo dirigido etiquetado, llamado grafo de transiciones,
en el que los nodos son los estados y las aristas etiquetadas representan las funciones de transición.
Este grafo se parece a un diagrama de transiciones, pero el mismo carácter puede etiquetar dos o
más transiciones fuera de un estado, y las aristas pueden etiquetarse con el símbolo especial ? ?y
con símbolos de entrada.
En la Figura 1, se muestra el grafo de transiciones de un AFN que reconoce al lenguaje (a|b)*abb.
El conjunto de estados del AFN es {0,1,2,3} y el alfabeto de símbolos de entrada es {a, b}. El estado
0 de la figura 1 se considera el estado de inicio, y el estado de aceptación 3 está indicado mediante
un círculo doble.
Cuando se describe un AFN, se utiliza la representación de grafo de transiciones. En un computador,
puede aplicarse la función de transición de un AFN de varias formas. La implantación más sencilla es
una tabla de transiciones en donde hay una fila por cada estado y una columna por cada símbolo de
entrada y ? , si es necesario.
2. 62
agosto 2003INGENIERÍA DE SISTEMAS E INFORMÁTICA
210 3
a bbinicio
a
b
Figura 1. Un autómata finito no determinista
La entrada para la fila “i” y el símbolo “a” en la tabla es el conjunto
de estados (o más probablemente en la práctica, un apuntador al
conjunto de estados) que puede ser alcanzado por una transición
del estado “i” con la entrada “a”. En el Cuadro 1, se muestra la
tabla de transiciones para el AFN de la Figura 1.
El lenguaje definido por un AFN es el conjunto de cadenas de
entrada que acepta.
Ejemplo 1. En la Figura 2, se ve un AFN que reconoce aa*| bb*.
La cadena aaa es aceptada recorriendo los estados 0,1,2,2 y 2.
Las etiquetas de estas aristas son? , a, a y a,cuyaconcatenación
es aaa. Obsérvese, que los símbolos ? "desaparecen" en una
concatenación.
Autómatas finitos deterministas
Un autómata finito determinista (abreviado, AFD) es un caso es-
pecial de un autómata finito no determinista en el cual:
1. Ningún estado tiene una transición? , es decir, una transición
con la entrada ? , y
2. Para cada estado s y cada símbolo de entrada a, hay
exactamente una arista etiquetada a que sale de s.
Un autómata finito determinista tiene una transición desde cada
estado con cualquier entrada. Si se está usando una tabla de
Cuadro 1. Transiciones para el autómata finito de la figura 1
ESTADO SIMBOLO DE ENTRADA
A B
0 { 0, 1} {0}
1 - {2}
2 - {3}
1 2
a
0
3 4
b
b
a
inicio
?
?
transiciones para representar la función de transición de un AFD,
entonces cada entrada en la tabla de transiciones es un solo
estado.Comoconsecuenciaesmuyfácildeterminarsiunautómata
finito determinista acepta o no una cadena de entrada, puesto que
hay a lo sumo un camino desde el estado de inicio etiquetado con
esa cadena.
Algoritmo 1: Simulación de un AFD
Entrada. Una cadena de entrada “x” que termina con un carácter
de fin de archivo eof. Un AFD D con un estado de inicio “S0” y un
conjunto “F” de estados de aceptación.
Salida. La respuesta "sí", si D acepta “x”, "no", en caso contrario.
Método. Aplicar el algoritmo de la Figura 3 a la cadena de
entrada “x”. La función mover(s, c) da el estado al cual hay
una transición desde el estado “s” en un carácter de entrada
“c”. La función "sgtecar" devuelve el siguiente carácter de la
cadena de entrada “x”.
Figura 2. Un AFN que acepta aa*| bb*
>>> CONVERSIÓN DE UN AFN A UN AFD
3. agosto 2003 63INGENIERÍA DE SISTEMAS E INFORMÁTICA
Conversión de un AFN en un AFD
Se observa que el AFN de la Figura 1, tiene dos transiciones
desde el estado “0” con la entrada “a”; es decir, puede ir al estado
“0” o al 1. Igualmente, el AFN de la Figura 3 tiene dos transiciones
en ? desde el estado “0”.
Ahora se introduce un algoritmo para construir a partir de un AFN
un AFD que reconozca el mismo lenguaje. Este algoritmo se le
conoce como construcción de subconjuntos, es útil para simular
un AFN por medio de un programa de computador.
Algoritmo 2: Construcción de subconjuntos. Construcción de un
AFD a partir de un AFN.
Entrada. Un AFN N.
Salida. Un AFD D que acepta el mismo lenguaje.
Método. El algoritmo construye una tabla de transiciones tranD
para “D”. Cada estado del AFD es un conjunto de estados del
AFN y se construye tranD de modo que“D” simulará en paralelo
todos los posibles movimientos que “N” puede realizar con una
determinada cadena de entrada.
s:=s0;
c:=sgtecar(car);
while c < > eof do
s:=mover(s,c);
c:=sgtecar(car);
end;
if s está en F then
return “si”
else
return “no”;
Figura 3. Simulación de un AFD
OPERACION DESCRIPCIÓN
cerradura-? (s)
Conjunto de estados del AFN alcanzables desde el
estado s del AFN con transiciones ? solamente.
cerradura-? (T)
Conjunto de estados del AFN alcanzables desde
algún estado s en T con transiciones ? solamente.
mover(T, a)
Conjunto de estados del AFN hacia los cuales hay
una transición con el símbolo de entrada a desde
algún estado s en T del AFN.
Cuadro 2. Operaciones sobre los estados de un AFN
al inicio cerradura-? (s0) es el único estadosD y no esta marcado;
while haya un estado no marcado T en estadosD do begin
marcar T;
for cada símbolo de entrada a do
begin
U:= cerradura-? (mover(T, a));
If U no esta en estadosD then
añadir Ucomo estado no marcado a estadosD;
tranD(T, a):= U
end
end
Figura 4. La construcción de subconjuntos
Se utilizan las operaciones del Cuadro 2, para localizar los
conjuntos de los estados del AFN (“s” representa un estado del
AFN, y “T”, un conjunto de estados del AFN).
Antes de detectar el primer símbolo de entrada, “N” se puede
encontrar en cualquiera de los estados del conjunto cerradura-?
(s0
), donde s0
es el estado de inicio de K. Supóngase que
exactamente los estados del conjunto “T” son alcanzables desde
s0
con una secuencia dada de símbolos de entrada, y sea a el
siguiente símbolo de entrada. Al ver a, “N” puede trasladarse a
cualquiera de los estados del conjunto mover(T, a). Cuando se
permiten transiciones-? , N puede encontrarse en cualquiera de
los estados de cerradura-? (T, a), después de ver la “a”.
Se construyen estados “D”; el conjunto de estados de “D”; y
tranD, la tabla de transiciones de“D”, de la siguiente forma. Cada
estado de “D” corresponde a un conjunto de estados de AFN en
los que podría estar “N” después de leer alguna secuencia de
símbolos de entrada, incluidas todas las posibles transiciones- ?
anteriores o posteriores a la lectura de símbolos.
El estado de inicio de “D” es cerradura-? (s0
). Se añaden los
estados y las transiciones a“D” utilizando el algoritmo de la Figura
4. Un estado de “D” es un estado de aceptación si es un conjunto
deestadosdeAFNquecontengaalmenosunestadodeaceptación
de “N”.
El cálculo de cerradura-? (T) es un proceso típico de búsqueda
en un grafo de nodos alcanzables desde un conjunto dado de
nodos. En este caso, los estados de “T” son el conjunto dado de
nodos, y el grafo esta compuesto solamente por las aristas del
AFN etiquetadas por ? .
Un algoritmo sencillo para calcular cerradura-? (T) utiliza una
estructura de datos tipo pila para guardar estados en cuyas aris-
tas no se hayan buscado transiciones etiquetadas con ? . Este
procedimiento se muestra en la Figura 5.
Edgar Ruiz L. y Eduardo Raffo L. >>>
4. 64
agosto 2003INGENIERÍA DE SISTEMAS E INFORMÁTICA
Implementación de los algoritmos para convertir un AFN
en un AFD
Para la implementación de estos algoritmos se utiliza el AFN “N”
de la Figura 6 que acepta el lenguaje (a|b)*abb.
Se aplica el Algoritmo 2. Construcción de subconjuntos a “N”. El
estado de inicio del AFD equivalente es cerradura-? (0), que es
A = {0,1,2,4,7}, puesto que estos son alcanzados desde el estado
0 por un camino en que todas las aristas están etiquetadas por? .
El alfabeto de símbolos de entrada es {a, b}. Ahora el algoritmo
indica que debe marcarse “A” y después calcular
cerradura-? (mover(A, a))
Calculando primero mover(A, a), el conjunto de estados de “N”
que tiene transiciones en “a” desde miembros de “A”. Entre los
estados 0,1,2,4 y 7 sólo 2 y 7 tienen dichas transiciones, a 3 y a
8, de modo que:
meter todos los estados de T en pila;
inicializar cerradura-? (T) a T;
while pila no esté vacía do
begin
sacar t, el elemento del tope, de pila;
for cada estado u con una arista desde t a u etiquetada con ?do
if u no esta en cerradura-? (T) do
begin
añadir u a cerradura-? (T);
meter u en pila
end
end
end
Figura 5. Cálculo de cerradura-?
0 1
2 3
4 5
6 7 8 9 10
inicio
?
?
Figura 6. AFN N que acepta (a|b)*abb
63 3 7
8
1
4
2 2
pila t = 8
t = 3 t = 6 t = 7
(3,6) (6,7)
(6,1)
(1,2)
(1,4)
t = 1
t = 4
t = 2
Figura 7. tranD[A, a] = B
cerradura-? (mover({0,1,2,4,7}, a)) =
cerradura-? (3,8) = {1,2,3,4,6,7,8}
Este conjunto se denominará “B”. Así, tranD[A, a] = B. En la
Figura 7, se presenta el cálculo de la cerradura-? . Entre los
estados de “A”, sólo 4 tienen una transición en “b” a 5, de modo
que el AFD tiene una transición en “b” desde “A a”.
cerradura-? (A, b)
cerradura-? (mover(A, b)) = cerradura-? ({5})
cerradura-? ({5}) = {1,2,4,5,6,7}
Por lo que, tranD[A, b] = C. Es decir; C = {1,2,4,5,6,7}
Se continúa este proceso con los conjuntos B y C, ahora sin
marcar, finalmente se llegará al punto en que todos los conjuntos
que son del estado AFD estén marcados.
>>> CONVERSIÓN DE UN AFN A UN AFD
5. agosto 2003 65INGENIERÍA DE SISTEMAS E INFORMÁTICA
Los dos estados siguientes son:
cerradura-? ({5,9}) = {1,2,4,5,6,7,9}
y
cerradura-? ({5,10}) = {1,2,4,5,6,7,10}
Resumiendo los cinco conjuntos de estados construidos son:
A = {0,1,2,4,7}
B = {1,2,3,4,6,7,8}
C = {1,2,4,5,6,7}
D = {1,2,4,5,6,7,9}
E = {1,2,4,5,6,7,10}
Figura 8. tranD[A, b] = C
5 6 7
1
7
2
7
4
2
7
pila
t = 5 t = 6
t = 1
(5,6) (6,7) (6,1)
(1,2)
(1,4)
Cuadro 3. Transiciones tranD para el AFD resultante
ESTADO SIMBOLO DE ENTRADA
a b
A B C
B B D
C B C
D B E
E B C
0 1 3 4
2
inicio bba
a
a
a
a
b
b
b
El estado “A” es el estado de inicio, y el estado “E” es el único
estado de aceptación. La tabla de transiciones completa tranD se
muestra en el Cuadro 3.
Finalmente en la Figura 9 se muestra el grafo de transiciones
para el AFD resultante.
EL PROGRAMA
El programa AFNAFD.CPP se ha escrito en lenguaje C++, usando
el compilador Turbo C/C++ 3.0 para MS-DOS. Se emplea la
estructura de datos Pila. El símbolo ? (epsilon) se define a -1
como una constante simbólica. La matriz bidimensional de estados
del AFN “N” se inicializa dentro del programa.
El código del programa se muestra en su totalidad en las
subsiguientes figuras.
Figura 9. Resultado de aplicar la construcción de subconjuntos al AFN N de la figura 8
Edgar Ruiz L. y Eduardo Raffo L. >>>
7. agosto 2003 67INGENIERÍA DE SISTEMAS E INFORMÁTICA
Figura 11. Código del programa: Segunda parte
clrscr();
*t=0;m=1;
cout << "estado : " << nest << endl;
e_clausura(t,m,a,na);
copy(a,na,estadosD,nest,nD);
for(i=0;i<strlen(alfabeto);i++) {
mover(a,na,t,m,alfabeto[i]);
cout << "estado : " << nest << endl;
print(t,m,alfabeto[i]);
copy(t,m,estadosD,nest,nD);
}
for(k=1;k<nest;k++) {
for(j=0;j<nD[k];j++)
t[j]=estadosD[k][j];
m=nD[k];cout << " K : " << k << endl;
e_clausura(t,m,a,na);
for(i=0;i<strlen(alfabeto);i++) {
mover(a,na,t,m,alfabeto[i]);
if(m) {
if(no_marcado(t,m,estadosD,nest)) {
cout << "estado : " << nest << endl;
copy(t,m,estadosD,nest,nD);
print(t,m,alfabeto[i]);
}
else
print(t,m,alfabeto[i]);
}
}
}
aceptacion();
print_estadosD(estadosD,nest,nD);
}
void print_estadosD(int estadosD[][AFN_MAX],int nest,int nD[])
{
register int i,j;
clrscr();
cout << " AFD AFN " << endl;
cout << "---------------------------------------" << endl;
for(i=0;i<nest;i++) {
cout << setw(4) << i << " : ";
for(j=0;j<nD[i];j++)
cout << setw(4) << estadosD[i][j];
cout << endl;
}
cout << "---------------------------------------" << endl;
getch();
}
void aceptacion()
{
cout << "estados de aceptacion tienen los nodos : ";
for(int i=0;i<AFN_MAX;i++)
if(aristas[i][i]==ACEPTA)
cout << setw(4) << i;
getch();
Edgar Ruiz L. y Eduardo Raffo L. >>>
8. 68
agosto 2003INGENIERÍA DE SISTEMAS E INFORMÁTICA
}
void e_clausura(int* s,int n,int* a,int &na)
{
int i,j,t,u;
STACKPTR p;
// meter todos los estados en pila
// inicializar cerradura a
init(p);
na=0;
for(i=0;i<n;i++) {
push(p,s[i]);
a[i]=s[i];
na++;
}
while(!empty(p)) {
t=pop(p);
for(u=0;u<AFN_MAX;u++)
if(aristas[t][u]==EPSILON) {
i=0;
while(i<na && u!=a[i])
i++;
if(i==na) {
// a¤adir u a cerradura
a[na++]=u;
// meter u a pila
push(p,u);
}
}
}
cout << " T : " ;
for(j=0;j<na;j++)
cout << setw(4) << a[j];
cout << endl;
}
void print(int* t,int m,char c)
{
register int j;
cout << " mover(T," << c << ") : ";
for(j=0;j<m;j++)
cout << setw(4) << t[j];
cout << endl;
}
void copy(int* t,int m,int estadosD[][AFN_MAX],int &nest,int* nD)
{
register int i;
for(i=0;i<m;i++)
estadosD[nest][i]=t[i];
nD[nest]=m;
++nest;
}
void mover(int* a,int na,int* t,int &m,int c)
{
Figura 12. Código del programa: Tercera parte
>>> CONVERSIÓN DE UN AFN A UN AFD
9. agosto 2003 69INGENIERÍA DE SISTEMAS E INFORMÁTICA
Figura 13. Código del programa: Cuarta parte
int i,j,k;
m=0;
for(i=0;i<na;i++) {
k=a[i];
for(j=0;j<AFN_MAX;j++)
if(aristas[k][j]==c)
t[m++]=j;
}
}
bool no_marcado(int* t,int m,int estadosD[][AFN_MAX],int nest)
{
int k=0,j,i;
for(k=0;k<nest;k++) {
i=0;
for(j=0;j<m;j++)
if(t[j]==estadosD[k][j])
i++;
if(i==m)
return FALSE;
}
return TRUE;
}
bool empty(STACKPTR ps)
{
if(ps->top==-1)
return TRUE;
else
return FALSE;
}
int pop(STACKPTR ps)
{
if(empty(ps)) {
cout << "n pila vacia " << endl;
exit(1);
}
return (ps->items[ps->top--]);
}
void push(STACKPTR ps,int x)
{
if(ps->top==STACKSIZE-1) {
cout << "n stack overflow" << endl;
exit(1);
}
else
ps->items[++(ps->top)]=x;
}
void init(STACKPTR ps)
{
ps->top=-1;
}
Edgar Ruiz L. y Eduardo Raffo L. >>>
10. 70
agosto 2003INGENIERÍA DE SISTEMAS E INFORMÁTICA
estado : 0
T : 0 1 7 2 4
estado : 1
mover (T, a) : 8 3
estado : 2
mover (T, b) : 5
k : 1
T : 8 3 6 1 7 2 4
mover (T, a) : 8 3
estado : 3
mover (T, b) : 9 5
k : 2
T : 5 6 1 7 2 4
mover (T, a) : 8 3
mover (T, b) : 5
k : 3
T : 9 5 6 1 7 2 4
mover (T, a) : 8 3
estado : 4
mover (T, b) : 10 5
k : 4
T : 10 5 6 1 7 2 4
mover (T, a) : 8 3
mover (T, b) : 5
estados de aceptación tienen los nodos: 10
AFD AFN
--------------------------------------------------------------------
0 : 0 1 7 2 4
1 : 8 3
2 : 5
3 : 9 5
4 : 10 5
--------------------------------------------------------------------
Figura 14. Salida del programa AFNAFD.CPP
CONCLUSIONES
Este algoritmo conocido como el de construcción de
subconjuntos convierte un AFN en un AFD haciendo uso de
tres operaciones sobre los estados de un AFN y una pila. Lo
importante del algoritmo es que se procesa el conjunto de
estados del AFN denominado “T”, usando operaciones de
una estructura llamada pila.
El algoritmo sistemáticamente irá encontrando los nuevos estados
de AFD usando únicamente los símbolos de entrada.
Si se desea correr el programa con un AFN diferente se debe
inicializar la matriz de estados dentro del programa. Esto es
convenientecuandoelAFNaconvertirtieneunnúmerodeestados
mayor de 5; pues de lo contrario se tendrían que ingresar estos
por teclado lo cual aumenta la probabilidad que se introduzcan
datos incorrectos. Otra alternativa cuando la entrada es muy
grande, es guardar los datos de entrada en un archivo para
luego ser tomados por el programa.
BIBLIOGRAFÍA
1. Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1990),
Compiladores Principios, técnicas y herramientas. Editorial
Addison - Wesley Iberoamericana S.A., USA.
2. Holu, Allen I. (1990), "Compiler Design in C". Editorial
Prentice Hall, USA.
>>> CONVERSIÓN DE UN AFN A UN AFD