La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción a la Informática Teórica ILI 255

Presentaciones similares


Presentación del tema: "Introducción a la Informática Teórica ILI 255"— Transcripción de la presentación:

1 Introducción a la Informática Teórica ILI 255

2 1:05 Lógica. Expresiones verdaderas o falsas (V,F)
Sus valores de verdad se combinan de acuerdo a ciertas operaciones. El resultado de las operaciones podemos representarlo mediante tablas de verdad. También las tablas pueden servir para demostrar identidades simples. NOTA: En inf. se suele usar 1 y 0 en lugar de V y F 2

3 Lógica Operaciones elementales: 1 xy y x Disjunción, “o” 1 xy y x
xy y x Disjunción, “o” 1 xy y x Conjunción, “y” 1 x x Negación

4 Lógica Algunas propiedades básicas: Asociatividad:
(xy)z = x(yz) , (xy)z = x(yz) Distributividad: x(yz) = (xy)(xz) , x(yz) = (xy)(xz) Leyes de Morgan: (xy) = (x  y) , (xy)= x  y

5 Lógica Una expresión importante: PQ. La idea es que no se dé el caso en que P es cierto, pero Q es falso. Es decir, se quiere la negación de PQ. Por ley de Morgan, se quiere PQ. La equivalencia (PQ) se define mediante (PQ  QP). Uno esperaría que PQ signifique que P y Q valen lo mismo. En efecto, P Q PQ QP PQ 1

6 Lógica A partir de una expresión de implicancia PQ aparecen otras expresiones relacionadas: La recíproca: QP La contraria: P Q La contrarrecíproca: Q P La recíproca y la contraria son equivalentes entre sí, mientras que la contrarrecíproca es equivalente a la expresión original. Por eso a veces se demuestra Q P, cuando lo que uno quiere demostrar es PQ.

7 Lógica Otra estrategia frecuente es la reducción al absurdo : uno supone que la conclusión es falsa, y llega a una contradicción. Es decir, suponemos que P es cierto y que Q es falso (es decir, que Q es cierto) y llegamos a algo falso: PQ = 0, que por ley de Morgan significa que PQ = 1, o sea, PQ. Notemos también que si PQ y QR, entonces PR (ejercicio). Una consecuencia es que cuando uno quiere demostrar, por ejemplo, PQRS, basta con demostrar PQRSP.

8 Conjuntos Conjuntos: informalmente, una colección bien definida de objetos. “Bien definida”  definición sin ambigüedad ¿“Colección”? ¿”Objetos”? No es trivial la definición exacta. Sobre todo después de la intervención de Bertrand Russell, a fines del s. XIX. En principio uno tendería a decir que toda propiedad P define un conjunto: “sean todos los x tales que P(x) es cierto”. 8

9 Conjuntos Por ejemplo, P(x)=“x es un número primo”.
Entonces el conjunto R(P) será el conjunto de todos los números naturales primos. El problema aparece, por ejemplo, con P(x)=“x es un conjunto que no se incluye a si mismo”. Pregunta: ¿R(P)R(P)? Si R(P)R(P), entonces no verifica P, por lo tanto no debiera estar en R(P)  R(P)R(P) Pero si R(P)R(P), entonces verifica P, y por lo tanto sí debiera estar en R(P)  R(P)R(P)

10 Conjuntos Es la “paradoja de Russell”. ¿Por qué surge?
R(P) es un conjunto de conjuntos. Eso no es pecado; cuando uno toma (por ejemplo) “todos los subconjuntos de {0,1,2,3}”, hace justamente eso. El problema sí surge del hecho de que no hemos definido el universo de objetos que estamos considerando. Es demasiado vago!! Solución: varias.

11 Conjuntos La más popular: usar los axiomas de Zermelo-Frankel para definir lo que es un conjunto (y el monstruo de la paradoja nunca aparece). Definir conjuntos a través de propiedades sí funciona, pero restringiéndose a objetos que estén en algún conjunto previamente construido (como el ejemplo de los primos). Sin embargo la paradoja (o el poder) de la auto-referencia volverá a aparecer en el curso. “Los cretenses siempre mienten.” Epiménides (un cretense)

