15
INSTITUTO TECNOLÓGICO DE TLÁHUAC Ingeniería Mecatrónica Materia: PROGRAMACIÓN EN TIEMPO REAL UNIDAD 4: LENGUAJES Y AUTÓMATAS Grupo: 8M2 Integrantes Equipo 1: Alcántara Gutiérrez Fanny Gómez Escobar Jorge Arnulfo López Jiménez Violeta Martínez Martínez Luis Velázquez De La Rosa Iván Profesor: Ing. Romualdo Jonatan Quintero Hernández México, D.F., a 02 de Mayo de 2013.

4_Lenguajes y Automatas

Embed Size (px)

DESCRIPTION

Información relacionada con los lenguajes para programación y su representación para automatas

Citation preview

Page 1: 4_Lenguajes y Automatas

INSTITUTO TECNOLÓGICO DE TLÁHUAC

Ingeniería Mecatrónica

Materia: PROGRAMACIÓN EN TIEMPO REAL

UNIDAD 4: LENGUAJES Y AUTÓMATAS

Grupo: 8M2

Integrantes Equipo 1:

Alcántara Gutiérrez Fanny Gómez Escobar Jorge Arnulfo

López Jiménez Violeta Martínez Martínez Luis

Velázquez De La Rosa Iván

Profesor:

Ing. Romualdo Jonatan Quintero Hernández

México, D.F., a 02 de Mayo de 2013.

Page 2: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 2 de 15

TABLA DE CONTENIDO

4.1 INTRODUCCIÓN A LENGUAJES Y AUTÓMATAS ..................................................... 3

Conceptos Fundamentales de la Teoría de Autómatas .................................................. 3

Alfabetos..................................................................................................................... 3

Cadenas de Caracteres .............................................................................................. 3

La Cadena Vacía .................................................................................................... 3

Longitud de una Cadena ............................................................................................. 3

Potencias de un Alfabeto ............................................................................................ 4

EJEMPLO ............................................................................................................... 4

Lenguajes ................................................................................................................... 4

4.2 CIRCUITOS SECUENCIALES Y MÁQUINAS DE ESTADO FINITO ............................ 6

Circuitos Secuenciales ................................................................................................... 6

Sistema Secuencial ........................................................................................................ 6

Clasificación de Sistemas Secuenciales ..................................................................... 7

ESTRUCTURA GENERAL DE UN SISTEMA SECUENCIAL SÍNCRONO ................. 7

ELEMENTOS DE MEMORIA: FLIP-FLOP o BIESTABLE ....................................... 7

Sistemas Secuenciales Asíncronos ............................................................................ 8

SISTEMAS SECUENCIALES ASÍNCRONOS: Modo de PULSO ............................ 8

SISTEMAS SECUENCIALES ASÍNCRONOS: Modo de NIVEL .............................. 8

Máquinas de Estado Finito ............................................................................................. 9

Máquinas de Estado Finito con Salida ........................................................................ 9

Máquina de Estado Finito sin Salida ........................................................................... 9

4.3 Autómatas de Estado Finito ....................................................................................... 10

Autómatas Finitos ........................................................................................................ 10

Autómatas Finitos Deterministas .................................................................................. 10

Cómo se procesa una cadena AFD .......................................................................... 11

Notaciones más Simples para los AFD ..................................................................... 11

Diagrama de Transiciones..................................................................................... 11

Tablas de Transiciones ......................................................................................... 12

Expresiones Regulares ................................................................................................ 12

Diagrama de transiciones de Expresiones Regulares ............................................... 12

FUENTES DE INFORMACIÓN ........................................................................................ 15

Page 3: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 3 de 15

4.1 INTRODUCCIÓN A LENGUAJES Y AUTÓMATAS

Conceptos Fundamentales de la Teoría de Autómatas

Los términos más importantes empleados en la teoría de autómatas son:

“alfabeto” (un conjunto de símbolos), “cadenas de caracteres” (una lista de símbolos de un alfabeto) y “lenguaje” (un conjunto de cadenas de caracteres de un mismo alfabeto).

Alfabetos

Un alfabeto es un conjunto de símbolos finito y no vacío. Convencionalmente, utilizamos el símbolo Σ (sigma) para designar un alfabeto. Entre los alfabetos más comunes se incluyen los siguientes:

1. Σ = {0,1}, el alfabeto binario. 2. Σ = {a, b,…, z}, el conjunto de todas las letras minúsculas. 3. El conjunto de todos los caracteres ASCII o el conjunto de todos los caracteres ASCII

