Documente Academic
Documente Profesional
Documente Cultură
1
Objetivos Generales
2
Contenido
3. Gramáticas y lenguajes
4. Autómatas de pila
5. Máquinas de Turing
3
Bibliografı́a sugerida
4
Unidad I
Conceptos básicos
5
Conjuntos
• Notación:
6
Notación
• Los conjuntos tı́picamente se denotan mediante letras mayúsculas. Ejem-
plo:
A = {a, e, i, o, u}, Φ = {x tal que x2 = 1}.
• Los sı́mbolos ∈ y ∈
/ indican pertenencia o no-pertenencia de un elemento
en un conjunto. Ejemplo:
u ∈ A, z∈
/ A, −1 ∈ Φ, 3∈
/ Φ.
7
Paradoja de Russell
N = {X | X ∈
/ X}.
• Es N normal o anormal?.
8
Subconjuntos
• Notar que: A = B ⇐⇒ A ⊆ B y B ⊆ A.
9
Operaciones con conjuntos
• Unión: A ∪ B = {x | x ∈ A ó x ∈ B}
• Intersección: A ∩ B = {x | x ∈ A y x ∈ B}
• Complemento: A0 = {x | x ∈
/ A}
• Resta: A − B = {x | x ∈ A y x ∈
/ B}
10
Propiedades de las operaciones
• Conmutativa: A ∪ B = B ∪ A, A ∩ B = B ∩ A
• Asociativa Unión: (A ∪ B) ∪ C = A ∪ (B ∪ C)
• Asociativa Intersección: (A ∩ B) ∩ C = A ∩ (B ∩ C)
• Distributiva Unión: A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)
• Distributiva Intersección: A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
11
Producto Cartesiano
• Ejemplo:
A = {2, 3}
B = {x, y, z}
A×B = {(2, x), (2, y), (2, z), (3, x), (3, y), (3, z)}
B×A = {(x, 2), (x, 3), (y, 2), (y, 3), (z, 2), (z, 3)}
• Notar que A × B 6= B × A.
12
Conjunto vacı́o
• Algunas propiedades:
1. Para todo x, x ∈
/ ∅.
2. ∅ ∪ A = A, ∅ ∩ A = ∅, A − ∅ = A, ∅ × A = ∅.
13
Cardinalidad y conjunto potencia
• Algunas propiedades:
|A ∪ B| ≥ |A|
|A ∩ B| ≤ |A|
|A ∪ B| = |A| + |B| − |A ∩ B|
|A × B| = |A||B| si A y B son finitos
14
Conjunto potencia
P(A) = {X | X ⊂ A} .
P(A) = {{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}} .
15
Relaciones
16
Funciones
• Una función φ de un conjunto A a un conjunto B es una relación de A a
B en la que se cumple lo siguiente:
Si (a, b1 ) ∈ φ y (a, b2 ) ∈ φ, entonces b1 = b2 .
• Notación:
– Una función φ de A a B se denota como φ : A → B.
– Si (a, b) ∈ φ entonces decimos que b es la imagen de a bajo la función
φ, y esto se escribe como b = φ(a).
17
Dominio e imagen de una función
• El dominio dom φ de una función φ : A → B se define como
dom φ = {a ∈ A | (a, b) ∈ φ para algún b ∈ B} ⊆ A.
Si dom φ = A, entonces φ es una función total, de lo contrario, φ es
una función estrictamente parcial. En general, a cualquier función se le
puede llamar función parcial.
18
Tipos de funciones
a1 6= a2 =⇒ φ(a1) 6= φ(a2).
19
Composición de funciones
(ψ ◦ φ)(a) = ψ(φ(a)),
para todo a ∈ A tal que φ(a) ∈ dom ψ.
φ ◦ idA = idB ◦ φ = φ.
20
Función inversa
θ ◦ φ = idA y φ ◦ θ = idB .
21
Cardinalidad
22
Teoremas sobre cardinalidad
23
Conjuntos contables e incontables
24
Ejemplos de conjuntos contables e incontables
25
Otro ejemplo
• Supongamos que tenemos un lenguaje formado por un conjunto finito de
palabras Σ = {w1 , w2 , . . . wn }, donde n = |Σ|.
26
Unidad II
Autómatas Finitos
27
Máquinas abstractas
• Para estudiar el alcance y la potencia de cómputo de las máquinas ac-
tuales, es necesario desarrollar modelos simples de máquinas que tengan
las mismas capacidades, pero que sean mas fáciles de entender y analizar.
28
Diagramas de transiciones
• Un diagrama de transiciones es un grafo en el cual los nodos representan
los distintos estados de un autómata, y las aristas representan las posibles
transiciones entre estados.
29
Tablas de transiciones
1 2 3 4
a 2 4 4 -
⇐⇒ b - 3 1 1
Estado inicial: 1
Estado final: 4
30
Autómatas finitos deterministas
– i ∈ Q es el estado inicial.
31
Palabras
33
Lenguaje aceptado por un AFD
• Notación: Podemos representar una transición φ(q1, a) = q2 como q1 a =
q2 , de manera que es posible escribir algo como:
qa1 a2 = (qa1 )a2 = q 0 a2 , si φ(q, a1 ) = q 0 .
• Si w = a1 a2 . . . an ∈ A∗ , entonces
qw = qa1 a2 . . . an = (((qa1)a2 ) . . .) an .
34
Ejercicios:
1. Diseñar un diagrama de transiciones para reconocer expresiones aritméticas
simples de números enteros positivos separados por los sı́mbolos +, −,
×, ÷. Por ejemplo:
54 + 23, 12 − 8, 12345 × 54321, 8 ÷ 3.
35
Lı́mites computacionales de los AFD’s
36
Lema del bombeo
2. |uv| ≤ N ,
3. uv m w ∈ L para todo m ≥ 0.
37
Ejemplo de uso del Lema del Bombeo
• Sea A = {a, b} y L = {w ∈ A∗ : wR = w}, donde wR denota el reverso de
una palabra. En otras palabras, L es el lenguaje formado por todos los
palı́ndromos en A∗ .
• Sin embargo, uv m w ∈
/ L para m 6= 1. Por ejemplo, para m = 0,
uv 0 w = uw = an−q ban ∈
/ L.
38
Observación
39
Ejercicios
1. Mostrar, usando el Lema del Bombeo, que el lenguaje
L = {ap : p es primo}
no es reconocible por ningún AFD.
40
Autómatas Finitos No-Deterministas
41
Definición formal de un AFN
• Un AFN es una quı́ntupla N = (Q, A, φ, i, T ) donde
1. Q es un conjunto finito no-vacı́o de estados.
2. A es un alfabeto (conjunto de sı́mbolos finito no-vacı́o).
3. φ : Q × A → P(Q) es la función de transición.
4. i ∈ Q es el estado inicial.
5. T ⊆ Q es el conjunto de estados terminales.
42
²-transiciones
43
Lenguaje aceptado por un AFN
L(N ) = {w ∈ A∗ : iw ∩ T 6= ∅}.
44
Equivalencia entre AFN’s y AFD’s
45
Accesibilidad
46
Coaccesibilidad
47
Lenguajes racionales
• Dados dos lenguajes L1 , L2 ⊆ A∗, definimos la concatenación o producto
L1 L2 como
L1 L2 = {uv : : u ∈ L1 , v ∈ L2 }.
48
Capacidad de reconocimiento de los autómatas
finitos
49
Teorema de Kleene
50
Unidad III
Gramáticas y Lenguajes
51
Gramáticas
• Una gramática formal o gramática de estructura de frases es una cuádrupla
Γ = (V, A, π, σ) donde
1. V es un conjunto finito de sı́mbolos llamado vocabulario de Γ.
2. A ⊆ V es el alfabeto terminal.
3. π ⊆ (V − A)+ × V ∗ es el conjunto (finito) de producciones.
4. σ ∈ V − A es el sı́mbolo inicial.
52
Lenguaje generado por una gramática
53
Ejemplos de gramáticas
• Ejemplo 1: Sea Γ = (V, A, π, σ) con
A = {el, un, perro, gato, muerde, come},
V = A ∪ {oración, artı́culo, sujeto, verbo},
y π consta de las siguientes producciones:
54
Tipos de gramáticas
• Las gramáticas más simples son las gramáticas regulares, en las cuales
todas las producciones en π son de la forma
α → xβ, x ∈ A+ , α, β ∈ V − A,
o bien
α → y, α ∈ V − A, y ∈ A∗ .
55
Lenguajes regulares y racionales
– L es racional.
56
Ejercicios
1. Considere la gramática Γ = (V, A, π, σ) cuyas producciones son:
σ → ²|xλ|yγ
γ → yγ|²
λ → xλ|²
a) Describa el lenguaje generado por Γ.
b) Dibuje el diagrama de transiciones de un autómata finito que re-
conozca el mismo lenguaje.
4. Escriba una gramática que genere todos los nombres de variables permi-
tidos en el lenguaje C.
57
Gramáticas libres de contexto
• Las gramáticas LDC son más generales que las regulares, por
lo que todo lenguaje racional es libre de contexto.
58
Lenguajes libres de contexto
σ → aλb
λ → aλb
λ → ²
n o
• Ejemplo 2: Mostrar que el lenguaje L = w ∈ {a, b}∗ : w= wR
es libre de contexto, pero no regular.
59
Lenguajes libres de contexto
60
Forma Normal de Chomsky
λ → µν, λ, µ, ν ∈ V − A,
λ → a, λ ∈ V − A, a ∈ A.
61
Conversión a la Forma Normal de Chomsky
62
Ejercicios
Autómatas de pila
64
Limitantes de los autómatas de estado finito
65
Autómatas de pila
66
Definición formal de autómata de pila
• Formalmente, un ADP es una séptupla M = (Q, A, S, φ, i, ζ, T ), donde
– Q es un conjunto finito de estados
– A es el alfabeto del autómata
– S es un conjunto finito de sı́mbolos llamado el alfabeto de la pila
– φ : Q × (A ∪ {²}) × (S ∪ {²}) → P(Q × S ∗) es la función de transición.
– i es el estado inicial.
– ζ ∈ S es el sı́mbolo inicial de la pila.
– T ⊆ Q es el conjunto de estados terminales.
67
Transiciones
68
Ejemplo
• Considerar el ADP
69
Cómputos
– τ ∈ S ∗ es el contenido de la pila
70
Lenguaje reconocido por un ADP
71
Reconocimiento por pila vacı́a
72
Equivalencia entre criterios de reconocimiento
73
Autómatas de pila y lenguajes libres de contexto
• Teorema: Sea A un alfabeto y L ⊆ A∗ . Entonces, L es libre de contexto
si y solo si es reconocido por un ADP.
74
Lema del Bombeo para lenguajes LDC
1. |vx| ≥ 1,
2. |vwx| < N ,
75
Ejemplos de lenguajes no LDC
n o
• w2 : w∈ {a, b}+
2
• {an : n ≥ 1}
• {ap : p es primo}
n o
• w∈ {a, b, c}+ : |w|a = |w|b = |w|c
n o
• wwR w : w∈ {a, b}∗
76
Propiedades de cerradura de los lenguajes LDC
1. Si L1 y L2 son LDC, entonces L1 ∪ L2 y L1 L2 también lo son.
77
Ejercicios
1. Para cada uno de los siguientes lenguajes, encontrar un ADP que lo
reconozca:
(a) {an b2n : n ≥ 1}
(b) {ap bp+q aq : p, q ≥ 1}
(c) {am bn : m > n ≥ 1}
© ª
(d) wa|w| : w ∈ {a, b}+
78
Unidad V
Máquinas de Turing
79
Introducción
i
↓
a1 a2 . . . an
• Tanto los autómatas de estado finito como los autómatas de pila, es-
canean un sı́mbolo en la cinta, y se mueven a la derecha, posiblemente
cambiando de estado (y en el caso de los ADP’s, haciendo posibles ajustes
a la pila).
80
Limitantes de los autómatas
81
Máquinas de Turing
• Definición formal: Una máquina de Turing (MT) es una séptupla T =
(Q, A, M, ∆, θ, i, T ), donde
– Q es un conjunto finito de estados.
– A es un alfabeto finito.
– M ⊇ A es el conjunto finito de sı́mbolos de la cinta de T .
– ∆ ∈ M − A es el sı́mbolo blanco.
– i ∈ Q es el estado inicial.
– T ⊆ Q es un conjunto no-vacı́o de estados terminales.
– θ es una función parcial de Q × M a Q × M × {L, R}, donde L y R
indican izquierda y derecha, respectivamente.
82
Descripciones instantáneas
83
Cómputos
• Consideremos la DI w1qw2 , donde w1 = w10 α y w2 = βw20 (con α, β ∈ M ).
Entonces, el comportamiento de la máquina de Turing puede ser uno de
los siguientes:
1. Si θ(q, β) = (q 0 , β 0 , R), entonces
w10 αqβw20 −→ w10 αβ 0 q 0 w20 .
2. Si θ(q, β) = (q 0 , β 0 , L), entonces
w10 αqβw20 −→ w10 q 0 αβ 0 w20 .
3. Si q se encuentra cerca del final de la DI y la máquina se mueve
hacia la derecha de la cinta, entonces se insertan sı́mbolos blancos
conforme sea necesario. Por ejemplo, si θ(q, β) = (q 0 , β 0 , R), entonces
w1 qβ −→ w1 β 0 q 0 ∆.
84
Lenguaje reconocido por una MT
iw → . . . → z1tz2,
donde i es el estado inicial, t es un estado terminal, z1 ∈ M ∗,
y z2 ∈ M + .
85
Ejemplo
86
Ejercicios
1. Construı́r máquinas de Turing que reconozcan los siguientes lenguajes:
© R ∗
ª
(a) L = ww : w ∈ {a, b} .
© ª
(b) L = w ∈ {a, b}+ : |w|a = |w|b .
(c) L = {an bn an : n ≥ 1}.
© ª
(d) L = w ∈ {a, b, c}+ : |w|a = |w|b = |w|c .
Notar que los lenguajes (c) y (d) no son libres de contexto.
87
Máquinas de Turing como procesadores de texto
• Si consideramos la cinta de una MT como una cadena de caracteres,
entonces uno puede considerar la MT como un procesador de texto que
realiza alguna tarea especı́fica.
88
Clase de lenguajes reconocidos por las MT
• Es fácil demostrar que cualquier lenguaje regular puede ser reconocido
por una MT.
90
Ejercicios
2. L = {ap : p es primo}.
91
Jerarquı́a de Chomsky
93
Codificación de una MT
94
Codificación de una MT
• A continuación, podemos definir las siguientes funciones:
– c1(qi ) = ba2i+1 b, para i = 1, . . . , k,
– c1(tj ) = ba2j b, para j = 1, . . . , l,
– c2(ar ) = ba2r+1 b, para r = 1, . . . , m,
– c2(αs ) = ba2s b, para s = 1, . . . , n,
– c3(L) = bab,
– c3(R) = ba2b.
95
Codificación de una MT
• Una MT puede definirse completamente mediante una secuencia finita
de instrucciones, por lo que podemos pensar en cualquier MT como un
elemento del conjunto
(Q × M × Q × M × {L, R})p , p ≤ 1.
• Sea K : (Q × M × Q × M × {L, R})+ → {a, b}∗ una función que mapea una
MT a una palabra en {a, b}∗ definida como:
K(z1 , z2, . . . , zp ) = c(z1)b2 c(z2 )b2 . . . b2 c(zp ),
donde zi = Q × M × Q × M × {L, R}.
96
Un lenguaje no reconocido por ninguna MT
• Sea A = {a, b}, y W ⊂ A∗ el conjunto de palabras que son codificación de
una máquina de Turing; es decir,
W = {K(z1 , z2 , . . . , zp ) : zi ∈ Q × M × Q × M × {L, R}, i = 1, . . . , p, p ≥ 1} .
98
Máquinas de Turing universales
• Consideremos el lenguaje
G = {w ∈ {a, b} : w ∈ L (T (w))} ;
es decir, el lenguaje que consiste en las codificaciones de todas aquellas
máquinas de Turing que aceptan su propia codificación.
100
Problema de la parada
• Una máquina de Turing T con alfabeto {a, b} es autoterminante si even-
tualmente se detiene cuando se le da como entrada la palabra K(T )
(independientemente de si la palabra es o no aceptada por la máquina).
101
Unidad VI
Computabilidad y
complejidad computacional
102
Computabilidad
• Nos interesa ahora el estudio de aquellos procesos que son realizables por
una máquina de Turing.
103
Funciones iniciales
104
Combinación y composición
105
Recursividad primitiva
107
Ejemplos de funciones recursivas primitivas
Comparación:
eq(x, y) = monus(1, sum(monus(x, y), monus(y, x))).
x == y
108
Ejemplos de funciones recursivas primitivas
109
Función totales no recursivas primitivas
• No toda función total es recursiva primitiva. Algunos ejemplos son:
1. Es claro que el conjunto F de todas las funciones recursivas primitivas
es contable, por lo tanto, pueden enlistarse como P R = {f1 , f2 , . . .}.
Considerar la función f : N → N tal que f (n) = fn (n) + 1. Claramente
f es total ya que está bien definida para toda n ∈ N. Sin embargo, se
puede probar también que f ∈ / P R, y por lo tanto, f no es recursiva
primitiva.
2. La función de Ackermann A : N2 → N se define recursivamente medi-
ante las siguientes ecuaciones:
A(0, y) = y + 1,
A(x + 1, 0) = A(x, 1),
A(x + 1, y + 1) = A(x, A(x + 1, y)).
Se puede demostrar que A es computable y total, pero no recursiva
primitiva (se demuestra que la función f (n) = A(n, n) crece más
rápido con respecto a n que cualquier función recursiva primitiva).
110
Funciones recursivas parciales
• Para obtener una función parcial f : Nm → Nn (es decir, que no esté
necesariamente definida para todo x̄ ∈ Nm ), se requiere del operador de
minimalización µ, cuya acción puede definirse como sigue:
f (x̄) = µy [g(x̄, y) == 0] ,
lo cual significa que f (x̄) es el menor valor de y tal que g(x̄, y) == 0 y
g(x̄, z) está definida para todo z < y.
111
Complejidad computacional
112