12 Conjuntos Para evitar paradojas, y tener punto de referencia, se suele trabajar dentro de un conjunto, el “universo” o “conjunto universal” U. Se define el complemento con respecto a ese U: AC = {xU: xA} Todo conjunto admite el subconjunto vacío, . El conjunto vacío es único. El conjunto potencia de un conjunto A, es el conjunto P(A) formado por todos sus subconjuntos. Si |A|=n, entonces |P(A)|=2n. Si A  B, entonces P(A)  P(B).

13 Inclusión de la intersección: Inclusión en la unión:
Conjuntos Inclusión de la intersección: A  B  A y A  B  B Inclusión en la unión: A  A  B y B  A  B Transitividad de la inclusión: (A  B  B  C)  A  C Conjuntos vs Lógica: x  X  Y  x  X  y  Y x  X  Y  x  X  y  Y x  X\Y  x  X  y  Y x  Xc  x  X

14 Conjuntos Conmutatividad: A  B = A  B y A  B = B  A Asociatividad:
(A  B)  C = A  (B  C) y (A  B)  C = A  (B  C) Distributividad: A  (B  C) = (A  B)  (A  C) y A  (B  C) = (A  B)  (A  C)

15 Conjuntos Intersección y unión con conjunto universal:
A  U = A y A  U = U Doble complemento: (Ac)c = A Idempotencia: A  A = A y A  A = A De Morgan: (A  B)c = Ac  Bc y (A  B)c = Ac  Bc Absorción: A  (A  B) = A y A  (A  B) = A

16 Conjuntos Sean A, B subconjuntos de U. Entonces las afirmaciones siguientes son equivalentes: AB AB=B AB=A BCAC U B A Demostración: ejercicio. Aplicar eso de demostrar a  b  c  d  a. Diferencia simétrica: A  B=A\B  B\A Ejercicio: demostrar que es asociativa.

17 Conjuntos disjuntos Un par de conjuntos se dicen disjuntos si su intersección es vacía (no tienen elementos en común). Nótese que A\B y B son siempre disjuntos. Una colección {A1,…Ak} se dice mutuamente disjunta si cualquier par de conjuntos de la colección es disjunto.

18 Conjuntos Una colección de conjuntos no vacíos {A1,…Ak} es una partición del conjunto A si se cumple (1) {A1,…Ak} es mutuamente disjunta (2) A es igual a la unión de todos los Ai Si sólo se cumple lo segundo, decimos que es un recubrimiento de A.

19 Inducción Recordar el principio de inducción:
Se usa para demostrar que una proposición P que depende de un número natural “n”, es decir, P(n), es cierta para todo “n” por sobre algún umbral n0. Lo que se hace es demostrar: Caso base: P(n0) es cierta Paso inductivo: Si P(n) es cierta para n ≥ n0, entonces P(n+1) también es cierta

20 Inducción Nota: En una variante, que a veces se llama inducción “fuerte”, el paso inductivo demuestra que si P(k) es cierta para todo n0 ≤ k ≤ n, entonces lo es para n+1. Es decir, no se usa sólo el caso anterior, sino todos los anteriores. 20

21 Inducción Un ejemplo clásico: Caso base: Paso inductivo:

22 Inducción Otros: n3-n es divisible por 3, para todo n ≥ 1
2x ≥ x2, para todo x ≥ 4 … etc (pueden mirar su cuaderno de aquellos tiempos; lo importante es que refresquen estas cosas). Un poco menos trillado: inducción “estructural”: Generaliza la misma idea. La usamos para demostrar propiedades de objetos definidos recursivamente.

23 Inducción estructural
En una construcción recursiva, se tienen: Objetos básicos (“primitivos”, “iniciales”, etc..) Reglas para definir nuevos objetos a partir de un conjunto de objetos ya definidos. Entonces se demuestra que la propiedad en cuestión (el “predicado”): Es cierta para los objetos básicos Si es cierta para un conjunto de objetos, entonces es cierta para el nuevo objeto construido, mediante las reglas, a partir de dicho conjunto.

24 Inducción estructural
Ejemplo clásico: consideremos la siguiente definición recursiva de un árbol [conexo]. Un nodo sólo, es un árbol. Si T1, T2, …, Tk son árboles disjuntos, entonces A1 A2 Ak n ... T1 T2 Tk también es un árbol.

25 Inducción estructural
Propiedad a demostrar: la cantidad de nodos siempre es igual a la cantidad de aristas + 1. Caso base: ok. Sean ni y ai las cantidades de nodos y aristas en los árboles Ti, para i de 1 hasta k. Sean n y a esas cantidades para el nuevo árbol. Hipótesis inductiva: A1 A2 Ak n ... T1 T2 Tk Paso inductivo:

26 Inducción estructural
Otro ejemplo típico: expresiones aritméticas. Símbolos elementales: letras, +, *, (, ) Las letras son E.A. Si E y F son E.A., entonces E+F, E*F y (E) son E.A. Ejemplos: x+y, x*y+x*(z+b), ((a)), etc… Ejercicio: demostrar que en una expresión aritmética, el número de “(“ es igual al número de “)”.

27 Inducción estructural
Números de Fibonacci: F(1)=F(2)=1, F(n)=F(n-1)+F(n-2) para n > 2 Demostrar que F(n) < 2n para todo n ≥ 1 Nótese que en este caso lo podemos ver como inducción “clásica”, o bien como inducción estructural.

28 Tuplas y producto cartesiano
Una n-tupla ordenada es una secuencia de n elementos, escrita en la forma (x1,…,xn). Nótese que a diferencia de los conjuntos, donde {1,2}={2,1}, en una n-tupla el orden sí importa. Por lo tanto, la única forma de que (x1,…,xn)= (y1,…,yn) es que x1=y1,…,xn=yn. El producto cartesiano de n conjuntos A1,...,An es el conjunto formado por las n-tuplas de la forma (x1,…,xn), donde xiAi, 1 ≤ i ≤ n : 28

29 Relaciones Un caso de particular interés es el producto cartesiano de sólo dos conjuntos: AB. Una “relación” es un subconjunto RAB. Nótese que: no necesariamente A=B cualquier subconjunto RAB es válido Con A={1,2,3},B={,}, las siguientes son todas relaciones válidas: R1={(1,),(1,),(3,)} R2=AB \ {(1,)} R3={(2,)} 1 2 3 R1 R2 R3

30 Relaciones: funciones
Un caso aún más particular son las funciones: son relaciones en que para cada xA, existe un único yB tal que (x,y)R; así, se define una función de A en B. 1 2 3 R4 Las tres relaciones en la transparencia anterior son contraejemplos : no son funciones. En cambio, R4 (a la derecha) sí lo es. 1 2 3 R5 ¿Qué hay de R5, a la izquierda? No es una función, porque estamos viéndolas como subconjuntos de AB. Pero en este caso si la “trasponemos”, y la vemos como subconjunto de BA, entonces sí es una función... de B en A.

31 Relaciones: notación Cuando una relación RAB es una función, y se tiene (x,y)R, solemos escribir R(x)=y. Por ejemplo, R4(1)=. En el caso general (en que R es una relación cualquiera), cuando (x,y)R se suele escribir xRy. NOTA: En lo que sigue, consideraremos relaciones dentro de un mismo conjunto: A=B, y le llamaremos “S” (o sea, A=B=S). Anotamos S2=SS.

32 Relaciones: propiedades
Decimos que una relación RS2 es: Refleja: si para todo aS, (a,a)R [o sea, aRa]. Transitiva: si cada vez que aRb y bRc, se tiene además aRc. Simétrica: si aRb  bRa Antisimétrica: si cada vez que aRb y bRa, necesariamente a=b. Total: para cualesquiera a,bS, se tiene que aRb o bien bRa (o ambas).

33 Relaciones: orden Una relación de orden parcial cumple con ser refleja, transitiva y antisimétrica. Ejemplo: Sea A un conjunto finito, S=P(A) [el conjunto potencia de A], y R definida por R = { (B,C): B,CA y BC } (es decir: es la relación de inclusión entre subconjuntos de A). NOTA: esto es lo que se llama un orden “no estricto”. En los órdenes estrictos, como “<“ y “”, se prohibe la igualdad, exigiendo que la relación sea antirrefleja: (a,a)R para ningún a.

34 Relaciones: orden Si además es total, entonces es una relación de orden total. El ejemplo anterior es un caso de orden parcial que no es total. Para ver por qué, consideremos A={1,2}, B={1}, C={2}. Claramente, ni B está incluído en C, ni C está incluído en B. Consideremos S=Z (los números enteros), y la relación  habitual. Ese sí es un caso de relación de orden total.

