Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Notas de Clase MMIN
Notas de Clase MMIN
Agosto 2017
Índice general
3. Recurrencia 26
3.1. Sucesiones y recurrencia . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1. Ecuaciones de recurrencia . . . . . . . . . . . . . . . . . . 27
3.1.2. Notación con ı́ndices . . . . . . . . . . . . . . . . . . . . . 29
3.2. Funciones recurrentes famosas . . . . . . . . . . . . . . . . . . . . 32
3.2.1. La sucesión de Fibonnaci . . . . . . . . . . . . . . . . . . 32
3.2.2. Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3. Recurrencia y problemas de conteo . . . . . . . . . . . . . . . . . 35
3.3.1. Recubrimiento de un tablero . . . . . . . . . . . . . . . . 35
3.3.2. Número de saludos en una reunión . . . . . . . . . . . . . 36
3.3.3. Número de comités . . . . . . . . . . . . . . . . . . . . . . 37
3.3.4. Subiendo escaleras . . . . . . . . . . . . . . . . . . . . . . 37
3.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1
4. Demostraciones 44
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2. Métodos de demostración . . . . . . . . . . . . . . . . . . . . . . 45
4.2.1. Demostración directa . . . . . . . . . . . . . . . . . . . . . 45
4.2.2. Demostración indirecta . . . . . . . . . . . . . . . . . . . 51
4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5. Autómatas y computabilidad 56
5.1. Autómatas finitos deterministas . . . . . . . . . . . . . . . . . . . 57
5.1.1. Diagramas de estados . . . . . . . . . . . . . . . . . . . . 57
5.1.2. Tablas de transición de estados . . . . . . . . . . . . . . . 59
5.1.3. Conceptos de lenguajes . . . . . . . . . . . . . . . . . . . 59
5.1.4. El problema de la pertenencia . . . . . . . . . . . . . . . . 60
5.1.5. Definición formal de una autómata finito determinista . . 61
5.1.6. Lenguajes Regulares . . . . . . . . . . . . . . . . . . . . . 63
5.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7. Máquinas de Turing 75
7.1. Modelo informal de un máquina de Turing . . . . . . . . . . . . . 75
7.2. Descripción formal de un Maquina de Turing . . . . . . . . . . . 77
7.3. Configuración de una máquina de Turing . . . . . . . . . . . . . 78
7.4. Lenguajes reconocibles por una Maquina de Turing . . . . . . . . 78
7.5. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8. Lógica Proposicional 84
8.1. Los fundamentos de la matemática . . . . . . . . . . . . . . . . . 84
8.2. ¿Cómo definir una lógica formalmente? . . . . . . . . . . . . . . . 85
8.3. Lenguaje objeto y Lenguaje del observador . . . . . . . . . . . . 86
8.4. Sintaxis de la Lógica Proposicional . . . . . . . . . . . . . . . . . 87
8.4.1. Alfabeto de la lógica proposicional . . . . . . . . . . . . . 87
8.4.2. Formulas de la lógica proposicional . . . . . . . . . . . . . 88
8.4.3. Árboles de parseo y de sintaxis . . . . . . . . . . . . . . . 88
2
8.5. Traduciendo lenguaje natural a la LP . . . . . . . . . . . . . . . 90
8.5.1. Método de traducción . . . . . . . . . . . . . . . . . . . . 91
8.6. Semántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.6.1. Tablas de verdad . . . . . . . . . . . . . . . . . . . . . . . 93
8.6.2. Interpretaciones . . . . . . . . . . . . . . . . . . . . . . . 94
8.6.3. Satisfacción de una formula . . . . . . . . . . . . . . . . . 94
8.6.4. Validez de una formula . . . . . . . . . . . . . . . . . . . 95
8.6.5. Equivalencia Proposicional . . . . . . . . . . . . . . . . . 95
8.6.6. Relación de consecuencia . . . . . . . . . . . . . . . . . . 96
8.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3
Introducción
4
Capı́tulo 1
Computación, matemáticas
y el universo
5
1.2. Nace la teorı́a de la computación
El fracaso del plan planteado por Hilbert, impulsó muchos de los desarrollos
en computación y en filosofı́a de la ciencia hasta nuestros dı́as. En particular los
trabajos de Gödel, Turing y Church, refutaron los planteamientos de Hilbert, y
sentaron las bases para la teorı́a de la computación moderna. En 1931 Gödel,
revolucionó la teorı́a de la demostración, al inventar un nuevo método que le
permitió demostrar que, para cualquier sistema axiomático que formalizara la
aritmética básica (es decir los números y las operaciones básicas): 1) Si el sistema
es consistente, no puede ser completo, es decir si en el sistema no se generan
contradicciones, no todas las verdades matemáticas se pueden demostrar; 2) la
consistencia del sistema no se puede demostrar dentro del mismo sistema. De
manera similar, en 1936 Alan Turing y Alonso Church de manera independiente,
presentaron una definición de algoritmo y demostraron que no se puede construir
un algoritmo que reciba una expresión matemática (una expresión escrita en
lógica de primer orden) y que pueda decidir si esta es verdadera o falsa. Estos
resultados, rechazaban de manera contundente las aspiraciones de Hilbert, y
presentaban una dificultad para justificar la certeza de las matemáticas. Pero,
como veremos más adelante, en realidad estos resultados son un ejemplo de la
manera en que avanza la ciencia y sus implicaciones no son negativas, sino por
el contrario, sus implicaciones son positivas y plantean un universo abierto a la
búsqueda de nuevas y mejores teorı́as sobre el mismo.
6
1.4. Los primeros computadores
En paralelo a estos desarrollos teóricos surgieron desarrollos tecnológicos
que permitieron la creación de computadores reales. Entre 1937-1946 se crearon
varios computadores basados en relays (switches electromecánicos) que constitu-
yeron los primeros computadores. Entre estos hay varios computadores famosos
como el “Bombe” construidos por Alan Turing y Harold Keen para descifrar los
mensajes cifrados del ejercito Nazi. En 1946 aparece el ENIAC, construido por
John Mauchly y J. Presper Eckert, que era el primer computador electrónico
(sin relays) y por tanto era cerca de 1000 veces más rápido que sus predeceso-
res. En 1948 se ejecutó el primer programa de computador en la Universidad de
Manchester por parte de los investigadores Frederic Williams, Tom Kilburn, y
Geoff Toothill. Con el surgimiento de los computadores electrónicos se impulso
el desarrollo de los computadores y vinieron muchos de los adelantos que hoy
en dı́a disfrutamos. Se crearon sistemas operativos (1960s), computadores per-
sonales (1970s), internet (1990s), teléfonos inteligentes (2000s), la nube (2000s),
la web 2.0 (2000s), y el internet de las cosas (2010s) entre otros.
7
pilares fundamentales: la fı́sica cuántica, la evolución (la evolución de organis-
mos vivos), la epistemologı́a (la teorı́a de cómo se genera el conocimiento), y
la computación (la teorı́a de las capacidades de los computadores que podemos
construir). A partir de estos pilares se explora la capacidad de crear simuladores
virtuales que puedan simular el universo, y cómo esto implica que objetos en
este universo puedan crear computaciones sobre el mismo universo, por ejemplo
que el cerebro humano pueda crear modelos mentales de lo que sucede en el uni-
verso, o que en el futuro podamos crear máquinas que piensen. Se explora cómo
el conocimiento es un acto de conjeturas (creación) y crı́tica (someter nuestras
conjeturas a prueba), y el carácter infinito del conocimiento, esto es que que
siempre nuestras mejores teorı́as solo abarcarán el principio de lo que se puede
conocer. Ası́ como Gödel y Turing crearon técnicas jamás utilizadas por nadie
para dar nuevas explicaciones del universo, nuestras mejores teorı́as y entre ellas
las matemáticas estarán siempre sometidas a la crı́tica y la posibilidad de ser
remplazadas por mejores teorı́as. Esto es no hay una última fuente de verdad ni
de certeza, el conocimiento es una dinámica de creación y crı́tica infinita.
Este curso toma en serio estas implicaciones y busca preparar al estudiante
para asumir los retos del futuro, presentando un marco conceptual que pone
como elemento indispensable la explicación y a la computación como eje funda-
mental de estas explicaciones. El fin último de la matemática y de las ciencias
es crear nuevas y mejores explicaciones sobre el universo y los fenómenos de la
realidad.
Aunque el curso tiene un carácter introductorio, presentamos esas bases
fundamentales que le permitirán profundizar en sus estudios teóricos y prácticos
en computación.
En este curso tomamos en serio la relación ı́ntima entre la computación, la
matemática, la fı́sica y el conocimiento.
8
Capı́tulo 2
Conjuntos, funciones y
relaciones
Parte de los contenidos de este capı́tulo están inspirados por los contenidos
del libro Michael Sipser Introduction to the Theory of Computation [1].
2.1. Conjuntos
Un conjunto es un grupo de objetos representados en una unidad, el conjunto.
Los conjuntos pueden contener cualquier tipo de objetos, entre ellos números,
sı́mbolos, cadenas de sı́mbolos, lenguajes e incluso conjuntos. Los conjuntos se
pueden describir de manera extensiva listando los elementos que pertenecen al
conjunto entre corchetes, por ejemplo la expresión
S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
9
Para representar los conjuntos infinitos podemos utilizar el sı́mbolo ... para
indicar que el conjunto continúa con la misma secuencia. Por ejemplo para defi-
nir el conjunto de los números naturales podemos utilizar la siguiente expresión:
N = {0, 1, 2, 3, 4, ...},
en adelante utilizaremos N para referirnos a los números naturales (en este curso
el 0 es parte de los números naturales, en otros textos podrá encontrar que los
autores usan los números naturales comenzando en 1).
De manera similar podemos definir los números enteros, es decir los enteros
positivos y los negativos, de la siguiente manera:
10
Figura 2.1: Representación en Diagrama de Venn de un solo conjunto y sus
elementos
11
en este caso se dice que B es un subconjunto de A y se escribe B ⊂ A. Ahora
considere el conjunto de conjuntos definido de la siguiente manera
A = {1, 2, 3}
es
P(A) = {∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}.
Esto es equivalente a decir que dado un conjunto A, el conjunto potencia de
A se define como
12
Una relación interesante entre estos conjuntos es que cada uno es un sub-
conjunto del siguiente. Es decir los números naturales son un sunconjunto de
los enteros, los números enteros son un subconjunto de los racionales, los racio-
nales son un subconjunto de los reales y los reales son un subconjunto de los
complejos. Es decir N ⊂ Z ⊂ Q ⊂ R ⊂ C.
{(1, 2), (2, 1), (2, 3), (3, 2), (1, 3), (3, 1)}
que es el conjunto de todos los pares ordenados que se pueden crear con ele-
mentos del conjunto {1, 2, 3}. De manera análoga podemos tener una secuencia
definida domo
(∅, {1}, {2}, {3, 2, 1}).
A × B = {(4, 1), (4, 2), (4, 3), (6, 1), (6, 2), (6, 3)}
y
B × A = {(1, 4), (1, 6), (2, 4), (2, 6), (3, 4), (3, 6)}.
Se puede calcular el producto cartesiano de k conjuntos A1 , A2 , ..., Ak , y se
escribe A1 × A2 × A3 ... × Ak . El resultado del producto cartesiano en este caso es
el conjunto de tuplas (a1 , a2 , ..., ak ) donde ai ∈ Ai . Por ejemplo, si A = {1, 2} y
B = {x, y} entonces A×B×A = {(1, x, 1), (1, y, 1), (1, x, 2), (1, y, 2), (2, x, 1), (2, y, 1), (2, x, 2), (2, y, 2)}.
13
Cuando se calcula el producto cartesiano de un conjunto consigo mismo
podemos escribir de manera abreviada Ak . Por ejemplo,
A4 = A × A × A × A
A5 = A × A × A × A × A
Ak = A × A × A × ... × A(Producto cartesiano de A tomado k veces ).
Los productos cartesianos de los conjuntos especiales son muy usados. Por
ejemplo, N2 = N × N es el producto cartesiano de los números naturales con
ellos mismos.
f = {(0, 0), (1, 3), (2, 6), (3, 9), (4, 12)}.
Igualmente, la podemos representar como una tabla que muestra todas las entra-
das posibles y mapea cada entrada con su salida correspondiente (ver figura 2.3).
n f (n)
0 0
1 3
2 6
3 9
4 12
14
Figura 2.4: Representación de una función con un diagrama de flechas
s : R −→ R : s(x) = sin(x)
15
n h(n)
0 0
1 3
2 6
3 6
4 12
0 π 2π 3π
n f (n) x f −1 (x)
0 0 0 0
1 3 3 1
2 6 6 2
3 9 9 3
4 12 12 14
Una función que es tanto inyectiva como sobreyectiva se dice que es biyec-
tiva. Por ejemplo, la función f : Z −→ Z : f (n) = n + 3 es biyectiva.
Una función puede tener como dominio el producto cartesiano de varios
conjuntos. Ası́, una función f puede estar definida como f : A × B −→ C, donde
el dominio de f es el producto cartesiano de A y de B y el rango es el conjunto
C. Por ejemplo, podemos definir la función g : {0, 1, 2, 3} × {0, 1, 2, 3} −→
{0, 1, 2, 3, 4, 5, 6} usando la tabla siguiente.
16
g 0 1 2 3
0 0 1 2 3
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
En esta función el dominio está conformado por tuplas, concretamente por pares
ordenados, y en la tabla la primera columna representa el primer elemento de
las tuplas y la primera fila representa el segundo elemento, es decir podemos
escribir g((2, 3)) = 5 o simplemente g(2, 3) = 5. La función g se podrı́a definir
también con la siguiente notación
g= {((0, 0), 0), ((0, 1), 1), ((0, 2), 2), ((0, 3), 3),
((1, 0), 1), ((1, 1), 2), ((1, 2), 3), ((1, 3), 4),
((2, 0), 2), ((2, 1), 3), ((2, 2), 4), ((2, 3), 5),
((3, 0), 3), ((3, 1), 4), ((3, 2), 5), ((3, 3), 6)}
donde se define la función g como un conjunto de tuplas, en las que el primer
elemento de cada tupla corresponde a una tupla y el segundo elemento corres-
ponde a un número que es la suma de los elementos de la primera tupla. Es
decir que si tenemos la siguiente tupla ((3, 0), 3), el segundo elemento de esta
tupla corresponde a la suma de los elementos de la primera, es decir a la suma
de 3 + 0.
En una función cuyo dominio es A1 × A2 × A3 · · · × Ak para los conjuntos
A1 , A2 , A3, ..., Ak la entrada es una k-tupla (a1 , a2 , a3 , ..., ak ) y denominamos los
ai como argumentos de la función. una función con k argumentos es denomina-
da una función k-aria. En este caso k se denomina la aridad de una función.
Una función con una argumento se denomina una función unaria. Las funciones
con dos argumentos se denominan funciones binarias. Hay una gran cantidad
de funciones binarias muy conocidas, por ejemplo la suma y la multiplicación.
Muchas de estas funciones usan la notación infija donde la operación se es-
cribe entre los argumentos. Por ejemplo, con la función suma podemos escribir
suma(2, 3) = 5, que usa notación prefija (la operación antes de los argumentos),
o, usando notación infija, 1 + 3 = 5.
17
que R(a1 , a2 , . . . , ak ) = V ERDADERO. Ası́, por ejemplo podemos escribir
menor(3, 5) = V ERDADERO, o de la manera que generalmente se escribe
usando notación infija, 3 < 5 = V ERDADERO, o simplemente 3 < 5. La
igualdad escrita con el sı́mbolo = es otro ejemplo de una relación binaria.
Algunas veces describir una propiedad con un conjunto es más conveniente
que hacerlo con notación de funciones. Ası́, por ejemplo si A = {0, 1, 2, 3, 4}
la función menor : A × A −→ {V ERDADERO, F ALSO} podrı́a ser escrita
como (A × A, S), donde S = {a ∈ A × A | menor(a) = V ERDADERO}. o
simplemente como S, si el dominio es evidente por el contexto. En este caso
S = {(0, 1), (0, 2), (0, 3), (0, 4), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)}.
18
|A|. La cardinalidad de un conjunto finito se obtiene simplemente al contar sus
elementos. Esto es,
|{1}| = 1
|{1, 100}| = 2
|{Bogotá, New York, Paris}| = 3
|∅| = 0.
La cardinalidad de los conjuntos infinitos es un poco más complicada, ya
que no podemos asignarle un número natural a la cardinalidad de un conjunto
infinito. Decir por ejemplo que la cardinalidad de N es igual a infinito, no es
necesariamente correcto, ya que el infinito es más un lı́mite, algo hacia lo que
tiende una secuencia de números, pero no es un número concreto. Para lidiar
con este problema vamos a introducir una clase especial de valores que se usan
para medir la cardinalidad de conjuntos infinitos. El primer valor que vamos a
introducir es el siguiente:
|N| = ℵ0 .
ℵ0 se lee Aleph-0, “aleph” es la primera letra del alfabeto hebreo, y George
Cantor usó esta y otras letras del alfabeto Hebreo en el estudio de la teorı́a de
conjuntos. Por supuesto ℵ0 es mayor que cualquier número natural.
Para razonar y estudiar los infinitos necesitamos una definición de cardinali-
dad o al menos una forma de comparar la cardinalidad de conjuntos. Para esto
introducimos la siguiente definición
Definición 2.4.1 (Igualdad de la Cardinalidad). Dos conjuntos tienen la
misma cardinalidad si podemos definir una función que empareje cada elemento
de un conjunto con un elemento del otro conjunto, sin repetir y sin dejar ningún
elemento por fuera.
Por ejemplo si tenemos A = {1, 2, 3} y B = {perro, gato, rata}, pode-
mos decir que A y B tienen la misma cardinalidad y en este caso es igual
a 3. Esto es fácil de probar por la definición 2.4.1 construyendo una función
que empareje los elementos de A con los de B, en este caso la función serı́a
{(1, perro), (2, gato), (3, rata)}. Note que la función no repite elementos ni deja
elementos sin considerar.
Ahora podemos responder preguntas como cuál es la cardinalidad de Z o
de los pares o de los impares, y si estas cardinalidades son más grandes o
más pequeñas que |N|. Para hacer esto vamos a intentar mapear los elementos
de cada conjunto con los de N. Para esto proponemos emparejar los números
naturales con los números enteros de la siguiente manera
(0, 0), (1, −1), (2, 1), (3, −2), (4, 2), (5, −3), ...
, esto es los números naturales pares se mapean con los enteros positivos y los
números naturales impares se mapean con los enteros negativos. Si representa-
mos este mapeo en forma de tabla obtenemos
19
Valor en N Valor en Z
0 0
1 -1
2 1
3 -2
4 2
... ...
P(P(A)) = {∅, {{0}}, {{2}}, {{0, 2}}, {∅}, {{0}, {2}}, {{0}, {0, 2}}, {{0}, ∅},
{{2}, {0, 2}}, {{2}, ∅}, {{0, 2}, ∅}, {{0}, {2}, {0, 2}}, {∅, {2}, {0, 2}},
{{0}, ∅, {0, 2}}, {{0}, {2}, ∅}, {{0}, {2}, {0, 2}, ∅}}
y en este caso |P(P(A))| = 16, y podemos ver que |P(A)| < |P(P(A))|. Por
lo anterior podemos ver que, si A es un conjunto finito, siempre se cumple que
|A| < |P(A)| < |P(P(A))| < ....
Ahora, podemos preguntar si B es un conjunto infinito entonces |B| =
|P(B)|?. Para encontrar la respuesta a la pregunta anterior vamos a suponer
que efectivamente |B| = |P(B)|, es decir, que suponemos que los conjuntos po-
tencia de conjuntos infinitos tienen la misma cardinalidad del conjunto base. si
suponemos que lo anterior es verdad, quiere decir que podemos mapear de algu-
na manera cada elemento de B con un elemento de P(B) sin que sobre ningún
elemento de B o de P(B). Es decir podemos construir una relación de la forma
20
b0 ↔ {b0 , b1 , b2 , b4 , b5 , ...}
b1 ↔ {b0 , b2 , b3 , b4 , b5 , ...}
b2 ↔ {b1 , b2 , b3 , b4 , b5 , ...}
b3 ↔ {b0 , b2 , b4 , b5 , ...}
b4 ↔ {b1 , b2 , b3 , b5 , ...}
b5 ↔ {b0 , b2 , ...}
.. .. ..
. . .
Note que la selección del mapeo es totalmente aleatoria. Ahora, lo que vamos
a hacer es probar que no importa que tipo de mapeo usted escoja, siempre podrá
encontrar un subconjunto de B que no está mapeado a un elemento de B. Para
esto vamos a usar una técnica llamada diagonalización.
Ahora considere el mapeo propuesto arriba y escribámoslo en forma de tabla
como se muestra a continuación.
b0 b1 b2 b3 b4 b5 ...
b0 S S S N S S ...
b1 S N S S S S ...
b2 N S S S S S ...
b3 S N S N S S ...
b4 N S S S N S ...
b5 S N S N N N ...
..
.
En esta tabla la primera columna muestra el elemento de B que esta mapeado
al conjunto que se obtiene al tomar los elementos de las columnas marcadas
con “S” para la fila correspondiente. Esto es por ejemplo, el elemento b2 está
mapeado con el conjunto infinito {b1 , b2 , b3 , b4 , b5 , ...}, el elemento b0 no está en
este conjunto porque la columna correspondiente esta marcada con “N”, y los
elementos después de b5 no son relevantes para lo que queremos mostrar. Ahora,
vamos a marcar la diagonal de la tabla (letras en engrilla) y ver que conjunto
se forma al seleccionar los elementos correspondientes según se indica con “S”
o “N” en la diagonal. El resultado se ve a continuación.
b0 b1 b2 b3 b4 b5 ...
b0 S S S N S S ...
b1 S N S S S S ...
b2 N S S S S S ...
b3 S N S N S S ...
b4 N S S S N S ...
b5 S N S N N N ...
..
.
Conj. formado S N S N N N ...
El conjunto formado en este caso es {b0 , b2 , ...}, que podrı́a estar en cualquier
parte de nuestra tabla infinita. Para efectos de este ejemplo se puede ver que el
21
elemento b5 está mapeado a este conjunto que se formó en la diagonal. Esto no
es casualidad, el autor de estas notas seleccionó ese mapeo para que el lector
pueda ver que el conjunto seleccionado en la diagonal puede estar en cualquier
parte de la tabla, recuerde que el mapeo en principio fue aleatorio.
Ahora vamos a repetir el ejercicio pero tomando la inversa de la diagonal.
Es decir, vamos a tomar la diagonal y formar el conjunto que se crea al cambiar
las “S” por “N” y las “N”por “S”.
b0 b1 b2 b3 b4 b5 ...
b0 S S S N S S ...
b1 S N S S S S ...
b2 N S S S S S ...
b3 S N S N S S ...
b4 N S S S N S ...
b5 S N S N N N ...
..
.
Conj. complemento N S N S S S ...
Lo interesante de este resultado es que el conjunto formado al tomar el comple-
mento de la diagonal no se encuentra en ningún lugar de la tabla. No me refiero
a la tabla visible en este documento, sino que en la tabla infinita que representa
la tabla parcial que mostramos acá, en esa tabla infinita en ninguna parte se
encuentra el conjunto formado al tomar el complemento de la diagonal.
Para verificar esto, puede realizar el siguiente razonamiento. Suponga que el
complemento de la diagonal lo denominamos C y sabemos que si ese conjunto
se encontrara en la tabla quiere decir que hay un bk que estarı́a mapeado a ese
conjunto. En ese caso usted sabe que en la tabla en la fila de bk , la columna
bk hace parte de la diagonal, y que es ese elemento el que se complementa.
Ahora si C estuviera mapeado a bk , entonces todos los elementos que se indican
con “S” en la fila deberı́an pertenecer a C, pero usted sabe que el elemento
de la columna de bk en esa fila se complementó y por lo tanto C no puede ser
el conjunto definido por la la fila correspondiente a bk . El siguiente cuadro le
ayuda con este razonamiento.
bk−2 bk−1 bk bk+1 bk+2 bk+3 ...
..
.
bk−2 N ...
bk−1 S ...
bk S N S N S N ...
bk+1 S ...
bk+2 N ...
bk+2 S ...
..
.
Conj. C S N N N S N ...
Para terminar este razonamiento mire que la diagonal está formada por
22
las celdas marcadas en la fila y la columna con el mismo elemento. Es decir,
para cualquier número natural k la celda de la fila bk y la columna bk está
en la diagonal. Esto implica que si en una celda de la diagonal encontramos
“N”podemos decir que el elemento correspondiente, por ejemplo bk NO está
mapeado con un conjunto que lo contiene, esto es bk esta mapeado con A y bk ∈
/
A. Al tomar el complemento podemos decir que si en una celda de la diagonal
encontramos “N” podemos decir que el elemento si pertenece al complemento
de la diagonal. Entonces podemos escribir el complemento de la diagonal como
o de otra manera
Observe que esta definición de C no necesita construir una tabla, ahora tiene
una definición de C, que le permite construirlo con facilidad, independiente del
mapeo que se proponga.
2.6. Ejercicios
1. Describa en español que conjunto define cada una de las siguientes expre-
siones. Utilice ejemplos cuando sea necesario.
a) {0, 2, 4, 6, ...}
b) {..., −3, −1, 1, 3, ...}
c) {n ∈ N | n = 3m y m ∈ N}
a
d ) {r ∈ R | r = b y a, b ∈ Z}
e) {n ∈ N | n = m2 y m ∈ N}
f ) {s | s es una cadena de 0 y 1 donde s es igual a s invertida}
2. Describa en español que conjunto define cada una de las siguientes expre-
siones. Utilice ejemplos cuando sea necesario.
a) {2, 3, 5, 7, 11, 13, 17, 19}
b) {..., −7, −5, −3, −1, 0, 2, 4, 6, 8, ...}
c) {n ∈ N | n = 3m y m ∈ N}
d ) {n ∈ N | n = m2 y m ∈ Z}
e) {r ∈ R | r = cos(s) y s ∈ R}
f ) {(x, y) ∈ R × R | x2 + y 2 = 1}
3. Escriba de manera formal los siguientes conjuntos
a) Conjunto de los números 10, 100, 1000, 10.000, ...
23
b) Conjunto de los números enteros mayores a 7
c) Conjunto de los números naturales menores a 7
d ) El conjunto que contiene la cadena else.
e) El conjunto potencia del conjunto {a, b, c}.
f ) El conjunto que contiene al conjunto vacı́o
g) El conjunto vacı́o
4. Escriba de manera formal los siguientes conjuntos
a) Conjunto de los números 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ...
b) Conjunto de los números enteros menores a 0
c) Conjunto de los números naturales múltiplos de 7
d ) El conjunto que contiene la cadena if , then, wewrer, f or, else.
e) El conjunto potencia del conjunto {1, 2, 3, 4}.
f ) El conjunto que contiene al conjunto vacı́o y a 45
g) El conjunto de números enteros m de la forma m = 3n donde n es
un entero.
5. Dibuje la siguiente expresión en un Digrama de Venn: N ⊂ Z ⊂ Q ⊂ R ⊂
C.
6. Si A = {1, 2, 3, 4} y B = {1, 2}
a) ¿A es un subconjunto de B?
b) ¿B es un elemento de A?
c) ¿Qué conjunto es A ∪ B?
d ) ¿Qué conjunto es A ∩ B?
e) ¿Qué conjunto es A × B?
f ) ¿Qué conjunto es el conjunto potencia de A?
7. Si A tiene a elementos y B tiene b elementos, ¿cuántos elementos tiene
A × B? Explique su respuesta.
24
10. En una tabla represente la función con dominio D = {0, 1, 2, 3, 4} y que
mapea cada elemento del dominio con el cuadrado del mismo, es decir
f (n) = n2 . Luego escriba la función de manera formal detallando el do-
minio, el rango y la fórmula de creación.
11. En una tabla represente la función con dominio D = {0, 1, 2, 3, 4} y que
mapea cada elemento del dominio con el cubo del mismo más 2, es decir
f (n) = n3 + 2. Luego escriba la función de manera formal detallando el
dominio, el rango y la fórmula de creación.
12. Si A = {0, 1, 2, 3, 4} y B = {5, 6, 7, 8, 9}, en una tabla represente la función
f : A × B −→ N : f (a, b) = 5a + b
16. Demuestre que la relación “tiene el mismo coseno.es una relación de equi-
valencia en el conjunto de todos los ángulos.
17. Suponga A = ∅ y calcule
a) |A| =
b) |P(A)| =
c) P(A) =
d ) |P(P(A))| =
e) P(P(A)) =
25
Capı́tulo 3
Recurrencia
26
3.1. Sucesiones y recurrencia
Las funciones cuyo dominio es N (los números naturales) se pueden analizar
desde muchos puntos de vista. Un punto de vista muy usado es el de las suce-
siones, que se ven como una colección de valores en las que cada valor tiene una
posición, la cual está dada por un valor entero.
Por ejemplo, si en la siguiente colección de valores
se quiere destacar el puesto que cada valor ocupa, comenzando desde cero, se
puede decir que se trata una sucesión y entonces se puede definir una función
que la describe. Por ejemplo,
T : N −→ N (3.2)
T (n) = 2n + 1
Esta asociación entre posición y valor se puede hacer más explı́cita mediante
una tabla como la siguiente:
n 0 1 2 3 4 5 6 ... posición
T (n) 1 3 5 7 9 11 13 ... valor
T (5) = 2 × 5 + 1
= 11
27
que se está definiendo), también aparece en el lado derecho pero en una versión
“debilitada” o en algún sentido, “más pequeña”. La definición de algo se hace
en términos de una versión más pequeña (menos complicada) de sı́ mismo.
Para la sucesión descrita informalmente en (3.1) y definida formalmente
en (3.3) se puede hacer una definición alterna que surge de la observación (a ojo)
de que hay una relación que se cumple entre dos valores vecinos en la sucesión:
cualquier elemento es igual a su predecesor más 2, lo cual puede expresarse como
T (5) = T (5 − 1) + 2
= T (4) + 2
= T (4 − 1) + 2 + 2
= T (3) + 2 + 2
= T (3 − 1) + 2 + 2 + 2
= T (2) + 2 + 2 + 2
= T (2 − 1) + 2 + 2 + 2 + 2
= T (1) + 2 + 2 + 2 + 2
= T (1 − 1) + 2 + 2 + 2 + 2 + 2
= T (0) + 2 + 2 + 2 + 2 + 2
=1+2+2+2+2+2
= 11
Uff!!
28
En los textos de matemáticas es frecuente ver una definición como la anterior
con un aspecto ligeramente diferente pero igualmente claro:
(
1, si n = 0
T (n) = (3.5)
T (n − 1) + 2, en otro caso
T (0) = 1
T (1) = T (1 − 1) + 2 = T (0) + 2 = 1 + 2 = 3
T (2) = T (2 − 1) + 2 = T (1) + 2 = 3 + 2 = 5
T (3) = T (3 − 1) + 2 = T (2) + 2 = 5 + 2 = 7
T (4) = T (4 − 1) + 2 = T (3) + 2 = 7 + 2 = 9
En textos impresos, en donde el tamaño está muy bien definido, con frecuen-
cia sobran los paréntesis. Es decir,
29
¿Cuándo se usa la notación con ı́ndices y cuándo se usa la notación tradicio-
nal de funciones?. En principio son perfectamente intercambiables. Obviamen-
te, no deben mezclarse en la misma expresión si están asociadas con el mismo
sı́mbolo. Es decir,
Tal vez hay una diferencia en el uso más frecuente de cada una de las nota-
ciones. Cuando aparece la expresión F (n) normalmente se piensa en una función
cuyo dominio no necesariamente es N, mientras que la expresión Fn inmediata-
mente sugiere que el valor de n es un entero.
Ejemplo 3.1.1. Escribir de manera recurrente y de manera explı́cita una fun-
ción que genere los números naturales múltiplos de 3. También describa la su-
cesión mediante la notación de subı́ndices.
Para esto consideremos primero la definición recurrente usando las siguientes
ecuaciones:
f (0) = 0
f (n) = f (n − 1) + 3
g(n) = 3 × n
Note que muchas veces usamos la palabra genera, para referirnos a una
función. En este contexto simplemente estamos pensando en la función como
una máquina que recibe una entrada y produce una salida.
Ejemplo 3.1.2. Muchas funciones, que no corresponden necesariamente con
sucesiones, pueden definirse recurrentemente. Por ejemplo, la potenciación de
números reales podrı́a definirse ası́:
pot : R × N −→ R
pot(x, 0) = 1
pot(x, n) = x × pot(x, n − 1) para n > 0
30
x0 = 1
xn = x × xn−1 para n > 0
con lo que, como ya se dijo, se tiene además un método para calcular el valor.
Por ejemplo,
53 = 5 × 52
= 5 × 5 × 51
= 5 × 5 × 5 × 50
=5×5×5×1
= 125
31
Lo que nos interesa calcular es Dn . Reemplazando (3.8) en (3.7)
Dn + 1 = (Dn−1 + 1) × 3 + Dn−1 + 1
Dn = (Dn−1 + 1) × 3 + Dn−1
Dn = 3Dn−1 + 3 + Dn−1
Dn = 4Dn−1 + 3 (3.10)
D0 = 0 (3.11)
Dn = 4Dn−1 + 3
D(0) = 0 (3.12)
D(n) = 4D(n − 1) + 3
f (0) = 1
f (1) = 1
f (n) = f (n − 1) + f (n − 2).
La tabla que define la misma función es la siguiente
n 1 2 3 4 5 6 ...
f (n) f (0) f (1) f (0) + f (1) f (1) + f (2) f (2) + f (3) f (3) + f (4) ...
f (n) 1 1 2 3 5 8 ...
La sucesión cuando fue concebida por Fibonnaci, se concibió para modelar el
problema de la reproducción de unos conejos imaginarios. El problema radicaba
en encontrar cuantas parejas de conejos tendrı́a un criador de conejos, si iniciaba
con una pareja de conejos y la reproducción de conejos tenı́a las siguientes
32
Figura 3.1: Reproducción de conejos que sigue la secuencia de Fibonnaci. Los
conejos blancos son recién nacidos y los negros ya son maduros sexualmente.
33
una función en los naturales como f (0). En otros textos usted puede encontrar
que se refieren al primer término como f (1) o a1 . También es normal que en
otras fuentes, no le pregunten por f (n), sino por an .
El estudio de las propiedades de la función de Fibonnaci ha probado ser muy
fructı́fero en ideas y aplicaciones. Por ejemplo, se sabe que cuando la secuencia
tiende a infinito la razón entre un término y el anterior ( f (n+1)
f (n) ) tiende a la
proporción áurea. Ası́, al definir una espiral con la secuencia de Fibonnaci se
puede encontrar una espiral similar a la espiral dorada. Muchos patrones en la
naturaleza se asemejan a estas espirales, por ejemplo, la forma de los brazos de
las galaxias en espiral (ver figura 3.2) y la forma de los huracanes. Este y otros
temas se dejan para que el lector los investigue y estudie.
Figura 3.2: La galaxia Messier 101 (M101, también conocida como NGC 5457
y denominada popularmente como galaxia ringlete). Se encuentra en la cons-
telación dela Osa Mayor y está a 21 millones de años luz de de distancia a la
tierra. Esta es una de las fotos más detalladas tomadas por el Hubble. Imagen
perteneciente a ESA/Hubble.
3.2.2. Factorial
El factorial de un número n se define como la multiplicación de los números
naturales menores o iguales a n y se escribe ası́: n!. Es decir el factorial de 5
34
está definido como
5! = 1 × 2 × 3 × 4 × 5 = 120.
Se puede hacer una definición recurrente para el factorial mediante las si-
guientes ecuaciones:
f actorial : N −→ N
f actorial(0) = 1
f actorial(n) = f actorial(n − 1) × n
Tablero Ficha
Para plantear una solución, es conveniente analizar algunos casos sencillos. Por
ejemplo, un tablero de 2 × 1 puede recubrirse con una ficha, colocándola
verticalmente. Es decir, de una manera.
Un tablero de 2 × 2 puede recubrirse con 2 fichas, de 2 maneras:
1. Ambas fichas verticales.
35
2. Ambas fichas horizontales.
Un tablero de 2 × 3 puede recubrirse con 3 fichas, de las siguientes maneras:
1. Colocar verticalmente las 3 fichas.
2. Colocar verticalmente la primera ficha y las dos restantes
horizontalmente.
3. Colocar las primeras 2 fichas horizontalmente y la tercera verticalmente.
De manera general, sea Rn el número de maneras en las que se puede recubrir
un tablero de 2 × n con fichas de 2 × 1. Note que hay 2 maneras de colocar la
primera ficha:
1. Si se coloca verticalmente, el problema se reduce a Rn−1 .
2. Si se coloca horizontalmente, la segunda ficha también debe colocarse ho-
rizontalmente y el problema se reduce a Rn−2 .
Resumiendo las observaciones anteriores,
R1 = 1
R2 = 2
Rn = Rn−1 + Rn−2 para n > 2
o también,
S(1) = 0
S(n) = (n − 1) + S(n − 1)
36
3.3.3. Número de comités
En un conjunto de n personas, cuántos comités de p personas se pueden
formar?.
Sea C(n, p) el número de comités posibles, de tamaño p, escogidos de un
conjunto de n personas. Note que:
Finalmente,
No se pueden armar comités si se requieren más personas que las disponi-
bles en el grupo inicial.
Se puede armar exactamente un comité si se requieren tantas personas
como las disponibles en el grupo.
La definición completa es, entonces:
C(n, p) = 0 si p > n
C(n, n) = 1
C(n, p) = C(n − 1, p) + C(n − 1, p − 1) en otro caso
37
Subir un escalón y continuar con cualquiera de las soluciones cuando restan
n − 1 escalones; es decir, En−1 .
Subir 2 escalones y seguir con cualquiera de las soluciones cuando restan
n − 2 escalones; es decir, En−2 .
E(0) = 0
E(1) = 1
E(2) = 2
E(n) = E(n − 1) + E(n − 2) en otro caso
3.4. Ejercicios
1. Calcule los primeros 5 términos de las siguientes funciones recurrentes:
a) f (0) = 2; f (1) = 5; f (n) = f (n − 1) + f (n − 2).
b) f (0) = 3; f (1) = 5; f (n) = f (n − 1) × f (n − 2).
c) f (0) = 1; f (1) = 3; f (2) = 2; f (n) = f (n − 1) × f (n − 3).
d ) f (0) = 1; f (1) = 3; f (n) = f (n − 1) × f (n − 2) × ((−1)n ).
e) f (0) = 1; f (1) = 3; f (n) = f (n − 1) × f (n − 2) × ((−1)n ).
2. Calcule los 10 primeros términos generados por las siguientes ecuaciones
de recurrencia. Los casos base —para las ecuaciones que los necesiten—
son:
a(0) = 1, a(1) = 2, a(2) = 2, a(3) = 3, a(4) = 4
38
El valor en las posiciones impares de la sucesión es el doble de su
antecesor menos uno.
4. Para cada una de las siguientes sucesiones encuentre una función recu-
rrente que la defina:
a) 1, 3, 5, 7, 9, 11, 13, ...
b) 4, 7, 10, 13, 16, 19, ...
c) 2, 3, 5, 8, 13, 21, 34, ...
d ) 4 ,8 16, 32, 64, 128, ...
e) 1, 3, 9 , 27, 81, ...
f ) 2, 3, 6, 18, 108, 1944,...
g) 2, 3, 10, 34, 344, 11700, ...
h) 1, 2, 3, 4, 16, 65536,...
i ) 2, 10, 50, 250, 1250, 6250, 31250, ...
j ) 6, -18, 54, -162, 486, -1458, 4374, ...
5. Encontrar el patrón de generación de las siguientes sucesiones y expresarlo
mediante una fórmula. Use an como término genérico de cada sucesión.
No olvide definir los casos base que hagan falta(extraı́do de [2]):
a) 1, 1, 3, 5, 11, 21, 43, 85, 171, 341, 683, 1365, 2731, 5461, 1092, . . .
b) 1, 1, 4, 4, 7, 7, 10, 10, 13, 13, 16, 16, 19, 19, 22, . . .
c) 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, . . .
d ) 1, 7, 16, 28, 43, 61, 82, 106, 133, 163, 196, 232, 271, 313, . . .
e) 2, 8, 17, 29, 44, 62, 83, 107, 134, 164, 197, 233, 272, 314, . . .
f ) 0, 1, 2, 5, 12, 29, 70, 169, 408, 985, 2378, 5741, 13860, . . .
g) 1, 2, 6, 16, 44, 120, 328, 896, 2448, 6688, 18272, 49920, . . .
h) 1, 10, 101, 1010, 10101, 101010, . . .
i ) 6, 57, 567, 5667, 56667, 566667, 5666667, 56666667, 566666667, 5666666667, 56666666667, . . .
j ) 11, 121, 1221, 12221, 122221, 1222221, 12222221, 122222221, 1222222221, 12222222221, . . .
6. Suponga que definimos la función sucesor de la siguiente manera
S(x) = x + 1
39
Ahora suponga que definimos una función recursiva para la multiplicación
con las siguientes ecuaciones
mult(x, 0) = 0
mult(x, S(y)) = suma(mult(x, y), x)
suma(x, 0) = x
suma(x, S(y)) = S(suma(x, y))
p(x, 0) = 1
p(x, S(y)) = mult(p(x, y), x)
40
b) Defina la función recurrente residuo(n, m) que calcula el residuo de
la división entera de n por m.
9. La evolución de dos especies que comparten un mismo territorio viene
dada por el sistema de ecuaciones
41
12. En la siguiente serie de figuras se generan números contando los puntos
resaltados. Estos números se llaman números pentagonales. Proponga una
ecuación de recurrencia que permita generar estos números.
42
17. Se apilan fichas de colores amarillo, verde, azul blanco, rojo. Encontrar el
número de formas de apilar n fichas sin que queden la roja al inicio y la
combinación roja-azul- verde. (extraı́do de [2]).
43
Capı́tulo 4
Demostraciones
4.1. Introducción
En este capı́tulo se hace una introducción a conceptos relacionados con de-
mostración y se describen algunos métodos que permiten construir demostracio-
nes. Entender estos métodos son de gran ayuda para los matemáticos y a todos
los que trabajamos en computación.
Una demostración, es una argumentación valida que permite establecer
la verdad de una proposición. Las demostraciones son de gran importancia en
el mundo de las matemáticas y en diversos campos de aplicación de la compu-
tación. Por ejemplo: se puede hacer verificación matemática para garantizar que
los programas de computación son correctos, que la seguridad de los sistemas no
son vulnerables, garantizar consistencia en los métodos utilizados en inteligencia
artificial, entre otras aplicaciones.
Un teorema, es una proposición que puede ser demostrada como verdade-
ra. Para demostrar que una proposición es un teorema, se debe hacer medio de
una demostración. Los teoremas se pueden ver como hechos o resultados vali-
dos que pueden ser utilizados. En el desarrollo de la demostración se utilizan
argumentaciones, las cuales pueden ser: axiomas, premisas u otros teoremas ya
demostrados anteriormente. Un axioma o premisa es una sentencia que se
asume como cierta. En cada uno de los pasos de la demostración, se aplican
reglas de inferencia las cuales permiten obtener conclusiones intermedias a
partir de las premisas anteriores. El ultimo paso de la demostración corresponde
a la conclusión final, es decir, al teorema.
Algunos otros conceptos, no menos importantes, se encuentran en el mundo
de las demostraciones matemáticas. Un lema es un teorema de menor importan-
cia. Por otro lado, un corolario es un teorema que se puede deducir fácilmente
a partir de un teorema que ya ha sido demostrado. Finalmente, a partir de indi-
cios u observaciones se puede tener una conjetura, la cual es una proposición
que no ha sido demostrada. Cuando se encuentra un caso especifico en el cual
una proposición es falsa, esto se considera un contraejemplo, conllevando a
44
conjeturas falsas y también a proposiciones que no son teoremas.
A continuación se presentan algunos métodos que permiten demostrar teo-
remas, estos métodos presentan una estrategia útil a la hora de hacer demostra-
ciones. La elección del método depende de usted, de su experiencia y su astucia
a la hora de enfrentarse a una demostración matemática.
H1 ∧ H2 ∧ H3 ∧ ... ∧ Hn ⇒ C
Duante el desarrollo de la demostración se hace uso de axiomas, premisas,
teoremas ya demostrados, y aplicando reglas de inferencia se logra llegar a la
conclusión C.
n = 2k + 1 (4.1)
n2 = 2p + 1 (4.3)
a = 2p + 1 y b = 2q + 1 (4.4)
45
Ahora se procede a hacer la suema entre a y b, haciendo uso de (4.4):
a + b = 2r (4.6)
Inducción matemática
Uno de los métodos de demostración directa más utilizados en las matemáti-
cas e informática es la inducción matemática. La inducción matemática per-
mite establecer la veracidad de una propiedad P en todos los elementos de un
conjunto infinito.
Por ejemplo, si tenemos los números N = {0, 1, 2, 3, 4, ...}, y consideramos P
como una propiedad en todos los números naturales, el objetivo es demostrar
que P (k) es verdadera para todos los k ∈ N, es decir, que cada k satisface la
propiedad P . Hay que demostrar que P (0) es verdadero y además que P (1),
P (2), P (3), P (4), y ası́ sucesivamente para los infinitos elementos de N.
46
P (n) : La ficha n-ésima se caiga
n(n + 1)
M (n) : 0 + 1 + 2 + 3 + ... + n = (4.7)
2
Utilizando la notación Σ, se puede representar la sumatoria de la parte iz-
quierda de la ecuación (4.7), de la siguiente manera:
n
X
0 + 1 + 2 + 3 + ... + n = i (4.8)
i=0
47
Demostración. Caso base: Hay que demostrar que se cumple la propiedad M
para n = 1, es decir, M (1) es verdadero. La ecuación (4.8) corresponde a
una igualdad, vamos a calcular por separado los dos lados de la igualdad y al
final debemos encontrar que los dos lados son iguales, comencemos con el lado
izquierdo
1
X
L.I : i=0+1=1 (4.10)
i=0
n+1
X
i = 0 + 1 + 2 + ... + n + (n + 1)
i=0
n(n + 1)
= + (n + 1), ((Aplicando la H.I))
2 (4.14)
n(n + 1) + 2(n + 1)
=
2
(n + 2)(n + 1)
=
2
Fı́jese que partimos de lado izquierdo de la ecuación (4.13), aplicando proce-
dimientos matemáticos y utilizando la hipótesis de inducción llegamos directa-
mente al lado derecho de la ecuación (4.13). Es decir, hemos demostrado que
n + 1 satisface la propiedad M .
Luego de demostrar el caso base y el caso inductivo, hemos demostrado que
el teorema (4.9) es verdadero.
48
Teorema 4.2.2. Demostrar que la propiedad G(n) se cumple para todo n ≥ 1,
n
X n(n + 1)(2n + 1)
G(n) : i2 = (4.15)
i=1
6
n+1
X (n + 1)(n + 2)(2n + 3)
G(n + 1) : i2 = . (4.19)
i=1
6
Ahora vamos a demostrar el caso inductivo, para esto comenzamos por el
lado izquierdo de la ecuación 4.19
49
n+1
X
i2 = (12 + 22 + 32 + ... + n2 ) + (n + 1)2
i=1
n
!
X
2
= i + (n + 1)2
i=1
n(n + 1)(2n + 1)
= + (n + 1)2 , ((Aplicando la H.I))
6
n(n + 1)(2n + 1) + 6(n + 1)2
= (4.20)
6
(n + 1) [n(2 + 1) + 6(n + 1)]
=
6
(n + 1) 2n2 + n + 6n + 6
=
6
(n + 1)(2n2 + 7n + 6)
=
6
(n + 1)(n + 2)(2n + 3)
=
6
Partimos del lado izquierdo de la ecuación 4.19 y aplicando procedimientos
matemáticos y la hipótesis de inducción, hemos llegado al lado derecho de la
ecuación 4.19, quedando demostrado por completo la igualdad, es decir, hemos
demostrado que el caso inductivo se cumple.
En los ejercicios anteriores los procedimientos matemáticos se hicieron con
todo el detalle sobre las expasiones y factorizaciones, sin embargo a medida que
avancemos se omitirán algunos pasos y el estudiante deberá verificarlos por si
mismo.
En el siguiente ejercicio vamos a retomar la definición de los números de
Fibonacci, estudiados secciones atrás, recordemos. Los números de Fibonacci
de definen para todo número natural n de la siguiente manera:
f (0) = 1
f (1) = 1
f (n) = f (n − 1) + f (n − 2)
Ejemplo 4.2.3. Para cualquier n ≥ 0, demuestre que la función f de Fibonacci
satisface la siguiente propiedad:
H(n) : f (0) + f (2) + f (4) + ... + f (2n) = f (2n + 1) − 1 (4.21)
Demostración. Caso base: Hay que demostrar que para n = 0 se cumple la
propiedad H, es decir, hay que que H(0) es verdadera. Procedemos a calcular
el lado izquierdo de la ecuación (4.21)
LI : f (0) = 1 (4.22)
50
ahora calculamos el lado derecho de la ecuación
Los dos valores son iguales para los dos lados, entonces queda demostrada la
propiedad H para n = 0.
Caso inductivo: Vamos a suponer que n satisface la propiedad H, es decir
se tiene como hipótesis de inducción
Ahora suponiendo la hipótesis de inducción, hay que demostrar que n+1 satisfa-
ce la propiedad H, vamos a sustituir n por n + 1 en la ecuación 4.24, obteniendo
simplificando:
Ahora vamos a demostrar el caso inductivo, para esto comenzamos por el lado
izquierdo de la ecuación 4.26
f (0) + f (2) + f (4) + ... + f (2n) + f (2n + 2) = f (2n + 1) − 1 + f (2n + 2), ((H.I))
= f (z + 1) − 1 + f (z + 2), ((z=2n))
= f (z + 2) + f (z + 1) − 1
= f (z + 3) − 1, ((def f(z+3)))
= f (2n + 3) − 1, ((z=2n))
(4.27)
51
Demostración por contradicción
La demostración por contradicción, parte de suponer que la conclusión es
falsa y las premisas verdaderas y el objetivo es llegar a demostrar que esto
conduce a algo absurdo, llamado una contradicción, es decir:
¬C ∧ H1 ∧ H2 ∧ H3 ∧ ... ∧ Hn ⇒ absurdo
De esta manera se demuestra que la conclusión C no puede ser falsa, por
lo tanto, C tiene que ser conclusión a partir de las hipótesis H1 , H2 , H3 , ..., Hn .
Esta técnica también es conocida con el nombre de reducción al absurdo.
Ejemplo 4.2.4. Demostrar el siguiente teorema: “si n es un número entero y
3n + 2 es par, entonces n es par”.
Demostración. Vamos a identificar las hipótesis y la conclusión: H1 : “n es un
entero”, H2 : “3n + 2 es par” y C : “n es par”. Vamos a demostrar el teorema
por contradicción, es decir, vamos a suponer que H1 , H2 y ¬C son ciertas, y
debemos llegar a algún absurdo.
Con base en las tres suposiciones se tiene: “n es un entero”, “3n + 2 es par”
y “n no es par”, la ultima hipótesis, es igual a suponer que “n es impar”.
Cómo n es impar, entonces existe un entero k tal que, n = 2k + 1. Esto
permite reescribir la H2 de la siguiente manera:
a ≥ a2 , ((suponer ¬C))
a − a2 ≥ 0, ((aritmética))
a(1 − a) ≥ 0, ((factor común)) (4.29)
a ≥ 0 y 1 − a ≥ 0, ((aritmética))
a ≥ 0 y 1 ≥ a, ((aritmética))
52
En el ultimo paso se encuentra una contradicción con H1 , pues partimos del
hecho de suponer que a > 1 y llegamos a un absurdo, a ≤ 1. Quedando ası́
demostrado el teorema por contradicción.
¬C ⇒ ¬(H1 ∧ H2 ∧ H3 ∧ ... ∧ Hn )
Esta técnica surge de una equivalencia lógica que se estudiará más adelante.
Por ahora, se ilustrará con un ejemplo simple para dar más claridad. Suponga-
mos que la siguiente afirmación es verdadera: “Si está lloviendo, entonces el cielo
está oscuro”, al aplicar la contrapositiva se tiene: “Si el cielo no está oscuro,
entonces no está lloviendo”. Esta segunda afirmación es verdadera, y “lógica-
mente” tiene sentido, si pensamos en la conexión natural que existe entre llover
y el estado del cielo.
A continuación se presenta un ejemplo donde se hace la demostración por
contrapositiva. Una vez se plantea la nueva expresión negando la conclusión y
negando las hipótesis se procede a hacer la demostración de forma directa.
Ejemplo 4.2.6. Demostrar el siguiente teorema: “si n es un número entero y
3n + 2 es impar, entonces n es impar”.
Demostración. Aplicando la contrapositiva al teorema anterior se tiene que: “si
n no es impar, entonces 3n + 2 no es impar”, es decir, basta con demostrar:
“si n es par, entonces 3n + 2 es par”. Esta ultima proposición se demostrará de
forma directa.
Cómo n es par, entonces existe un entero k tal que, n = 2k, teniendo:
4.3. Ejercicios
1. Demostrar la veracidad de los siguientes enunciados por medio de la de-
mostración directa:
53
a) La suma de dos números enteros pares es par.
b) El producto de un número entero par por uno impar es par.
c) El cuadrado de un número par es un número par.
d ) El producto de dos números impares es impar.
e) Si m y n son números cuadrados, entonces mn también es un número
cuadrado.
2. Demuestre o refute los siguientes enunciados:
a) La suma de dos números pares es siempre par.
b) La suma de tres números enteros consecutivos es divisible por tres.
c) Sean m y n números pares, entonces 6m + 8n es par.
d ) Si n es un cuadrado perfecto, entonces n + 2 es un cuadrado perfecto.
3. Se quiere demostrar que 2 = 1, encuentre el paso que tiene el error:
P1: Considere esta ecuación como verdadera a = b
P2: multiplique ambos lados por a para obtener a2 = ab
P3: Reste b2 de ambos lados para obtener, a2 − b2 = ab − b2
P4: factorice ambos lados, (a + b)(a − b) = b(a − b)
P5: divida cada lado por (a − b) para obtener, a + b = b
P6: Ahora haga a = b = 1, y por lo anterior queda probado que 2 = 1
4. Considere las siguientes funciones en los naturales
s(n) = 1 + 2 + 3 + 4 + 5 + ... + n
c(n) = 13 + 23 + 33 + 43 + 53 + ... + n3 ,
pruebe por inducción lo siguiente
54
a) Si n número natural entonces n3 − n es divisible por 6. Es decir,
n3 − n = 6 × m donde m ∈ N (Esta es la definición de ser múltiplo
de 6, z es múltiplo de 6 si existe un número natural que multiplicado
por 6 sea igual a z).
b) Si n es natural entonces n × (n + 1) es par.
c) n es natural entonces n3 + 2n es divisible por 3.
d ) n es natural entonces 7n − 2n es divisible por 5.
7. Desigualdad: utilice el principio de inducción matemática para demostrar
a) Si n es natural y n > 0 entonces 2(n + 2) ≤ (n + 2)2 .
b) Si n es natural y n > 3 entonces 3n ≥ n3 .
8. Fibonacci: pruebe por inducción las siguientes propiedades utilizando la
definición de número de Fibonacci
a) T(n): f (0) + f (1) + ... + f (n) = f (n + 2) − 1
b) P(n): f (1) + f (3) + ... + f (2(n − 1) + 1) = f (2n)
c) J(n): f (n)2 − f (n + 1)f (n − 1) = (−1)n+1
9. Contradicción: demuestre los siguientes teoremas utilizando la técnica por
contradicción
a) Si n es un entero y n3 + 5 es impar, entonces n es par.
b) Si n es un entero y 3n + 2 es par, entonces n es par.
c) Sean m, n números naturales. Si mn es impar, entonces m y n son
impares.
√
d ) 3 es un número irracional.
e) La raı́z cuadrada de algún número irracional siempre es racional.
10. Contrapositiva: demuestre los siguientes teoremas utilizando la técnica por
contrapositiva
a) Si n es un entero y n3 + 5 es impar, entonces n es par.
b) Si n es un entero y 3n + 2 es par, entonces n es par.
c) Si la suma de dos números reales es menor que 50, entonces al menos
uno de los números es menor que 25.
55
Capı́tulo 5
Autómatas y
computabilidad
Luego, para responder esta pregunta, definió que un número era compu-
table si su parte decimal podrı́a ser escrita por una máquina.
Con estas premisas Alan Turing propuso una máquina abstracta que podı́a
computar números, y conjeturó que siguiendo los mismos principios se podrı́an
estudiar las funciones computables e incluso predicados computables. La técnica
de utilizar máquinas abstractas para estudiar lo que es computable, es decir los
que puede o no hacer un computador, es una premisa fundamental para entender
la teorı́a de la computación que desarrollaremos.
En este capı́tulo acogeremos las premisas planteadas por Turing, y estudia-
remos la computabilidad por medio de tres máquinas o mecanismos de computo
abstractos: los autómatas finitos, las gramáticas libres de contexto y las Máqui-
nas de Turing. Cada una de estas máquinas abstractas le permitirá resolver
problemas cada vez más complejos. Es importante anotar que los computadores
más potentes que conocemos, e incluso los que imaginamos, hoy en dı́a pueden
hacer exactamente lo mismo que una máquina de Turing. Inclusive conjeturamos
que el cerebro humano funciona como una máquina de Turing.
56
Figura 5.1: Concepto abstracto de un autómata finito
57
Figura 5.2: Representación de un autómata por medio de un diagrama de estados
estado. Los estados marcados con un doble cı́rculo se denominan estados finales
o estados de aceptación. Cuando un autómata termina su computación en un
estado final se considera que terminó con éxito.
Ejemplo 5.1.1. Suponga que tenemos un autómata como el definido en la figura
5.2 y una cinta de cinco casillas con los siguientes sı́mbolos “ababc”. Vamos a
calcular paso a paso en que estado termina el autómata:
El autómata inicia en estado q0.
Lee el sı́mbolo “a” y pasa al estado q1.
Lee el sı́mbolo “b” y pasa al estado q2.
Lee el sı́mbolo “a” y regresa al estado q1.
Lee el sı́mbolo “b” y pasa al estado q2.
Lee el sı́mbolo “c” y permanece en el estado q2.
Como no hay más caracteres en la cinta, la computación se detiene en el
estado q2.
Como el estado q2 es una estado final, y el autómata terminó sin interrumpirse,
se dice que el autómata aceptó la cadena.
Ejemplo 5.1.2. Considere el autómata anterior y las siguientes dos cadenas
“abacbc” y “abcaba”. Calcule en que estado termina el autómata en cada caso.
Al leer la primera cadena el autómata termina en estado q0 , que no es un
estado final, y por lo tanto se dice que no acepta la cadena.
En la segunda cadena el autómata termina en estado q1 , que no es un
estado final, y por lo tanto se dice que no acepta la cadena.
El lector debe comprobar estos dos resultados calculando cada ejemplo paso
a paso.
58
5.1.2. Tablas de transición de estados
Los autómatas se pueden representar igualmente por tablas de transiciones
de estados, la tabla 5.1 representa el autómata definido en la figura 5.2. La
tabla muestra en la primera columna los estados de origen y en la primera fila
muestra los sı́mbolos que puede leer el autómata. En las casillas de la tabla
muestra el estado al que llegarı́a si partiendo del estado de origen, leyera el
sı́mbolo correspondiente. Se marca con una raya cuando no está definida la
transición desde ese estado al leer el sı́mbolo correspondiente.
a b c
q0 q1 - -
q1 - q2 -
q2 q1 - q2
Alfabeto
Un alfabeto es un conjunto finito y no vacı́o de sı́mbolos. Generalmente
representamos los alfabetos con la letra griega mayúscula Σ (sigma).
A continuación algunos ejemplos de alfabetos:
Σ = {a, b, c} es el alfabeto con los sı́mbolos “a”,“b”, “c”.
Cadenas de sı́mbolos
Las cadenas de sı́mbolos o palabras son secuencias finitas de sı́mbolos forma-
das con los elementos de un alfabeto. Por ejemplo, la cadena 100100100 es una
cadena formada con los sı́mbolos del alfabeto Σ = {1, 0}. Otro ejemplo es la ca-
dena “abcdegtrs” formada con los sı́mbolos del alfabeto Σ = {a, b, c, d, e, f, g, h, r, s, t}.
Note que las cadenas no deben contener necesariamente todos los sı́mbolos del
alfabeto.
59
La cadena vacı́a
La cadena vacı́a representa una cadena con cero sı́mbolos. A partir de cual-
quier alfabeto se puede formar la cadena vacı́a, y se representa con la letra ε
(epsilon).
Longitud de la cadena
Si w es una variable que representa una cadena, la longitud de w se escribe
ası́ |w|. Hay que tener cuidado cuando nos pasan variables que representan
cadenas, en particular hay que usar variables que no sean sı́mbolos del alfabeto.
Si w = asdaf la longitud de w es |w| = 5. La longitud de la cadena vacı́a es 0,
esto es |ε| = 0.
Potencias de un alfabeto
Si Σ es un alfabeto, se puede construir el conjunto de todas las cadenas de
longitud k que utilizan los sı́mbolos de Σ, a este conjunto lo denominamos la
potencia k de sigma y lo escribimos ası́ Σk . Al conjunto infinito de todas las
cadenas de cualquier longitud que se pueden construir con los sı́mbolos de Σ lo
representamos como Σ∗ .
Concatenación de cadenas
Dado un alfabeto Σ y dos cadenas x, y ∈ Σ, denotamos xy la cadena formada
por la concatenación de las cadenas x y y, es decir la cadena formada por los
sı́mbolos de x seguidos de los sı́mbolos de y. Por ejemplo, si x = 010101 y
y = 111000 entonces xy = 010101111000.
Lenguaje
Un lenguaje es un conjunto de cadenas que se pueden formar al concatenar
sı́mbolos de un alfabeto Σ. Aunque puede parecer rara está definición de len-
guaje, puede imaginar que el lenguaje esta formado por el conjunto de todas las
palabras que se pueden expresar en ese lenguaje.
60
Ejemplo 5.1.3. La figura 5.3 muestra un autómata que detecta si un número
binario, es decir escrito con los sı́mbolos del alfabeto Σ = {0, 1}, es par. En
este caso si el autómata termina en el estado final q1 quiere decir que la cadena
termina en el sı́mbolo 0 y por lo tanto es par. Note que en el sistema binario un
número par siempre termina en cero (0).
Intente construir un autómata para detectar números impares en el sistema
binario y uno para detectar números pares en el sistema decimal.
4. q0 es el estado inicial, y
5. F ⊂ Q, y F es el conjunto de los estados finales o de aceptación.
61
que en ese lenguaje están cadenas como 010, 0000101111, 0100000010010010, y
1111111110101111. Esto es el lenguaje se puede escribir ası́
L = {w ∈ Σ∗ |w = x101y, x, y ∈ Σ∗ }
Considerando lo anterior, para definir totalmente el autómata debemos de-
finir la 5-tupla (Q, Σ, δ, q0 , F ) donde
1. Q = {q0 , q1 , q2 , q3 },
2. Σ = {0, 1},
3. δ : Q × Σ −→ Q es la función de transición descrita en la figura 5.4 y
en la tabla 5.2. Observe que cualquiere de los dos, el diagrama o la tabla,
definen la función δ.
4. q0 es el estado inicial, y
5. F = {q3 }.
Figura 5.4: Autómata finito determinista que detecta las cadenas que contienen
la subcadena 101
62
δ 0 1
q0 q1 q0
q1 q1 q2
q2 q3 q0
q3 q3 q3
Tabla 5.2: Tabla de transición de estados que define δ para el lenguaje formado
por las cadenas que contienen la subcadena 101
5.2. Ejercicios
1. Para cada uno de los autómatas que se muestran en la figura 5.5, conteste
las preguntas:
a) Describa las máquinas de manera formal. Es decir identificando
(Q, Σ, δ, q0 , F ).
63
2. Considere el alfabeto Σ = {0, 1} y encuentre el autómata que genera los
siguientes lenguajes:
a) {w ∈ Σ∗ |w inicia con 1 y termina con 0}
b) {w ∈ Σ∗ |w contiene por lo menos tres 1} (ojo: no importa el orden
en que aparecen).
c) {w ∈ Σ∗ |w contiene la subcadena x0101y y x, y pueden ser
la cadena vacı́a}.
d ) {w ∈ Σ∗ |w inicia con 0 y tiene longitud impar, o inicia con 1 }
y es de longitud par}.
e) {w ∈ Σ∗ | cada posición impar de w es un 1}
64
Capı́tulo 6
Lenguajes independientes
de contexto
Hasta ahora nos hemos concentrado en los lenguajes regulares. Estos se pue-
den generar ya sea con con autómatas finitos deterministas (AFD). Ahora, nos
vamos a concentrar en una clase más amplia de lenguajes que se denominan
lenguajes independientes de contexto. Para generarlos vamos a utilizar una no-
tación recursiva denominada gramática libre de contexto. Aunque, las gramáticas
no son propiamente un autómata, más adelante veremos que tienen le mismo
poder de cómputo que un autómata especial que se denomina como autómata
a pila.
El estudio de estas gramáticas ha sido muy útil en el desarrollo de com-
piladores desde los años sesenta. En particular, porque antes los analizadores
sintácticos, que son la parte del compilador que descubre la estructura del pro-
grama, se creaban de manera ad-hoc; ahora, con el uso de gramáticas, la creación
de estos componentes se realiza de manera automática.
Adicionalmente, y más alineados con la motivaciones de este curso, las
gramáticas nos permitirán introducirnos a la lógica como una disciplina que
busca estudiar de manera precisa la formalización del conocimiento y el razona-
miento.
65
A −→ 0A1
A −→ B .
B −→ #
escriben en mayúsculas y los sı́mbolos terminales son los sı́mbolos del alfabe-
to del lenguaje. En el ejemplo anterior el conjunto de variables es {A, B}, y
el alfabeto del lenguaje o sı́mbolos terminales son {0, 1, #}. Las reglas de
sustitución se denominan también producciones.
6.1.1. Derivación
La gramática nos permite derivar las cadenas del lenguaje siguiendo los
siguientes pasos:
1. Escriba la variable inicial. La variable inicial es generalmente la primera
variable de la regla de sustitución superior en las reglas de la gramática.
2. Encuentre una regla que inicie con esa variable y que crea que puede
utilizar para derivar la cadena que está buscando. Luego substituya la
variable por la cadena a la derecha de la flecha.
3. En la nueva cadena encuentre las variables y substitúyalas repitiendo el
paso anterior hasta llegar a una cadena que solo tenga sı́mbolos terminales.
Por ejemplo, para derivar la cadena 000#111 desde la gramática G1 podemos
seguir los siguientes pasos,
Para representar las derivaciones de forma más corta vamos a introducir una
nueva operación para representar la derivación ⇒. Esta operación simplemente
indica que siguiendo una regla de substitución podemos substituir la cadena de
la izquierda por la cadena de la derecha.
Ahora, utilizando los pasos definidos anteriormente y el sı́mbolo para des-
cribir la derivación podemos, por ejemplo, escribir la derivación para la cadena
000#111 ası́,
66
Figura 6.2: Árbol de parseo para derivar cadena 000#111 a partir de G1 .
67
6.1.4. Ejemplo de palı́ndromos
Los palı́ndromos son cadenas que se leen igual de izquierda a derecha y de
derecha a izquierda. Por ejemplo, otto, allla, y ana son palı́ndromos. Mien-
tras que hola, correr, y Paris no son palı́ndromos. Considere el lenguaje de
palı́ndromos creados a partir del alfabeto {0, 1}. En este caso ε, 0, 1, 10101, y
001100 son palı́ndromos y pertenecen al lenguaje. La gramática G2 que genera
este lenguaje, se muestra en la figura 6.3.
P −→ ε
P −→ 1
P −→ 0
P −→ 0P 0
P −→ 1P 1
P ⇒ 0P 0 ⇒ 00P 00 ⇒ 00100
El árbol de parseo equivalente se muestra en la figura 6.4.
68
Figura 6.4: Árbol de parseo para derivar cadena 00100 a partir de G2 .
de la gramática G1 es,
u ⇒ u1 ⇒ u2 ⇒ u3 ⇒ ... ⇒ uk ⇒ v
G = (V, Σ, R, S)
es
*
L(G) = {w ∈ Σ∗ | S =
⇒ w}
.
69
Ejemplo 1
Dada la gramática independiente de contexto
S −→ aSb | SS | ε
Observe que al lado derecho de la regla de sustitución hay tres cadenas separadas
por el sı́mbolo |, esto es simplemente una manera de simplificar la gramática y
es equivalente a escribir
S −→ aSb
S −→ SS
S −→ ε
En la figura 6.5 se muestran los árboles de parseo para las cadenas abab y
aababb que pertenecen al lenguaje generado por la gramática.
Figura 6.5: Árboles de parseo para derivar cadenas abab y aababb a partir de
G3 .
G4 = (V, Σ, R4 , hExpri)
donde
V = {hExpri, hT ermi, hF actori} es el conjunto de variables, observe que
hExpri es el nombre de una variable al igual que hT ermi, y hF actori.
Σ = {a, +, x, (, )}
70
R4 es el conjunto de reglas de sustitución definidas ası́,
S1 −→ 0S1 1 | ε
S2 −→ 1S2 0 | ε
Ahora, para crear una sola gramática que genera el lenguaje completo po-
demos escribir
71
S −→ S1 | S2
S1 −→ 0S1 1 | ε
S2 −→ 1S2 0 | ε
Cuando tenemos que crear una gramática independiente de contexto para un
lenguaje regular podemos aplicar la siguiente estrategia. En este caso podemos
construir el autómata finito determinista que genera el lenguaje y a partir de
este crear la gramática. Para esto debemos crear una variable Ri por cada uno
de los estados qi del autómata. Luego, debemos crear una regla de sustitución
de la forma Ri −→ aRj si δ(qi , a) = qj es una transición del autómata. Adicio-
nalmente, debemos agregar una regla de la forma Ri −→ ε si qi es un estado de
aceptación del autómata. Finalmente, R0 será la variable inicial de la gramática
si q0 es el estado inicial del autómata.
Otra estrategia comúnmente utilizada es cuando un lenguaje contiene cade-
nas que están formadas por dos subcadenas que están relacionadas, por ejemplo
la longitud de una de las subcadenas depende de la longitud de la otra. Un
ejemplo concreto es el lenguaje {0n 1n |n ≥ 0}. En este lenguaje la subcadena de
unos a la derecha, depende del numero de ceros a la izquierda. En este caso una
regla de la forma S −→ aSb, crea cadenas donde la el cantidad de a es igual a
la cantidad de bs.
6.3. Ambigüedad
Algunas veces una gramática puede generar la misma cadena en varias for-
mas diferentes, es decir puede tener varios árboles de parseo para una cadena. A
estas gramáticas se les denomina gramáticas ambiguas. La siguiente gramática
es una gramática ambigua
6.4. Ejercicios
1. Responda las siguientes preguntas para la gramática independiente de
contexto G que se muestra a continuación
R −→ XRX | S
S −→ aT b | bT a
T −→ XT X | X | ε
X −→ a|b
72
b) Identifique tres cadenas en L(G)
c) Identifique tres cadenas que no estén en L(G)
d ) Responda verdadero o falso: T ⇒ aba
∗
⇒ aba
e) Responda verdadero o falso: T =
f ) Responda verdadero o falso: T ⇒ T
∗
⇒ aba
g) Responda verdadero o falso: XXX =
∗
⇒ aba
h) Responda verdadero o falso: X =
G4 = (V, Σ, R4 , hExpri)
donde
V = {hExpri, hT ermi, hF actori}.
Σ = {a, +, x, (, )}
R4 es el conjunto de reglas de sustitución definidas ası́,
hExpri −→ hExpri + hT ermi | hT ermi
hT ermi −→ hT ermi × hF actori | hF actori
hF actori −→ (hExpri) | a
y la variable inicial es hExpri.
73
5. La lógica matemática es una disciplina que estudia la formalización precisa
del conocimiento y el razonamiento. Entre los objetivos fundamentales
de la lógica matemática es buscar un fundamento para las matemáticas.
Muchos de los progresos en lógica permitieron desarrollos en teorı́a de
la computación. Para iniciar el estudio de la lógica matemática vamos a
estudiar la sintaxis de la lógica proposicional (hay otros lógicas como lógica
de primer orden, o lógica temporal que no veremos en este capı́tulo).Para
estudiar la sintaxis de la lógica proposicional utilizaremos una gramática
libre de contexto. Concretamente usted debe demostrar que la siguiente
gramática de la lógica proposicional es ambigua. Ayuda: Demuestre que
existen al menos dos árboles de parseo para la siguiente cadena p ∧ q ∨ r ⇒
q1 . La gramática está definida ası́ GL P = (V, Σ, RL P, hExpri) donde
El alfabeto de la gramática es
Σ = {≡, ∧, ∨, →, ¬, p, q, r, p0 , q1 }
74
Capı́tulo 7
Máquinas de Turing
75
Figura 7.1: Modelo gráfico de un máquina de Turing
Ejemplo 7.1.1. Suponga que tenemos una máquina que decide si una palabra
w pertenece al lenguaje {w ∈ Σ∗ |w = s#s y s ∈ Σ∗ }, es decir las cadenas que
tienen la misma subcadena al lado izquierdo y derecho del sı́mbolo #. En este
caso 01010#01010 pertenece al lenguaje y 0100#0011 no pertenece al lenguaje.
En este caso la cinta tendrı́a la cadena que queremos evaluar en el lado iz-
quierdo de la cinta y después de la cadena tendrı́a solo sı́mbolos blancos (). Por
ejemplo, si queremos evaluar la cadena 011#011, la cinta tendrı́a la siguiente
cadena 01011#01011... como se muestra en la figura 7.2.
El algoritmo para detectar si una cadena pertenece o no al lenguaje es re-
correr la cadena de atrás para adelante varias veces, e ir marcando con una
x los sı́mbolos que coincidan, a lado y lado de la cadena. Si algún sı́mbolo no
coincide o si no se encuentra el sı́mbolo #, la máquina se detiene en un es-
tado de rechazo. Si todos los sı́mbolos coinciden, la máquina se detiene en un
estado de aceptación. La figura 7.2 muestra los estados de la cinta y la posición
de la cabeza de la máquina en distintos momentos de la ejecución. La cadena
finalmente es aceptada y termina la ejecución cuando se alcanza el sı́mbolo .
76
Figura 7.2: Ejemplo de ejecución de Maquina de Turing
1. Q es un conjunto de estados,
77
Una máquina de Turing M = (Q, Σ, Γ, δ, q0 , qaccept , qreject ) realiza cómputos
de la siguiente manera. La máquina M inicia en la casilla más a la izquierda de
la cinta. La entrada w = w1 , w2 , ..., wn ∈ Σ∗ se encuentra en las n casillas más
izquierda de la cinta. El resto de la cinta contiene el sı́mbolo blanco . Como
Σ no contiene le sı́mbolo blanco , el primer sı́mbolo blanco marca el fin de la
entrada. La máquina M se mueve de acuerdo a las condiciones de la función de
transición δ. Si la máquina intenta moverse a la izquierda de la primera casilla de
la cinta, la cabeza se queda en la casilla, ası́ la función de transición indique L.
La computación se ejecuta hasta que alcance un estado de aceptación o rechazo,
en cuyo caso la máquina se interrumpe. Sin no alcanza ninguno de estos estados
la máquina continua por siempre.
wqs
78
7.5. Ejemplos
Ejemplo 7.5.1. Defina formalmente una máquina de Turing que acepte cade-
nas que contengan un número par de 0 (ceros). Por ejemplo, la máquina NO
debe aceptar la cadena 0010010010010, que contiene nueve ceros. En cambio, la
máquina debe aceptar la cadena 10010000111100 que contiene 8 (ocho) ceros.
Para resolver el ejercicio vamos primero a diseñar un algoritmo de solución.
En esta parte usted usa su creatividad para pensar un algoritmo, no hay una
formula para hacerlo. Ası́, que no se preocupe si en primera instancia no ve
una solución de manera fácil, al revisar estos ejemplos empezará ver patrones y
formas de solucionar problemas, que con el tiempo le harán mejorar sus habili-
dades.
El algoritmo es el siguiente. La máquina M tiene dos estados q0 y q1 , que los
usa para desarrollar su computación. Adicionalmente, siempre deben tener un
estado de aceptación y un estado de rechazo, qaccept y qreject respectivamente.
El estado q0 representará las cadenas que tienen un número par de ceros. El
estado q1 representa las cadenas con un número impar de ceros. El algoritmo
cambia de estado entre q0 y q1 cada vez que encuentra un 0. Recuerde que la
cadena está en la parte más izquierda de la cinta y que después de la cadena hay
solo sı́mbolos en blanco (). El algoritmo funcionarı́a de la siguiente manera:
1. El estado inicial es q0
2. Si la máquina detecta un 1 permanece en el estado en el que está
3. Si la máquina detecta un 0 cambia de estado. Si estaba en q0 cambia a q1
y si la máquina estaba en q1 cambia a q0 . Note que lo que está detrás de
este comportamiento es que cada vez que detecta un 0 el numero de ceros
aumenta en uno y por lo tanto se alterna entre números pares e impares
de ceros. Es decir si la cadena tenı́a 5 ceros y detecta otro cero, ahora
tendrı́a 6 ceros, y habrı́a pasado de q1 a q0 .
4. Si detecta un sı́mbolo en blanco , y se encuentra en estado q0 , la máquina
pasa al estado qaccept y termina.
5. Si detecta un sı́mbolo en blanco , y se encuentra en estado q1 , la máquina
pasa al estado qreject y termina.
donde
1. Q = {q0 , q1 , qaccept , qreject } es el conjunto de estados
2. Σ = {0, 1} es el alfabeto
3. Γ = {0, 1, } es el alfabeto de la cinta
79
4. La función de transición la podemos representar en una tabla
δ 0 1
q0 (q1 , 0, R) (q0 , 1, R) (qaccept , , −)
q1 (q0 , 0, R) (q1 , 1, R) (qreject , , −)
qaccept - - -
qreject - - -
Ahora realizamos algunas pruebas de nuestra máquina. Recuerde que, para
representar la configuración de la máquina usamos la siguiente notación wqs,
donde q es el estado actual, ws es la cadena contenida en la cinta, y la cabeza
de la máquina de Turing está al inicio de la cadena s. Por ejemplo, calculemos
los pasos que seguirı́a la máquina al recibir la cadena 010100
1. q0 010100 (La máquina inicia en esta configuración)
2. 0q1 10100 (Como lee un 0, pasa a q1 y se mueve a la derecha)
3. 01q1 0100 (Como lee un 1, se queda en q1 y se mueve a la derecha)
4. 010q0 100 (Como lee un 0, pasa a q0 y se mueve a la derecha)
5. 0101q0 00 (Como lee un 1, se queda en q0 y se mueve a la derecha)
6. 01010q1 0 (Como lee un 0, pasa a q1 y se mueve a la derecha)
7. 010100q0 (Como lee un 0, pasa a q0 y se mueve a la derecha)
8. 010100qaccept (Como lee un pasa a qaccept y se detiene)
La figura 7.3 muestra la ejecución de la máquina descrita anteriormente.
En la figura se ven las siete transiciones necesarias para llegar al estado de
aceptación.
Ejemplo 7.5.2. Defina formalmente una máquina de Turing que acepte ca-
denas que sean palı́ndromos sobre el alfabeto Σ = {0, 1}. Los palı́ndromos son
cadenas que se leen igual de izquierda a derecha y de derecha a izquierda. Por
ejemplo, la máquina NO debe aceptar la cadena 0010010010010. En cambio, la
máquina debe aceptar la cadena 1001001, que se lee igual de izquierda a derecha
y de derecha a izquierda.
El algoritmo de la solución es el siguiente. Cuando se tiene un palı́ndromo los
sı́mbolos iniciales y finales son siempre iguales, y si usted retira estos sı́mbolos
la cadena que queda es también un palı́ndromo. Por ejemplo, la cadena 1001001
tiene los sı́mbolos inicial y final iguales, si quitamos estos sı́mbolos queda la
cadena 00100 que es también una palı́ndromo. Si usted sigue aplicando este
método, llegará finalmente a la cadena 1, que es un palı́ndromo y la máquina
en este caso puede parar, aceptando la cadena.
Para diseñar esta máquina, vamos a iniciar marcando el sı́mbolo inicial con
una x e irnos hasta el final. Si el sı́mbolo final coincide lo marcamos también con
una x, si el sı́mbolo no coincide la máquina se detiene en estado de rechazo, ya
80
Figura 7.3: Ejecución de la máquina de Turing que evalúa cadenas que tienen
un número de ceros par, para la cadena 010100.
81
que la entrada no es un palı́ndromo. Por el contrario, si el sı́mbolo coincide, se
marca con una x y se continua el computo. Después de marcar una coincidencia
la máquina se regresa hasta la x que marcó a la izquierda e inicia el computo para
revisar si la cadena sin los sı́mbolos de los extremos. el computo continúa hasta
que todas las casillas se marcan con x. Si alguna casilla no se puede marcar se
rechaza la cadena. Cuando la máquina recibe la cadena vacı́a, también la acepta
como un palı́ndromo. La tabla abajo muestra la función de transición para esta
máquina.
δ 0 1 x
q0 (qs0r , x, R) (qs1r , x, R) (qaccept , , −) (qaccept , x, −)
qs0r (qs0r , 0, R) (qs0r , 1, R) (qv0l , , L) (qv0l , x, L)
qv0l (qretl , x, L) (qreject , 1, −) - (qaccept , x, −)
qs1r (qs1r , 0, R) (qs1r , 1, R) (qv1l , , L) (qv1L , x, L)
qv1l (qreject , 0, −) (qretl , x, <) - (qaccept , x, −)
qretl (qretl , 0, L) (qretl , 1, L) - (q0 , x, R)
qaccept - - ...
qreject - - ...
82
es decir podrı́a arrancar la verificación desde la izquierda o desde la derecha,
para no tener que retornar cada vez. Esto implicarı́a hacer el cálculo en la mitad
de los pasos.
7.6. Ejercicios
Todos los ejercicios usan el alfabeto Σ = {0, 1}.
1. Defina formalmente una máquina de Turing que acepte cadenas que ini-
cien y terminen en el mismo sı́mbolo. Por ejemplo, la máquina debe acep-
tar la cadena 0010010010010. La máquina NO debe aceptar la cadena
10010000111100.
2. Defina formalmente una máquina de Turing que acepte cadenas de longi-
tud par.
3. Defina formalmente una máquina de Turing que acepte cadenas que con-
tengan un número impar de 0 (ceros). Por ejemplo, la máquina debe acep-
tar la cadena 0010010010010, que contiene nueve ceros. En cambio, la
máquina NO debe aceptar la cadena 10010000111100 que contiene 8 (ocho)
ceros.
4. Defina formalmente una máquina de Turing que acepte palı́ndromos. La
máquina debe ser más eficiente que la del ejemplo de este capı́tulo. Ayuda:
Usted puede iniciar el algoritmo de marcación de los extremos tanto de
izquierda a derecha como de derecha a izquierda.
83
Capı́tulo 8
Lógica Proposicional
84
la lógica matemática. En los capı́tulos anteriores estudiamos las repuestas a la
última pregunta del programa de Hilbert. Estudiamos como Turing, dio una
definición de lo que era computable y el tipo de cosas que se pueden computar
con diferentes autómatas.
En este capı́tulo exploraremos la primera pregunta del programa y comen-
taremos sobre resultados e implicaciones de las respuestas encontradas para las
otras dos preguntas. En particular presentaremos lo que se denomina lógica pro-
posicional, un sistema axiomático que permite modelar algunas proposiciones
matemáticas de manera simbólica, e imitar algunos de los razonamientos (prue-
bas) que realizamos en matemáticas. Aunque la lógica proposicional no permite
formalizar todas las matemáticas, si permite mostrar la forma en que, por me-
dio de la lógica podemos estudiar cuestiones fundamentales de la matemática.
Como por ejemplo, ¿qué es una proposición? o ¿qué es una demostración?.
Al final del capı́tulo, se realizan comentarios sobre los teoremas de incomple-
titud de Gödel y cómo estos destruyen las intenciones del programa de Hilbert.
Igualmente, se introduce la Lógica de predicados o lógica de primer orden, que es
una lógica más expresiva que la lógica proposicional, y en principio es suficiente
para formalizar todas las matemáticas.
85
es decir como un juego de sı́mbolos, la manera en que podemos escribir
pruebas, pasando de una proposición matemática a otra.
Definición 8.2.1. Una lógica se define formalmente por una tupla de tres ele-
mentos (L, S, R) dónde,
L, es el lenguaje formal de la lógica definido con una gramática formal.
S, la semántica de la lógica, es una especificación formal de cómo asignar
significado a los elementos de L.
R, el sistema de inferencia, es un conjunto de axiomas y reglas de infe-
rencia sobre L. Una regla de inferencia es un patrón de razonamiento que
consiste en algunas premisas y algunas conclusiones. Si creemos en las
premisas, una regla de inferencia me dice que debemos creer también en
las conclusiones.
86
esta frase depende de los valores de verdad que se le asignen a cada una de las
frases atómicas. Para describir esta frase en lógica proposicional realizarı́amos
los siguiente:
1. Utilizamos la variable P para representar la proposición Pedro ama a
Marı́a.
2. Utilizamos la variable Q para representar la proposición textitPedro ama
a Juana.
3. Utilizamos el conector ∨ para representar el conector o.
4. Escribimos P ∨ Q para representar la proposición Pedro ama a Marı́a o
Pedro ama a Juana
Más adelante veremos que se puede utilizar la lógica proposicional para es-
tudiar otro tipo de lenguajes o de dominios de aplicación. Por ejemplo, pode-
mos utilizarla para estudiar la composición de compuertas lógicas en circuitos
electrónicos binarios.
87
8.4.2. Formulas de la lógica proposicional
Para completar la definición del lenguaje vamos a introducir una gramáti-
ca libre de contexto que nos permita especificar que formulas hacen parte del
lenguaje y cuáles no.
Definición 8.4.2. Todas las palabras que se puedan generar con la siguiente
gramática libre de contexto, son formulas de la lógica proposicional.
La gramática está definida ası́ GLP = (V, Σ, RLP , hExpri) donde
hExpri −→ hConsti | hV ari | hExprihOpbinihExpri |
hN egihExpri | (hExpri)
hConsti −→ true | f alse
hV ari −→ p | q | r | ... | P | Q | ...
hOpbini −→ ≡| ∧ | ∨ |→
hN egi −→ ¬
Para evitar el uso excesivo de paréntesis y facilitar la interpretación vamos
a introducir una precedencia de los conectores binarios. Ası́, consideramos que
en la siguiente lista los conectores más a la izquierda tienen mayor precedencia
¬, ∧, ∨, →, ≡
Esto quiere decir que cuando no sea claro por los paréntesis que operadores
van juntos, se considera que el conector de mayor precedencia se aplica prime-
ro. Adicionalmente se considera que todos los conectores son asociativos a la
derecha. Por ejemplo, dada la formula
¬p ∧ q ≡ r
se debe interpretar como
(((¬p) ∧ q) ≡ r)
Otro ejemplo que muestra la asociatividad a la derecha es el siguiente. Dado,
p∧q∧r →r∨q∨b
se debe interpretar como
p ∨ q ≡ p ∨ ¬q ∧ q
88
esta expresión se puede derivar, a partir de la gramática de la lógica propo-
sicional por medio del siguiente árbol de parseo
hExpri
p ∨ q ≡ p ∨ ¬ q ∧ q
∨ ∨
p q p ∧
¬ q
q
Este árbol de sintaxis representa como evaluar la expresión respetando la
gramática y las reglas de precedencia. En este caso lo que estamos afirmando es
que la expresión
p ∨ q ≡ p ∨ ¬q ∧ q
se debe interpretar como
89
((p ∨ q) ≡ (p ∨ ((¬q) ∧ q)))
El árbol de sintaxis expresa exactamente la interpretación dada por la frase
anterior.
Tenga en cuenta que las reglas de precedencia aplican cuando la expresión
es ambigua, en este caso la falta de paréntesis hace que la frase sea ambigua, y
entonces las reglas de precedencia me ayudan a interpretar la expresión. Usted
puede agregar paréntesis para indicar otra forma d entende la proposición. Por
ejemplo, la frase siguiente tiene otra interpretación y por lo tanto otro árbol de
sintaxis.
(p ∨ (q ≡ p)) ∨ ((¬q) ∧ q)
Y su árbol de sintaxis correspondiente es:
∨
∨ ∧
p ≡ ¬ q
q p q
90
¿Es plana la tierra? (Frase interrogativa que indica una pregunta)
¿Que tengo en mi bolsillo? (Frase interrogativa que indica una pregunta)
Ejemplo 8.5.1. Vamos ahora a ver un ejemplo de como traducir una propo-
sición en lenguaje natural a la lógica proposicional. Considere por ejemplo la
siguiente proposición,
Esta es un proposición, es decir es una frase que puede ser falsa o verdadera.
La forma más fácil de representar esta proposición es simplemente represen-
tarla con una variable p. A esta variable se le denomina variable proposicional
y en este caso representa toda la frase.
Sin embargo, existen más posibilidades. Por ejemplo, podemos ver que la
frase es la composición de dos proposiciones más simples. La primera es El carro
es rojo y la segunda es la luna es verde, estas frases están relacionadas por la
conjunción y. En este caso si le asignamos una variable proposicional a cada
una de las subproposiciones, podemos modelar la proposición de la siguiente
manera,
q : El carro es rojo
r : la luna es verde
Ahora si remplazamos las subproposiciones por las variables proposicionales
en la frase original obtendrı́amos
qyr
Y partiendo de esta nueva frase podemos remplazar la conjunción y pos su
equivalente lógico ∧, para obtener
q∧r
En este ejemplo tanto p como q ∧ r representan la proposición El carro es
rojo y la luna es verde. Por supuesto entre más subproposiciones identifique
para representar una frase, más compleja será la representación en lógica pro-
posicional. Al decir más compleja, nos referimos a que utilizará más variables
proposicionales y más conectores lógicos.
91
La tabla 8.1 muestra la traducción tı́pica de conectores en lenguaje natural
a conectores lógicos. Note que aunque la traducción es tı́pica, no necesariamente
siempre aplica, esto se debe que las expresiones en lenguaje natural pueden ser
ambiguas y depender del contexto en el que se dicen.
Proposición Traducción
Pedro tiene 24 años o Claudia tiene dos hijos p∨q
Pedro tiene 24 años y 1 es un número primo p∧r
Si 1 es un número primo y Claudia tiene dos hijos, estoy loco (r ∧ q) → s
8.6. Semántica
La semántica de un lenguaje nos dice el significado de las frases y formulas
que podemos escribir en ese lenguaje. En lógica proposicional nuestras frases
están construidas con variables proposicionales y con conectores lógicos. El sig-
nificado de las variable proposicionales es un valor en el rango falso o vertedero.
Igualmente, el valor de cada frase compleja de lógica proposicional es un valor en
el rango falso o vertedero. Es decir, en lógica proposicional las frases significan
falso o verdadero, no hay significados metafı́sicos de estás frases proposicionales.
Cuando hablamos del significado de algo en lógica proposicional, nos referimos
al valor en el rango de falso o verdadero.
En este contexto al evaluar el valor de la formula
p∧q
Lo primero que se hace es asignar valores a las variables. Por ejemplo, en este
caso podemos asignar
p := true y q := f alse
92
p q ¬p p∧q p∨q p→q p≡q
false false true false false true true
false true true false true true false
true false false false true false false
true true false true true true true
q ≡ ((¬q) ∧ p)
p q ¬q (¬q) ∧ p q ≡ ((¬q) ∧ p)
false false true false true
false true false false false
true false true true false
true true false false false
93
Respetando las reglas de precedencia para interpretar la formula. Ası́, la
formula la interpretamos como
(p ∨ q) ≡ (p ∨ ((¬q) ∧ q))
y calculamos la tabla de verdad evaluando la tabla de verdad de cada uno
de los componentes individuales ası́,
8.6.2. Interpretaciones
Definición 8.6.1. Una interpretación de una formula de la lógica proposicio-
nal, es el mapeo de las variables de la formula con valores de falso y verdadero,
y la correspondiente evaluación de la formula para esta asignación.
Ejemplo 8.6.3. Si consideramos la formula
(p ∨ q) ≡ (p ∨ ((¬q) ∧ q))
Una interpretación de esta formula está dada en la siguiente tabla.
p q (p ∨ q) ≡ (p ∨ ((¬q) ∧ q))
false false true
(p ∨ q) ≡ (p ∨ ((¬q) ∧ q))
Podemos demostrar que esta formula se puede satisfacer si encontramos una
interpretación para la cual sea verdadera. Es decir debemos encontrar una asig-
nación de valores de falso o verdadero para las variables proposicionales de la
formula, para los cuales el valor de la formula sea verdadero. Una de las inter-
pretaciones que hacen verdadera la formula se muestra en la siguiente tabla.
p q (p ∨ q) ≡ (p ∨ ((¬q) ∧ q))
false true false
94
8.6.4. Validez de una formula
Definición 8.6.3. Una formula es válida si es verdadera en cualquier posible
interpretación. También se dice que la formula es una tautologı́a.
Ejemplo 8.6.5. Las siguientes dos formulas se conocen como las leyes de Mor-
gan y vamos a demostrar que ambas son formulas válidas.
φ≡ψ
Ejemplo 8.6.6. Consideremos nuevamente las leyes de Morgan y vamos a de-
mostrar que cada una de estas formulas está afirmado que la formula de la
derecha de la izquierda de la equivalencia es equivalente con la formula de la
derecha:
¬(p ∧ q) ≡ ¬p ∨ ¬q
¬(p ∨ q) ≡ ¬p ∧ ¬q
Ahora si analizamos la primer ley de Morgan se puede ver que esta ley
expresa que la formua (¬(p ∧ q)) es lógicamente equivalente a ((¬p) ∨ (¬q)).
Esto quiere decir que ambas formulas tienen la misma tabla de verdad.
Para comprobar esto podemos comparar las tablas de verdad
95
p q ¬(p ∧ q)
f alse f alse true
f alse true true
true f alse true
true true f alse
p q ¬p ∨ ¬q
f alse f alse true
f alse true true
true f alse true
true true f alse
8.7. Ejercicios
1. Escriba el árbol de parseo y de sintaxis de las siguientes expresiones
a) (p ∧ q) ∨ (¬p ∧ ¬q)
b) ¬((f alse ∧ (r → (p ∨ s))) ≡ (¬((p → q) ∨ (r ∧ (¬r)))))
c) r → (p ≡ s) ≡ ¬p → q ∨ ¬r
2. Usando tablas de verdad muestre que las siguientes proposiciones son tau-
tologı́as
a) p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r)
b) ((p ≡ (q ≡ r)) ≡ ((p ≡ q) ≡ r))
96
c) (a ∧ b ≡ a ∨ b) ≡ (a ≡ b) (Esta formula se llama la regla dorada, por
su versatilidad para ayudar en demostraciones)
3. Con base en la siguiente especificación, traduzca del lenguaje de la lógi-
ca proposicional al castellano cada una de las siguientes proposiciones
procurando que dicha traducción sea lo más cercana posible al lenguaje
cotidiano:
h: El cuarteto interpretará a Haydn.
m : El cuarteto interpretará a Mozart.
a) h ≡ (¬m)
b) ¬(h ∧ m)
c) h ∨ m
d ) ((¬(h ∧ m)) ∧ (¬h)) → m
4. Simbolizar correctamente:
a) Si llueve o cae nieve, entonces no hay electricidad. Hay electricidad.
Entonces no nevó.
b) Si sin(x) es diferenciable, entonces sin(x) es continua. Si sin(x) es
continua, entonces sin(x) es diferenciable. La función sin(x) es dife-
renciable. Consecuentemente, la función sin(x) es integrable
c) Si Pedro entiende matemáticas, entonces puede entender lógica. Pe-
dro no entiende lógica. Consecuentemente, Pedro no entiende ma-
temáticas.
a) p → q ≡ r ≡ p ∧ q ≡ p ∧ r
b) f alse ∧ p → p ≡ q 6≡ r
97
Bibliografı́a
[4] Stephen Cole Kleene. MAthematical Logic. John Wiley & Sons, Inc., New
York, first edition, 1967.
98