Lenguajes y Expresiones Regulares

Slides:



Advertisements
Presentaciones similares
¿PARA QUE ESTAMOS AQUÍ? LOS OBJETIVOS DE LA ENCARNACIÓN.
Advertisements

el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
UNIVERSIDAD DE ORIENTE NUCLEO DE BOLIVAR COORDINACION GENERAL DE ESTUDIOS DE POSTGRADO POSTGRADO EN CIENCIAS ADMINISTRATIVAS MENCION FINANZAS. V COHORTE.
Propiedades de los Reales
Teoría de Conjuntos Dr. Rogelio Dávila Pérez
Funciones lógicas y su simplificación
Gramáticas, lenguajes y reconocedores
Gramáticas Libres de Contexto
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Autómatas de pila (Pushdown automata)
Gramáticas.
Diseño de Autómatas Finitos
Autómatas Finitos.
Diseño de AFN’s.
Máquinas de Turing (MT)
Álgebra 2010 Clase N° 1 Conjuntos numéricos I
UNIVERSIDAD DE ORIENTE NUCLEO DE BOLIVAR COORDINACION GENERAL DE ESTUDIOS DE POSTGRADO POSTGRADO EN CIENCIAS ADMINISTRATIVAS MENCION FINANZAS. VII COHORTE.
UNIVERSIDAD DE ORIENTE NUCLEO DE BOLIVAR COORDINACION GENERAL DE ESTUDIOS DE POSTGRADO POSTGRADO EN CIENCIAS ADMINISTRATIVAS MENCION FINANZAS. VI COHORTE.
CADENAS Y LENGUAJES.
CLASE 1 SISTEMAS NUMÉRICOS Y CÓDIGOS
Estructuras Algebraicas
Unidad de competencia II Estadística descriptiva:
Tema 2.- Gramáticas independientes de contexto.
Trabajando con Puertas Lógicas
UPC Tema: ESPACIO VECTORIAL Rn
Circuitos de Conmutación
TEORÍA DE CONJUNTOS.
TEÓRIA DE CONJUNTOS.
Introducción a los Números Fraccionarios
Operaciones con expresiones algebraicas
TEÓRIA DE CONJUNTOS Profesor: Rubén Alva Cabrera.
Desarrollo de Habilidades del Pensamiento Matemático
Ecuaciones y Resolución de Ecuaciones Lineales
Expresiones Racionales
Estadística Computacional I
Expresiones regulares
Tema 1.- Lenguajes. Gramáticas
Fundamentos de Lógica Difusa (Fuzzy)
¿cúantos subconjuntos (sucesos compuestos?) pueden formarse?
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Factorización (productos notables)
Exponentes y Logaritmos.
CULENDARIO 2007 Para los Patanes.
Números enteros.
EJERCICIOS DE EXPRESIONES REGULARES Y AUTOMATAS
La transformada de Laplace
Teoría de conjuntos Un conjunto es una colección o clase de objetos bien definidos y diferenciables entre sí. Los conjuntos pueden ser finitos o infinitos.
REGLAS DE LOS SIGNOS.
Unidad 2 Expresiones algebraicas
UPC MATRICES MA49 (EPE) Universidad Peruana de Ciencias Aplicadas
SUCESIONES Y PROGRESIONES.
Sistemas de Ecuaciones lineales
Tema 1.- Lenguajes. Gramáticas
Tema 2 Lenguajes Formales.
Introducción a la Teoría de Lenguajes Preparado por Manuel E. Bermúdez, Ph.D. Profesor Asociado University of Florida Curso de Compiladores.
Lenguajes Independientes del Contexto
Autómatas de Pila Teoría del Autómata.
Gramáticas Otoño2012. Importancia de las gramáticas 2 Son una herramienta muy poderosa para describir y analizar lenguajes.
Teoría de lenguajes y compiladores
Lenguajes regulares Teoría del Autómata.
Teoría de lenguajes y compiladores Analizadores lexicográficos
Tomado de Sudkamp: Languages and Machines Cap. 6.
Lenguajes Formales y Autómatas
Términos algoritmo diseñar algoritmo implementar algoritmo
Teoría de lenguajes y compiladores
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
Capítulo 3: Conjuntos Autor: José Alfredo Jiménez Murillo.
Principio aditivo o de adición o regla de suma
Centro Universitario Valle de México Gramáticas Libres de Contexto Dra. Maricela Quintana López Elaborado por: Autómatas y Lenguajes Formales.
Transcripción de la presentación:

Lenguajes y Expresiones Regulares

Definiciones básicas Alfabeto: conjunto no vacío de símbolos. Es usual utilizar  para denotar un alfabeto. Ejemplos: {0, 1}, {a, b, c}, {0, 11}, {(0, 0), (0, 1), (1, 0), (1, 1)}. Palabra o cadena: es una secuencia de símbolos del alfabeto,es decir, s = a1a2...an, donde ai  . Por lo general se utilizan las primeras letras del alfabeto, a, b, c, d, e, para denotar símbolos del alfabeto y las últimas letras, s, t, u, v, w, x, y, z, para denotar palabras. Longitud de una palabra: es el número de símbolos en s. Se denota por |s|. Palabra nula o vacía : es la palabra de longitud cero. Algunos autores utilizan  para denotarla. Concatenación: si s = a1a2...an y t = b1b2...bn, entonces st = a1a2...anb1b2...bn; s2 = ss; s3 = sss. La concatenación es asociativa, es decir, s(tu) = (st)u, pero no es conmutativa.

...Definiciones básicas Dado un alfabeto , definimos: k = {x | x es una palabra sobre  y |x| = k} Ejemplo:  = {0, 1} 0 ={} 1 ={0, 1} 2 ={00, 01, 10, 11} 3 ={000, 001, 010, 011, 100, 101, 110, 111} ... * = 0  1  2  3 ... es el conjunto de todas las palabras que pueden ser formadas con letras del alfabeto , incluyendo a . A * se le llama la Cerradura de Kleene de . + = 1  2  3 ... es el conjunto de todas las palabras no-vacías que pueden ser formadas con letras de , es decir, + = *  {}. Ejercicio en clase: Sea  = {a, b, c}. Obtener 0, 1, 2 y 3.

Definición recursiva de * Base:   * Paso recursivo: si w  * y a  , entonces wa  *. Cerradura: w pertenece a * sólo si puede ser obtenida a partir de  mediante un número finito de aplicaciones del paso recursivo. Nota: definiciones recursivas son una buena herramienta para definir las palabras o cadenas que componen un lenguaje.

Lenguajes Lenguaje sobre un alfabeto  es un conjunto finito o infinito de palabras sobre , es decir, es un subconjunto de *. Lenguajes interesantes no consisten de conjuntos arbitrarios de cadenas sino de cadenas que cumplen ciertas condiciones las cuales definen la sintaxis del lenguaje. Un lenguaje finito puede ser definido por extensión, a menos que sea “demasiado extenso”. Lenguajes infinitos con requerimientos sintácticos simples pueden definirse recursivamente.

Ejemplos Lenguaje L sobre  ={0, 1} que consta de cadenas que terminan en 1 Base: 1  L Paso recursivo: si u  L y a  , entonces au  L. Cerradura: una cadena u pertenece a L sólo si puede ser obtenida a partir del elemento base mediante un número finito de aplicaciones del paso recursivo. Lenguaje L sobre  ={a, b} que consta de cadenas que inician con a y tienen longitud par Base: aa, ab  L Paso recursivo: si u  L, entonces uaa, uab, uba, ubb  L. Cerradura: una cadena u pertenece a L sólo si puede ser obtenida a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

... Ejemplos Lenguaje L sobre  ={a, b} que consta de cadenas en las que cada ocurrencia de b es inmediatamente precedida por una a. Por ejemplo , a, abaab están en L pero no así bb, bab, abb. Base:   L Paso recursivo: si u  L, entonces ua y uab  L. Cerradura: una cadena u pertenece a L sólo si puede ser obtenida a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

