gramaticas regulares

Post on 02-Feb-2016

298 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Gramáticas regulares

TRANSCRIPT

GRAMÁTICAS REGULARES

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

INTRODUCCIÓN

Gramáticas regulares:

Son los lenguajes formales más simples, en la

jerarquía de Chomsky se refiere a los lenguajes de

tipo 3, aquellos que pueden representarse mediante,

autómatas finitos o expresiones regulares.

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

INTRODUCCIÓN A LOS AUTÓMATAS FINITOS

Definición:

Un autómata finito o máquina de estado finito es un

modelo computacional que realiza cómputos en forma

automática sobre una entrada para producir una salida.

Este modelo está conformado por un alfabeto, un conjunto

de estados finitos, una función de transición, un estado

inicial y un conjunto de estados finales. Su funcionamiento

se basa en una función de transición, que recibe a partir de

un estado inicial una cadena de caracteres pertenecientes

al alfabeto, y que va leyendo dicha cadena a medida que el

autómata se desplaza de un estado a otro, para finalmente

detenerse en un estado final o de aceptación, que

representa la salida.

INTRODUCCIÓN A LOS AUTÓMATAS FINITOS

Los autómatas finitos constituyen un modelo útil para

muchos tipos de hardware y software. Por ejemplo:

1. Software para diseñar y probar el comportamiento

de circuitos digitales.

2. El “analizador léxico” de un compilador para tratar

identificadores, palabras clave y signos de puntuación.

3. Software para explorar textos largos, o para

determinar el número de apariciones de palabras,

frases u otros patrones.

INTRODUCCIÓN A LOS AUTÓMATAS FINITOS

En la siguiente figura se muestra el modelo de autómata finito

para el interruptor. Como en todos los autómatas finitos, los

estados están representados mediante círculos; en este

ejemplo, hemos denominado a los estados on y off. Los arcos

entre los estados están etiquetados con las “entradas”, las

cuales representan las influencias externas sobre el sistema.

Los dos arcos indican que, sea cual sea el estado en que se

encuentra el sistema, cuando recibe la entrada Pulsar pasa al

otro estado. Uno de los estados se designa como el “estado

inicial”, el estado en el que el sistema se encuentra

inicialmente.

INTRODUCCIÓN A LOS AUTÓMATAS FINITOS

El estado inicial es apagado (off) y, por conveniencia, hemos

indicado el estado inicial mediante la palabra Inicio y una

flecha. A menudo es necesario especificar uno o más estados

como estado “final” o "de aceptación”. Llegar a uno de estos

estados después de una secuencia de entradas indica que

dicha secuencia es correcta. Por ejemplo, el estado (on)

como estado de aceptación, ya que en dicho estado, el

dispositivo que está siendo controlado por el interruptor

funciona. Normalmente, los estados de aceptación se indican

mediante un círculo doble.

INTRODUCCIÓN A LOS AUTÓMATAS FINITOS

El trabajo de este autómata consiste en reconocer la palabra

clave then, por lo que necesita cinco estados, representando

cada uno de ellos la posición dentro de dicha palabra que se

ha alcanzado hasta el momento. Estas posiciones se

corresponden con los prefijos de la palabra. El estado inicial

se corresponde con la cadena vacía y cada uno de los

estados tiene una transición a la siguiente letra de la palabra

then. El estado denominado then se alcanza cuando la

entrada está formada por todas las letras de dicha palabra.

Puesto que el trabajo de este autómata es indicar el

reconocimiento de la palabra then, podemos considerar

dicho estado como el único estado de aceptación.

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

ALFABETOS

Definición:

Un alfabeto es un conjunto de símbolos finito y no

vacío. Convencionalmente, utilizamos el símbolo Σ

para designar un alfabeto.

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.

CADENA DE CARACTERES

Definición:

Una cadena de caracteres 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

Definición:

La cadena vacía es aquella cadena que presenta cero

apariciones de símbolos. Esta cadena, designada por

ε, es

una cadena que puede construirse en cualquier