35 Relaciones: equivalencia
Una relación de equivalencia cumple con ser refleja, transitiva y simétrica. Ejemplo: Sean Z los números enteros, y sea mN, m0. Definiremos la relación Rm (pues ojo, depende del m) como a Rm b  a mod m = b mod m [donde a mod m es el resto de dividir a por m] Ejercicio: 1) ver que es relación de equivalencia 2) ver que a Rm b  (a-b) es divisible por m. 35

36 Relaciones: equivalencia
Sea R una relación de equivalencia en S. Para cada elemento aS, definimos su clase de equivalencia [a]={ bS: aRb }. El conjunto de las clases de equivalencia forma una partición de S. En efecto: Todo elemento pertenece a alguna clase de equivalencia (la suya!). La intersección entre dos clases de equivalencia distintas es vacía: si c[a][b]  c[a] y c[b]  cRa y cRb  aRc y cRb (por simetría)  aRb (por transitividad)  [a]=[b].

37 Relaciones: equivalencia
Ejemplo: consideremos (Z,R3), con la relación de “igualdad módulo 3” definida antes. Entonces [0] = { ..., -6, -3, 0, 3, 6, 9,... } [1] = { ..., -5, -2, 1, 4, 7, ... } [2] = { ..., -4, -1, 2, 5, 8, 10, ... } Al conjunto de clases de equivalencia (conjunto “cuociente”) lo anotamos S/R. En este caso, Z/R3 = { [0], [1], [2] } Naturalmente, en un mismo conjunto puede definirse más de una relación de equivalencia, y cada una dará una partición distinta.

38 Relaciones: equivalencia
Ejemplo: Sea S una baraja de naipe [inglés], S={ 1, 2, ..., K, 1, 2, ..., K, 1, 2,..., K, 1, 2, ..., K} y consideremos las relaciones Rp : si dos naipes son de la misma pinta Rn : si dos naipes son del mismo número Rc : si dos naipes son del mismo color R2 : si el número de dos naipes tiene la misma paridad. ¿Cuántas clases de equivalencia distintas hay en cada caso?

39 Relaciones: equivalencia
Nota: La relación entre relaciones de equivalencia y particiones es recíproca: dada una partición de un conjunto, siempre podemos definir una relación de equivalencia (según si los elementos quedan juntos o no) cuyas clases de equivalencias correspondan a esa partición. 39

40 Relaciones: refinamientos
Sean R,QS2 dos relaciones de equivalencia en S. Decimos que R es más fina que Q, y escribiremos RQ, si se tiene aRb  aQb, a,bS Es decir, R distingue entre elementos de S al menos tan bien como Q. Ejercicio: demostrar que si RQ, entonces las clases de equivalencia de Q son uniones de clases de equivalencia de R. 40

41 Relaciones En el ejemplo de los naipes, RpRc , y RnR2.
Si consideramos la relación de igualdad módulo m, ¿qué deben cumplir m1 y m2 para que Rm1  Rm2 ? Otro ejemplo: Sea otra vez A un conjunto finito cualquiera, y S=P(A) su conjunto potencia. Consideremos las relaciones R y Q dadas por: aRb  a=b aQb  |a| = |b|  Entonces RQ. [Recuérdese que en este caso a y b son subconjuntos de A. |a| es el cardinal de a.]

42 Relaciones Nota: en realidad siempre se tiene que la relación de identidad (“=“) es más fina que cualquier otra relación de equivalencia. Consideremos el conjunto (S) de todas las relaciones de equivalencia posibles sobre el conjunto S.  Entonces “” es una relación en (S) !! ¿Qué tipo de relación es? Ejercicio: conteste y demuéstrelo.

43 Relaciones: cerradura transitiva
Sea R una relación en S, no necesariamente transitiva. Definimos su cerradura transitiva como la menor relación R’ tal que RR’ y R’ es transitiva (en el peor de los casos, puede ser R’=S2). En el caso de S finito, lo podemos ver como que “parchamos” R, agregándole los elementos que estén fallándole a la transitividad, hasta que ya no falla nada. Ejemplo: S=ciudades del mundo aRbexiste un vuelo directo de a hasta b aR’bse puede llegar de a hasta b en avión

44 Relaciones: cerradura transitiva
¿Cómo encontrar la cerradura transitiva (S finito)? Algoritmo de Warshall (visto en EDA) Pensamos en la relación como una matriz binaria, que dice“puedo ir de a hasta c usando un solo arco” o “no puedo”. a b c 1 R Queremos ahora una matriz que exprese “puedo ir de i a j” (usando 1 o más arcos). 1 c b a R’