…Ejemplos Sea L el lenguaje sobre el alfabeto  = {0, 1} definido recursivamente por   L Si u  L entonces 0u y 0u1  L. Cualquier elemento en L puede ser obtenido a partir de la regla 1. y utilizando la regla 2. un número finito de veces. Defina L por intención. L = {0m1n | m  n  0

…Ejemplos: Palíndromos Palíndromos: palabra o frase que se lee igual de derecha a izquierda, que de izquierda a derecha anilina dábale arroz a la zorra el abad anita lava la tina Defina recursivamente al conjunto P que consiste de todos los palíndromos sobre el alfabeto .   P Si u  P entonces aua  P para cualquier a  . Cualquier palíndromo sobre {a, b} puede ser obtenido a partir de la regla 1. y utilizando la regla 2. un número finito de veces.

…Ejemplos Defina recursivamente al lenguaje L sobre el alfabeto  = {a, b} que consiste de las palabras que tienen más as que bs. a  L Si u  L entonces au  P. Si u y v  L entonces buv, ubv y uvb  P. Cualquier palabra en L puede ser obtenido a partir de la regla 1. y utilizando las reglas 2. y 3. un número finito de veces.

¿Es suficiente la recursividad? Hay muchos lenguajes que se pueden definir recursivamente, sin embargo, hay muchos otros, como lenguajes computacionales o matemáticos, cuyos requerimientos sintácticos no pueden ser definidos de manera recursiva. Operaciones de conjuntos se pueden aplicar a lenguajes simples para definir lenguajes más complejos. Otro enfoque para definir lenguajes “interesantes” es especificando un procedimiento algorítmico que reconoce si una palabra pertenece o no al lenguaje.

Concatenación de lenguajes L1L2 = {w | w = xy, x  L1 y y  L2} Para un lenguaje L: L0 = {} L1 = L L2 = L L L3 = L L L ... L* = L0  L1  L2  L3 ... (Cerradura de Kleene) L+ = L1  L2  L3 ... = LL*

Ejemplo de concatenación X = {a, b, c}; Y = {abb, ba} XY ={aabb, aba, babb, bba, cabb, cba} X0 = {} X1 = {a, b, c} X2 = XX = {aa, ab, ac, ba, bb, bc, ca, cb, cc} X3 = X2X = {aaa, aab, aac, aba, abb, abc, aca, acb, acc, baa, bab, bac, bba, bbb, bbc, bca, bcb, bcc, caa, cab, cac, cba, cbb, cbc, cca, ccb, ccc}

Ejemplos de Cerradura de Kleene L* son todas las que se pueden formar concatenando cualquier número de veces (excepto ) palabras de L. Las palabras pueden ser iguales o distintas. ¿Cuántos elementos tiene Ln}: 2n Independientemente del lenguaje, ¿Ln tiene siempre 2n elementos?

Contraejemplo L = {0, 00} L0 = {} L1 = {0, 00} L2 = {00, 000, 0000} L* es la palabra vacía  y todas las palabras finitas formadas con ceros.

Más ejemplos L = {a, b}*{bb} {a, b}* Consiste de las cadenas sobre {a, b} que contienen la subcadena bb. Lenguaje que consiste de todas las cadenas que empiezan con aa o terminan con bb. L = {aa}{a, b}*  {a, b}*{bb} L1 = {bb} y L2 = {, bb, bbbb}. L1* = ¿?, L2* = ¿? Tanto L1* como L2* consisten de cadenas que tienen un número par de b’s. {aa, bb, ab, ba}* Consiste de todas las cadenas sobre {a, b} de longitud par. {a, b}*- {aa, bb, ab, ba}* Es el lenguaje que consiste de las cadenas de longitud non. ¿Es regular este lenguaje? Este lenguaje también está dado por {a, b}{aa, bb, ab, ba}*,por lo tanto el lenguaje sí es regular.