alfabeto.

LONGITUD DE CADENA

Definición:

Es la longitud de la cadena, es decir, el número

posiciones ocupadas por los símbolos dentro de la

cadena.

Por ejemplo, 01101 tiene una longitud de 5.

LONGITUD DE CADENA

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.

La notación estándar para indicar la longitud de una

cadena w es |w|. Por ejemplo: Si w = 001

|w| = 3

|ε| = 0

POTENCIAS DE UN ALFABETO

Definición:

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 Σ^k para que sea el conjunto de las

cadenas de longitud k, tales que cada uno de los

símbolos de las mismas pertenece a Σ.

POTENCIAS DE UN ALFABETO

Observe que Σ^0 = { }, independientemente de cuál sea

el alfabeto Σ. Es decir, ε es la única cadena cuya longitud es

0.

Si Σ = {0,1}, entonces

Σ^1 = {0,1}

Σ^2 = {00,01,10,11}

Σ^3 = {000,001,010,011,100,101,110,111}

Observe que existe una ligera confusión entre Σ y Σ^1. El

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.

POTENCIAS DE UN ALFABETO

Por convenio, el conjunto de todas las cadenas de un

alfabeto Σ se designa mediante Σ*. Por ejemplo,

Σ* = {ε ,0,1,00,01,10,11,000, . . .}.

Expresado de otra forma,

Σ* = Σ^0 ∪ Σ^1 ∪ Σ^2 ∪ · · ·

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:

Σ+ = Σ^1 ∪ Σ^2 ∪ Σ^3 ∪ · · ·

Σ* = Σ+ ∪ { ε } ó Σ* = Σ+ ∪ Σ^0

CONCATENACIÓN DE CADENAS

Definición:

Sean “x” e “y” dos cadenas. Entonces, “xy” denota la

concatenación de “x” e “y”, es decir, la cadena

formada por una copia de “x” seguida de una copia

de “y”. Dicho de manera más precisa, si “x” es la

cadena compuesta por “ i ” símbolos x = a1a2 · · ·ai e

“y” es la cadena compuesta por “ j ” símbolos y =

b1b2 · · ·bj , entonces “xy” es la cadena de longitud xy

= a1a2 · · ·aib1b2 · · ·bj.

CONCATENACIÓN DE CADENAS

Ejemplo:

Sean x = 01101 e y = 110.

Entonces xy = 01101110 e yx = 11001101.

Para cualquier cadena w, tenemos que:

εw = wε = w

Es decir, ε es el elemento neutro de la concatenación,

dado que su concatenación con cualquier cadena

proporciona la misma cadena como resultado.

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 Σ.

LENGUAJES

Ejemplos:

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.

LENGUAJES

Ejemplos: Si Σ = {0,1}

El lenguaje de todas las cadenas que constan de n

ceros seguidos de n unos para cualquier n ≥ 0:

{ε ,01,0011,000111, . . .}.

El conjunto de cadenas formadas por el mismo

número de ceros que de unos:

{ε ,01,10,0011,0101,1001, . . .}

El conjunto de números binarios cuyo valor es un

número primo: {10,11,101,111,1011, . . .}

LENGUAJES

Curiosidades:

Σ* es un lenguaje para cualquier alfabeto Σ.

Ø, el lenguaje vacío, es un lenguaje de cualquier

alfabeto.

{ ε }, 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.

LENGUAJES

Curiosidades:

La única restricción sobre 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.

LENGUAJES

Definición del Lenguaje Mediante Descripciones de

Conjuntos:

Es habitual describir un lenguaje utilizando una

“descripción de conjuntos”:

{w | algo acerca de w}

Esta expresión se lee “el conjunto de palabras “w” tal

que (lo que se dice acerca de “w” a la derecha de la

barra vertical)”.

LENGUAJES

Ejemplos:

{w | w consta de un número igual de ceros que de unos

}.

{w | w es un entero binario que es primo }.

{w | w es un programa C sintácticamente correcto }.

LENGUAJES

