Sunteți pe pagina 1din 45

Teora de la Computacin para Ingeniera de Sistemas: un enfoque prctico

Prof. Hilda Contreras

31 de marzo de 2011

ndice general
1. Introduccin
1.0.1. 1.0.2. 1.0.3. 1.0.4. 1.0.5. Marco histrico de la teora de la computacin . . . . 5 Conceptos bsicos: Alfabeto, Palabra o Cadena, Lenguaje y Problema Jerarqua de Chomsky . . . . . . . . . . . . . . . . . . 10 Los problemas en la Teora de la Computacin . . . . 11 Preguntas y respuestas, ejercicios resueltos y propuestos 13

2. Lenguajes Regulares

2.1. Autmatas de estados nitos . . . . . . . . . . . . . . . . . . 17 2.1.1. Autmatas nitos determinista (AFD) . . . . . . . . . 17 2.1.2. Implementacin de un AFD: programacin basada en autmatas 22 2.1.3. Autmatas nitos no determinista (AFND) . . . . . . 25 2.1.4. Autmatas nitos no determinista con transiciones nulas (AFND-) 30 2.1.5. Preguntas y respuestas, ejercicios resueltos y propuestos 37

17

NDICE GENERAL

Captulo 1

Introduccin
La teora de la Computacin es un poco ms antigua que las computadoras electrnicas. Uno de sus pioneros, Alan Turing pudo anticipar el poder de las computadoras a travs de un modelo conceptual en 1936. Otras disciplinas como la matemtica, losofa, lingstica, biologa e ingeniera elctrica intervienen para completar sus teoras. Las teoras de bases son dos: Teora de Autmatas y Teora de los Lenguajes Formales. En general, la Teora de la Computacin facilita la comprensin de muchas reas de la ciencia de la computacin (como los compiladores), adems: 1. Se utiliza en el diseo y construccin de aplicaciones importantes de software y hardware. 2. Ayuda a comprender que esperar del software. 3. Permite deducir si es posible resolver un problema (determinar los lmites de la computacin). Adems, la comprensin de estas teoras representa en la prctica un conjunto de herramientas muy tiles como alternativas simples y ecientes para resolver problemas.

1.0.1. Marco histrico de la teora de la computacin


Varios hechos han determinado el surgimiento de esta teora: En 1928, el matemtico alemn David Hillbert, presenta a sus colegas como reto demostrar tres proposiciones de gran generalidad sobre su ciencia: 5

CAPTULO 1.

INTRODUCCIN

La matemticas son completas. Las matemticas son consistentes. Las matemticas son decidibles.
En 1928, el matemtico Ackermann presenta tambin el problema de la decisin en un estudio sobre la lgica de primer orden. En 1930, el matemtico checo Kurt Gdel prueba que las matemticas no pueden ser completas y consistentes al mismo tiempo. En 1936, el matemtico americano Alonzo Church responde negativamente en un artculo al tercer problema propuesto por Hillbert, el problema decisorio. En ese mismo ao 1936, el matemtico ingls Alan Turing da una respuesta tambin negativa a esa tercera cuestin, sus resultados son ms consistentes que los obtenidos por Church. La demostracin de Turing se basa en principios completamente bsicos y elementales. Turing enuncia el problema de decisin de la siguiente forma: "Buscar un algoritmo para determinar si una conclusin particular puede derivarse de ciertas premisas con el uso de reglas de prueba". Da una nocin precisa del concepto de algoritmo, como aquello que pueda ser realizado por una mquina abstracta, la Mquina de Turing. De este modo, Alan Turing con su mquina universal capaz de realizar el trabajo de cualquier otra mquina, mediante la lectura de su descripcin en una cinta, delinea el diseo de un computardor. En 1969, S. Cook extiende el estudio de Tuning. Cook separa aquellos problemas que pueden ser solucionados de aquellos que en principio pueden ser solucionados pero que en la prctica toman demasiados recursos. En 1937, Claude Shannon presenta su tesis de licenciatura en el MIT, estableciendo el paralelismo entre la lgica de Boole y los circuitos de transmisin. En 1943, McCulloch-Pitts desarrolla unas mquinas simples, en cuanto su funcionamiento, que fueron conocidas como autmatas nitos de actividad nerviosa, para modelar el funcionamiento de una neurona biolgica.

7 En 1956, Moore publica el primer estudio riguroso sobre autmatas. Con anterioridad, debido al desarrollo de los primeros ordenadores, se haban estudiado diversos mtodos para la sntesis de circuitos secuenciales (Human, 1954 y Mealy, 1955). En los aos 60 es donde se realizan la mayor parte de trabajos sobre la teora de los autmatas nitos En 1956, N. Chomsky comienza el estudio formal de las gramticas (como generadoras de lenguajes). Formaliza matemticamente los conceptos de gramtica generativa o reglas para la construccin las frases de un lenguaje. Enuncia la teora sobre el origen y la naturaleza de los lenguajes naturales. Estas herramientas fueron empleadas para la formalizacin de los lenguajes de ordenador, Teora de los Lenguaje Formales. A nales de los aos 50 se relacionan los autmatas con los lenguajes (Jerarqua de Chomsky).

1.0.2. Conceptos bsicos: Alfabeto, Palabra o Cadena, Lenguaje y Problema


La Teora de la Computacin puede entenderse como un paradigma o un enfoque para resolver problemas. Este paradigma tiene los siguientes conceptos bsicos sobre los cuales se fundamenta: Alfabeto, Palabra o Cadena, Lenguaje y Problema. Para todas estas deniciones debe tenerse presente primero el concepto de un Conjunto, como la estructura que las soporta.

Conjunto

Coleccin de objetos (elementos del mismo tipo) sin repeticin. Tipos de representacin de los conjuntos: Por Extensin {0, 1} Por Comprensin { i | Para todo j entero i = 2j } El conjunto vaco se representa as: . La pertenencia de un elemento a un conjunto: A = {0, 1, 2} y 1 A o tambin escribimos 1 en A. Nota: es un smbolo que puede ser utilizado por algunos autores para denotar a la cadena vaca. El subconjunto: A B signica que todo elemento de A esta en B. Si A B y A = B entonces escribimos A B (subconjunto propio). Operadores sobre conjuntos: Unin: A B = {x | x en A o x en B}

8 Interseccin: A

CAPTULO 1.

INTRODUCCIN

B = {x | x en A y x en B}

Diferencia: A - B = {x | x en A y x no est en B} Conjunto Producto = Producto Cartesiano: A B {(x,z) | x en A y z en B} Conjunto de Potencias 2A o A , es el conjunto de todos los subconjuntos de A. Tambin A es denominado Clausura de Kleene de A. |A| |A| Las deniciones formales son A = i=0 A y A+ = i=1 A (clausura positiva). Donde Ai representa todos los subconjuntos de A con i elementos. Si A tiene n elementos y B tiene m elementos entonces A B tiene n m elementos y A tiene 2n elementos. Ejemplo: Dados los conjuntos A = {1,2} y B = {2,3}, se realizan las siguientes operaciones sobre conjuntos: A A

B = {1, 2, 3} B = {2}

A - B = {1} A B = {(1,2),(1,3),(2,2),(2,3)} 2A = A = {,{1},{2},{1,2}} De ahora en adelante, el enfoque debe visualizar las entradas, salidas y procesos de un dominio de aplicacin como tipo de problema particular (problema): resolver la pertenencia de un elemento (cadena) a un conjunto (lenguaje). El problema, los elementos y el tipo de conjunto que se van a utilizar se denen en base a los siguientes conceptos bsicos: 1.

Alfabeto: Cadena

Denotado con (sigma). Conjunto nito de smbolos no vacos. Por ejemplo: Alfabeto binario = {0,1} Smbolo: entidad abstracta (no se denen), por ejemplo nmeros, letras, etc. (Palabra): secuencia nita de smbolos pertenecientes a un alfabeto (yuxtapuestos = uno detrs del otro). Por ejemplo: Cadena binaria "0111001"

2.

a ) Cadena Vaca (lambda): contiene cero (0) smbolos, puede construirse a partir de cualquier alfabeto.

b ) Longitud de una Cadena: nmero de posiciones de la cadena ocupadas por smbolos del alfabeto. Denotado con el pipe |, por ejemplo |01101|= 5 y ||=0