Conjuntos regulares Un conjunto es regular si Es el conjunto vacío, , ó el conjunto cuyo elemento es la palabra vacía, {}, ó es un subconjunto simple (sólo un elemento) del alfabeto.er generado a partir Puede ser generado a partir de  ó de {} ó de un subconjunto simple utilizando las operaciones de unión, concatenación y cerradura de Kleene. Nota: no se puede utilizar la diferencia de conjuntos. Definición recursiva de conjunto regular. Sea  un alfabeto. Los conjuntos regulares sobre  se definen recursivamente de la siguiente manera: Base: , {} y {a}, para toda a  , son conjuntos regulares sobre . Paso recursivo: Si X y Y son conjuntos regulares sobre , entonces los conjuntos X  Y, XY y X* también lo son. Cerradura: X es un conjunto regular sobre  sólo si puede ser obtenido a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

Ejemplos de conjuntos regulares {a, b}*{bb}{a, b}* es regular sobre {a, b} Consiste del conjunto de cadenas que contienen a la subcadena bb. El conjunto de cadenas que empiezan y terminan con una a y contienen al menos una b es regular sobre {a, b}. {a}{a, b}*{b}{a, b}*{a}

Expresiones regulares Las expresiones regulares se utilizan para abreviar la descripción de conjuntos regulares. El conjunto regular {a} es representado por a. Las operaciones de unión, concatenación y cerradura de Kleene son denotadas por +, yuxtaposición y *, respectivamente. Definición recursiva de una expresión regular. Sea  un alfabeto. Las expresiones regulares sobre  se definen recursivamente de la siguiente manera: Base: ,  y a, para toda a  , son expresiones regulares sobre . Paso recursivo: Si u y v son expresiones regulares sobre , entonces las expresiones (u+v), (uv) y (u*) también lo son y representan a los conjuntos {u}  {v}, {u}{v} y {u}*, respectivamente. Cerradura: u es una expresión regular sobre  sólo si puede ser obtenido a partir de los elementos base mediante un número finito de aplicaciones del paso recursivo.

Ejemplos Lenguaje Expresión regular {}  {0} 0 {001} = {0}{0}{1} 001 {}  {0} 0 {001} = {0}{0}{1} 001 {0, 1} = {0}{1} 0 + 1 {0, 10} = {0}{10} 0 + 10 {1, }{001} (1 + )001 {110}*{0, 1} (110)*(0 + 1) {1}*{10} 1*10 {10, 111, 11010}* (10 + 111 + 11010)* {0, 10}*({11}*{001, }) (0 + 10)*((11)* + 001 + ) (00 + 01 + 10 + 11)* ((0 + 1)(0 + 1))*

...Expresiones regulares Tomando en cuenta que la unión y la concatenación son asociativas, además conviniendo en que la precedencia u orden de ejecución de las operaciones está dada por: Paréntesis Cerradura de Kleene Concatenación Unión las expresiones se pueden simplificar aún más reduciendo el número de paréntesis. {a, b}*{bb}{a, b}* = (a + b)*bb(a + b)* {a}{a, b}*{b}{a, b}*{a} = a(a + b)*b(a + b)*a Notación u+ = uu* u2 = uu, u3 = u2u, ...

Ejemplo El conjunto {bawab | w  {a, b}*} es regular sobre {a, b} Demostración: Conjunto Expresión Justificación 1. {a} a Base 2. {b} b Base 3. {a}{b}={ab} ab Concatenación de 1 y 2 4. {a}  {b}={a,b} a+b Unión de 1 y 2 5. {b}{a}={ba} ba Concatenación de 2 y 1 6. {a,b}* (a+b)* Cerradura Kleene de 4 7. {ba}{a,b}* ba(a+b)* Concatenación de 5 y 6 8. {ba}{a,b}*{ab} ba(a+b)*ab Concatenación de 7 y 3

Lenguajes regulares Definición: Un lenguaje es regular si se puede representar por una expresión regular o conjunto regular.