También es habitual reemplazar “w” por alguna

expresión con parámetros y describir las cadenas del

lenguaje estableciendo condiciones sobre los

parámetros.

Ejemplo:

{0^n 1^n | n ≥ 1}.

Esta expresión se lee: “El conjunto de 0 a la “n” y 1 a la

“n” tal que “n” es mayor o igual que 1”, este lenguaje

consta de las cadenas {01,0011,000111, . . .}.

LENGUAJES

Ejemplo:

{0^i1^j | 0 ≤ i ≤ j }.

Este lenguaje consta de cadenas formadas por ceros

(puede ser ninguno) seguidos de al menos el mismo

número de unos.

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Definición:

Es aquel Autómata Finito 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.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

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, se designa como Σ.

3. Una función de transición δ que toma como argumentos un

estado y un símbolo de entrada y devuelve un estado.

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

5. Un conjunto de estados finales F. El conjunto F es un

subconjunto de Q.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Entonces, definiremos un AFD utilizando la notación de

siguiente:

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

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.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Ejemplo:

Especificamos formalmente un AFD que acepte únicamente

todas las cadenas de ceros y unos que contengan la

secuencia 01 en cualquier posición de la cadena. Al que

denominaremos con la letra A.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

¿Qué sabemos del autómata?

En primer lugar, sabemos que su alfabeto de entrada

es Σ = {0,1}.

Tiene un determinado conjunto de estados, Q, siendo

uno de ellos, por ejemplo q0, el estado inicial.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

1. Ha leído ya una subcadena 01. En caso afirmativo,

aceptará cualquier secuencia de entradas futura; es decir,

sólo se encontrará en estados de aceptación.

2. Todavía no ha leído la secuencia 01, pero la entrada

más reciente ha sido un 0, de manera que si ahora lee un

1, habrá leído la subcadena 01 y podrá aceptar cualquier

cosa que lea de ahí en adelante

3. Todavía no ha leído la secuencia 01, pero la última

entrada no existe (acaba de iniciarse) o ha sido un 1. En

este caso, A no puede aceptar la entrada hasta que no lea

un 0 seguido inmediatamente de un 1.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Cada una de las tres condiciones anteriores puede

representarse mediante un estado. La condición (3) se

representa

mediante el estado inicial, q0. Si estando en el estado q0 lo

primero que leemos es un 1, entonces no leeremos la

secuencia 01 y, por tanto, deberemos permanecer en el estado

q0. Es decir, δ (q0,1) = q0.

¿Todavía no ha leído la secuencia 01, pero la última entrada no

existe (acaba de iniciarse) o ha sido un 1? En este caso, A no puede

aceptar la entrada hasta que no lea un 0 seguido inmediatamente

de un 1.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Sin embargo, si estando en el estado q0 y a continuación

leemos un 0, nos encontraremos en el caso de la condición (2).

Por tanto, utilizaremos q2 para representar la condición (2). La

transición de q0 para la entrada 0 es δ (q0,0) = q2.

Todavía no ha leído la secuencia 01, pero la entrada más reciente

ha sido un 0, de manera que si ahora lee un 1, habrá leído la

subcadena 01 y podrá aceptar cualquier cosa que lea de ahí en

adelante

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Consideremos ahora las transiciones desde el estado q2. Si

leemos un 0, no mejoramos nuestra situación pero tampoco la

empeoramos. El estado q2 describe esta situación

perfectamente, por lo que deseamos que δ (q2,0) = q2.

Todavía no ha leído la secuencia 01, pero la entrada más reciente

ha sido un 0, de manera que si ahora lee un 1, habrá leído la

subcadena 01 y podrá aceptar cualquier cosa que lea de ahí en

adelante

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Si nos encontramos en el estado q2 y leemos una entrada 1,

entonces disponemos de un 0 seguido de un 1. Ahora podemos

pasar a un estado de aceptación, que denominaremos q1, y

que se corresponde con la condición (1). Es decir, δ (q2,1) =

q1.

