diapositiva 1 - ecaths1.s3.amazonaws.comecaths1.s3.amazonaws.com/programacion2/1015083589... ·...

28
0 0 07:53

Upload: phamkhanh

Post on 19-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

0 0 07:53

1 1 07:53

Temas

Símbolo, alfabeto

Hileras y operaciones con hileras

Operaciones con lenguajes

Objetivo

Que el estudiante logre conocer, comprender y manejar conceptos

vinculados con la Teoría de Lenguajes Formales y realizar operaciones con

hileras y lenguajes.

2 2 07:53

Teoría de la computabilidad: establece las limitaciones de las

computadoras generalmente indicando la clase de problemas que

pueden ser resueltos por computadoras. Para lo cual se necesita de

modelos matemáticos precisos y un algoritmo para su solución. El

modelo que casi siempre se usa es la Máquina de Turing.

La teoría de lenguajes formales y de autómatas pertenece a la teoría

de la computabilidad.

3 3 07:53

Un lenguaje puede ser imaginado como un conjunto de sentencias con estructura bien definida y por lo general con significado.

Semántica: define el significado de la construcción del

lenguaje. Asigna un significado o interpretación a los

símbolos.

p q fórmula proposicional válida

p q fórmula proposicional no válida

p q significa la disyunción de las proposiciones p y q

Sintaxis: define que líneas de caracteres son válidas.

Un lenguaje puede ser imaginado como un conjunto de sentencias con estructura bien definida y por lo general con significado.

Un lenguaje puede ser imaginado como un conjunto de sentencias con estructura bien definida y por lo general con significado.

4 4 07:53

Se usa cierto lenguaje L1 , para definir a otro lenguaje L2. El lenguaje

L1 se denomina metalenguaje y L2 , lenguaje objeto. Los símbolos

de L1 y L2 se denominan símbolos no terminales y símbolos

terminales, respectivamente.

Ejemplo L1 = { x + y | y + x }

se considera un lenguaje sobre el alfabeto x, y, +.

Elementos del lenguaje: símbolos x, y, +

Elementos del metalenguaje: símbolos {, }, |

5 5 07:53

Ejemplo L2 = { xm + yn / m 1, n 1 }

En el metalenguaje usado para especificar L2 los símbolos de potencia

m y n significan que un número arbitrario de símbolos x y y

aparecen en las hileras del lenguaje. Ya que m puede diferir de n,

los números de las x en una hilera pueden diferir del número de las y.

El símbolo / se usa en lugar de la palabra "donde" y las limitaciones

de m y n que le siguen especifican que al menos una x y una y

aparecerán en cualquier hilera válida.

6 6 07:53

Símbolo: es simplemente una representación distinguible

de cualquier información.

– Es un elemento atómico e indivisible.

– Ejemplos: w, 9, #, etc.

Alfabeto o Vocabulario: es un conjunto finito y no

vacío de símbolos arbitrarios (símbolos terminales).

V = {a1 , a2 , ... , an }

─ Ejemplos:

Alfabeto español V = {a, b, c, . . . , z}

Alfabeto de máquina V = {0, 1}

Alfabeto griego V = {, , . . . , }

7 7 07:53

Es cualquier string de longitud finita compuesto por símbolos sobre el vocabulario. Es un conjunto finito de símbolos yuxtapuestos.

Longitud de una hilera: es la cantidad de símbolos que componen esa hilera.

─ Notación: |x| para una hilera x.

─ Es decir, si x = x1 … xn entonces |x|=n.

Hilera o palabra vacía: es la cadena de longitud cero.

─ Notación: o

─ Longitud de es 0

Ejemplo

V = {a, b}

x= a y = b

Ejemplo

x = perro |x| = 5

x = abba |x| = 4

x es una hilera sobre V, si y solo si x = x1 … xn donde xi V, i = 1, …, n

8 8 07:53

Vn denota el conjunto de todas las hileras de longitud n sobre V.

Un elemento de Vn será una cadena del tipo a1a2...an donde cada ai V.

El conjunto de todas las hileras de cualquier longitud que se pueden

formar con un alfabeto se denota por V*.

Es decir, si V es un vocabulario, V* denota el conjunto de todas las

hileras compuestas por símbolos de V incluida la hilera vacía.

– El conjunto es infinito, pero enumerable. Se denomina cerradura de

Kleene del vocabulario

– V+ = V* – {}

0

*n

nVV

Ejemplo

V= {0,1}

V* = {, 0, 1, 00, 01, 10, 11, 000, 111, 011, 100, …}

Ejemplo

V= {0,1}

V+ = {0, 1, 00, 01, 10, 11, 000, 111, 011, 100, …}

9 9 07:53

Concatenación Sea x= a1 a2 ... an y =b1b2 ... bm

x.y = a1 a2 ... an b1b2 ... bm

La concatenación:

Es asociativa:

x(yz) = (xy)z

No conmutativa:

xy ≠ yx

Posee elemento neutro:

x = x = x