imprimibles.

Cadenas de Caracteres

Una cadena de caracteres (que también se denomina en ocasiones palabra) es una secuencia finita de símbolos seleccionados de algún alfabeto.

Por ejemplo, 01101 es una cadena del alfabeto binario Σ= {0,1}. La cadena 111 es otra cadena de dicho alfabeto.

La Cadena Vacía

La cadena vacía es aquella cadena que presenta cero apariciones de símbolos.

Esta cadena, designada por ε (épsilon) o λ (lambda), es una cadena que puede construirse en cualquier alfabeto.

Longitud de una Cadena

Suele ser útil clasificar las cadenas por su longitud, es decir, el número de posiciones ocupadas por símbolos dentro de la cadena. Por ejemplo, 01101 tiene una longitud de 5.

Es habitual decir que la longitud de una cadena es igual al “número de símbolos” que contiene; esta proposición está aceptada coloquialmente, sin embargo, no es estrictamente correcta. Así, en la cadena 01101 sólo hay dos símbolos, 0 y 1, aunque tiene cinco posiciones para los mismos y su longitud es igual a 5. Sin embargo, generalmente podremos utilizar la expresión “número de símbolos” cuando realmente a lo que se está haciendo referencia es al “número de posiciones”.

La notación estándar para indicar la longitud de una cadena w es |w|. Por ejemplo, |011|=3 y |ε|= 0.

Page 4: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 4 de 15

Potencias de un Alfabeto

Si Σ es un alfabeto, podemos expresar el conjunto de todas las cadenas de una

determinada longitud de dicho alfabeto utilizando una notación exponencial. Definimos

para que sea el conjunto de las cadenas de longitud k, tales que cada uno de los símbolos de las mismas pertenece a Σ.

EJEMPLO

Observe que = {ε}, independientemente de cuál sea el alfabeto Σ. Es decir, εes la

única cadena cuya longitud es 0.

Si Σ={0,1}, entonces Σ1={0,1}, Σ={00,01,10,11}, Σ={000,001,010,011,100,101,110,111},

etc.

Observe que existe una ligera confusión entre Σy Σ. Lo primero es un alfabeto; sus elementos 0 y 1 son los símbolos. Lo segundo es un conjunto de cadenas; sus elementos son las cadenas 0 y 1, cuya longitud es igual a 1. No vamos a utilizar notaciones

diferentes para los dos conjuntos, confiando en que el contexto deje claro si {0,1} o algún

otro conjunto similar representa un alfabeto o un conjunto de cadenas.

Por convenio, el conjunto de todas las cadenas de un alfabeto Σse designa mediante Σ.

Por ejemplo, {0,1}* = {ε, 0, 1, 00, 01, 10, 11, 000,…}. Expresado de otra forma,

Σ= Σ0 U Σ1 U Σ2 U…U Σn

En ocasiones, desearemos excluir la cadena vacía del conjunto de cadenas. El conjunto

de cadenas no vacías del alfabeto Σse designa como Σ+. Por tanto, dos equivalencias apropiadas son:

Σ+= Σ1 U Σ2 U Σ3 U… U Σn.

Σ*= Σ+ U {ε}.

Lenguajes

Un conjunto de cadenas, todas ellas seleccionadas de un Σ*, donde Σ es un determinado

alfabeto se denomina lenguaje. Si Σ es un alfabeto y L ⊆ Σ*, entonces L es un lenguaje de Σ. Observe que un lenguaje de Σ no necesita incluir cadenas con todos los símbolos de Σ, ya que una vez que hemos establecido que L es un lenguaje de Σ.

La elección del término “lenguaje” puede parecer extraña. Sin embargo, los lenguajes habituales pueden interpretarse como conjuntos de cadenas. Un ejemplo sería el inglés, donde la colección de las palabras correctas inglesas es un conjunto de cadenas del alfabeto que consta de todas las letras. Otro ejemplo es el lenguaje C, o cualquier otro lenguaje de programación, donde los programas correctos son un subconjunto de las posibles cadenas que pueden formarse a partir del alfabeto del lenguaje. Este alfabeto es un subconjunto de los caracteres ASCII. El alfabeto en concreto puede diferir ligeramente entre diferentes lenguajes de programación, aunque generalmente incluye las letras

Page 5: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 5 de 15