45 Relaciones: cerradura transitiva
Definamos A0=R Aplico |S| veces lo siguiente. En el paso k-ésimo, Ak[i,j] me dice acaso hay un camino entre i y j que pase por nodos de índice k ó menor. “ya había camino, o ahora existe un camino porque existen caminos de i a k, y de k a j”

46 Relaciones: cerradura transitiva
Algoritmo de Warshall: Inicialización: A = matriz binaria representando R Iteración: Para k=1,...,N Para todo i,j A[i,j] = A[i,j]  (A[i,k]  A[k,j]) R’ = relación representada por A [Se habla del algoritmo de Floyd-Warshall, porque esto es una variante del de Floyd para caminos más cortos en grafos.}

47 Cardinal Volvamos a las funciones. Si fAB es una función, escribiremos que f:AB. Decimos que una función f:AB es inyectiva cuando preserva las diferencias: si ab, entonces f(a)f(b). Intuitivamente se ve que, para que esto sea posible, tiene que haber al menos tantos elementos en B como en A.

48 Cardinal Esa intuición se convierte en definición : decimos que el conjunto A tiene cardinalidad menor o igual que B si existe una función inyectiva f:AB. Escribimos |A||B| Si se tiene |A||B| y además |B||A| (es decir, existen funciones inyectivas en ambas direcciones), escribimos |A|=|B|, y decimos que tienen la misma cardinalidad (o el “mismo cardinal”). Nota: una función biyectiva es inyectiva hacia los dos lados, y se puede usar para probar igualdad de cardinal. Pero a veces es más cómodo usar dos funciones distintas.

49 Cardinal Para conjuntos finitos la cardinalidad es simple: identificamos |A| con la cantidad de elementos que contiene, y |A||B|  A tiene menos elementos que B. Para el vacío, ={ }, se tiene ||=0. Un “singleton” es un conjunto de cardinal 1. Por ejemplo: {2}, { {2,3} }, {{}}.

50 Cardinal La gracia es que la definición funciona también para conjuntos infinitos. Ejercicio: sea A finito y B infinito. Demostrar que |A|<|B|, es decir, que |A||B|, pero |B||A|. Ejercicio: Sea AB. Demostrar que |A||B|. El conjunto infinito “más chico” es N, los números naturales.

51 Cardinal Los enteros (Z), los racionales (Q), los números pares (2Z), tienen todos el mismo cardinal que N. Se anota 0 (“aleph 0”). Se dice que son “contables”. Los reales (R) no tienen el mismo cardinal que N. Su cardinal, 1, es llamado “el cardinal del continuo”, y es el mismo cardinal de [0,1], R2, R3, etc.  Hablaremos más sobre esto en transparencias negras, al llegar a Georg Cantor.

52 Fin del repaso

53 Lenguajes Computador input output Input & Output:
 Información digital  Secuencia de símbolos Computador: Máquina con estados internos (finitos!) Puede que con memoria  que también es información digital!

54 Alfabetos y palabras Por lo tanto, necesitamos algunas nociones sobre cómo trabajar formalmente con secuencias de símbolos. ALFABETO: Conjunto finito, no vacío, de símbolos. Por lo general lo escribiremos  Ejemplos:  = {0,1}  = {a,b}  = {a,b,c,...,z,0,...,9}  = {a,...,z,A,...,Z,” “}  ese “ “ es un espacio en blanco  = {(,)}  los símbolos son “(“ y “)”

55 Alfabetos y palabras Los símbolos son indivisibles; por lo tanto, no tendremos alfabetos del tipo { a, b, ab }. Ya sabemos lo que es 2= . Más en general, escribiremos Las palabras de largo k con el alfabeto  serán los elementos de k. En este caso anotaremos las tuplas sin paréntesis ni comas. Por ejemplo, si ={0,1}, las palabras de largo 2 serán 00,01,10,11.

56 Alfabetos y palabras Usaremos la letra  (o a veces ) para denotar la palabra vacía, formada por 0 símbolos. Definimos 0= {} El conjunto completo de palabras con el alfabeto  se llama estrella de Kleene y corresponde a En ocasiones se quiere excluir a la palabra vacía; en ese caso se anota