...Más ejemplos (a+b)*aa(a+b)*+(a+b)*bb(a+b)*: Representa al conjunto de cadenas sobre {a, b} que contienen a la subcadena aa o a la subcadena bb o a ambas subcadenas. Expresión regular que represente al conjunto de cadenas sobre {a, b} que contienen exactamente dos b’s: a*ba*ba* a*ba*b(a+b)*, (a+b)*ba*ba*, (a+b)*b(a+b)*b(a+b)* representan al conjunto de cadenas sobre {a, b} que contienen dos o más b’s. a*(a*ba*ba*)* y a*(ba*ba*)* Representan cadenas con un número par de b’s. Expresión regular para el lenguaje sobre {a, b} en cuyas palabras inmediatamente antes de toda b aparece una a: (a+ab)*. Expresión regular que representa a las palabras que contienen exactamente una vez dos b’s contiguas: (ba+bc+a+c)*bb(a+c+ab+cb)*

Ejercicio en clase Escriba una expresión regular para el lenguaje sobre {0 ,1} que consiste de las palabras en las que no hay dos símbolos iguales contiguos, es decir, los 0’s y los 1’s se alternan. (01)* + (10)* + 0(10)* + 1(01)* ( + 1)(01)*( + 0) ( + 0)(10)*( + 1)

Equivalencias Una expresión regular define un patrón; una palabra pertenece al lenguaje definido por esa expresión regular si y sólo si sigue el patrón. Una expresión regular que represente un lenguaje debe cumplir dos condiciones: Correcta: todas las palabras representadas por la expresión regular deben ser parte del lenguaje. Completa: toda palabra del lenguaje debe ser representada por la expresión regular. Concatenación indica orden de los símbolos, la cerradura de Kleene permite repeticiones y + indica selección. Dos expresiones que representan al mismo conjunto son llamadas equivalentes.

Identidades u = u =  u = u = u * =  * =  u+v = v+u u+ = u u(v+w) = uv + uw (u+v)w = uw+vw (uv)*u = u(vu)* (u+v)* = (u*+v)* = u*(u+v)* = (u+vu*)* = (u*v*)* = u*(vu*)* = (u*v)*u* u*(u + ) = u* u*u* = u* u* + v* = v* + u* (u*v*)* = (u + v)* = (u + v)*uv(u + v)* + v*u*

Ejemplos Expresión que representa las cadenas sobre {a, b} que no contienen la subcadena aa: b*(ab+)*+b*(ab+)*a = b*(ab+)*(+a) = b*(abb*)*(+a) = (b+ab)*(+a) Expresión regular que representa las cadenas sobre {a, b, c} que contienen la subcadena bc: (a+b+c)*bc(a+b+c)* c*(b+ac*)* Representa las cadenas que no contienen la subcadena bc. Cadenas sobre {0, 1} de longitud igual a 6: (0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1) = (0 + 1)6 Cadenas sobre {0, 1} de longitud mayor o igual a 6: (0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)(0 + 1)* = (0 + 1)6(0 + 1)* Cadenas sobre {0, 1} de longitud menor o igual a 6: (0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + )(0 + 1 + ) = (0 + 1 + )6

Ejercicios en clase Obtenga una expresión regular para el conjunto de palabras sobre {a, b, c} que tienen al menos una a y al menos una b. c*a(a + c)*b(a + b + c)* + c*b(b + c)*a(a + b + c)* Obtenga una expresión regular para el lenguaje sobre {0 , 1} que consiste de las palabras cuyo décimo símbolo contado de la derecha a la izquierda es un 1. (0+1)*1(0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) (0+1) = (0 + 1)*1(0 + 1)9

Pregunta ¿Hay lenguajes para los que no existe una expresión regular que los represente? ¡¡ Sí !!

Ejemplo de un lenguaje no regular {anbn | n  0}

Actividades fuera de clase Control de lectura 2: Lenguajes regulares Tarea 2: Ejercicios 3.1, 3.2, 3.8, 3.9, 3.10 del texto.