Vous êtes sur la page 1sur 140

Teoría de Autómatas y

Lenguajes Formales
Brian Keith N.
brian.keith@ucn.cl
Agenda
• Información del curso.
• Prerrequisitos.
• Evaluación del curso.
• Condiciones de aprobación.
• ¿Por qué estudiar Teoría de Autómatas y Lenguajes
Formales?
• Teoría de conjuntos.
• Límites de la computación.
Información del Curso
Teoría de Autómatas y Lenguajes Formales
Información de contacto
Profesor: Brian Keith N.

Datos:
• E-mail: brian.keith@ucn.cl
• Oficina: Y1-329
• Horario de atención: por definir.
Código de honor
Libro guía
Libro de apoyo
Prerrequisitos
• Lo que se espera que sepan antes:
• Teoría de conjuntos.
• Lógica.
• Matemáticas discretas.
• Inducción matemática.
• Recursión.
• Repasaremos estos elementos antes de empezar
con la materia.
• También facilita la vida tener nociones sobre la
teoría detrás de los lenguajes de programación (e.g.
gramáticas).
Evaluación del curso
• Prueba 1 (30%): 19 de Abril.
• Autómatas finitos, expresiones regulares, autómatas con salida y
equivalencias básicas
• Prueba 2 (30%): 17 de Mayo.
• Minimización de estados, propiedades de los lenguajes regulares, lema de
bombeo y gramáticas libres de contexto.
• Prueba 3 (30%): 28 de Junio.
• Autómatas de pila, normalización de gramáticas, máquinas de Turing y
límites de la computación.
• Pruebas Pendientes: Según corresponda.
• Semana del 2 al 6 de Julio.
• Examen Recuperativo: Toda la materia.
• 9 de Julio.
Evaluación del curso
• Pruebas cortas (10%)
• Pruebas de 30-40 minutos al inicio de la clase, 12 pruebas durante
todo el semestre.
• Las pruebas cortas se realizan en grupos de máximo 2 personas.
• Se contempla borrar dos pruebas cortas durante todo el semestre.
• Cada prueba corta tiene la misma ponderación.
• Ayudantías (no evaluadas)
• Clases de ejercicios tipo prueba.
• Ejemplos con JFLAP.
• No se considera para la asistencia del curso.
Condiciones de aprobación
• Promedio final sobre 4.0.
• Se requiere un 70% de asistencia para aprobar.
• Las pruebas cortas y las cátedras se aprueban de manera
conjunta.
• Hay derecho a examen recuperativo si la nota final se
encuentra entre 3.4 y 3.9 (inclusive).
¿Por qué estudiar teoría de autómatas y
lenguajes formales?
• Primero hay que definir de que trata este campo.
• Un autómata es un constructo que posee todas las
características indispensables de un computador digital
(entradas, salidas, memoria y control).
• Un lenguaje formal es una abstracción de las
características generales de los lenguajes de programación.
• El estudio de este campo nos permite conocer los límites
teóricos de la computación.
¿Por qué estudiar teoría de autómatas y
lenguajes formales?
• Permite entender el comportamiento subyacente a todos los
procesos computacionales.
• Es una herramienta de modelado de sistemas.
• Tiene una serie de aplicaciones prácticas:
• Diseño de sistemas digitales.
• Arquitectura de computadores.
• Lenguajes de programación.
• Compiladores.
• Diseño de software.
• Videojuegos.
• Inteligencia artificial.
• Nos permite saber qué problemas pueden ser resueltos con
un computador y cuáles no.
¿Por qué estudiar teoría de autómatas y
lenguajes formales?
• Permite entender el comportamiento subyacente a todos los
procesos computacionales.
• Es una herramienta de modelado de sistemas.
• Tiene una serie de aplicaciones prácticas:
• Diseño de sistemas digitales.
Vamos a mencionar algunas
• Arquitectura de computadores. más en detalle a lo largo
• Lenguajes de programación. del curso! En cuanto a
• Compiladores. compiladores e inteligencia
artificial los cursos que
• Diseño de software. continúan este detallan
• Videojuegos. más aplicaciones.
• Inteligencia artificial.
• Nos permite saber qué problemas pueden ser resueltos con
un computador y cuáles no.
¿Por qué estudiar teoría de autómatas y
lenguajes formales?
• Permite entender el comportamiento subyacente a todos los
procesos computacionales.
• Es una herramienta de modelado de sistemas.
• Tiene una serie de aplicaciones prácticas:
• Diseño de sistemas digitales.
• Arquitectura de computadores. Este curso trata más
• Lenguajes de programación. sobre lo que no podemos
hacer con un computador
• Compiladores. que de lo que sí
• Diseño de software. podemos.
• Videojuegos.
• Inteligencia artificial.
• Nos permite saber qué problemas pueden ser
resueltos con un computador y cuáles no.
Advertencia
• Este curso consiste en una serie de abstracciones.
• El uso de abstracciones implica el uso de terminología
formal.
• En este caso, se requiere un amplio uso de matemáticas
discretas.
• El curso contendrá una serie de demostraciones de
diferentes niveles de complejidad.
• Las pruebas se enfocarán principalmente en las
aplicaciones, pero no deben dejar de lado las
demostraciones formales.
Teoría de Conjuntos
Teoría de Autómatas y Lenguajes Formales
Conjuntos
• Los computadores del laboratorio Y1-003.
• Elementos químicos.
• Animales tiernos.
• Monedas chilenas.
• Alumnos aprobados de TALF.
• Conjuntos que no se contienen a si mismos.
Conjuntos
• Los computadores del laboratorio Y1-003.
• Elementos químicos.
• Animales tiernos.
• Monedas chilenas.
• Alumnos aprobados de TALF.
• Conjuntos que no se contienen a si mismos.