c ) Concatenacin de Cadenas : x y y son cadenas entonces xy denota


la concatenacin. Por ejemplo: x = 011 y = 1110, la concatenacin de xy = "0111110" a partir de un alfabeto de cierta longitud.

d ) Potencias de un Alfabeto: Conjunto de todas las cadenas formadas


k Cadenas de longitud k formadas por smbolos del alfabeto . Para el alfabeto binario = {0,1}, 2 = {00, 11, 10, 01} Conjunto de todas las cadenas formadas por smbolos del alfabeto . Se dene por = 0 i . Donde 0 = {} y i = i . Adems se denota el + = {} i=0

e ) Sujo, Prejo: cualquier cadena al nal o comienzo respectivamen-

te de la cadena. Por ejemplo para la cadena w=abca, formada de = {a, b, c}, se tiene: Los prejos de w= , a, ab, abc, abca Los sujos de w= , a, ca, bca, abca

f ) Prejo (Sujo) propio, es cualquier Prejo (Sujo) que no sea la


misma cadena. 3.

Lenguaje:

Conjunto de cadenas de smbolos del mismo alfabeto. El lenguaje formado por toda las cadenas posibles de un alfabeto se denota por (sigma asterisco).

es el lenguaje vaco, es un lenguaje para cualquier alfabeto.


{} es un lenguaje formado por la cadena vaca. Es un lenguaje para cualquier alfabeto . Por Ejemplo: 1 = {0, 1}, 2 = {00, 1} (los smbolos pueden ser de diferentes tamaos)

= {, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, ... } 1 = {, 00, 1, 001, 100, 0000, 11, 00001, 00100, 10000, 1001, 2 0011, 111, 000000,... }
Las cadenas formadas con 2 al aplicarle la cardinalidad: |001| = 2 y |1100| = 3

10

CAPTULO 1.

INTRODUCCIN

Figura 1.1: Problema en Teora de la Computacin 4.

Problema:

es poder resolver la pertenencia de una cadena sobre un lenguaje. Este tipo de problema es llamado un problema de Problema de Decisin: funcin con salida binaria (si, no) aplicada sobre conjuntos. Por ejemplo ver gura 1.1: se dene un conjunto A con todas las posibles respuestas y un conjunto B que es subconjunto de A cuyos elementos son positivos (salida si). Expresado en trminos de la teora de la computacin, si es un alfabeto y L es un lenguaje de , entonces el problema sobre L es: Dada una cadena w que pertenece a , decidir si w pertenece o no a L.

1.0.3. Jerarqua de Chomsky


Noan Chomsky en los aos 50, fue el creador de una jerarqua de lenguajes segn las gramticas que los generan. Esta gramtica est organizada en base al poder generativo formal de la gramtica y donde se destaca 4 tipos de gramticas (denominados tipo 0, tipo 1, tipo 2 y tipo 3), cada uno denido por la clase de reglas que contiene. El cuadro 1.1, muestra una jerarqua implicativa, de modo que los lenguajes denidos por gramticas del tipo-i incluyen los lenguajes del tipo-(i+1). Dicho de otra forma: Tipo 3 Tipo 2 Tipo 1 Tipo 0. Por tanto las gramticas de tipo 0 son las ms poderosas y las de tipo 3 las ms restringidas. La Teora de Autmatas y la Teora de las Gramticas formales tienen una estructura similar aunque traten de aspectos diferentes - procedimientos y gramticas, respectivamente-. Las gramticas generan un tipo de lenguaje y los autmatas reconocen un tipo de lenguaje, es decir el punto de conexin son los lenguajes. Esta es la razn por la cual se utiliza la jerarqua de

11 Cuadro 1.1: Jerarquia de Chomsky Tipo 0 1 2 3 Lenguaje Recursivamente enumerable Dependiente del Contexto Independiente del Contexto Lenguaje Regular Mquina Mquina de Turing Autmata linealmente acotado Autmata de Pila Autmata nito Gramtica G = (V,T,P,S) Gramtica sin restricciones (, en (V T ) , contiene una variable) Gramtica sensible al contexto (, en (V T ) , contiene una variable, || ||) Gramtica libre de contexto A (A en V y en (V T) ) Gramtica Regular A aB, A a, (A,B en V y a en T)

Chomsky en la solucin de problemas: un problema consiste en determinar si una cadena pertenece a un lenguaje, entonces si se conoce el tipo de lenguaje se puede determinar con que mquina reconocerlo o con cual tipo de gramtica generarlo.

1.0.4. Los problemas en la Teora de la Computacin


Teora de la Computacin se trata de una teora o formalismo general, la idea es aplicarla sobre todos los problemas que se pueden calcular en cualquier mquina. La teora usa modelos de mquinas abstractas, pues no tendra sentido usar las mquinas reales que cambian constantemente en el tiempo y que adems son diferentes y complejas. Entonces qu sucede con los problemas?, los problemas tambin son abstractos?. Lo que se pretende calcular, es decir el Problema o Clculo, puede ser de cualquier tipo, naturaleza y condicin. Los que han programado han podido resolver, de muchas formas, con un lenguaje de programacin mltiples tipos de problemas. Adems hay muchos lenguajes de programacin e incluso algunos especcos para ciertas caractersticas de los problemas. Sabemos que los problemas no son iguales, entonces, cmo esta Teora puede generalizar a todos los problemas para aplicar sus reglas y sus modelos abstractos?. Bien, es lo primero que hay que entender, lo que hace la Teora de la Computacin es formalizar un solo tipo de problema, por tanto se debe convertir, transformar o reducir ualquier"problema a lo que se llaman un "problema

12

CAPTULO 1.

INTRODUCCIN

de decisin". Un problema de decisin es un problema que puede dar una respuesta positiva o negativa (si o no). Un problema de decisin, en trminos matemticos, es equivalente a decidir si un elemento pertenece o no a un conjunto dado. El conjunto equivalente al problema esta formado por los elementos para el cual la respuesta es positiva (si). La gura 1.2 se muestra el esquema general de los problemas. El Entscheidungsproblem [1] (problema de decisin en alemn) se dene co-

Figura 1.2: Problema de decisin en Teora de la Computacin mo "dada una frase del clculo de predicados de primer orden, decidir si ella es un teorema", es el problema de decisin que motiv a Turing y a Church a dar origen a la Teora de la Computacin en 1936. Un ejemplo tpico de este tipo de problema es la siguiente pregunta: Es primo un nmero entero dado?, y una instancia de este problema sera: Es 17 un nmero primo?. Se trata de entender al 17 como un elemento del conjunto de todos nmeros enteros y se quiere saber si pertenece al conjunto de los nmeros primos. Lo anterior nos hace preguntarnos si realmente es posible reducir o redenir "todos"los problemas a la forma de un problema de decisin. Para lo cual le sugiero platearse ejemplos e investigar esta posibilidad, pues es en base a esta generalizacin de problemas sobre la cual funciona la Teora de la Computacin. Esto puede parecer una desventaja, como lo menciona Hopcroft [2]: . . . Un aspecto potencialmente poco satisfactorio de esta denicin de problema es que normalmente no se piensa en los problemas como cuestiones de decisin (es o no verdadero lo siguiente?) sino como solicitudes para calcular o transformar algunos valores de entrada (encontrar la mejor forma para realizar esta tarea) . . . Sin embargo, segn la computabilidad y complejidad las soluciones al problema de decisin y al problema original se diferencian a lo sumo por un factor lineal y se puede decir que vale la pena esta generalizacin de los problemas a cambio del formalismo que necesita la Ciencia de la Computacin.

13 Esta teora de la computacin entonces va a denir los problemas en funcin de un lenguaje. Justamente, la siguiente tabla muestra la jerarqua de Chomsky en donde se relacionan los tipos de lenguajes (problemas) con el tipo de mquina (modelo) que reconoce cadenas que pertenecen a cada tipo y a la gramtica (modelo) que genera las cadenas que pertenecen al tipo de lenguaje. Dicha jerarqua estable una relacin inclusiva entre los lenguajes, asi, el lenguaje Tipo 3 Tipo 2 Tipo 1 Tipo 0. Esto quiere decir que los lenguajes Tipo 0 son el tipo de lenguaje que abarca a todos los que se pueden resolver a travs de una Mquina de Turing (la ms poderosa).