mayúsculas y minúsculas, los dígitos, los caracteres de puntuación y los símbolos matemáticos.

Algunos ejemplos son los siguientes:

1) El lenguaje de todas las cadenas que constan de n ceros seguidos de n unos para cualquier n ≥ 0: {ε, 01, 0011, 000111,…}.

2) El conjunto de cadenas formadas por el mismo número de ceros que de unos: {ε, 01, 10, 0011, 0101, 1001,…}

3) El conjunto de números binarios cuyo valor es un número primo: {10, 11, 101, 111, 1011,…}

4) Σ* es un lenguaje para cualquier alfabeto Σ. 5) Ø, el lenguaje vacío, es un lenguaje de cualquier alfabeto. 6) {ε}, el lenguaje que consta sólo de la cadena vacía, también es un lenguaje de

cualquier alfabeto. Observe que Ø ≠ {ε}; el primero no contiene ninguna cadena y el segundo sólo tiene una cadena.

La única restricción importante sobre lo que puede ser un lenguaje es que todos los alfabetos son finitos. De este modo, los lenguajes, aunque pueden tener un número infinito de cadenas, están restringidos a que dichas cadenas estén formadas por los símbolos que definen un alfabeto finito y prefijado.

Page 6: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 6 de 15

4.2 CIRCUITOS SECUENCIALES Y MÁQUINAS DE ESTADO FINITO

Circuitos Secuenciales

Los sistemas digitales que introducen la dependencia temporal son conocidos como sistemas secuenciales. Una definición más rigurosa de sistema secuencial puede ser la siguiente:

Un circuito de conmutación secuencial se define como un circuito bivaluado en el cual, la salida en cualquier instante depende de las entradas en dicho instante y de la historia pasada (o secuencia) de entradas.

Sistemas combinacionales: la salida depende solamente de lo que haya en las entradas en ese instante.

Sistemas secuenciales: La salida depende de los valores de las entradas en ese instante y también de los

valores que tuvieron en los instantes anteriores Circuitos que “recuerdan” o tienen memoria de las situaciones de interés por las

que ha pasado el sistema, a las situaciones se denominan estados. Variables de estado: en cada caso concreto definen los estados a recordar.

Sistema Secuencial

La forma de operar de un sistema secuencial

A. Operación secuencial del sistema: dado un estado y una entrada el sistema produce una salida y el estado siguiente:

B. Se describe mediante un diagrama de estados (Secuencia de grafos) por los que

pasa el circuito como consecuencia de las sucesivas entradas y las salidas que produce.

Page 7: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 7 de 15

Clasificación de Sistemas Secuenciales

Clasificación de sistemas secuenciales:

Sistemas síncronos:

Sólo se observa el sistema durante el pulso de reloj marcapasos.

El reloj establece cuando se modifica el estado (no la salida: sistemas Mealy).

Sistemas asíncronos:

El sistema es permanentemente activo.

Un cambio en alguna de las entradas del sistema: induce un transitorio que evoluciona hasta el siguiente estado.

ESTRUCTURA GENERAL DE UN SISTEMA SECUENCIAL SÍNCRONO

Dos bloques básicos: en coincidencia con el pulso de reloj

Un bloque combinacional que : Lee las variables de entrada y de estado. Genera las funciones booleanas de salida y de excitación.

Un bloque de memoria que: “Recuerda” la evolución del sistema. Configura el estado anterior.

El nuevo estado se generará y será leído con el nuevo pulso de reloj.

ELEMENTOS DE MEMORIA: FLIP-FLOP o BIESTABLE

BIESTABLE: circuito secuencial que se caracteriza por:

Tener dos estados estables: almacena permanentemente un bit “0” y “1”: Estado: contenido de la memoria Se mantiene indefinidamente en uno de los estados posibles

Entradas o señales externas de excitación hacen que el BIESTABLE cambie de estado.

NOTA: La función de excitación es característica de cada tipo de biestable (D, T, RS o JK).

Page 8: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 8 de 15

Tienen dos salidas:

y : son las variables de estado (definen los estados internos) Las salidas dependen de las entradas (vars de excitación) y del estado anterior.

Sistemas Secuenciales Asíncronos

Son aquellos que NO se encuentran pilotados por un pulso de reloj. Alta velocidad de respuesta.

Dos tipos: Sistemas de modo de nivel: cambio en una de las entradas. Sistemas de modo de pulso: doble cambio en una entrada a pulso