¿Ha leído ya una subcadena 01? En caso afirmativo, aceptará

cualquier secuencia de entradas futura; es decir, sólo se

encontrará en estados de aceptación.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Por último, tenemos que diseñar las transiciones para el estado

q1. En este estado, ya hemos leído una secuencia 01, así que,

independientemente de lo que ocurra, nos encontraremos en

una situación en la que hemos leído la secuencia 01.

Es decir, δ (q1,0) = q1 y (q1,1) = q1.

¿Ha leído ya una subcadena 01? En caso afirmativo, aceptará

cualquier secuencia de entradas futura; es decir, sólo se

encontrará en estados de aceptación.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Por tanto, Q = {q0,q1,q2}.

Como hemos dicho, q0 es el estado inicial y el único estado

de aceptación es q1; es decir, F = {q1}.

La especificación completa del autómata A que acepta el

lenguaje L de cadenas que contienen una subcadena 01 es

A = ( { q0 , q1 , q2 } , { 0 , 1 } , δ , q0 , { q1 } )

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Tablas de Transiciones

Una tabla de transiciones es una representación tabular

convencional de una función 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).

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Extensión a cadenas de la función de transición

Si δ es la función de transición, entonces la función de

transición extendida construida a partir de δ será δ^ . La

función de transición extendida es una función que toma un

estado “q” y una cadena “w” y devuelve un estado “p” (el

estado al que el autómata llega partiendo del estado “q” y

procesando la secuencia de

entradas “w”).

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Extensión a cadenas de la función de transición

Definimos δ^ por inducción sobre la longitud de la cadena de

entrada como sigue:

Base: δ^ (q,ε) = q. Es decir, si nos encontramos en el

estado “q” y no leemos ninguna entrada, entonces

permaneceremos

en el estado “q”.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Extensión a cadenas de la función de transición

Paso Inductivo: Supongamos que “w” es una cadena de la forma “xa”;

es decir, “a” es el último símbolo de “w” y “x” es la cadena formada

por todos los símbolos excepto el último.

Por ejemplo, w = 1101 se divide en x = 110 y a = 1.

Luego: δ (δ^(q , x), a) = q

δ (p, a) = q

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Ejemplo:

Supongamos que tenemos el lenguaje

L = {w | w tiene un número par de ceros y un número par de unos}

q0: tanto el número de ceros como el de unos leídos hasta el momento

es par.

q1: el número de ceros leídos hasta el momento es par, pero el de

unos es impar.

q2: el número de unos leídos hasta el momento es par, pero el de

ceros es impar.

q3: tanto el número de ceros como el de unos leídos hasta el momento

es impar.

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

El estado q0 es tanto el estado inicial como el único estado

de aceptación. Es el estado inicial porque antes de leer

ninguna entrada, la cantidad de ceros y unos leídos hasta el

momento es igual a cero y cero es par. Ahora ya sabemos

cómo especificar el AFD para el lenguaje L.

Así A = ( { q0 , q1 , q2 , q3 } , { 0 , 1 } , δ , q0 , { q0 } )

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Ejemplo:

Supongamos que la entrada es 110101.

Dado que esta cadena tiene un número par de ceros y unos,

podemos asegurar que pertenece al lenguaje. Así, tendremos

que δ (q0,110101) = q0, ya que q0 es el único estado de

aceptación. Verifiquemos ahora esta afirmación.

La comprobación supone calcular δ (q0,w) para cada prefijo

w de 110101, comenzando por ε y aumentando

progresivamente el tamaño. El resumen de este cálculo es:

AUTÓMATAS FINITOS DETERMINISTAS (AFD)

Ejemplo: 110101

δ ( q0 , ε ) = q0.

δ( q0 , 1 ) = δ( (q0 , ε ) , 1 ) = δ( q0 , 1 ) = q1.

δ( q0 ,11 ) = δ( (q0 , 1 ) ,1 ) = δ( q1 , 1 ) = q0.