1.0.5. Preguntas y respuestas, ejercicios resueltos y propuestos


Preguntas y respuestas
1. Qu es una teora? [3] Dentro del proceso de produccin cientca: Una Teora es un conjunto de medios de representacin conceptual y simblica (explicativo de los hechos), que tiene adems un conjunto de reglas de inferencia que permitan la previsin de los datos de hecho. 2. Que es la computacin? Ejecucin de un algoritmo. La computacin es una secuencia de pasos que puede ejecutar la computadora. La computadora que utilizamos es compleja, cambia con el tiempo. Una teora basada en especicaciones de hardware no sera muy til, por tanto los Modelos de Computacin estn basados en mquinas abstractas (matemtica). 3. Qu es una mquina abstracta? Es una mquina que no existe fsicamente, pero que ejecuta instrucciones sobre una entrada y produce una salida, habitualmente se han empleado en el estudio de la computabilidad. Ejemplos: Autmatas Finitos, Autmatas a Pila, Autmatas linealmente acotados y Mquina de Turing. 4. Qu es el poder de una mquina abstracta?, qu signica que una mquina sea ms poderosa que otra?. En el contexto de la Teora de la Computacin, una mquina es poderosa en la medida que soluciona problemas sin importar como lo hace (no importa la eciencia en tiempo y recursos, solo que logra resolver el problema). En los trminos del paradigma, si una mquina reconce lenguajes ms complejos ser ms podedora, la jerarqua de Chomsky asi lo muestra la mquina que reconoce el lenguaje tipo 0 es la ms poderosa.

14

CAPTULO 1.

INTRODUCCIN

Ejercicios resueltos
1. Diferencia entre el operador clausura de Kleene aplicado sobre un conjunto y sobre un alfabeto. Por ejemplo: El conjunto A = {a,b} cul es el A* y para el alfabeto B = {a,b} cual es B*. Aunque A y B son el mismo conjunto, son entendidos diferentes para algunos operadores. En el caso de A es un conjunto de elementos y A* es el conjunto de todos sus subconjutnos, A es nito y A* tambin, A* = {, {a}, {b}, {a, b}}. En el caso de B, es interpretado con un alfabeto, es decir un conjunto nito de smbolos. Aplicando el mismo operador a B nos d un conjunto innito, B* = {, a, b, aa, ab, ba, bb, aaa, aab, aba, ... } (se est formando el conjunto de todas las cadenas, incluyendo la cadena vaca, que se puede formar con el alfabeto B). 2. Considere el proceso de compilacin de un programa escrito en un lenguaje de programacin. Identique el alfabeto, cadena, lenguaje y problema. El problema de la compilacin de un programa escrito en algn lenguaje de programacin puede ser visto a travs del paradigam de lenguajes formales que contiene la Teora de la Computacin. El compilador no es ms que un sistema que es capaz de ver si una entrada (el cdigo fuente) esta bien escrito y sigue las reglas del lenguaje de programacin que est reconociendo. Es decir, el compilador es una mquina reconocedora de textos (cdigos fuente) que pertenecen al conjunto de todos los cdigos escritos en un lenguaje de programacin. De esta forma se denen: El alfabeto : es el conjunto de smbolos que puede escribirse en un teclado de computador con el cual puede escribirse texto (caracteres alfanumericos, caracteres especiales, espacio, etc.). Cadena de entrada w: La entrada del compilador visto como una mquina reconocedora, no es ms que cualquier texto que podamos escribir con el teclado del computador, con . Se pueden generar concatenando innitas cadenas (textos), es entonces innito. El lenguaje L: es el subconjunto de formado por las cadenas (texto) que siguen las reglas de un lenguaje de programacin especco. El compilador reconoce un lenguaje L innito pues las reglas de un lenguaje de programacin (aunque son nitas) permiten escribir innitos programas que formaran parte de L.

15 El problemma P: El compilador resuelve un problema de decisin al determinar si un texto de entrada compila o no. Decir que un texto compila signica que pertenece al lenguaje L de todas los posibles cdigos que pueden escribirse en el lenguaje de programacin. Decir que un texto o cadena de entrada en no compila es decir que no pertenece a L, es decir que no sigue las reglas del lenguaje de programacin. Evidentemente, el compilador es un sistema que adems de resolver el problema de decisin aporta un valor agregado: errores en el caso de compilar y cdigo objeto en el caso de compilar.

Ejercicios propuestos
1. Contestar verdadero (V) o falso (F):

a ) es un lenguaje formado por el alfabeto. b ) La clausura de Kleene sobre el alfabeto puede ser en algunos
alfabetos un conjunto nito.

c ) Dado el alfabeto = {a,b} y = {0,1}, la cadena w = a1b0


pertenece al alfabeto

d ) Segn la Jerarqua de Chomsky un lenguaje esta asociado un nivel


de clasicacin de problemas asociado a una mquina

e ) Un algoritmo es el conjunto de instrucciones que puede calcular f ) No existe un lenguaje innito L en el alfabeto = {a,b} para el
cual L sea diferente a L* (L = L*) 2. Sea A, B y C lenguajes de un alfabeto . En cada una de los tems siguientes se indican la expresin de 2 lenguajes. Seale si son siempre iguales y justique (indique contraejemplos en caso de ser apropiado) a ) A (B C) y AB AC

b ) A*B* y (AB)*
3. Enumere al menos 5 lenguajes (que no sean lenguajes de programacin o idiomas) que haya utilizado. Para cada uno de ellos identique el alfabeto y de ejemplo de una cadena del lenguaje.

16

CAPTULO 1.

INTRODUCCIN

Captulo 2

Lenguajes Regulares
Los lenguajes regulares, de tipo 3 segn la jerarqua de Chomsky, son aquellos que son reconocidos por autmatas de estados nitos, son denotados por expresiones regulares y generados por gramticas regulares. Estos lenguajes contienen a todos los lenguajes nitos generados a partir de cualquier alfabeto. Los lenguajes innitos tipicados como regulares poseen ciertas propiedades que lo caracterizan y distinguen de otros lenguajes ms complejos, la seccin de propiedades y algoritmos de decisin asi lo muestran.

2.1. Autmatas de estados nitos


Los Autmatas de Estados Finitos (AF): Describen, reconocen y denen a los Lenguajes Regulares. Es el modelo matemtico de un sistema con estados y salidas discretas. Los Tipos de Autmatas Finitos son: 1. Autmata Finito Determinista (AFD). No pueden estar en ms de un estado simultneamente. 2. Autmata Finito No Determinista (AFN). Puede estar en varios estados al mismo tiempo.

2.1.1. Autmatas nitos determinista (AFD)


Un AFD es una quntupla A = (Q , , , q0 , F), siendo: Q = conjunto nito de estados.

= conjunto nito de smbolos del alfabeto.


17

18

CAPTULO 2.

LENGUAJES REGULARES

q0 = es el estado inicial (denotado con echa ) a inicio F = conjunto de estados nales (o estados de aceptacin). F Q

= La funcin de transicin entre estados, : Q x Q.


En los AFD debe cumplirse que: Para toda a que esta en existe exactamente una transicin de salida de cada estado. Se tiene tres formas para presentar la funcin de transicin, equivalentes entre si, cualquiera de ellas es suciente para completar el diseo del AFD. Estas son: 1.

Diagrama de Transicin:

Representado a travs de un grafo. Un grafo G = (V,E) consiste de un conjunto nito de vrtices (o nodos) V y un conjunto nito de pares de vrtices (o aristas) E llamados enlaces (los cuales son bidireccionales). Un camino en un grafo es una secuencia de vrtices V1 , V2 , ... , Vk , con k 1, tal que hay un enlace (Vi ,Vi+1 ) con 1 i k. La longitud del camino es k-1. Si V1 = Vk entonces el camino es un ciclo. Una clase de grafo dirigido Dgrafo G =(V,E), consiste en un conjunto nito de vrtices V (o nodos) y un conjunto nito de pares ordenados de vrtices E llamados arcos (una sola direccin). Un arco de v a w se denota como v w. Un camino en un dgrafo es una secuencia de vrtices V1 , V2 , ... , Vk , con k 1, tal que Vi Vi+1 es un arco con 1 i k. La longitud del camino es k-1. El camino es de V1 a Vk (importa la direccin). Si v w es un arco entonces v es predecesor de w y w es sucesor de v. Ejemplo: Dado el Grafo G = ({1,2,3,4}, {i j | i < j }) 1,2,3,4 es un camino de longitud 3 de 1 a 4. 1,4 es un camino de longitud 1 de 1 a 4. 3,3 no es un camino. 3 es un camino de longitud 0 de 3 a 3? Por notacin, dado un AFD si p y q estan en Q y a en , se dene la transicin (q,a) = p. como un arco (enlace) etiquetado a entre el estado (vertice) q y el estado (vertice) p. Los estados o vertices de aceptacin se denotan grcamente con un doble crculo. Por ejemplo si r esta en F debe ser denotado con doble circulo como se observa en la gura 2.1. representado a travs de una funcin. Una funcin asigna a cada elemento de un conjunto (Conjunto Dominio) un elemento de otro conjunto (Conjunto Rango o Codominio).

2.

Funcin de transicin:

2.1.

AUTMATAS DE ESTADOS FINITOS

19

Figura 2.1: Ejemplo de transicin en AF f : A B, siendo A el dominio y B el rango. La siguiente funcin f(x)= x2 , se dene f: N N, donde N es el conjunto de los nmeros naturales. Tipos de funciones: Inyectiva: Si a1 = a2 , entonces f (a1 ) = f (a2 ) Sobreyectiva: Si todo elemento de B es imagen de alguno de A, es decir la funcin inversa  f 1 (b) = , para todo b en conjunto Rango o Codominio. La funcin de transicin esta denida como : Q x Q, es decir tiene como dominio cualquier par del producto cartesiano del conjunto de estados Q y el alfabeto de entrada , y da como resultado un elemento del conjunto rango de estados Q. 3.

Tabla de Transiciones:

representacin a travs de una matriz. La tabla tiene en las columnas todas las entradas del alfabeto y en las las los estados de Q, por lo que el par FilaxColumna representa el dominio de la funcin de transicin. Por notacin, en la tabla se escriben los estados de aceptacin o estados nales con asterisco al lado del estado. En cada celda interna de la tabla se muestra el resultado de la transicin es decir el estado Q al cual se realiza la transicin dado la la y la columna de la posicin de la celda respectiva. En los AFD cada celda de la tabla debe tener un estado, no se permiten celdas vacias. Ver cuadro 2.1.

Ejemplo: Dado = { 0, 1 } y el lenguaje L = { x | x en

y x comienza con 0 }, es decir todas las cadenas binarias que comienzan con 0. El AFD que lo reconoce, en sus tres representaciones, es el siguiente: M = (Q, , , q0 , F) Donde Q = {q0 , q1 , q2 }, = {0,1} y F = {q1 }

 Dada f:A B, la funcin inversa f 1 :B A, se dene como f 1 (b) = {x | x en A y f(x) = b } para todo b en B

20

CAPTULO 2.

LENGUAJES REGULARES

Cuadro 2.1: Estructura de la Tabla de Transicin

Estados

Smbolos de Estados

Cuadro 2.2: Ejemplo de Tabla de Transicin

q0 * q1 q2

0 q1 q1 q2

1 q2 q1 q2

1. Diagrama de transicin: se observa en la gura 2.2.

Figura 2.2: Ejemplo de AFD: cadenas binarias que comienzan con cero 2. Funcin de transicin (q0 , 0) = q1 (q0 , 1) = q2 (q1 , 0) = q1 (q1 , 1) = q1 (q2 , 0) = q2 (q2 , 1) = q2 3. Tabla de transicin: se observa en el cuadro 2.2 Las tres representaciones del AFD son equivalentes y cada una de ellas es suciente para expresar el modelo. Sin embargo, debe enterderse la relacin

2.1.

AUTMATAS DE ESTADOS FINITOS

21

entre ellas aunque se seleccione solo una de ellas para representar al autmata.

Ejecucin de un Autmatas de estados nitos determinista AFD


Para la ejecucin formal de un AFD se utiliza la denicin de la funcin de transicin extendida sobre cadenas . La denicin de su dominio y rango es: = Q x Q. La denicin recursiva de la funcin se dene: 1. Caso base para la cadena vaca : Para todo q en Q, (q,) = q. 2. Caso recursivo para cadenas de cardinalidad mayor que 1: Para todo w en y a en , se cumple que (q,wa) = ( (q,w),a). Por ejemplo: Dado el AFD anterior que reconoce el lenguaje sobre = {0, 1} y L = {x | x en y x comienza con 0}, pruebe si las cadenas w1 = 010 y w2 = 101 estn en el lenguaje L: 1. (q0 ,010) = ((q0 ,01),0) = (((q0 ,0),1),0) = ((((q0 , ),0),1),0) (((q0 , 0), 1), 0) ((q1 , 1), 0) (q1 , 0) = q1 Se acepta al terminar de procesar la cadena 010 y quedar en un estado de aceptacin (q1 est en F). 2. (q0 ,101) = ((q0 ,10),1) = (((q0 ,1),0),1) = ((((q0 , ),1),0),1) (((q0 , 1), 0), 1) ((q2 , 1), 0) (q2 , 0) = q2 No se acepta al terminar de procesar la cadena 101 y quedar en un estado que no es de aceptacin (q2 no est en F)

Lenguaje aceptado por un AFD


Dado M = (Q, , , q0 , F) un AFD, el lenguaje L aceptado por M est denido por:

22

CAPTULO 2.

LENGUAJES REGULARES

L(M)= { w | w en y (q0 ,w) pertenece a F } Nota: el lenguaje de M, es un conjunto de cadenas w que llevan al autmata M desde q0 a un estado de aceptacin. Si L es un L(M) para algn AFD M, entonces decimos que L es un Lenguaje Regular. Nota importante: Para poder vericar si la cadena w est (es aceptada) o no est (no es aceptada) en L se debe terminar de procesarse la cadena w.

2.1.2. Implementacin de un AFD: programacin basada en autmatas


La simulacin de un AFD resulta un enfoque de programacin que permite aumentar el nivel de abtsraccin ente la solucin de un problema. El siguiente algoritmo expresado en pseudocdigo muestra el funcionamiento del AFD de la gura 2.2:

INICIO Conjunto Q[Estado] = {q0 , q1 , q2 } Conjunto [Simbolo]= {0,1} Conjunto F[Estado] = {q1 } Estado Actual = q0 Simbolo A A = LeerSimboloCadena() Mientras a = entonces Actual = transicion (Actual, A) A = LeerSimboloCadena() fin Mientras Si Pertenece(Actual,F) entonces Imprimir("Se acepta la cadena") sino Imprimir("No se acepta la cadena") fin Si FIN Funcin transicion (Estado q, Smbolo a) Estado S Seleccin q = q0 y a = 0: S = q1

2.1.

AUTMATAS DE ESTADOS FINITOS

23

q q q q q

= = = = =

q0 q1 q1 q2 q2

y y y y y

a a a a a

= = = = =

1: 0: 1: 0: 1:

S S S S S

= = = = =

q2 q1 q1 q2 q2

fin Seleccin Retornar S fin Funcin


Donde se asume que se tiene los siguientes tipos de datos: Conjunto (paramtrico por el tipo de elemento), Estado, Simbolo. Para ellos se tiene las siguientes operaciones:

LeerSimboloCadena() que permite obtener desde la entrada estndar un Smbolo de la cadena de entrada w (desde el comienzo, secuencialmente uno a uno) Imprimir(CadenaCaracter) funcin que permite imprimir la salida del autmata, si acepta o no la cadena de entrada Pertenece(Estado A, Conjunto B[Estado]), es una operacin del tipo de dato Conjunto que determina si el elemento A pertenece al Conjunto B.
Una posible implementacin del algoritmo anterior en lenguaje C se muestra a continuacin:

#include <iostream> #include <string> #include <stdio.h> using namespace std; enum estados { q0, q1, q2 }; void transicion(enum estados *estado, char a) { switch(*estado) { case q0: if(a == '0') { putchar(a); *estado = q1; }

