Contenido del Curso Teoría de la...

Post on 08-Jun-2018

243 views 0 download

Transcript of Contenido del Curso Teoría de la...

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 Contrerasmcbc@correo.azc.uam.mx

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