δ( q0 , 110 ) = δ( (q0 , 11 ) , 0 ) = δ( q0 , 0 ) = q2.

δ( q0 , 1101 ) = δ( (q0 , 110 ) , 1 ) = δ( q2 , 1 ) = q3.

δ( q0 , 11010 ) = δ( (q0 , 1101 ) , 0 ) = δ( q3 , 0 ) = q1.

δ( q0 , 110101 ) = δ( (q0 , 11010 ) , 1 ) = δ( q1 , 1 ) = q0.

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

Al igual que el AFD, un AFN tiene un conjunto finito de

estados, un conjunto finito de símbolos de entrada, un

estado inicial y un conjunto de estados de aceptación. La

diferencia entre los AFD y los AFN se encuentra en el tipo

de función δ. En los AFN, δ es una función que toma un

estado y símbolos de entrada como argumentos, pero

devuelve un conjunto de cero, uno o más estados (en lugar

de devolver exactamente un estado como lo hacen los

AFD).

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

Ejemplo:

A continuación se muestra un autómata finito no determinista, cuyo trabajo consiste en aceptar todas las cadenas formadas por ceros y unos que terminan en 01.

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

Ejemplo: Vamos a probar la cadena 00101

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

Equivalencia de un AFD y un AFN

Todo lenguaje que puede describirse mediante algún AFN

también puede ser descrito mediante algún AFD.

El AFD en la práctica tiene aproximadamente tantos

estados como el AFN, aunque a menudo tiene más

transiciones.

En el caso peor, el AFD puede tener 2^n estados mientras

que el AFN más pequeño para el mismo lenguaje tiene sólo

“n” estados.

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

Ejemplo:

Sea N el autómata que acepta todas las cadenas de

números binarios que terminan en 01. Dado que el conjunto

de estados de N es {q0,q1,q2}, la construcción del

subconjunto de estados para un AFD da como resultado

2^3 = 8 estados, correspondientes a todos los

subconjuntos de estos tres estados.

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

AUTÓMATAS FINITOS NO DETERMINISTAS (AFN)

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

AUTÓMATAS FINITOS CON TRANSICIÓN -

Esta nueva “característica” de los autómata finito nos

permite transiciones para ε , la cadena vacía. Así, un AFN

puede hacer una transición espontáneamente, sin recibir

un símbolo de

entrada. Esta nueva capacidad no expande la clase de

lenguajes que los autómatas finitos pueden aceptar, pero

proporciona algunas “facilidades de programación”.

AUTÓMATAS FINITOS CON TRANSICIÓN -

Podemos representar un AFN-ε del mismo modo que

representaríamos un AFN con una excepción: la función de

transición tiene que incluir la información sobre las

transiciones para ε . Formalmente, representamos un AFN-ε

“A” mediante

A = (Q, Σ, δ ,q0,F), donde todos los componentes tienen la

misma interpretación que en un AFN, excepto que ahora δ es

una función que toma como argumentos:

1. Un estado de Q y,

2. Un elemento de Σ ∪ { ε }, es decir, un símbolo de entrada

o el símbolo ε . Es preciso que ε , no pueda ser un elemento

del alfabeto Σ, con el fin de que no se produzcan confusiones.

AUTÓMATAS FINITOS CON TRANSICIÓN -

Ejemplo: Autómata que acepte la palabra web o ebay

AUTÓMATAS FINITOS CON TRANSICIÓN -

Ejemplo:

AUTÓMATAS FINITOS CON TRANSICIÓN -

Clausura Respecto de

La clausura respecto de ε de un estado “q” se realiza

siguiendo todas las transiciones salientes de “q” que estén

etiquetadas

con ε . Sin embargo, cuando obtenemos los otros estados

siguiendo ε , seguimos las transiciones-ε salientes de

dichos estados, y así sucesivamente, hasta encontrar todos

los estados a los que se puede llegar desde “q” siguiendo

cualquier camino cuyos arcos estén etiquetados con ε.

AUTÓMATAS FINITOS CON TRANSICIÓN -

Clausura Respecto de