24

CAPTULO 2.

LENGUAJES REGULARES

else { if(a == '1') { putchar(a); *estado = q2; } } break; case q1: if(a == '0' || a == '1') { putchar(a); *estado = q1; } break; case q2: if(a == '0' || a == '1') { putchar(a); *estado = q2; } break; } } int main() { char c; string cad; enum estados state = q0; cout << "AFD que reconoce todas las cout << "Estado inicial: " << state c = getchar(); cad = c; while((c == '0') || (c == '1')) { transicion(&state, c); cout << " Estado actual: " << state c = getchar(); if ((c == '0') || (c == '1')) cad = } if (state == q1) cout << "La cadena else cout << "La cadena " << cad << return 0; }

cadena binarias que comienzan con 0" << endl; << endl;

<< endl; cad + c;

" << cad << " SI esta en el lenguaje" << endl; " NO esta en el lenguaje" << endl;

2.1.

AUTMATAS DE ESTADOS FINITOS

25

2.1.3. Autmatas nitos no determinista (AFND)


Son autmatas de estados nitos que tienen la capacidad de estar en ms de un estado simultneamente. Ellos tienen la ventaja de ser ms compactos, exibles y fciles de disear que los AFD. No hay que considerar todos los casos en cada estado, ya que permiten cero, una o ms transiciones de salida de un estado para el mismo smbolo del alfabeto de entrada. Esta compuesta por la misma tupla de elementos que un AFD A = (Q, , , q0 , F), la diferencia es la denicin del rango de la funcin de transicin, : Q x 2Q tambin : Q x Q En la gura 2.3 (q,a) = {p,r}, un conjunto de estados. Como : Q x Q , entonces (q,a) = R, donde R Q.

Figura 2.3: Ejemplo de transicin en AFND

Ejecucin de un Autmatas de estados nitos determinista AFND


Para la ejecucin formal de un AFND se utiliza la denicin de la funcin de transicin extendida sobre cadenas = Q x Q , denida recursivamente: 1. Caso base para la cadena vaca : (q,) = {q} 2. Paso recursivo para cadenas de cardinalidad mayor que 1: (q,xa) = { r | para algn p en (q,x), (p,a) = r }. Sea w de la forma w = xa donde a es el smbolo nal (sujo de longitud 1) de w y x el resto de w. (q,x) = {p1 , p2 , ..., pn } sea k (pi ,a) = {r1 , r2 , ..., rn } i=1 Entonces (q,x) = ( (q,x),a) = {r1 , r2 , ..., rn }, ver gura 2.4. La extensin para de Q x: ((P,w) = qenP (q,w), para todo conjunto de estados P en Q Ejemplo: Dado el alfabeto = {0,1} y el lenguaje L= { x | x en y x termina en 01 }, hallar el AFND que lo reconozca

26

CAPTULO 2.

LENGUAJES REGULARES

Figura 2.4: Denicin de en un AFND Cuadro 2.3: Tabla de transicin: Lenguaje de las cadenas binarias que terminan en 01

q0 q1 * q2

0 {q0 , q1 }

1 {q0 } {q2 }

L = { 01, 0001, 101, 1001, 10101, ... } A = (Q, , , q0 , F), donde: Q = {q0 , q1 , q2 }, = {0,1} y F = {q2 } En la gura 2.5 y el cuadro 2.3

Figura 2.5: Ejemplo de AFND: cadenas binarias que terminan en 01 se observa el AF que reconoce el lengauje. Para las cadenas w1 = 01 y w2 = 10101 se muestra la ejecucin formal a partir de la funcin de transicin extendida: 1. (q0 ,01) = ((q0 ,0),1) = (((q0 , ),0),1)

2.1.

AUTMATAS DE ESTADOS FINITOS

27

(({q0 },0),1) ({q0 , q1 },1) = (q0 ,1) (q1 ,1) = {q0 } {q2 } = {q0 , q2 }, Acepto porque {q0 , q2 } {q2 } = , es decir al menos uno de los estados del autmata es de aceptacin luego de procesar la cadena.
2. (q0 ,10101) = ((q0 ,1010),1) = ((((((q0 , ),1),0),1),0),1) ((((({q0 },1),0),1),0),1), ({q0 },1) = {q0 } (((({q0 },0),1),0),1), ({q0 },0) = {q0 , q1 } ((({q0 , q1 },1),0),1), ({q0 , q1 },1) = (q0 ,1) (q1 ,1) = {q0 } { q 2 } = {q 0 , q 2 } ( ({q0 , q2 },0),1), ({q0 , q2 },0) = (q0 ,0) (q2 ,0) = {q0 , q1 } = { q0 , q 1 } ({q0 , q1 },1), ({q0 , q1 },1) = (q0 ,1) (q1 ,1) = {q0 } {q2 } = { q0 , q 2 } Acepto porque {q0 , q2 } {q2 } = , es decir al menos uno de los estados es de aceptacin de F.

Lenguaje aceptado por un AFND


Dado M = (Q, , , q0 , F) un AFN, el lenguaje L aceptado por M est denido por: L(M)= { w | w en y (q0 ,w)

F = }

Es el conjunto de cadenas pertenecientes a tal que ejecutar el AFN desde el estado inicial q0 con la cadena w, la funcin de transicin extendida (q0 ,w) contiene al menos un estado de aceptacin (es diferente del vaco la interseccin con F).

Equivalencia entre AFD y AFND


Todo Lenguaje Regular puede describirse con ambos tipos de autmatas AFND y AFD. Generalmente un AFND es ms fcil de capturar y un AFD es mas fcil de implementar. El AFD ms grande puede tener 2n estados y el AFND ms pequeo solo tiene n estados.

Teorema 1. Si L es aceptado por un AFND entonces existe un AFD que


acepta L (es decir, ambos aceptan la misma clase de lenguaje).

28

CAPTULO 2.

LENGUAJES REGULARES

Cuadro 2.4: Tabla de transicin N : Lenguaje de las cadenas binarias que terminan en 01

N q0 q1 * q2

0 {q0 , q1 }

1 {q0 } {q2 }

Algoritmo para la Construccin de Subconjuntos: Este algoritmo permite a partir de un AFND obtener un AFD equivalente que reconoce el mismo lenguaje. Su nombre se debe a que se intenta construir todos los subconjuntos del conjunto de estados del AFND. AFN N = (QN , , N , q0 , FN ) AFD D = (QD , , D , {q0 } , FD ) Tal que L(N) = L(D) (el lenguaje reconocido por el autmata N sea el mismo que el lenguaje reconocido por el autmata D, por tanto sean equivalentes) Algoritmo :
1. son iguales para N y D. 2. QD es el conjunto de los subconjuntos de QN , (Conjunto potencia QD = Q ). No todos los estados de QD son accesibles desde q0 , los N estados inalcanzables desde el estado inicial sern eliminados. 3. FD es el conjunto S de subconjuntos de QN (S QN ) tal que S FN = . Es decir FD contiene todos los conjuntos de estados de N que incluyen al menos un estado de aceptacin de N. 4. Para todo S QN y a en , entonces D (S,a) = pS N (p,a). Ejemplo: Dado el AFDN de la gura 2.5 y el cuadro 2.4 denotado como N = (QN , , N , q0 , FN ), con = {0,1} y QN = {q0 , q1 , q2 }, FN = {q2 }. Obtener D un AFD tal que L(N) = L(D) a travs del algoritmo de construccin de subconjuntos. 1. = {0, 1} 2. D = (QD , , D , {q0 }, FD ) 3. QD = {, {q0 }, {q1 }, {q2 }, {q0 , q1 }, {q0 , q2 }, {q1 , q2 }, {q0 , q1 , q2 }} (Conjunto de todos los subconjuntos de Q)

2.1.

AUTMATAS DE ESTADOS FINITOS

29

Figura 2.6: Relacin AFDN y AFD: construccin de subconjunto sobre el AFND dela gura 2.5 Cuadro 2.5: Tabla de transicin D a travs de la construccin de sunconjuntos

q0 q1 q2

D {q0 } {q0 , q1 } *{q0 , q2 }

0 { q0 , q 1 } { q0 , q 1 } { q0 , q 1 }

1 { q0 } { q0 , q 2 } { q0 }

4. FD = {{q2 }, {q0 , q2 }, {q1 , q2 }, {q0 , q1 , q2 }} 5. Generar D , ver cuadro 2.5 y gura 2.6

a) b) c) d) e) f)