Paradoja de Russell, no es un conjunto.


Definiciones
• ¿Qué es una conjunto?
• Un conjunto es una colección no ordenada de objetos
diferentes, que pueden ser cualquier cosa (incluyendo
otros conjuntos).
• Notación:

♥,♢,♠, ♧
Un conjunto se denota entre llaves.
Definiciones
• ¿Qué es una conjunto?
• Un conjunto es una colección no ordenada de objetos
diferentes, que pueden ser cualquier cosa (incluyendo
otros conjuntos).
• Notación:

♥,♢,♠, ♧
Los elementos se separan con comas.
Definiciones
• ¿Qué es una conjunto?
• Un conjunto es una colección no ordenada de objetos
diferentes, que pueden ser cualquier cosa (incluyendo
otros conjuntos).
• Notación:

♥,♢,♠, ♧
Definiciones
• ¿Qué es una conjunto?
• Un conjunto es una colección no ordenada de objetos
diferentes, que pueden ser cualquier cosa (incluyendo
otros conjuntos).
• Notación:

↺, ↵, ⇇, ↠
Definiciones
• ¿Qué es una conjunto?
• Un conjunto es una colección no ordenada de objetos
diferentes, que pueden ser cualquier cosa (incluyendo
otros conjuntos).
• Notación:

♥,♢,♠, ♧
♧,♠,♥,♢
Son el mismo conjunto.
Definiciones
• ¿Qué es una conjunto?
• Un conjunto es una colección no ordenada de objetos
diferentes, que pueden ser cualquier cosa (incluyendo
otros conjuntos).
• Notación:

♥,♢
♥,♥,♢,♢, ♢
Son el mismo conjunto.
Conjunto vacío
• El conjunto que no contiene elementos se
denomina conjunto vacío.
• El conjunto vacío es único.
• Notación:

=∅
Notación
• ¿Son iguales?

∅= ∅

1= 1
Notación
• ¿Son iguales?
Conjunto que
Conjunto vacío
(sin elementos)
∅= ∅ contiene un
elemento (el
conjunto vacío)

1= 1
Notación
• ¿Son iguales?
Conjunto que
Conjunto vacío
(sin elementos)
∅= ∅ contiene un
elemento (el
conjunto vacío)

Número uno
1= 1 Conjunto que
contiene al
número uno
Notación
• No son iguales.

∅= ∅
Los conjuntos de un elemento
se denominan singleton.

1= 1
Pertenencia
• ¿El objeto x pertenece al conjunto A?

A = {x, y, z, w}
• Sí, el objeto x pertenece al conjunto A.

x∈A
Pertenencia
• ¿El objeto ♠ pertenece a este conjunto?

{♡,♦}
• No, el objeto ♠ no pertenece al conjunto.