SISTEMAS SECUENCIALES ASÍNCRONOS: Modo de PULSO

Se diseñan con elementos de memoria sin reloj (latches).

NO pulsos simultáneos en dos o más entradas (n entradas, n+1 posibles condiciones de entrada).

Transiciones de los elementos de memoria iniciadas por los pulsos de entrada.

Las variables de entrada sólo se utilizan en la forma no complementada ( ) o complementada (Q), pero no en ambas.

SISTEMAS SECUENCIALES ASÍNCRONOS: Modo de NIVEL

El cambio de nivel de una entrada provoca el posible cambio de la salida y el estado.

No son necesarios elementos de memoria. Circuito combinacional realimentado.

Page 9: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 9 de 15

Máquinas de Estado Finito

Las máquinas de estado finito son modelos abstractos de máquinas con una memoria interna primitiva.

Una máquina de estados se denomina máquina de estados finitos si el conjunto de estados de la máquina es finito, este es el único tipo de máquinas de estados que podemos modelar en un computador en la actualidad.

Todas las versiones de máquinas de estado finito incluyen un conjunto de estados finito (Q), uno de los cuales es el estado inicial, un alfabeto de entrada (Σ) y una función de transición (δ) que asigna a cada pareja de estado y dato de entrada el siguiente estado.

Las máquinas de estado finito se utilizan con mucha frecuencia en aplicaciones de ciencias de la computación y en redes de datos como por ejemplo base de los correctores ortográficos y gramaticales.

Tenemos, que se clasifican en:

Máquinas de Estado Finito con Salida

Máquinas de Estado Finito sin Salida

Máquinas de Estado Finito con Salida

Una máquina de estado finito M= (Q, I, O, δ, g, q0) consiste en un conjunto finito de estados Q; un alfabeto de entradas finito I; un alfabeto finito de salidas O; una función de transición δ, que asigna a cada par de estado y entrada un nuevo estado; una función de salida g, que asigna a cada par de estado y entrada una salida, y un estado inicial q0.

Máquina de Estado Finito sin Salida

Una de las aplicaciones más importantes de las máquinas de estado finito es el reconocimiento de lenguajes. Esta aplicación desempeña un papel fundamental en el diseño y construcción de compiladores para los lenguajes de programación. Se puede utilizar una máquina de estado finito con salida para reconocer un lenguaje produciendo la salida 1 cuando lee una cadena del lenguaje y 0 en caso contrario. Sin embargo, hay otros tipos de máquinas de estado finito que están especialmente diseñadas para el reconocimiento de lenguajes. En lugar de producir una salida, estás máquinas tienen estados finales. Una cadena es reconocida por la máquina si, y sólo si, se produce una transición del estado inicial a unos de estos estados finales.

Las máquinas de estado finito sin salida son los llamados Autómatas Finitos.

Page 10: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 10 de 15

4.3 Autómatas de Estado Finito

Autómatas Finitos

Los autómatas finitos utilizan estados y transiciones entre estados en respuesta a las entradas. Resultan útiles para construir diversos tipos de software, incluyendo el componente de análisis léxico de un compilador y los sistemas que permiten verificar la corrección de, por ejemplo, circuitos o protocolos.

Estos se separan en Autómatas Finitos Deterministas (AFD) y Autómatas Finitos No Deterministas (AFN).

Autómatas Finitos Deterministas

Es aquel que sólo puede estar en un único estado después de leer cualquier secuencia de entradas. El término “determinista” hace referencia al hecho de que para cada entrada sólo existe uno y sólo un estado al que el autómata puede hacer la transición a partir de su estado actual.

Por el contrario, un autómata finito “no determinista” puede estar en varios estados a la vez.

Un autómata finito determinista consta de:

1) Un conjunto finito de estados, a menudo designado como Q.

2) Un conjunto finito de símbolos de entrada, a menudo designado como Σ.

3) Una función de transición que toma como argumentos un estado y un símbolo de entrada y devuelve un estado. La función de transición se designa habitualmente

como δ (delta). En nuestra representación gráfica informal del autómata, δ se ha

representa mediante arcos entre los estados y las etiquetas sobre los arcos. Si q es

un estado y a es un símbolo de entrada, entonces δ (q, a) es el estado p tal que

existe un arco etiquetado a que va desde q hasta p.

4) Un estado inicial, uno de los estados de Q.

5) Un conjunto de estados finales o de aceptación F. El conjunto F es un subconjunto de

Q.