D ({q0 },0) = N (q0 ,0) = {q0 , q1 } D ({q0 },1) = N (q0 ,1) = {q0 } D ({q0 ,q1 },0) = N (q0 ,0) N (q1 ,0) D ({q0 ,q1 },1) = N (q0 ,1) N (q1 ,1) D ({q0 ,q2 },0) = N (q0 ,0) N (q2 ,0) D ({q0 ,q2 },1) = N (q0 ,1) N (q2 ,1) = {q0 ,q1 } = {q0 ,q1 } = {q0 } {q2 } = {q0 ,q2 } = {q0 ,q1 } = {q0 ,q1 } = {q0 } = {q0 }

A continuacin se realiza la ejecucin de AFD resultante para evaluar la cadena w=10101:

D ({q0 },10101) = D (D ({q0 },1010),1) = D (D (D (D (D (D ({q0 }, ),1),0),1),0),1)

30

CAPTULO 2.

LENGUAJES REGULARES

D (D (D (D (D ({q0 },1),0),1),0),1) = D (D (D (D (D ({q0 },1),0),1),0),1) = D (D (D (D ({q0 },0),1),0),1) = D (D (D ({q0 , q1 },1),0),1) = D (D ({q0 , q2 },0),1) = D ({q0 , q1 },1) = {q0 , q2 }
Se acepta la cadena porque {q0 , q2 } esta en FD La demostracin de este algoritmo se encuentra en el libro de Hopcroft [2] : Se demuestra por induccin sobre el tamao de w, donde el caso base N (q0 , ) = N ({q0 }, ) y para el caso inductivo N (q0 ,w) = N ({q0 },w).

2.1.4. Autmatas nitos no determinista con transiciones nulas (AFND-)


Es un AFND que permite transiciones para la cadena vaca . Antes los AF no se movan con la cadena vaca, es decir N (q, ) = {q} y D (q, ) = q, los AF se quedaban en el mismo estado cuando procesan a la cadena vaca. Ahora con AFND- se tienen transiciones espontneas, es decir sin recibir o procesar ningn smbolo de la entrada. Se aplica si no pertenece al conjunto de smbolos de . Su utilidad: Facilidad para modelar (autmatas ms sencillos y con menos estados y transiciones). Relacin directa con las expresiones regulares (equivalencia demostrada formalmente) Un AFND- es una quntupla: A=(Q, , , q0 , F), siendo: Q = conjunto nito de estados.

= conjunto nito de smbolos del alfabeto. q0 = es el estado inicial (denotado con echa ) a inicio
F = conjunto de estados nales (o estados de aceptacin). F Q = la funcin de transicin entre estados : Q x {} Q . Ejemplo: Dado L = {0n 1m 2p | n,m,p 0 }, el lenguaje de todas las cadenas de 0, 1 o ms ceros (0n ) seguidas de 0, 1 o ms unos (1m ), y seguidas de 0, 1 o ms dos (2p ). Los siguientes autmatas de las guras 2.7 y 2.8 reconocen

2.1.

AUTMATAS DE ESTADOS FINITOS

31

Figura 2.7: AFND para el lenguaje 0n 1m 2p

Figura 2.8: AFND- para el lenguaje 0n 1m 2p

a L: En la tabla de transicin 2.6, del AFND- puede o no asumirse la transicin espontnea de la cadena vaca . Es decir, (q,) = {q}. Por ejemplo en el estado q2 , puede ser pero sin embargo tambin es {q2 }.

Cuadro 2.6: Tabla de transicin de un AFND-

q0 q1 * q2

0 { q0 }

1 {q1 }

2 {q2 }

{q1 } {q2 }

32

CAPTULO 2.

LENGUAJES REGULARES

Ejecucin de un Autmatas de estados nitos no determinista AFND-


Dada una cadena w y un AFND-, para reconocer dicha cadena se debe aplicar la funcin extendida para cadenas : Q x Q . Donde (q,w) es el conjunto de todos los estados pi tal que se puede ir de q a cada pi por un camino etiquetado w que puede incluir arcos etiquetados . Para calcular este camino es necesario denir el trmino de la -clausura de un estado. La -clausura(q) es el conjunto de todos los estados a los cuales se puede llegar a partir de q siguiendo un camino de arcos etiquetados con nicamente. La denicin recursiva de -clausura(q): Base: -clausura(q) = {q} , es decir por denicin (q,) = {q}, podemos imaginarnos un bucle de un estado a si mismo etiquetado . Ver gura 2.9. Paso inductivo: Si es la funcin de transicin de AFND- y p est en la -clausura(q), es decir (q, ) = {p} entonces la -clausura(q) tambin contiene los estados (p,). Ver gura 2.9.

Figura 2.9: Ejemplo de la denicin de -clausura en un AFND- La denicin de la funcin de transicin extendida de los AFND-, con la que se pueden ejecutar, es la siguiente: 1. (q0 , ) = -clausura(q0 ) 2. 2) Para todo w en y a en , (q,wa) = -clausura(P), Donde:

-clausura(P) = { p | para algn r en (q,w), p en (r,a) } , Aplicar -clausura a cada p en P. Ver gura 2.10.

2.1.

AUTMATAS DE ESTADOS FINITOS

33

Figura 2.10: Ejemplo de la denicin de -clausura en un AFND- en caso inductivo 3. (R,a) = 4. (R,a) =

qenR

(q,a), R Q (q,a), R Q.

qenR

Entonces (q,w) = (q,x) = {r1 , r2 , ..., rk } w = xa. con k m j=1 -clausura(pj ). i=1 (ri ,a) = {p1 , p2 , ..., pm } y (q,w) = Ejemplo: Dada la cadena w = 02 determinar si pertenece o no al lenguaje 0n 1m 2p reconocido por el AFND- de la gura 2.8 Denicin de la -clausura de los estados del autmata:

-clausura(q0 ) = {q0 , q1 , q2 } -clausura(q1 ) = {q1 , q2 } -clausura(q2 ) = {q2 }


Aplicando la funcin de transicin extendida :

(q0 ,02) = -clausura( ( (q0 ,0),2)) = -clausura( (-clausura( ( (q0 ,),0)),2)) -clausura( (-clausura( ({q0 , q1 , q2 },0)),2)) (q0 , ) = -clausura(q0 ) = { q0 , q 1 , q 2 } -clausura( (-clausura({q0 }),2)) ({q0 , q1 , q2 },0) = {q0 } = { q0 }
= -clausura( ({q0 , q1 , q2 },2)) -clausura({q0 }) = -clausura(q0 ) = { q0 , q 1 , q 2 }

34

CAPTULO 2.

LENGUAJES REGULARES

{q2 } = {q2 } {q2 } Acepto la cadena w = 02 ya que (q0 ,02) F = {q2 } = . -clausura(q2 ) ({q0 , q1 , q2 },2) =

Lenguaje aceptado por un AFND-


Dado un AFND- E = (Q, , , q0 , F) el L(E) se dene como: L(E)= { w | w en , (q0 ,w)

F = }

El lenguaje L(E), el reconocido por el autmata E, es el conjunto de cadenas de que al aplicar la funcin de transicin extendida se obteien un conjutno de estados de Q donde al menos uno pertenece al conjunto F de aceptacin.

Equivalencia entre AFD y AFND- (construccin de subconjuntos de )


La equivalencia implica la eliminacin de las -transiciones.

Teorema 2. Si L es aceptado por un AFND con transiciones entonces L


es aceptado por un AFND sin -transiciones. ciones si y slo si es aceptado por un AFD.

Teorema 3. Un lenguaje regular L es aceptado por un AFND con transiA partir de estos teoremas se deriva un algoritmo para pasar de un AFND- a un AFD, es decir para eliminar las transiciones y obtener un autmata equivalente que reconozca el mismo lenguaje de forma deterministica. Dado E un AFND- se quiere lograr que L(E) = L(A), con y A un AFD, es decir E (q0E ,w) = D (q0D ,w) para todo w en L: E (AFND-) = (QE , , E , q0E , FE ) D (AFD) = (QD , , D , q0D , FD ) Algoritmo: 1. q0D = clausura(q0E ) 2. QD = Q , es decir el conjunto de subconjuntos de QE E