x y = xy

Longitud de concatenación

|xy| = |x|+|y|

Es una operación cerrada

x,y V*: x . y V*

Ejemplo

x= abb y = bac

xy = abbbac

Ejemplo

x= ab y = bc z=de

ab(bcde) = (abbc)de

Ejemplo

x= abb y = bc

abbbc ≠ bcabb

10 10 07:53

Potencia de una palabra (Concatenación iterativa)

Se llama potencia n-ésima de una palabra, a la operación que consiste en

concatenar la palabra consigo misma n veces. Dada una palabra w V*,

se define inductivamente wn, como:

• Es necesario usar paréntesis cuando sea necesario.

Ejemplo

x= ab

x0 =

x1 = ab

x2 = abab

x3 = ababab

Ejemplo

(ab)3 = ababab iteración de ab

ab3 = abbb iteración de b

wn = si n = 0

w.wn-1 si n > 0

11 11 07:53

Inversa de una palabra

Se obtiene de escribir los símbolos

de una palabra en orden inverso.

─ Notación: p-1

─ Si p=a1 a2 ... an entonces p-1 = an an-1 ... a1

─ (p-1 )-1 =p

─ (p-1 )i = (pi )-1 para todo i=0,1, ....

Ejemplo

x= abc

x-1 = cba

12 12 07:53

Subhilera: dada la hilera x, y es una subhilera de x si existen r y s tales que x = rys

– Todo elemento o símbolo perteneciente a una hilera es una subhilera.

– La hilera vacía es una subhilera de toda hilera.

Subhilera prefijo: es una hilera de cualquier número de símbolos a la izquierda de la hilera.

Subhilera sufijo: es cualquier número de símbolos a la derechos.

Ejemplo prefijo

x= abb

y = , y = a

y = ab, y = abb

Ejemplo sufijo

x= abb

y = , y = b

y = bb, y = abb

13 13 07:53

Homomorfismo : Otra operación importante es el homomorfismo que es

conmutativa con respecto a la concatenación en el siguiente sentido: para todo

par de palabras P, Q V* la imagen homomórfica de la concatenación, esto es

h(PQ) es lo mismo que la concatenación de sus imágenes h(P) y h(Q)

h(PQ) = h(P) h(Q) P y Q V*

Mapeo: sea V1 y V2 dos alfabetos. Entonces el mapeo h de V1* en

V2* se llama homomorfismo si cumple con las siguientes propiedades:

1) h es única, esto es, para cada P en V1* hay exactamente una

palabra W en V2* con W = h(P).

2) h(PQ) = h(P)h(Q) para todo P,Q en V1*.

Estas dos propiedades significan que h( ) = . Es decir, para cada P en V1*

h(P) = h( P) = h() h(P)

14 14 07:53

El homomorfismo h se llama isomórfico si para todo P y Q con h(P) = h(Q)

implica P=Q. El caso especial de isomorfismo surge cuando la imagen de los

símbolos de V1 son símbolos en V2. Tal isomorfismo es simplemente una

transformación de V1 a V2.

Ejemplo

Código decimal binario representado por los enteros donde:

V1 = {0,1,...9} V2 = {0,1} y

h(0) = 0000

h(1) = 0001

h(2) = 0010

...

h(9) = 1001

El homomorfismo es muy útil en esta teoría, por ejemplo para generar

gramáticas equivalentes.

15 15 07:53

Dado el siguiente lenguaje determinar qué símbolos pertenecen al metalenguaje y cuáles al lenguaje objeto. a) L = { xZm | Z = + y; m 0 }

Sea x = 0101; calcular: a) x-1

b) x0 c) x1 d) x2 Sea x = acb y y = aba ; calcular: a) xy b) (xy)-1 c) y-1x-1 d) x e) y f) x y g) x2 y2

16 16 07:53

Es un conjunto arbitrario de hileras de V*

y se denota L.

El lenguaje vacío contiene únicamente la hilera vacía. Notación: = {}

Lenguaje

Extensión: enumerando sus elementos

entre llaves

Comprensión:

L = {w V∗ | w cumple la propiedad P}

ab aabb

aaabbb

aaaabbbb

L={anbn / n 0}

17 17 07:53

L1 = {a, b, }. Palabras a, b y la cadena vacía.

L2 = {aibi / i ≥0}. Palabras formadas de una sucesión de símbolos a,

seguida de la misma cantidad de símbolos b.

L3 = {uu-1 / u {a,b}*}. Palabras formadas con símbolos a y b y que

consisten de una palabra, seguida de la misma palabra escrita en orden

inverso.

i Hileras

0

1 ab

2 aabb

3 aaabbb

Hileras

abba

abbbba

18 18 07:53

Sean L1 y L2 dos lenguajes definidos sobre el alfabeto V.

Unión L1 L2 = {p/p L1 p L2}

Intersección L1 L2 = {p/p L1 p L2}

Diferencia L1 - L2 = {p/p L1 p L2}

Complemento El complemento de L con respecto a V* se define como:

-

L = V* - L = {p V* p L}

19 19 07:53

La unión de lenguajes sobre el mismo alfabeto es un

operación cerrada.

Cumple las propiedades:

Asociativa

Conmutativa

Elemento neutro que es el lenguaje vacío

(no es lo mismo que el lenguaje que contiene

la palabra vacía {λ}).

20 20 07:53

Concatenación L1 . L2 = { p1 p2 / p1 L1 p2 L2 }

Asociativa L1 .(L2 .L3) = (L1 .L2).L3

Elemento Neutro: = {}

L . = . L = L

No conmutativa L1 .L2 L2 .L1

Leyes distributivas L1 .(L2 L3) = (L1 .L2) (L1 .L3)

L1 (L2 .L3) ≠ (L1 L2) . (L1 L3)

L1 . (L2 L3) ≠ (L1 .L2) (L1 .L3)

L1 (L2 .L3) ≠ (L1 L2) . (L1 L3)

Ejemplo L1 = {ca,ma} y L2 = {nta, sa}

L1L2 = {canta, casa, manta, masa}.

Para calcular la concatenación

de dos lenguajes hay que concatenar

cada palabra del primero de ellos con cada

una del segundo.

21 21 07:53

Potenciación: si un lenguaje es elevado a la

k-ésima potencia se tiene:

Lk = si k = 0

L.Lk-1 si k > 0

Ejemplo L= {a,b}

L0 =

L1 = L.L0 = {a,b}. {} = {a,b}

L2 = L.L1 = {a,b}. {a,b} ={aa,ab,ba.bb}

L3 = L. L2 = {a,b}. {aa,ab,ba.bb} = {aaa,aab,aba,abb,baa,bab,bba,bbb}

22 22 07:53

Clausura – Reflexiva y Transitiva (llamada cerradura de Kleene): es el

conjunto de todas las hileras finitas construidas con los elementos

de L, incluyendo la hilera vacía. Es el lenguaje Universal: L* En

otras palabras contiene:

1. La palabra vacía.

2. El conjunto L.

3. Todas las palabras formadas por la concatenación de miembros de L*.

Ejemplo

L= {a,b}

L* = {,a,b,aa,ab,ba.bb, aaa,aab,aba,abb,baa,bab,bba,bbb,…}

Esta definición es recursiva, pues en la tercera regla estamos suponiendo que ya hay

palabras en L*, las cuales concatenamos para producir una nueva palabra. Esta noción se puede conceptualizar fácilmente de la siguiente forma:

Supongamos que inicialmente L* contiene sólo la palabra vacía y los elementos de L. Entonces de ahí tomamos dos elementos cualesquiera, que no necesitan ser distintos, y

los concatenamos, para producir una palabra, la cual la añadimos a L* si no estaba ya. Continuando indefinidamente con esta acción, se irán obteniendo todos los elementos

de L* .

23 23 07:53

Clausura

– Transitiva: denotado con L+

Ejemplo L= {a,b}

L+ = {a,b,aa,ab,ba.bb, aaa,aab,aba,abb,baa,bab,bba,bbb,…}

L+ = Li = L1 L2 … i 1

L+ = L* - o bien L+ = L* - {}

24 24 07:53

Longitud: se mide de acuerdo a la cantidad de hileras que componen el lenguaje.

– Notación: L = n donde n es la cantidad de palabras

Inversa: Se obtiene con todas las palabras inversas del lenguaje.

─ Notación: L-1

─ L-1 = {p-1 / p L}

─ (L-1 )-1 =L

─ (L-1 )i = (Li )-1 para todo i=0,1, ....

25 25 07:53

Dar ejemplos de hileras x L:

L={ambmcn ; m, n 1} L={xcx-1 / x {0,1}*} L={anbm ; n m 2n} L={x / x {a,b}+ y x contiene un número impar de a's}

Dado los lenguajes A={a,c} y B= {a,b} calcular:

B A B A B.A B.A+ (B.A)* B.

Definir lenguajes para: Lenguaje sobre el alfabeto {0,1} con todas las hileras que

finalicen con 1. Lenguaje formado por hileras y su palíndroma.

26 26 07:53

Lenguaje Hilera

Concatenación (w1.w2) Potencia (wn) Inversa (w-1) Subhileras

Tiene Operaciones

Concatenación (L1.L2) Potencia (Ln) Inversa (L-1)

Tiene Operaciones

Alfabeto (V)

Conjunto (V*)

Definido a partir de

Es un subconjunto de

27 27 07:53

Lenguajes Formales

Gramáticas Formales

G = (VN, VT, P , S)

Autómatas A =(Q, , , q0, F)

Los lenguajes más formalizados como los lenguajes de programación o el lenguaje matemático, tienen unas estructuras claramente definidas y determinadas por sus reglas gramaticales (sintácticas y semánticas).

Esto ha posibilitado y propiciado la construcción de traductores automáticos para estos lenguajes.

Jerarquía de Chomsky