contenido del curso teoría de la...
TRANSCRIPT
Presentación del CursoTeoría de la Computación
Programa deMaestría en Ciencias de la ComputaciónUAM – Azcapotzalco
A cargo de:Dra. Maricela Claudia Bravo [email protected]
Contenido del curso
1. Introducción
2. Autómatas finitos y lenguajes regulares
3. Autómatas de pila y lenguajes libres de
contexto
4. Máquinas de Turing
5. Indecibilidad
6. Complejidad
Evaluación del curso
Instrumento de Evaluación PorcentajePrimer examen 30 %Segundo examen 30 %10 Ejercicios de tarea 40 %
Total 100 %
Calendario del curso
Semana Tema Ejercicios de tarea Fecha de entrega1 Introducción2 Nociones preliminares Tarea 1 6 de febrero3 Autómatas finitos deterministas Tarea 2 13 de febrero3 Autómatas finitos no deterministas Tarea 3 20 de febrero4 Expresiones regulares Tarea 4 27 de febrero5 Primer examen 27 de febrero6 Lenguajes libres de contexto Tarea 5 6 de marzo6 Autómatas de pila Tarea 6 13 de marzo7 Máquinas de Turing Tarea 7 13 de marzo7 Tesis de Church-Turing Tarea 8 20 de marzo8 Decidibilidad Tarea 9 20 de marzo9 Teoría de la Complejidad Tarea 10 27 de marzo10 Lenguajes NP-completos10 Segundo examen 27 de marzo
Recursos didácticos
Referencias Bibliográficas Sipser, Michael. Introduction to the Theory of Computation. 2nd ed. Boston, MA: Thomson
Course Technology, 2006.
John Martin, “Introduction to Languages and the Theory of Computation”, 3rd edition, McGraw-Hill
Thomas A. Sudkamp, “Languages and Machines”, 2nd edition, Addison Wesley
John E. Hopcroft, Rajeev Motwani & Jeffrey D. Ullman, “Introduction to Automata Theory, Languages, and Computation”, 2nd edition, Addison Wesley
Lewis and Papadimitriou, “Elements of the Theory of Computation”; Prentice Hall.
Bavel, Zanin, “Introduction to the Theory of Automata”; Reston Publishing Company Inc.; 1983.
Kelly, Dean, “Automata and Formal Languages: An Introduction”; Prentice-Hall, 1995.
Beck Fernández Héctor, “Teoría de Autómatas y Lenguajes Formales”, Apuntes de clases año 2000, UTA, 2001.
Automata, Computability and Complexity, Spring 2005, MIT, http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-045JSpring-2005/CourseHome/index.htm
Ramón Brena, “Lenguajes Formales y Autómatas”, Apuntes de clases ITESM.
Propósito
Durante este curso trataremos de responder las siguientes preguntas:1. ¿Cuáles son las propiedades matemáticas
del hardware y software de la computadora?
2. ¿Qué es computación y qué es un algoritmo?
3. ¿Cuáles son las limitaciones de las computadoras?
Propósito
El propósito de la Teoría de la Computación es desarrollar modelos
matemáticos de computación que reflejen computadoras del mundo real.
Teoría de la Computación
Este campo de estudio se inició en 1930 cuando matemáticos y logistas intentaban comprender el significado de computación.
Una pregunta central era saber si todos los problemas matemáticos podían ser resueltos de forma sistemática.
Historia de la Teoría de la Computación En 1930´s, A. Turing desarrolló una máquina abstracta
denominada Máquina de Turing para el estudio de la computabilidad.
En 1940´s y 1950´s, se desarrollan unas máquinas simples, en cuanto su funcionamiento, que fueron conocidas como autómatas finitos, para modelar el funcionamiento del cerebro.
También en los 1950´s, N. Chomsky comienza el estudio formal de las gramáticas (generadoras de lenguajes).
Historia de la Teoría de la Computación En 1969, S. Cook extiende el estudio de Turing. Cook
separa aquellos problemas que pueden ser solucionados de aquellos que en principio pueden ser solucionados pero que en la práctica toman demasiados recursos.
Autómatas finitos y ciertas clases de gramáticas formales son usadas en el diseño y construcción de software.
La Máquina de Turing ayuda a comprender que es lo que podemos esperar de nuestro software.
Conceptos Básicos La Teoría de la computación es un curso
sobre abstracciones acerca de lo que podemos computar.
Es el tema más puro de las Ciencias de la Computación que trata de eliminar cualquier detalle de las computadoras reales y reemplazarlos con abstracciones que proporcionan una jerarquía de capacidades que culminan con la Máquina de Turing, el modelo abstracto de nuestra computadora moderna, inventada por Alan Turing.
Conceptos Básicos Las abstracciones nos proporcionan una
manera de decir algo acerca de lo que estamos haciendo en una forma rigurosa.
El concepto de abstracción hace alusión al proceso mental de índole superior y estrictamente propio de la condición humana, que consiste en separar lo que en realidad no podría escindirse, considerando esas partes individualmente; ◦ por ejemplo, lo principal de lo accesorio, ◦ captando la esencia de los objetos.
Es la capacidad mental más elevada que permite la elaboración de conceptos y definiciones.
Aplicaciones de la Teoría de la Computación
Teoría de la Computación
La Teoría de la Computación se divide en las siguientes tres áreas:◦ Teoría de la Complejidad◦ Teoría de la Computabilidad◦ Teoría de Automátas
Conceptos Básicos
Teoría de la Computación
Teoría de Automatas y
lenguajes
Teoría de la Computabilidad
Teoría de la Complejidad
Teoría de la Complejidad
La principal pregunta que se trata de responder es:
¿Qué hace que algunos problemas sean computacionalmente duros y otros fáciles?
Teoría de la Complejidad
Informalmente, un problema se dice que es fácil, si se puede resolver eficientemente. Ejemplos de problemas fáciles son:
i. Ordenar una secuencia de 1,000,000 de números
ii. Buscar un nombre en un directorio telefónico
iii. Computar la forma más rápida de manejar desde Ottawa hasta Miami
Teoría de la Complejidad Por el contrario, un problema que es difícil
de resolver porque no pueden ser resueltos eficientemente
◦ Generación de horarios de todos los cursos en una universidad o escuela
En 1930, Gödel, Turing y Church descubrieron que algunos de los problemas fundamentales de las matemáticas no pueden ser resueltos por una computadora (esto es extraño porque las computadoras fueron inventadas en 1940).
Teoría de la Complejidad
Los modelos teóricos que fueron propuestos para entender si los problemas se podían resolver o no resolver llevaron al desarrollo y evolución de las computadoras reales.
La pregunta central era:◦ Clasificar problemas entre computables y no
computables
ALGUNAS NOCIONES PRELIMINARES
Para empezar…
Nociones preliminares
Conjunto: es una colección de objetos
Producto cartesiano:◦ A × B = {(x, y) | x ∈A y y ∈ B}
◦ Generalización a n conjuntos:X1 × X2 × ... Xn = {(x1, x2, ..., xn) | x1 ∈ X1, x2 ∈ X2, ..., xn ∈ Xn}
Relación: es un subconjunto de un producto cartesiano.
Relación n-aria: participan n conjuntos en el producto cartesiano.◦ Relación 2-aria: relación binaria.
◦ Relación 3-aria: relación ternaria.
Función: es una relación binaria en la que no existen dos parejas distintas que tengan el mismo primer elemento.
Es usual denotar una función entre A y B comof : A → B
Decimos que A es el dominio y B el codominio de la función.Si (a, b) ∈ f, entonces escribimos f(a) = b.
22
Funciones Función uno-a-uno o inyectiva: no
existen dos parejas distintas que tengan el mismo segundo elemento, es decir, a cada elemento del codominio le corresponde a lo más un elemento del dominio.
Funciones Función sobre o sobreyectiva: para
cualquier elemento y en el codominio de la función existe un elemento x en el dominio tal que f(x) = y, es decir, la función “recorre” todos los elementos del codominio.
Funciones
Función biyectiva o biunívoca: es uno-a-uno y sobre.
25
Conjuntos
¿Qué significa que dos conjuntos “tengan la misma cardinalidad”?
Principio del palomar: dos conjuntos A y B, finitos o infinitos, tienen la misma cardinalidad (“mismo número de elementos”) si existe una función biyectiva entre A y B.
Cardinalidad de un conjunto A: es el número de elementos en el conjunto. Se denota por |A|.
La cardinalidad del conjunto {1, 2, 3, ..., n} es n.
Conjunto finito: la cardinalidad es 0 ó un número natural.
Conjunto infinito: conjunto que no es finito.
26
Conjuntos Conjunto contable o enumerable: es un conjunto
para el cual podemos encontrar al menos un procedimiento que permite poner sus elementos en sucesión con la certeza de que a cualquier elemento del conjunto le corresponderá un lugar en la sucesión. En otras palabras, un conjunto es contable si es finito o, en caso que sea infinito, que tiene la misma cardinalidad que el conjunto de los números naturales.
Resumiendo: un conjunto infinito A es contable si se puede poner en correspondencia uno-a-uno y sobre con el conjunto de los números naturales, es decir, existe una función biyectiva entre el conjunto A y el conjunto de los números naturales.
Cardinalidad Jerarquía de cardinalidades◦ Conjuntos finitos: el orden de los naturales nos dice cuando un
conjunto tiene mayor cardinalidad o más elementos que otro.
Un conjunto A tiene mayor cardinalidad que un conjunto B,|A| > |B|, si se cumplen◦ A y B no tienen la misma cardinalidad
◦ B tiene la misma cardinalidad que un subconjunto propio de A.
Conjunto potencia de un conjunto A2A = conjunto cuyos elementos son todos los subconjuntos de A.◦ |2A| > |A|
◦ Para conjuntos finitos: |2A| = 2|A|
28
Definiciones Definición por extensión o enumerativamente:
se listan los elementos del conjunto.◦ {1, 2, 3, a, b, c}
Definición por intención o descriptivamente: se especifica la propiedad que deben cumplir los elementos del conjunto.◦ {x ∈ N | x es par} = {x = 2n | n ∈ N }; N es el conjunto de
los números naturales.
Definición recursiva: el concepto se define en términos de si mismo.◦ Regla base: define el concepto para casos sencillos.◦ Regla recursiva: define el concepto para casos más complejos
a partir de los casos ya definidos.29
Ejemplos de recursividad Definición recursiva de factorial◦ Regla base: 0! = 1◦ Regla recursiva: n! = n(n-1)!
Definición recursiva de expresión aritmética◦ Regla base:
Una constante es una expresión aritmética.Una variable es una expresión aritmética.◦ Regla recursiva: si E1 y E2 son expresiones
aritméticas, entonces también lo son:E1+E2, E1-E2, E1*E2, E1/E2, -E1.
30
TÉCNICAS DE DEMOSTRACIÓN
Demostraciones Deductivas. Consiste de una sucesión de enunciados obtenidos uno
tras otro utilizando algún principio lógico aceptado, que nos lleva de una hipótesis a una conclusión.◦ Si n es un entero impar entonces n2 también es impar.◦ Si n es un entero par entonces n2 también es par.
Contradicción o reducción al absurdo. La proposición “Si Pentonces Q” se puede probar probando que P y ¬Q implican algo falso (contradicción o absurdo).◦ Si n2 es impar entonces n también es impar.◦ Si n2 es par entonces n también es par.
Resumiendo:n2 es impar si y solo si n es impar.Equivalentementen2 es par si y solo si n es par.
Recíproco◦ “Si P entonces Q” es equivalente a “Si ¬Q entonces ¬P”
Decir “Si tengo dinero entonces voy al cine” es equivalente a decir “Si no voy al cine entonces no tengo dinero”
32
Inducción matemática Ejemplo: 20 + 21 + 22 + ... + 2n = 2n+1 − 1 Inducción matemática: sea P(n) una proposición que
depende de un número natural n. La prueba por inducción matemática nos permite demostrar que esta proposición es válida para cualquier número natural a partir de cierto número inicial n0 que por lo general es n0 = 1. Consta de dos pasos:◦ Paso Base: demostrar la proposición para el número inicial n0 .◦ Paso inductivo: suponiendo que la proposición es verdad para
n = k, demostrar que también es verdad para n = k + 1
Ejemplos◦ Demostrar 1 + 2 + 3 + ... + n = n(n+1)/2◦ Demostrar n! > 2n para n ≥ 4.
33
Se requieren los dos pasos Si sólo se cumple el paso 1:◦ 2n = 2 para cualquier natural n.
Este enunciado es verdad para n =1, pero no se puede demostrar el paso 2, es decir, no se puede obtener 2k = 2 a partir de 2k+1 = 2. Por lo tanto no se puede concluir la veracidad del enunciado.
Si sólo se cumple el paso 2:◦ n > n + 1 para cualquier natural n.
Partiendo k > k + 1 se puede demostrar (k + 1) > (k + 1) + 1 Sin embargo, no se puede concluir la veracidad del enunciado porque no se puede demostrar el paso base, es decir, que el enunciado es verdad para el primer natural.
34
Número de funciones sobre
Sean A y B dos conjuntos finitos con cardinalidades m y n, respectivamente. Entonces el número de funciones sobre de A a B es:
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( )mn
mmmm
n
k
mkn
k
mk
nnnn
nn
nn
nn
n
knkn
knkn
n
−
−++
−
−−
+−
−=
=−
−=−
−
− ∑∑==
1
33
22
11
1100
35