2.1.

AUTMATAS DE ESTADOS FINITOS

35

3. FD = {s|senQD ys

FE = }

4. D (S,a) para todo a en y S en QD , se cumple: D (S,a) = m -clausura(rj ), j=1 {r1 , r2 , ..., rm } = k E (pi ,a) con S = {p1 , p2 , ..., pk }. Ver gura 2.11 i=1

Figura 2.11: Construccin de subconjuntos en un AFND- Ejemplo: Dado el AFND-lambda E halle un AFD equivalente que reconozca el mismo lenguaje. E = (Q, , , q0 , F), donde Q = {q0 , q1 , q2 }, = {0, 1, 2} y F = {q2 }. Ver gura 2.8 Se obtiene el AFD D = (QD , , D , q0D , FD ), aplicando el algorimos de construccin de subconjuntos de : 1. = {0, 1, 2} 2. q0D = -clausura(q0 ) = {q0 , q1 , q2 } 3. QD = {, {q0 }, {q1 }, {q2 }, {q0 , q1 }, {q1 , q2 }, {q0 , q2 }, {q0 , q1 , q2 }} 4. FD = {{q2 }, {q1 , q2 }, {q0 , q2 }, q0 , q1 , q2 } 5. Clculo de D : (ver cuadro 2.7) Para el estado inicial {q0 , q1 , q2 } se aplica la denicin para todos los elementos de : * D ({q0 , q1 , q2 },0) = -clausura(E (q0 , 0) E (q1 , 0) E (q2 , 0)) = -clausura({q0 } ) = -clausura({q0 }) = -clausura(q0 ) = { q0 , q 1 , q 2 } * D ({q0 , q1 , q2 },1) = -clausura(E (q0 , 1) E (q1 , 1) E (q2 , 1))

36

CAPTULO 2.

LENGUAJES REGULARES

Cuadro 2.7: Tabla de transicin D a travs de la construccin de sunconjuntos de

q0 q1 q2

D {q0 , q1 , q2 } { q1 , q 2 } *{q2 }

0 {q0 , q1 , q2 }

1 { q1 , q 2 } { q1 , q 2 }

2 { q2 } { q2 } { q2 }

= -clausura( {q1 } ) = -clausura({q1 }) = -clausura(q1 ) = { q1 , q 2 } * D ({q0 , q1 , q2 },2) = -clausura(E (q0 , 2) E (q1 , 2) E (q2 , 2)) = -clausura( {q2 }) = -clausura({q2 }) = -clausura(q2 ) = { q2 }
Para el estado {q1 , q2 } se aplica la denicin para todos los elementos de : * D ({q1 , q2 },0) = -clausura(E (q1 , 0) E (q2 , 0)) = -clausura( ) = -clausura() = * D ({q1 , q2 },1) = -clausura(E (q1 , 1) E (q2 , 1)) = -clausura({q1 } ) = -clausura({q1 }) = -clausura(q1 ) = {q1 , q2 } * D ({q1 , q2 },2) = -clausura(E (q1 , 2) E (q2 , 2)) = -clausura( {q2 }) = -clausura({q2 }) = -clausura(q2 ) = {q2 } Para el estado {q2 } se aplica la denicin para todos los elementos de : * D ({q2 },0) = -clausura(E (q2 , 0)) = -clausura() = * D ({q2 },1) = -clausura(E (q2 , 1)) = -clausura() = * D ({q2 },2) = -clausura(E (q2 , 2)) = -clausura({q2 }) = clausura(q2 ) = {q2 } Hay dos formas de interpretar la construccin de subconjuntos-, una para crear un AFD y otra AFND. La idea es llegar a un AF ms fcil de implementar los cuales son AFD. AFD: Se ve cada estado como un conjunto de etiqueta. Ver gura 2.12 AFND: Se interpreta el contenido de la etiqueta de cada estado. Ver gura 2.13

2.1.

AUTMATAS DE ESTADOS FINITOS

37

Figura 2.12: AFD equivalente del AFND- de la gura 2.8 a travs de la Construccin de subconjuntos

Figura 2.13: AFND equivalente del AFND- de la gura 2.8 a travs de la Construccin de subconjuntos

2.1.5. Preguntas y respuestas, ejercicios resueltos y propuestos


Preguntas y respuestas
1. Qu es un autmata?. Es una mquina abstracta, dispositivo terico o modelo matemtico que procesa una secuencia nita de smbolos de un alfabeto, cambiando su estado si procede, lo que permite saber si una cadena se encuentra dentro o no de un lenguaje dado. Tiene un conjunto nitos de estados posibles y muestra las posibles transiciones entre los estados. 2. Por qu en los AF se tiene siempre un slo estado de inicial y uno o ms estados nales?. El objetivo de una AF es aceptar cadenas de un

38

CAPTULO 2.

LENGUAJES REGULARES

lenguaje y para eso necesita estados de aceptacn, por tanto el conjunto F no puede ser vaco, pero si puede tener uno o ms caminos para reconocer esas cadenas (tener mas de un estado en F). Con respecto al estado inicial se necesita slo uno, pues el AF necesita saber de forma precisa por donde comenzar el funcionamiento de la mquina. Si se tiene ms de un estado inicial el AF debe seleccionar por donde comenzar, lo cual resultara complicado para unmodelo matemtico sencillo. Esto mismo ocurre en los lenguajes de programacin donde slo hay un inicio para el programa (main) pero puede tener mas de un nal (exit). 3. Por qu se debe terminar de procesar la cadena para saber si est o no en el lenguaje?. La mayora de los autmatas o mquinas de reconocimiento (excepto la Mquina de Turing) tienen esta restriccin que les permite simplicar el funcionamiento de su modelo. Si bien es cierto que para algunos lenguajes no hace falta recorrer toda la cadena pues su denicin no lo requiere (por ejemplo puede estar relacionada slo con el prejo de las cadenas), hacer que estos casos funcionen como los dems es lo ms simple en un modelo matemtico. 4. Por qu el conjunto de estados del autmata son nitos? Una de las caractersticas de los autmatas nitos es que el conjunto de estados es nito. Esto se debe a una propiedad matemtica sobre los lenguajes regulares (relacin de equivalencia) que establece particiones nitas sobre el lenguaje (aunque el lenguaje puede ser innito). Esta propiedad es diferente en otros tipos de lenguajes ms complejos pues las particiones se hacen innitas y por ende el nmero de estados para representarlas. 5. Puede obtener un AFND algortmicamente a partir de un AFD?, por qu? El procedimiento de la construccin de subconjuntos permite llevar de un AFND a AFD, es decir eliminar el no determinismo. El no determinismo implica el manejo de opciones o alternativas en cada paso de transicin generando instancias simultneas del Autmata en cada alternativa. El caso contrario parte de un AFD y se quiere obtener un AFND, es decir agregar no determinismo al autmata. Este proceso no tiene un algortimo, pero si dicho algoritmo pudiera existir tendra que ser en si no determinstico, es decir aplicar alternativas nitas en cada paso de transicin que incluso podra no tener sentido, sera muy complejo e incluso dicil de aplicar en algunos AFD.

2.1.

AUTMATAS DE ESTADOS FINITOS

39

6. Qu signica que 2 autmatas son equivalentes?. Dos autmatas son equivalente cuando reconocen exactamente el mismo lenguaje. Hay que distinguir entre ser iguales y ser equivalente. Dos autmatas diferentes pueden tener diferente cantidad de estados, con diferentes transiciones e incluso diferente cantidad de estados de aceptaciin, es decir son diferentes en todo sentido y por tanto no son iguales. Sin embargo, estos autmatas diferentes, M1 = M2 , son capaces de procesar cadenas de y reconocer el mismo lenguaje L (todas y cada una de las cadenas que forman a L), en ese caso son llamados autmatas equivalentes, es decir L(M1 ) = L(M2 ).