A menudo haremos referencia a un autómata finito determinista mediante su acrónimo: AFD.

La representación más sucinta de un AFD consiste en un listado de los cinco componentes anteriores. Normalmente, en las demostraciones, definiremos un AFD utilizando la notación de “quíntupla” siguiente:

A= (Q, Σ, δ, q0, F)

Page 11: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 11 de 15

Donde A es el nombre del AFD, Q es su conjunto de estados, Σ son los símbolos de

entrada, δ es la función de transición, q0 es el estado inicial y F es el conjunto de estados finales.

Cómo se procesa una cadena AFD

Lo primero que tenemos que entender sobre un AFD es cómo decide si “aceptar” o no una secuencia de símbolos de entrada. El “lenguaje” del AFD es el conjunto de todas las

cadenas que acepta. Supongamos que a1a2… an es una secuencia de símbolos de

entrada. Comenzaremos con el AFD en el estado inicial, q0. Consultamos la función de

transición δ, por ejemplo δ (q0, a1)= q1 para hallar el estado al que pasará el AFD A

después de procesar el primer símbolo de entrada a1. A continuación procesamos el

siguiente símbolo de entrada, a2, evaluando δ (q1, a2); supongamos que este estado es

q2. Continuamos aplicando el mismo procedimiento para hallar los estados q3, q4,…, qn

tal que δ (qi-1, ai)= qi para todo i. Si qn pertenece a F, entonces la entrada a1a2… an se acepta y, si no lo es se “rechaza”.

Notaciones más Simples para los AFD

Especificar un AFD utilizando una quíntupla con una descripción detallada de la función

de transición δ resulta bastante tedioso y complicado de leer. Hay disponibles dos notaciones más cómodas para describir los autómatas:

1) Un diagrama de transiciones, que es un grafo.

2) Una tabla de transiciones, que es una ordenación tabular de la función δ, la cual especifica el conjunto de estados y el alfabeto de entrada.

Diagrama de Transiciones

Un diagrama de transiciones de un AFD A= (Q, Σ, δ, q0, F) es un grafo definido como sigue:

a) Para cada estado de Q, existe un nodo.

b) Para cada estado q de Q y cada símbolo de entrada a de Σ, sea δ (q, a)= p.

Entonces, el diagrama de transiciones tiene un arco desde el nodo q hasta el nodo

p, etiquetado como a. Si existen varios símbolos de entrada que dan lugar a

transiciones desde q hasta p, entonces el diagrama de transiciones puede tener un único arco etiquetado con la lista de estos símbolos.

c) Existe una flecha dirigida al estado inicial q0, etiquetada como Inicio. Esta flecha no tiene origen en ningún nodo.

d) Los nodos correspondientes a los estados de aceptación (los que pertenecen a F)

están marcados con un doble círculo. Los estados que no pertenecen a F tienen un círculo simple.

Page 12: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 12 de 15

Tablas de Transiciones

Una tabla de transiciones es una representación tabular convencional de una función,

como por ejemplo δ, que toma dos argumentos y devuelve un valor. Las filas de la tabla corresponden a los estados y las columnas a las entradas. La entrada para la fila

correspondiente al estado q y la columna correspondiente a la entrada a es el estado

δ (q, a).

Expresiones Regulares

* Estrella de Kleene, repetición (0-n).

+ Cierre positivo, repetición (1-n).

| Alternativa.

EJEMPLO:

0*1 = {λ1, 01, 001,…, 00001, n1}

Diagrama de transiciones de Expresiones Regulares

I. λ ó ε (Cadena Vacía):

II. a (Cadena a):

III. a*:

Page 13: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 13 de 15

IV. a+:

V. a|b:

VI. (a|b)*:

VII. (ac|b)*:

Page 14: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 14 de 15

VIII. (b|bc)+:

IX. x*w*yz:

Page 15: 4_Lenguajes y Automatas

UUNNIIDDAADD 44:: LLEENNGGUUAAJJEESS YY AAUUTTÓÓMMAATTAASS 2013

Página 15 de 15

FUENTES DE INFORMACIÓN

Teoría de Autómatas, Lenguajes y Computación, John E. Hopcroft, et al., Ed. Pearson, Tercera edición, 2007.

Matemática Discreta y sus aplicaciones, Kenneth H. Rosen, Ed. Mac Graw Hill, Quinta edición, 2004.

Matemáticas Discretas, Richard Johnsonbaugh, Ed. Pearson, 2005.