Formalmente, la clausura respecto de ε ,CLAUSURAε(q),

se define recursivamente de la forma siguiente:

Base: El estado “q” pertenece a CLAUSURAε (q).

Paso Inductivo: Si el estado “p” pertenece a CLAUSURAε

(q) y existe una transición desde el estado “p” al estado “r”

etiquetada con ε , entonces r pertenece a CLAUSURAε (q). De

forma más precisa, si δ es la función de transición del AFN-ε y

“p” pertenece a CLAUSURAε (q), entonces CLAUSURAε (q)

también contiene todos los estados de δ (p,ε).

AUTÓMATAS FINITOS CON TRANSICIÓN -

Ejemplo:

CLAUSURAε (1) = {1,2,3,4,6}

AUTÓMATAS FINITOS CON TRANSICIÓN -

Eliminación de las transiciones-ε

Dado cualquier AFN-ε E, podemos hallar un AFD D que

acepte el mismo lenguaje que E. La construcción que

empleamos es muy parecida a la construcción de

subconjuntos de un AFN a un AFD, ya que los estados de D

son subconjuntos de los estados de E. La única diferencia

es que tenemos que incorporar las transiciones-ε de E, lo

que hacemos a través del mecanismo de clausura respecto

de ε.

AUTÓMATAS FINITOS CON TRANSICIÓN -

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

EXPRESIONES REGULARES

Definición:

Una expresión regular, es una secuencia de caracteres

que forma un patrón de búsqueda, principalmente utilizada

para la búsqueda de patrones de cadenas de caracteres u

operaciones de sustituciones.

EXPRESIONES REGULARES

Las expresiones regulares están estrechamente

relacionadas con los autómatas finitos no deterministas y

pueden considerarse una alternativa. Pueden definir de

forma exacta los mismos lenguajes que describen los

distintos tipos de autómatas. Sin embargo, las expresiones

regulares ofrecen algo que los autómatas no proporcionan:

una forma declarativa para expresar las cadenas que

deseamos aceptar. Por tanto, las expresiones

regulares sirven como lenguaje de entrada de muchos

sistemas que procesan cadenas.

EXPRESIONES REGULARES

Operaciones de las Expresiones Regulares

Unión:

La unión de dos lenguajes L y M, designada como L ∪ M, es

el conjunto de cadenas que pertenecen a L, a M o a ambos.

Ejemplo:

L = {001,10,111}

M = {ε,001}

entonces L ∪ M = {ε,10,001,111}

EXPRESIONES REGULARES

Operaciones de las Expresiones Regulares

Concatenación

La concatenación de los lenguajes L y M es el conjunto de

cadenas que se puede formar tomando cualquier cadena

de L y concatenándola con cualquier cadena de M. Para

designar la concatenación de lenguajes se emplea el punto

o ningún operador.

EXPRESIONES REGULARES

Operaciones de las Expresiones Regulares

Concatenación

Ejemplo:

L={001,10,111}

M = {ε ,001}

entonces L.M = {001,10,111,001001,10001,111001}

Las tres primeras cadenas de L.M son las cadenas de L

concatenadas con ε . las tres últimas cadenas de L.M se forman

tomando cada una de las cadenas de L y concatenándolas con

la segunda cadena de M, que es 001.

EXPRESIONES REGULARES

Operaciones de las Expresiones Regulares

Clausura o Clausura de Kleene

La clausura de un lenguaje L se designa mediante L* y

representa el conjunto de cadenas que se pueden formar

tomando cualquier número de cadenas de L y

concatenando todas ellas.

EXPRESIONES REGULARES

Operaciones de las Expresiones Regulares

Clausura o Clausura de Kleene

Ejemplo:

Si L = {0,1} entonces L* es igual a todas las cadenas de 0s y 1s.

Si L = {0,11} entonces L* es igual a todas cadenas de 0s y 1s

tales que los 1s aparezcan por parejas: 011, 11110

L* es la unión infinita ∪i≥0 L^i donde