57 Alfabetos y palabras Nótese que * es un conjunto infinito (pero numerable) de palabras, cada una de las cuales tiene una cantidad finita de caracteres. Dada una palabra w*, usaremos |w| [o a veces length(w)] para denotar su longitud, es decir, la cantidad de símbolos que la componen. Por definición, ||=0. NOTA: por lo general se usan letras minúsculas del comienzo del abecedario para denotar símbolos, mientras que las letras minúsculas del final del abecedario suelen denotar palabras.

58 Alfabetos y palabras La concatenación de dos palabras se denota escribiendo una después de la otra. Por lo tanto, si u=u1u2...un, v=v1...vm, entonces w=uv será w = u1u2...un v1...vm Dados dos conjuntos de palabras A y B, la concatenación de los conjuntos será AB = { w: w=uv, uA, vB } Esto permite escribir Nótese que, por otro lado, Además se tiene la recursión

59 Alfabetos y palabras Nótese que la concatenación es una operación asociativa : (uv)w = uvw = u(vw) Además, tiene un elemento neutro: u = u = u Algo que no verifica es conmutatividad: en general, no se cumple que uv = vu Un conjunto no vacío dotado de una operación binaria asociativa se llama semigrupo. Si además hay unidad (neutro), se llama monoide. Ergo, * con la concatenación es un monoide.

60 Alfabetos y palabras Una operación unaria sobre palabras es la transposición: si u=u1u2...un, entonces su transposición es uR = unun-1...u1 Definamos de nuevo la transposición, pero de manera recursiva (con recursión sobre la longitud de la palabra): Si |v|=0, vR = v. Si |v|=k>0, sean  y uk-1 tales que v=u. Entonces vR = uR.

61 Alfabetos y palabras Sean u,v*. Decimos que
u es un sufijo de v  x*: v=xu u es un prefijo de v  x*: v=ux u es una subpalabra de v  x,y*: v=xuy Si los x (ó y) respectivos son no nulos (o sea, distintos de ), entonces se dice que u es un sufijo (o prefijo o subpalabra) propio de v. Si u es subpalabra de v, se anota a veces o también u v.

62 Lenguajes Lenguaje L sobre un alfabeto : será cualquier subconjunto L  *. EJEMPLO:  = {a,b}  alfabeto L0 = S* = {, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa,bab,bba,bbb,aaaa,… }  lenguaje “completo” L1 = {a,aa,aab} L2 = {anbn:n>0} = {ab,aabb,aaabbb,…}

63 Lenguajes:operaciones
Nota: L={} y L= son siempre lenguajes (distintos), para todo . Operaciones usuales de conjuntos: L1L2 = { u: uL1  uL2 } L1L2 = { u: uL1  uL2 } LC = * \ L a.k.a. L _

64 Lenguajes:operaciones
Además: Transposición: LR = { uR: uL } Concatenación: L1L2 = { uv: uL1, vL2 } También definimos L0= {} Lk = L Lk-1 y con eso

65 Lenguajes: cerraduras
La “cerradura del lenguaje L bajo [alguna operación]”, se define como el menor conjunto que contiene a L y que es cerrado bajo esa operación. Otra forma de verlo: se le agregan palabras a L hasta lograr algo cerrado para la operación.

66 Lenguajes: cerraduras
Se usan a veces las cerraduras bajo: Concatenación; coincide con L+ Transposición; coincide con LLR Subpalabras Prefijos

67 L1 = {w*: w es un RUT válido}
Lenguajes Más ejemplos de lenguajes: ={0,...,9,k,.,-} L1 = {w*: w es un RUT válido}

68 L2 = {w*: w contiene una cantidad par de “b”}
Lenguajes Más ejemplos de lenguajes: ={a,b} L2 = {w*: w contiene una cantidad par de “b”}

69 L3 = {w*: los paréntesis están bien balanceados}
Lenguajes Más ejemplos de lenguajes: ={(,)} L3 = {w*: los paréntesis están bien balanceados}

70 L4 = {w*: w en binario es un nº primo}
Lenguajes Más ejemplos de lenguajes: ={0,1} L4 = {w*: w en binario es un nº primo}

71 L5 = {w*: w= 1a01b01c01n, con n>2 y an+bn=cn}
Lenguajes Más ejemplos de lenguajes: ={0,1} L5 = {w*: w= 1a01b01c01n, con n>2 y an+bn=cn}

72 L6 = {w*: w es un programa en ANSI-C que no se detiene nunca}
Lenguajes Más ejemplos de lenguajes: =ASCII L6 = {w*: w es un programa en ANSI-C que no se detiene nunca}