Ejercicios resueltos
1. Determine las diferencias entre un AFD y un AFND. Ver el cuadro 2.8 2. Aplicaciones de la vida real que pueden ser vistos como AF. Algunas aplicaciones interesantes de los AF estn referidas al almacenamiento de diccionarios como los usados en los celulares, en la que se utilizan sus caractersticas para hacer bsquedas, inserciones o modicaciones rpidas. As como tambin para mejorar el ordenamiento y bsqueda en otros tipos de aplicaciones como los circuitos digitales, texto, secuencias lgicas de funcionamiento (como la maquinaria industrial, robtica) y otras. Tambin son tiles para el modelado de aquellos casos en los que a partir de una accin anterior se puede llegar a un conjunto determinado de destinos, pero no se tiene certeza anticipada de cul de ellos es el indicado, utilizados para modelar protocolos de comunicacin, sistemas distribuidos, planicacin, etc. 3. Modelar un AF que reconozca un identicador vlido en el lenguaje de programacin C. Un identicador es un nombre que dene a una variable, una funcin o un tipo de datos. Un identicador vlido ha de empezar por una letra o por el carcer de subrayado _, seguido de cualquier cantidad de letras, dgitos o subrayados. Adems: No debe contener caracteres especiales, tales como @, $, #, no debe haber espacios en blanco en los identicadores. El AF que reconoce este lenguaje es el siguiente: A = (Q, , , q0 , F), donde Q = {q0 , q1 }, son todos los caracteres alfanumricos y caracteres especiales permitidos (tales como -,_,.) , F

40

CAPTULO 2.

LENGUAJES REGULARES

Cuadro 2.8: Tabla comparativa de AFD y AFND Caracterstica Funcin de transicin p Denicin del Lenguaje que reconoce Estado actual AFD : Q x Q, rango es un elemento de Q L(M)={w|w y (q0 ,w) F }, Lenguaje regular L reconocido por el AFD M Un solo estado actual AFND : Q x Q , rango es un subconjunto de Q L(M)={w|w y (q0 ,w) F = }, Lenguaje regular L reconocido por el AFND M El estado actual puede ser un conjunto de estados (subconjunto de Q), mltiples estados simultaneamente No hay restricciones con respecto a las transiciones, un smbolo de puede tener 0, 1 o ms transciones de salida desde el mismo estado Las posiciones de las celdas pueden tener cualquier subconjunto de Q. Los AFND se utilizan en lenguajes regulares con alfabetos grandes y muchos estados, pues es ms sencillo de modelar, tiene relacin directa con las expresiones regulares y son utiles para aplicar operaciones sobre autmatas El modelo de un AFND es sencillo pues no exige evaluar todo en cada estado, al contrario puede considerar solo las opciones que aceptan las cadenas y muestra un diseo ms sencillo. Por el contrario, su implementacin requiere simular las alternativas simultaneas en cada paso de transicin y puede hacer complejo y poco eciente su programacin e implementacin

Condicin del diagrama de transicin Condicin la tabla transicin Utilidad de de

Desde cada estado existe una transicin de salida por cada smbolo de Cada posicin de la celda de la tabla debe tener slo un estado (estar completa) Los AFD son los que se implementan para el reconocimiento de lenguajes regulares, se usan para simular AFND

Facilidad de modelado y programacin

El modelo de un AFD deben considerar todo en cada los estados esto lo hace exhaustivo y dicil de disear. En cambio su programacin o implementacin es un algortimo determinstico eciente que tiene denido que hacer en cada caso

2.1.

AUTMATAS DE ESTADOS FINITOS

41

= {q1 }, y se expresa en el diagrama de transicin de la gura 2.14 , donde se observa dos conjuntos de caracteres: A = conjunto de caracteres alfabticos B = conjunto de caracteres alfabticos, numricos y subrayados

Figura 2.14: AF que reconoce un identicador en el lenguaje C Existen palabras propias del lenguaje (palabras reservadas) que no pueden ser usadas como identicadores ej: if, do, while, etc. Cmo modicara el AF anterior para considerar que no pueden ser palabras reservadas. 4. Modelar un AF que reconozca el conjunto de enteros y nmeros en punto otante o "literales numricas". En el lenguaje C, las siguientes expresiones son literales numricas vlidas: 3, +0, -2E+7, 13., -01, -14.4, 41.16, -.4E-7, 0.2E-20, 00E0, 01E-06. La letra E se reere a un exponente y su presencia hace que el nmero subsiguiente sea un entero. Se supone que no existe lmite en el nmero de dgitos consecutivos en ninguna parte de la expresin. El AF que reconoce este lenguajes puede ser el siguiente: B = (Q, , , q0 , F), donde Q = {qi | 0 i 7 }, son todos los caracteres numricos y caracteres especiales permitidos (tales como .,+,,E), F = {q1 , q4 , q5 , q6 }, y se expresa en el diagrama de transicin de la gura 2.15, donde se observa el conjunto de caracteres N = {0,1,2,3,4,5,6,7,8,9}.

Ejercicios propuestos
1. Para = {0,1} construya un AFD que acepte los siguientes lenguajes:

a ) El conjunto de cadenas que tiene 011 como subcadena. b ) El conjunto de todas las cadenas cuyo tercer elemento desde el
extremo izquierdo sea un 1.

42

CAPTULO 2.

LENGUAJES REGULARES

Figura 2.15: AF que reconoce un literal numrico en el lenguaje C

c ) El conjunto de cadenas en las que el nmero de ceros es divisible


por 3.

d ) El conjunto de cadenas que terminan con 01. e ) El conjunto vaco. f ) El conjunto de la cadena vaca.
2. Constuya un AF para los siguientes lenguajes:

a ) El conjunto de cadenas basadas en ={a,b,c} cuyo ltimo smbolo


no haya aparecido antes en la misma entrada.

b ) Conjunto de 0 y 1 que contenga 2 ceros separados por un nmero


de posiciones mltiplo de 3. Ntese que 0 es un mltiplo de 3 vlido.

3. Obtenga un autmata nito (de cualquier tipo) para reconocer los siguientes lenguajes apartir del alfabeto binario:

a) b) c) d) e) f) g) h)

cadenas acabadas en 00 cadenas con dos unos consecutivos cadenas que no contengan dos unos consecutivos cadenas con dos ceros consecutivos o dos unos consecutivos cadenas con dos ceros consecutivos y dos unos consecutivos cadenas acabadas en 00 o 11 cadenas con un 1 en la antepenltima posicin cadenas de longitud 4

4. Construir un AFD equivalente a los siguientes autmatas:

2.1.

AUTMATAS DE ESTADOS FINITOS

43

Cuadro 2.9: Tabla de transicin

p q r *s

0 {p, q} {r} {s} {s}

1 {p} {r} {s}

Cuadro 2.10: Tabla de transicin

p *q r *s

0 {q, s} {r} {s}

1 {q} {q, r} {p} {p}

a ) M1 = ({p, q, r, s}, {0, 1}, , p, {s}) donde est dada por el


cuadro 2.9

b ) M2 = ({p, q, r, s}, {0, 1}, , p, {q, s}) donde est dada por el
cuadro 2.10 cuadro 2.11

c ) M3 = ({p, q, r}, {a, b, c}, , p, {r}) donde est dada por el d ) M4 = ({q0 , q1 , q2 , q3 , q4 }, {a, b}, , q0 , {q4 }) donde est dada
por el cuadro 2.12

Cuadro 2.11: Tabla de transicin

p q *r

{p} {q}

a {p} {q} {r}

b {q} {r}

c {r} {p}

44

CAPTULO 2.

LENGUAJES REGULARES

Cuadro 2.12: Tabla de transicin

q0 q1 q2 q3 q4

a { q1 , q 2 } { q4 }

b {q1 , q3 } {q4 }

{q3 }

Bibliografa
[1] Alonzo Church: A note on the Entscheidungsproblem. Journal of Symbolic Logic. 1 (1936). pp 40 - 41. [2] Hopcroft, Rajeev Motwani, Jerey D. Ullman. Introduccin a la Teora de Autmatas y Lenguajes Formales. PrenticeHall, 2002. [3] Chacn, M. y Padrn, J. (1994) Qu es teora. Investigacin y Docencia. Caracas: Publicaciones del Decanato de Postgrado, USR. [4] Seymour Lipschutz (1970) Teora de Conjuntos y Temas anes. macGraw-Hill

45

S-ar putea să vă placă și