L^0 = {ε }

L^1 = L

L^i, para i > 1 es LL· · ·L (la concatenación de i copias de L).

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Conmutatividad

Esta ley establece que podemos efectuar la unión de dos

lenguajes en cualquier orden.

Por ejemplo: L + M = M + L

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Asociatividad de la unión

Esta ley, establece que podemos efectuar la unión de tres

lenguajes bien calculando primero la unión de los dos

primeros, o bien la unión de los dos últimos.

Por ejemplo: (L + M) + N = L + (M + N)

Asociatividad para la concatenación

Esta ley, establece que podemos concatenar tres lenguajes

concatenando primero los dos primeros o bien los dos

últimos.

Por ejemplo: (LM)N = L(MN)

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Elemento Identidad y Elemento Nulo

El elemento identidad de un operador es un valor tal que

cuando el operador se aplica al propio elemento identidad y a

algún otro valor, el resultado es ese otro valor. Por ejemplo, 0

es el elemento identidad para la suma, ya que 0+x= x+0 = x,

y 1 es el elemento identidad de la multiplicación, puesto que

1×x= x×1 = x.

El elemento nulo de un operador es un valor tal que cuando

el operador se aplica al propio elemento nulo y a algún otro

valor, el resultado es el elemento nulo. Por ejemplo, 0 es el

elemento nulo de la multiplicación, ya que 0×x = x×0 = 0.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Elemento Identidad y Elemento Nulo

Existen tres leyes para las expresiones regulares:

Ø + L = L + Ø = L. Esta ley establece que Ø es el

elemento identidad para la unión.

εL = Lε = L. Esta ley establece que ε es el elemento

identidad para la concatenación.

ØL = LØ = Ø. Esta ley establece que Ø es el elemento

nulo de la concatenación.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Leyes Distribuidas

Una ley distributiva implica a dos operadores y establece

que un operador puede aplicarse por separado a cada

argumento del otro operador.

L(M + N) = LM + LN. Ésta es la ley distributiva por la

izquierda de la concatenación respecto de la unión.

(M + N)L = ML + NL. Ésta es la ley distributiva por la

derecha de la concatenación respecto de la unión.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Ley de Idempotencia

Se dice que un operador es idempotencia si el resultado de

aplicarlo a dos valores iguales es dicho valor. Por tanto,

para expresiones regulares, podemos establecer la

siguiente ley:

L + L = L. Ésta es la ley de idempotencia para la unión,

que establece que si tomamos la unión de dos expresiones

idénticas, podemos reemplazarla por una copia de la de la

expresión.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Leyes Relativas a la Clausura

(L*)* = L*. Esta ley dice que clausurar una expresión que

ya está clausurada no modifica el lenguaje. El lenguaje de

(L*)* está formado por todas las cadenas creadas mediante

la concatenación de cadenas pertenecientes al lenguaje L*.

Pero dichas cadenas están formadas a su vez por cadenas

de L. Por tanto, la cadena perteneciente a (L*)* también es

una concatenación de cadenas de L y, por tanto, pertenece

al lenguaje de L*.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Leyes Relativas a la Clausura

Ø* = ε . La clausura de Ø sólo contiene la cadena ε

ε * = ε . Es fácil comprobar que la única cadena que se

puede formar concatenando cualquier número de copias de

la cadena vacía es la propia cadena vacía.

L* = (L+) + ε . La demostración es fácil, ya que la

expansión de L+ incluye cada uno de los términos de la

expansión de L* excepto ε.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Leyes Relativas a la Clausura

L+ = LL* = L*L

Recuerde que L+ se define para ser L+LL+LLL+· · · .

Y que, L* =ε +L+LL+ LLL+· · ·

Por tanto:

LL* = Lε +LL+LLL+LLLL+· · ·

Teniendo en cuenta que Lε = L, vemos que las expansiones

infinitas para LL* y para L+ son iguales.

Esto demuestra que L+ = LL*

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Procedencia de los Operadores

El operador asterisco (*) es el de precedencia más alta. Es