73 Lenguajes ={0,...,9,k,.,-}, L1={w*: w es un RUT válido}
={a,b}, L2={w*: w contiene una cantidad par de “b”} ={(,)}, L3={w*: los paréntesis están bien balanceados} ={0,1}, L4={w*: w es un nº primo} ={0,1}, L5={w*: w= 1a01b01c01n, n>2, y an+bn=cn} =ASCII, L6={w*: w es un programa en ANSI-C que no se detiene nunca}

74 Lenguajes Hay lenguajes simples y complicados.
¿wL? puede ser pregunta interesante. ¿L=? También puede serlo. Hacia fines del curso: no todo lenguaje puede ser reconocido por un computador en otros casos, hay cotas mínimas para el tiempo necesario.

75 Lenguajes Ejercicios: Encuentre la forma de representar:
Todos los grafos simples orientados, usando un alfabeto de a lo más 3 caracteres. El conjunto de todas las expresiones booleanas (i.e., fórmulas del tipo (x1x2)x3, x1x2, etc). El conjunto de los números primos, usando un alfabeto con 1 carácter.

76 Lenguajes Ejercicios:
Sean L1, L2 y L3 tres lenguajes sobre el alfabeto . Demuestre que L1 (L2  L3) = L1L2  L1L3 L1 (L2  L3)  L1L2  L1L3 y que esa inclusión es propia (i.e., existen casos en que no se tiene “=“)..

77 Expresiones regulares (ER): una forma compacta de describir lenguajes
Las ER se definen de manera recursiva. Sea  un alfabeto. , , y todos los  son ER (“primitivas”) Si r1 y r2 son ER, entonces también lo son (r1) r1* r1+r2 r1r2

78 Expresiones regulares
ER r  lenguaje L(r) L(r1*) = L(r1)* L(r1r2) = L(r1)L(r2) L(r1+r2) = L(r1)L(r2) L((r1)) = L(r1) Precedencia

79 Expresiones regulares
Ejemplos: (0+1) (0+1)* (0+1)*010 (0+1)*01(0+1)*

80 Expresiones regulares
Ejemplos: ((0+1)(0+1))* ((0+1)(0+1))*+((0+1)(0+1)(0+1))* ((0+1)2)*+((0+1)3)* Nota: cuando no haya confusión posible, es posible usar exponentes: ((0+1)2+(0+1)3)*

81 Algo más sobre expresiones regulares
Describen ”patrones” en un texto. Aparecen por muchos lados. Sacan de apuros en muchos contextos. No es difícil escribir ER. La parte difícil: saberse la sintaxis exacta del sistema que uno está usando.

82 Algo más sobre expresiones regulares
Útiles en: comando grep en Unix módulo re en Python java.util.regex Perl code.google.com etc... La sintaxis suele ser similar a la de Perl, excepto en grep y otras herramientas Unix, que siguen el estándar POSIX. Lo más simple es igual en casi todas las sintaxis:

83 . : comodín x*: estrella de Kleene x+: una o más repeticiones de x x?: x aparece una vez, o ninguna xy: concatenación x|y: x+y [abc] : agrupa caracteres [a-c]: rango de caracteres x{n}: xxx...x. Nótese que todo se podría haber escrito con la notación de ER que definimos. n veces

84 Algo más sobre expresiones regulares
Ejemplo, patentes de autos (incluyendo las patentes más nuevas): [A-Z]{2} ([A-Z]{2}|[0-9]{2})[0-9]{2} Además: Abreviaturas (con "\", o con [:algo:] en posix) para conjuntos de caracteres que se usan con frecuencia Secuencias de escape para caracteres usados en la sintaxis, como el "[". Caracteres que indican "comienzo de string" o "fin de string": en Perl, son ^ y $, respectivamente.

85 Algo más sobre expresiones regulares
NO TODO LENGUAJE puede ser representado mediante expresiones regulares. Algunos (e.g., Perl) agregan cosas que permiten expresar más lenguajes. Les siguen llamando “expresiones regulares” (regexp) a esas expresiones extendidas. Aquí usaremos el término solamente para ER propiamente dichas.

86 Sepan expresiones regulares: son nuestras amigas


Descargar ppt "Introducción a la Informática Teórica ILI 255"

Presentaciones similares


Anuncios Google