♠ ∉ {♡,♦}
Pertenencia
• Si un objeto pertenece a un conjunto se dice que es
un elemento de dicho conjunto.
• Dado un objeto x y un conjunto S solo puede
cumplirse una de las siguientes afirmaciones:

•𝑥 ∈ 𝑆
•𝑥 ∉ 𝑆
Conjuntos infinitos
• Hay conjuntos que tienen infinitamente muchos
elementos.
• Ejemplos:
• ℕ = 0, 1, 2, 3, … es el conjunto de los números
naturales. Algunos matemáticos no incluyen el cero,
asumiremos que es un número natural aquí.
• ℤ = … , −2, −1, 0, 1, 2, … es el conjunto de todos los
enteros.
• El conjunto ℝ de los números reales (ejemplos: 𝑒 ∈
ℝ, 𝜋 ∈ ℝ, 4 ∈ ℝ, etc).
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
El conjunto de todos los n…
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
El conjunto de todos los n…

…tal que…
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
El conjunto de todos los n…

…tal que…
…n es un número natural…
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
El conjunto de todos los n…

…tal que…
…n es un número natural…
…y n es par.
Descripción de conjuntos
• ¿Cómo se describen conjuntos?
• “El conjunto de todos los números pares”.
• Notación:

0, 2, 4, 6, 8, 10, 12, …
Diagramas de Venn

1 5
3
𝐴 𝐵
4
2 6

𝐴 = 1, 2, 3, 4
𝐵 = 3, 4, 5, 6
Diagramas de Venn

1 5
3
𝐴 𝐵
4
2 6

𝐴 = 1, 2, 3, 4
𝐵 = 3, 4, 5, 6
Diagramas de Venn

1 5
3
𝐴 𝐵
4
2 6

𝐴 = 1, 2, 3, 4
𝐵 = 3, 4, 5, 6
Diagramas de Venn
Intersección

1 5
3
𝐴 𝐵
4
2 6

𝐴 ∩ 𝐵 = 3, 4
Diagramas de Venn
Unión

1 5
3
𝐴 𝐵
4
2 6

𝐴 ∪ 𝐵 = 1, 2, 3, 4, 5, 6
Diagramas de Venn
Diferencia

1 5
3
𝐴 𝐵
4
2 6

𝐴 − 𝐵 = 𝐴 \ 𝐵 = 1, 2
Diagramas de Venn
Diferencia simétrica

1 5
3
𝐴 𝐵
4
2 6

𝐴 Δ 𝐵 = 1, 2, 5, 6
Diagramas de Venn

Tres conjuntos: Cuatro conjuntos:

B C
Diagramas de Venn

Tres conjuntos: Cuatro conjuntos:

B C
Diagramas de Venn
• Para cuatro conjuntos:
Diagramas de Venn
• Para siete conjuntos!

Fuente: http://moebio.com/research/sevensets/
Subconjuntos
• Un conjunto S se denomina subconjunto de un
conjunto T (denotado 𝑆 ⊆ 𝑇) si todos los elementos
de S son también elementos de T.
• Ejemplos:
• 1, 2, 3 ⊆ 1, 2, 3, 4
•ℕ⊆ ℤ
•ℤ ⊆ ℝ
¿Conjunto vacío?
• ¿Existe algún conjunto tal que ∅ ⊆ 𝑆?
• Equivalentemente, ¿existe algún S tal que se
cumpla el siguiente estamento?

“Todos los elementos de ∅ son también elementos de


S.”
¿Conjunto vacío?
• ¿Existe algún conjunto tal que ∅ ⊆ 𝑆?
• Equivalentemente, ¿existe algún S tal que se
cumpla el siguiente estamento?

“Todos los elementos de ∅ son también elementos de


S.”

• Sí, de hecho, dicho estamento se cumple para todo


S.
Verdad vacua
• Los estamentos de la forma:

“Todos los objetos de tipo P son también de tipo Q.”

se llaman verdaderos por vacuidad si es que no hay objetos de


tipo P.
• Las verdades vacuas son verdaderas por definición.
• Esta es una convención matemática.
• Ejemplos:
• Todos los unicornios son rosados.
• Todos los unicornios son azules.
• Todos los elementos de ∅ son elementos de S.
Conjunto potencia
• Dado el conjunto S:

♥,♢
• El conjunto ℘ 𝑆 es el conjunto potencia de S y
corresponde al conjunto de todos los subconjuntos
de S:

∅, {♥},{♢},{♥,♢}
• Formalmente, ℘ 𝑆 = 𝑇 | 𝑇 ⊆ 𝑆
Conjunto potencia
• Pregunta corta:

Determinar ℘ ∅
Conjunto potencia
• Pregunta corta:

Determinar ℘ ∅

• La respuesta es ∅ .
• Recordar que ∅ ≠ ∅ .
Cardinalidad
• La cardinalidad de un conjunto es el número de
elementos que contiene.
• Si S es un conjunto, denotamos su cardinalidad por
|S| (a veces por #S).
• Ejemplos:
• 𝑎, 𝑏, 𝑐, 𝑑, 𝑒 = 5
• 𝑎, 𝑏 , 𝑐, 𝑑, 𝑒, 𝑓, 𝑔 , ℎ = 3
• 1,2,3,3,3,3,3 = 3
• 𝑛 ∈ ℕ | 𝑛 < 137 = 137
Cardinalidad de ℕ
• ¿Cuánto es ℕ ?
• Hay infinitamente muchos números naturales.
• ℕ no puede ser un número natural, pues es
infinitamente grande.
Cardinalidad de ℕ
• ¿Cuánto es ℕ ?
• Hay infinitamente muchos números naturales.
• ℕ no puede ser un número natural, pues es
infinitamente grande.
• Hay que definir un nuevo término.
• Se define ℵ0 = ℕ .
• ℵ0 se pronuncia “aleph-zero”, “aleph-null” o “aleph-
nought”.
Cardinalidades
• Considerar el conjunto:
𝑆 = 𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
• ¿Cuánto es |S|?
Cardinalidades
• Considerar el conjunto:
𝑆 = 𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
• ¿Cuánto es |S|?
• Es necesario entender primero como se pueden
comparar cardinalidades.
• ¿Qué tan grande son estos conjuntos?
♥,♢,♠, ♧
↺, ↵, ⇇, ↠
Comparación de Cardinalidades

• Por definición, dos conjuntos son del mismo


tamaño si sus elementos pueden ser emparejados
sin que sobren elementos.
• En caso que no puedan ser emparejados, uno de los
conjuntos debe de ser “más pequeño” que el otro.
• ¿Qué se puede utilizar para asociar elementos entre
conjuntos?
Comparación de Cardinalidades

♥,♢,♠, ♧
↺, ↵, ⇇, ↠
Comparación de Cardinalidades

x♥,♢,♠, ♧
x↺, ↵, ⇇, ↠
Comparación de Cardinalidades

x ♧
x♥,♢,♠,
x↺,x↵, ⇇, ↠
Comparación de Cardinalidades

xx ♧
x♥,♢,♠,
x↺,x↵, x
⇇, ↠
Comparación de Cardinalidades

x x x♧
x♥,♢,♠,
x↺,x↵, x
⇇, x

Comparación de Cardinalidades

x1,x2,x3, 4
x↺,x↵, x⇇
No se puede emparejar el elemento, por lo
tanto los conjuntos no tienen la misma
cardinalidad.
Cardinalidades infinitas
• Considerar el conjunto:
𝑆 = 𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
• ¿Cuánto es |S|?

ℕ 0 1 2 3 4 5 6 7 8 …

S 0 2 4 6 8 …
Cardinalidades infinitas
• Considerar el conjunto:
𝑆 = 𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
• ¿Cuánto es |S|?

ℕ 0 1 2 3 4 5 6 7 8 …

S 0 2 4 6 8 10 12 14 16 …
𝑛 ⟷ 2𝑛
Cardinalidades infinitas
• Considerar el conjunto:
𝑆 = 𝑛 | 𝑛 ∈ ℕ y 𝑛 es par
• ¿Cuánto es |S|? 𝑆 = ℕ = ℵ0

ℕ 0 1 2 3 4 5 6 7 8 …

S 0 2 4 6 8 10 12 14 16 …
𝑛 ⟷ 2𝑛
Cardinalidades infinitas
• ¿Cuánto es la cardinalidad de ℤ?

ℕ 0 1 2 3 4 5 6 7 8 …

ℤ … -3 -2 -1 0 1 2 3 4 …
Cardinalidades infinitas
• ¿Cuánto es la cardinalidad de ℤ?

ℕ 0 1 2 3 4 5 6 7 8 …

… -3 -2 -1 0 1 2 3 4 …
Cardinalidades infinitas
• ¿Cuánto es la cardinalidad de ℤ?

ℕ 0 1 2 3 4 5 6 7 8 …

ℤ 0 1 2 3 4 …

… -3 -2 -1
Emparejar los números pares con los enteros no negativos.
Cardinalidades infinitas
• ¿Cuánto es la cardinalidad de ℤ?

ℕ 0 1 2 3 4 5 6 7 8 …

ℤ 0 -1 1 -2 2 -3 3 -4 4 …

Emparejar los números impares con los enteros negativos.


Cardinalidades infinitas
• ¿Cuánto es la cardinalidad de ℤ?

ℕ 0 1 2 3 4 5 6 7 8 …

ℤ 0 -1 1 -2 2 -3 3 -4 4 …

ℤ = ℕ = ℵ0
Cardinalidades infinitas
• Los conjuntos infinitos vistos hasta ahora tienen
todos la misma cardinalidad.
• Pregunta:

¿Todos los conjuntos infinitos tienen la misma


cardinalidad?
Conjuntos potencia
• Para probar esto analicemos primero el caso finito
de los conjuntos potencia.

S ={♥,♢}

℘ 𝑆 = ∅, {♥},{♢},{♥,♢}

• En este caso 𝑆 < ℘ 𝑆 .


Conjuntos potencia
• Para probar esto analicemos primero el caso finito de
los conjuntos potencia.

S ={1, 2, 3}
∅, {1},{2},{3},
℘ 𝑆 = {1,2},{1,3},{2,3},
{1,2,3}

• En este caso 𝑆 < ℘ 𝑆 .


Conjuntos potencia
• ¿Qué ocurre entonces con el conjunto potencia
para el caso infinito?
• Si |S| es infinito…

¿Cuál es la relación entre 𝑆 y ℘ 𝑆 ? ¿Se cumplirá


que 𝑆 < ℘ 𝑆 ? ¿Son iguales?
Conjuntos potencia
• Supongamos que 𝑆 = ℘ 𝑆 , entonces podemos
emparejar los elementos de S con los elementos de
℘ 𝑆 sin que sobre ninguno.
Conjuntos potencia
• Supongamos que 𝑆 = ℘ 𝑆 , entonces podemos
emparejar los elementos de S con los elementos de
℘ 𝑆 sin que sobre ninguno.
Conjuntos potencia
• Supongamos que 𝑆 = ℘ 𝑆 , entonces podemos
emparejar los elementos de S con los subconjuntos
de S sin que sobre ninguno.
Conjuntos potencia
• Supongamos que 𝑆 = ℘ 𝑆 , entonces podemos
emparejar los elementos de S con los subconjuntos
de S sin que sobre ninguno.

• ¿Cómo se vería esto?


Argumento de diagonalización de
Cantor

𝒙𝟎
𝒙𝟏
𝒙𝟐
𝒙𝟑
𝒙𝟒
𝒙𝟓

Argumento de diagonalización de
Cantor

𝑥0 𝑥0 , 𝑥2 , 𝑥4 , …
𝑥1 𝑥0 , 𝑥3 , 𝑥4 , …
𝑥2 𝑥4 , …
𝑥3 𝑥1 , 𝑥4 , …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 𝑥0 , 𝑥2 , 𝑥4 , …
𝑥1 𝑥0 , 𝑥3 , 𝑥4 , …
𝑥2 𝑥4 , …
𝑥3 𝑥1 , 𝑥4 , …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 𝑥0 , 𝑥3 , 𝑥4 , …
𝑥2 𝑥4 , …
𝑥3 𝑥1 , 𝑥4 , …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 𝑥4 , …
𝑥3 𝑥1 , 𝑥4 , …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 𝑥4 , …
𝑥3 𝑥1 , 𝑥4 , …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 𝑥1 , 𝑥4 , …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 𝑥0 , 𝑥5 , …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , 𝑥5 …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …

Argumento de diagonalización de
Cantor
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• ¿Qué fila se empareja con 𝑥0 , 𝑥5 , … (diagonal)?
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• ¿Qué fila se empareja con 𝑥0 , 𝑥5 , … (diagonal)?

S N N N N S …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• ¿Qué fila se empareja con 𝑥0 , 𝑥5 , … (diagonal)?

S N N N N S …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• ¿Qué pasa si invertimos la diagonal? 𝑆 ⟷ 𝑁

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• ¿Qué fila corresponde al nuevo conjunto?

𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 , …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 …
𝑥0 S N S N S N …
𝑥1 S N N S S N …
𝑥2 N N N N S N …
𝑥3 N S N N S N …
𝑥4 S N N N N S …
𝑥5 S S S S S S …
… … … … … … … …
• O simplemente, ¿qué fila concuerda con esta?

N S S S S N …
Teorema de Cantor
• Sin importar como se intenten emparejar los elementos
de S con los subconjuntos de S, el complemento de la
diagonal nunca aparecerá en la tabla.
• Pues en la n-ésima fila, el n-ésimo elemento estará mal!
• Sin importar como se asocien los elementos de S con
los subconjuntos de S, siempre existe al menos un
subconjunto que sobra.
• Este resultado se conoce como el Teorema de Cantor:
• “Todo conjunto es estrictamente más pequeño que su
conjunto potencia”, formalmente:

Si S es un conjunto, entonces 𝑆 < ℘ 𝑆 .


Cardinalidades infinitas
• Por el Teorema de Cantor:
ℕ < ℘ ℕ
℘ ℕ < ℘ ℘ ℕ
℘ ℘ ℕ < ℘ ℘ ℘ ℕ

• No todos los conjuntos infinitos tienen el mismo
tamaño.
• No existe un infinito más grande que todos.
• Existen infinitamente muchos infinitos.
Teorema de Cantor
¿Por qué importa esto en la computación?
“El conjunto de todos los programas de
computador.”

“El conjunto de todos los problemas por


resolver.”
La idea general
• Una cadena (string) es una secuencia de
carácteres (símbolos).
• Probaremos los siguientes resultados:

• Existen a lo más tantos programas como


existen strings.

• Existen a lo menos tantos problemas como


existen conjuntos de strings.
Strings y programas
• El código fuente de un programa de computador es una
cadena de texto.
• Todos los programas son strings, pero no todas las strings
son necesaramiente programas.

Todos los Todas las


posibles posibles
programas. strings.

𝑃𝑟𝑜𝑔𝑟𝑎𝑚𝑎𝑠 ≤ 𝑆𝑡𝑟𝑖𝑛𝑔𝑠
La idea general
• Una cadena (string) es una secuencia de
carácteres (símbolos).
• Probaremos los siguientes resultados:

• Existen a lo más tantos programas como


existen strings.

• Existen a lo menos tantos problemas como


existen conjuntos de strings.
La idea general
• Una cadena (string) es una secuencia de
carácteres (símbolos).
• Probaremos los siguientes resultados:

• Existen a lo más tantos programas como


existen strings. ✔

• Existen a lo menos tantos problemas como


existen conjuntos de strings.
Strings y problemas
• Existe una conexión entre la cantidad de problemas a
resolver y la cantidad de conjuntos de strings.
• Sea S un conjunto cualquiera de strings. Este conjunto S
permite definir el siguiente problema:

Dada una string w, determinar si 𝑤 ∈ 𝑆.


Strings y problemas
• Dada una string w, determinar si 𝑤 ∈ 𝑆.
• Suponer que S es el siguiente conjunto:

𝑆 = "𝑎", "𝑏", "𝑐", … , "𝑧"


• A partir de este conjunto S, obtenemos el siguiente
problema:

Dada una string w, determinar si w es una letra del alfabeto


en minúscula.
Strings y problemas
• Dada una string w, determinar si 𝑤 ∈ 𝑆.
• Suponer que S es el siguiente conjunto:

𝑆 = "0", "1", "2", … , "9", "10", "11", …


• A partir de este conjunto S, obtenemos el siguiente
problema:

Dada una string w, determinar si w representa un número


natural.
Strings y problemas
• Dada una string w, determinar si 𝑤 ∈ 𝑆.
• Suponer que S es el siguiente conjunto:

𝑆 = 𝑝 | 𝑝 es un programa de Java legal


• A partir de este conjunto S, obtenemos el siguiente
problema:

Dada una string w, determinar si w es un programa de Java


legal.
Strings y programas
• Cada conjunto de strings define un único problema para
resolver.
• Existen, por supuesto, otros problemas.

Problemas
formados a
Todos los
partir de posibles
conjuntos de problemas.
strings.

𝐶𝑜𝑛𝑗𝑢𝑛𝑡𝑜𝑠 𝑑𝑒 𝑠𝑡𝑟𝑖𝑛𝑔𝑠 ≤ 𝑃𝑟𝑜𝑏𝑙𝑒𝑚𝑎𝑠


La idea general
• Una cadena (string) es una secuencia de
carácteres (símbolos).
• Probaremos los siguientes resultados:

• Existen a lo más tantos programas como


existen strings. ✔

• Existen a lo menos tantos problemas como


existen conjuntos de strings.
La idea general
• Una cadena (string) es una secuencia de
carácteres (símbolos).
• Probaremos los siguientes resultados:

• Existen a lo más tantos programas como


existen strings. ✔

• Existen a lo menos tantos problemas como


existen conjuntos de strings. ✔
• Todo programa de computador es una
string.
• Todo programa de computador es una
string.
• Por lo tanto, el número de programas de
computador es a lo más tan grande como el
número de strings.
• Todo programa de computador es una
string.
• Por lo tanto, el número de programas de
computador es a lo más tan grande como el
número de strings.
• Por el Teorema de Cantor, sabemos que
existen más conjuntos de strings que
strings.
• Todo programa de computador es una
string.
• Por lo tanto, el número de programas de
computador es a lo más tan grande como el
número de strings.
• Por el Teorema de Cantor, sabemos que
existen más conjuntos de strings que
strings.
• Existen al menos tantos problemas como
existen conjuntos de strings.
𝑃𝑟𝑜𝑔𝑟𝑎𝑚𝑎𝑠 ≤ 𝑆𝑡𝑟𝑖𝑛𝑔𝑠 < 𝐶𝑜𝑛𝑗𝑢𝑛𝑡𝑜𝑠 𝑑𝑒 𝑆𝑡𝑟𝑖𝑛𝑔𝑠 ≤ 𝑃𝑟𝑜𝑏𝑙𝑒𝑚𝑎𝑠
𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒂𝒔 < 𝑷𝒓𝒐𝒃𝒍𝒆𝒎𝒂𝒔
Hay más problemas que resolver que
programas para resolverlos.

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒂𝒔 < 𝑷𝒓𝒐𝒃𝒍𝒆𝒎𝒂𝒔


Problemas
• Usando teoría de conjuntos más avanzada es
posible probar que existen infinitamente más
problemas que soluciones.
• De hecho, si se elige un problema totalmente al
azar, la probabilidad de poder resolverlo es cero.
• Aún peor, acabamos de mostrar que algunos
problemas son imposibles, pero no sabemos qué
problemas son imposibles.
• Hay que desarrollar un concepto más preciso de
computación.
Preguntas fundamentales
• ¿Qué hace que un computador no pueda resolver
un problema?
• ¿Existe algún motivo profundo por el cual los
computadores no pueden resolver ciertos
problemas o es algo arbitrario?
• ¿Cómo sabemos cuando estamos frente a un
problema imposible?
• ¿Estos problemas imposibles son aplicaciones
prácticas en el mundo real o son problemas
rebuscados de interés teórico?
Resumen
• Introducción al curso.
• Repaso básico de la teoría de conjuntos.
• El principal resultado es el Teorema de Cantor.
• Sus implicaciones nos seguirán durante todo el
semestre.
• Los modelos computacionales que desarrollaremos
tienen por objetivo determinar cuáles son esos
problemas imposibles.
• Más importante aún, los modelos estudiados nos
permitirán resolver ciertos problemas, tanto prácticos
como teóricos.
Próxima clase
• Nuestro primer modelo computacional!
• Autómatas finitos deterministas.
Teoría de Autómatas y
Lenguajes Formales
Brian Keith N.
brian.keith@ucn.cl

Vous aimerez peut-être aussi