decir, se aplica sólo a la secuencia más corta de símbolos a

su izquierda que constituye una expresión regular bien

formada.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Procedencia de los Operadores

El siguiente en precedencia es el operador de

concatenación, “punto”. Después de aplicar todos los

operadores a sus operandos, aplicamos los operadores de

concatenación a sus operandos. Dado que la concatenación

es una operación asociativa, no importa en qué orden se

realicen las sucesivas concatenaciones, aunque si hay que

elegir, las aplicaremos por la izquierda.

Por ejemplo, 012 se aplica así: (01)2.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Procedencia de los Operadores

Ejemplo:

La expresión 01*+1 se aplica de la forma siguiente: 0(1*)

+1. El operador (*) se aplica en primer lugar. A

continuación, realizamos las concatenaciones entre 0 y

(1*), obteniendo la expresión 0(1*) . Por último, el operador

de unión (+) se aplica entre la última expresión y la que

está a su derecha, que es 1.

EL ALGEBRA DE LA LAS EXPRESIONES REGULARES

Procedencia de los Operadores

Por último, se aplican todos los operadores de unión (+) a

sus operandos. Dado que la unión también es asociativa, de

nuevo no importa en que orden se lleven a cabo, pero

supondremos que se calculan empezando por la izquierda.

TEMARIO

Introducción

Introducción a los Autómatas Finitos

Conceptos Fundamentales de la Teoría de Autómatas

Autómatas Finito Deterministas (AFD)

Autómatas Finitos No Deterministas (AFN)

Autómatas Finitos con Transición - ε

Expresiones Regulares

El Algebra de la las Expresiones Regulares

Ejercicios

EJERCICIOS

Autómatas Finitos Deterministas (AFD)

Describa los AFD que aceptan los siguientes lenguajes

con el alfabeto {0,1}:

1. El conjunto de todas las cadenas que terminan en 00.

2. El conjunto de todas las cadenas con tres ceros

consecutivos (no necesariamente al final).

3. El conjunto de cadenas que contengan la subcadena

011.

4. El conjunto de cadenas que empiecen o terminen (o

ambas cosas) con 01.

EJERCICIOS

Autómatas Finitos No Deterministas (AFN)

1. El conjunto de cadenas del alfabeto {0,1, . . . ,9} tal

que el dígito final haya aparecido antes en la misma

entrada.

2. El conjunto de cadenas del alfabeto {0,1, . . .,9} tal

que el dígito final no haya aparecido antes.

3. El conjunto de cadenas formadas por ceros y unos

tal que contengan dos ceros separados por una

cantidad de posiciones que es múltiplo de 4. Observe

que 0 es un múltiplo permitido de 4.

EJERCICIOS

Expresiones Regulares

Escriba expresiones regulares para los siguientes

lenguajes:

1. El conjunto de cadenas del alfabeto {a,b,c} que

contienen al menos una a y al menos una b.

2. El conjunto de cadenas formadas por 0s y 1s con a lo

sumo una pareja de 1s consecutivos.

3. El conjunto de todas las cadenas formadas por ceros y

unos tales que cada pareja de 0s adyacentes aparece

antes que cualquier pareja de 1s adyacentes.

4. El conjunto de todas las cadenas formadas por ceros y

unos que contienen 101 como subcadena.

EJERCICIOS

Expresiones Regulares

Proporcione las descripciones informales de los

lenguajes correspondientes a las siguientes

expresiones regulares:

1. (1+ε )(00*1)*0+

2. (0*1*)*000(0+1)*

3. (0+10)*1*

EJERCICIOS

Algebra de Expresiones Regulares

Demuestre si cada una de las siguientes proposiciones

acerca de expresiones regulares es verdadera o falsa.

1. (R+S)* = R*+S*

2. (RS+R)*R = R(SR+R)*

3. (RS+R)*RS = (RR*S)*

4. (R+S)*S = (R*S)*

5. S(RS+S)*R = RR*S(RR*S)*

top related