Una (muy) breve introducción a la teoría de la computación



Documentos relacionados
Problemas indecidibles

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Curso: Teoría de la Computación. Unidad 2, Sesión 8: Complejidad computacional (2)

Problemas fáciles, difíciles y muy difíciles

Computando lo áspero

Pregunta 1 [40 puntos] Diga si las siguientes afirmaciones son verdaderas o falsas, demostrando su respuesta.

RELACIONES DE RECURRENCIA

Introducción a los Autómatas Finitos

Teoría Matemática de la Computación Primer Problemario Prof. Miguel A. Pizaña 11 de Octubre de 2006

1. Objetivos. 2. Idea Principal. Teoría de Autómatas y Lenguajes Formales. Boletín de Autoevaluación 3: Cómo se minimiza un AFD?.

Tablas. Estas serán las tablas que usaremos en la mayoría de ejemplos. Empleado

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

Tema 2 Límites de Funciones

Ampliación de Estructuras de Datos

PARTE 3 ECUACIONES DE EQUIVALENCIA FINANCIERA T E M A S

Aproximación local. Plano tangente. Derivadas parciales.

Tema 2. Espacios Vectoriales Introducción

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

1. Números Reales 1.1 Clasificación y propiedades

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1

Espacios generados, dependencia lineal y bases

Subespacios vectoriales en R n

Números Reales. MathCon c

Para representar los conjuntos, los elementos y la relación de pertenencia, mediante símbolos, tendremos en cuenta las siguientes convenciones:

Ecuaciones de primer grado con dos incógnitas

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

Dominios de factorización única

Divisibilidad y números primos

Primer Parcial de Programación 3 (1/10/2009)

Matrices Invertibles y Elementos de Álgebra Matricial

Ejemplos básicos de webmathematica para profesores

La suma se realiza miembro a miembro. La suma de polinomios goza de las mismas propiedades que la suma de números. Ejemplo:

1.4.- D E S I G U A L D A D E S

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO

Resolución de Problemas

POLINOMIOS Y FRACCIONES ALGEBRAICAS

Nota 2. Luis Sierra. Marzo del 2010

Operaciones Morfológicas en Imágenes Binarias

Teoría de Lenguajes. Teoría de la Programación I

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS

Datos del autor. Nombres y apellido: Germán Andrés Paz. Lugar de nacimiento: Rosario (Código Postal 2000), Santa Fe, Argentina

7. Conclusiones. 7.1 Resultados

EL MÉTODO PERT. Para ello debemos seguir 4 pasos:

ESTRUCTURAS ALGEBRAICAS 1

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Tema 2 Límites de Funciones

Análisis de los datos

Base de datos en Excel

REDES INFORMATICAS: Protocolo IP

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

La Lección de hoy es sobre determinar el Dominio y el Rango. El cuál es la expectativa para el aprendizaje del estudiante LF.3.A1.

LÍMITES DE FUNCIONES. CONTINUIDAD

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

BREVE MANUAL DE SOLVER

Estándares para planes de calidad de software. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto Diciembre 2008

3.8 Construcción de una ALU básica

Teoría de la Computación puesta en Práctica

Tema 3. Espacios vectoriales

Comentario sobre el entorno de desarrollo Microsoft Visual Studio 2005 Juan Manuel Lucas

MANUAL PARA LA ACTUALIZACIÓN Y CREACIÓN DE DEPENDENCIAS EN EL SISTEMA CREG ENTREGA-RECEPCIÓN

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

Herramienta Solver. Activar Excel Solver

Instrucciones de solicitud de reconocimiento. Curso 2015/16

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Pilas y Colas. Capítulo 3

UNIDAD 4: PLANO CARTESIANO, RELACIONES Y FUNCIONES. OBJETIVO DE APRENDIZAJE: Representar gráficamente relaciones y funciones en el plano cartesiano.

CAPITULO 6 ANUALIDADES ANTICIPADAS OBJETIVO

Creación de Funciones de Conducción

Cadenas de Markov y Perron-Frobenius

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Centro de Capacitación en Informática

Tarea 7 Soluciones. Sol. Sea x el porcentaje que no conocemos, entonces tenemos la siguiente. (3500)x = 420. x = = 3 25

Guía Práctica para el Uso del Servicio de Software Zoho CRM

Alberto Marcano Díaz

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS

EJERCICIOS RESUELTOS DE LOS TEOREMAS DEL VALOR MEDIO

Procesos Críticos en el Desarrollo de Software

Representación en Punto Flotante

CLASE # 5 TÉCNICAS DE CAJA BLANCA

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

El rincón de los problemas

Clases de apoyo de matemáticas Fracciones y decimales Escuela 765 Lago Puelo Provincia de Chubut

1. MANEJO DE SUMATORIOS. PROPIEDADES Y EJERCICIOS.

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Valores y vectores propios de una matriz. Juan-Miguel Gracia

no descompone no descompone no descompone

Ejercicios de Trigonometría

Lección 4: Suma y resta de números racionales

Listas de vectores y conjuntos de vectores

Instituto Universitario Politécnico. Santiago Mariño. Unidad I Revisión de conceptos de Sistemas. Operativos. Elaborado por: Ing. Víctor Valencia.

AMPLIACIÓN DE MATEMÁTICAS. REPASO DE MATEMÁTICAS DISCRETA. CONGRUENCIAS. En el conjunto de los números enteros

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TEMA 2: Representación de la Información en las computadoras

Relaciones binarias. ( a, b) = ( c, d) si y solamente si a = c y b = d

Transcripción:

Una (muy) breve introducción a la teoría de la computación Marcelo Arenas M. Arenas Una (muy) breve introducción a la teoría de la computación 1 / 48

Ciencia de la computación Cuál es el objeto de estudio de esta ciencia? Dijkstra: Computer science is no more about computers than astronomy is about telescopes M. Arenas Una (muy) breve introducción a la teoría de la computación 2 / 48

Ciencia de la computación Cuál es el objeto de estudio de esta ciencia? Dijkstra: Computer science is no more about computers than astronomy is about telescopes Cuál es su objeto de estudio entonces? M. Arenas Una (muy) breve introducción a la teoría de la computación 2 / 48

Ciencia de la computación: Objeto de estudio Pregunta a resolver: Cuál es la complejidad de un problema? Puede ser resuelto eficientemente? Cuán rápido? M. Arenas Una (muy) breve introducción a la teoría de la computación 3 / 48

Ciencia de la computación: Objeto de estudio Pregunta a resolver: Cuál es la complejidad de un problema? Puede ser resuelto eficientemente? Cuán rápido? En general: Existen problemas difíciles? Existen problemas que no pueden ser resueltos? M. Arenas Una (muy) breve introducción a la teoría de la computación 3 / 48

Complejidad computacional Objetivo: Medir la complejidad computacional de un problema. Vale decir: Medir la cantidad de recursos computacionales necesarios para solucionar un problema. Tiempo Espacio... M. Arenas Una (muy) breve introducción a la teoría de la computación 4 / 48

Complejidad computacional Objetivo: Medir la complejidad computacional de un problema. Vale decir: Medir la cantidad de recursos computacionales necesarios para solucionar un problema. Tiempo Espacio... Para hacer esto primero tenemos que introducir la noción de problema. M. Arenas Una (muy) breve introducción a la teoría de la computación 4 / 48

Problemas de decisión Alfabeto A: Conjunto finito de símbolos. Ejemplo: A = {0,1} Palabra w: Secuencia finita de símbolos de A. Ejemplo: w = 01101 A : Conjunto de todas las palabras construidas con símbolos de A. M. Arenas Una (muy) breve introducción a la teoría de la computación 5 / 48

Problemas de decisión Lenguaje L: Conjunto de palabras (L A ) Ejemplo: L = {w {0,1} número de 0s y 1s en w es el mismo} Problema de decisión asociado a un lenguaje L: Dado w A, decidir si w L. M. Arenas Una (muy) breve introducción a la teoría de la computación 6 / 48

Problemas de decisión: Ejemplo Grafo: G = (N,E), donde N es un conjunto finito de nodos y E N N. Ejemplo G = (N,E) con N = {1,2,3,4} y E = {(1,2),(1,4),(2,4),(4,3)} G es representado como: 1 2 3 4 M. Arenas Una (muy) breve introducción a la teoría de la computación 7 / 48

Problemas de decisión: Ejemplo Grafo G = (N,E) es no-dirigido si Para cada (a,b) E, se tiene que (b,a) E Ejemplo G = (N,E) con N = {1,2,3,4} y E = {(1,2),(2,1),(1,4),(4,1), (2,4),(4,2),(4,3),(3,4)} G es representado como: 1 2 3 4 M. Arenas Una (muy) breve introducción a la teoría de la computación 8 / 48

Problemas de decisión: Ejemplo Problema: Un grafo no-dirigido G = (N,E) es 3-coloreable si existe f : N {blanco,rojo,verde} tal que Para cada (a,b) E, se tiene que f(a) f(b) M. Arenas Una (muy) breve introducción a la teoría de la computación 9 / 48

Problemas de decisión: Ejemplo Problema: Un grafo no-dirigido G = (N,E) es 3-coloreable si existe f : N {blanco,rojo,verde} tal que Para cada (a,b) E, se tiene que f(a) f(b) Ejemplo 3-coloración de un grafo: 1 2 3 4 M. Arenas Una (muy) breve introducción a la teoría de la computación 9 / 48

Problemas de decisión: Ejemplo Podemos ver el problema de 3-coloración como un problema de decisión. M. Arenas Una (muy) breve introducción a la teoría de la computación 10 / 48

Problemas de decisión: Ejemplo Podemos ver el problema de 3-coloración como un problema de decisión. Dado A = {0,1}, representamos un grafo con n nodos como una palabra con n 2 símbolos. La palabra 0101100100011110 representa al grafo 1 2 3 4 M. Arenas Una (muy) breve introducción a la teoría de la computación 10 / 48

Problemas de decisión: Ejemplo Podemos ver el problema de 3-coloración como un problema de decisión. Dado A = {0,1}, representamos un grafo con n nodos como una palabra con n 2 símbolos. La palabra 0101100100011110 representa al grafo 1 2 3 4 Problema de 3-coloración 3-COL = {w {0,1} w representa un grafo G tal que G es 3-coloreable} M. Arenas Una (muy) breve introducción a la teoría de la computación 10 / 48

Complejidad de un problema de decisión La complejidad de un lenguaje L es la complejidad del problema de decisión asociado a L. M. Arenas Una (muy) breve introducción a la teoría de la computación 11 / 48

Complejidad de un problema de decisión La complejidad de un lenguaje L es la complejidad del problema de decisión asociado a L. Cuándo decimos que L puede ser solucionado eficientemente? Cuando existe un algoritmo eficiente que decide L. M. Arenas Una (muy) breve introducción a la teoría de la computación 11 / 48

Complejidad de un problema de decisión La complejidad de un lenguaje L es la complejidad del problema de decisión asociado a L. Cuándo decimos que L puede ser solucionado eficientemente? Cuando existe un algoritmo eficiente que decide L. Cuándo decimos que L es un problema difícil? Cuando no existe un algoritmo eficiente que decide L. M. Arenas Una (muy) breve introducción a la teoría de la computación 11 / 48

Máquinas de Turing Cómo podemos demostrar que un problema es difícil? Para hacer esto, primero tenemos que formalizar la noción de algoritmo. M. Arenas Una (muy) breve introducción a la teoría de la computación 12 / 48

Máquinas de Turing Cómo podemos demostrar que un problema es difícil? Para hacer esto, primero tenemos que formalizar la noción de algoritmo. Qué es un algoritmo? Podemos formalizar este concepto? Máquinas de Turing: Intento por formalizar este concepto M. Arenas Una (muy) breve introducción a la teoría de la computación 12 / 48

Máquinas de Turing Cómo podemos demostrar que un problema es difícil? Para hacer esto, primero tenemos que formalizar la noción de algoritmo. Qué es un algoritmo? Podemos formalizar este concepto? Máquinas de Turing: Intento por formalizar este concepto Podemos demostrar que las máquinas de Turing capturan la noción de algoritmo? No, el concepto de algoritmo es intuitivo M. Arenas Una (muy) breve introducción a la teoría de la computación 12 / 48

Máquinas de Turing Por qué creemos que las máquinas de Turing son una buena formalización del concepto de algoritmo? M. Arenas Una (muy) breve introducción a la teoría de la computación 13 / 48

Máquinas de Turing Por qué creemos que las máquinas de Turing son una buena formalización del concepto de algoritmo? Porque cada programa de una máquina de Turing puede ser implementado M. Arenas Una (muy) breve introducción a la teoría de la computación 13 / 48

Máquinas de Turing Por qué creemos que las máquinas de Turing son una buena formalización del concepto de algoritmo? Porque cada programa de una máquina de Turing puede ser implementado Porque todos los algoritmos conocidos han podido ser implementados en máquinas de Turing M. Arenas Una (muy) breve introducción a la teoría de la computación 13 / 48

Máquinas de Turing Por qué creemos que las máquinas de Turing son una buena formalización del concepto de algoritmo? Porque cada programa de una máquina de Turing puede ser implementado Porque todos los algoritmos conocidos han podido ser implementados en máquinas de Turing Porque todos los otros intentos por formalizar este concepto fueron reducidos a las máquinas de Turing Los mejores intentos resultaron ser equivalentes a las máquinas de Turing Todos los intentos razonables fueron reducidos eficientemente M. Arenas Una (muy) breve introducción a la teoría de la computación 13 / 48

Máquinas de Turing Por qué creemos que las máquinas de Turing son una buena formalización del concepto de algoritmo? Porque cada programa de una máquina de Turing puede ser implementado Porque todos los algoritmos conocidos han podido ser implementados en máquinas de Turing Porque todos los otros intentos por formalizar este concepto fueron reducidos a las máquinas de Turing Los mejores intentos resultaron ser equivalentes a las máquinas de Turing Todos los intentos razonables fueron reducidos eficientemente Tesis de Church: Algoritmo = Máquina de Turing M. Arenas Una (muy) breve introducción a la teoría de la computación 13 / 48

Máquinas de Turing: Componentes Dado: Alfabeto A que no contiene símbolo especial B. Componentes: Memoria: Arreglo infinito (en ambas direcciones) que en cada posición almacena un símbolo de A {B} Control: Conjunto finitos de estados, una cabeza lectora, un estado inicial y un conjunto de estados finales Programa: Conjunto de instrucciones M. Arenas Una (muy) breve introducción a la teoría de la computación 14 / 48

Máquinas de Turing: Componentes Memoria... 1 B 1 1 0 B 0 1 B B... Cabeza lectora Estados q 0 q 1 q 2 q 3... q k Programa... M. Arenas Una (muy) breve introducción a la teoría de la computación 15 / 48

Máquinas de Turing: Funcionamiento Inicialmente: La máquina recibe como entrada una palabra w. Coloca esta palabra en alguna parte del arreglo. En las posiciones restantes el arreglo contiene el símbolo blanco B. La cabeza lectora se coloca en la primera posición de w y la máquina queda en el estado inicial q 0. M. Arenas Una (muy) breve introducción a la teoría de la computación 16 / 48

Máquinas de Turing: Funcionamiento En cada paso: La máquina lee el símbolo a en la celda apuntada por la cabeza lectora y determina en qué estado q se encuentra. Busca en el programa una instrucción para (q,a). Si esta instrucción no existe, entonces la máquina se detiene. Si la instrucción existe, entonces la ejecuta: Escribe un símbolo en la posición apuntada por la cabeza lectora, pasa a un nuevo estado y mueve la cabeza lectora según lo que indica la instrucción. M. Arenas Una (muy) breve introducción a la teoría de la computación 17 / 48

Máquinas de Turing: Funcionamiento En cada paso: La máquina lee el símbolo a en la celda apuntada por la cabeza lectora y determina en qué estado q se encuentra. Busca en el programa una instrucción para (q,a). Si esta instrucción no existe, entonces la máquina se detiene. Si la instrucción existe, entonces la ejecuta: Escribe un símbolo en la posición apuntada por la cabeza lectora, pasa a un nuevo estado y mueve la cabeza lectora según lo que indica la instrucción. Si la máquina se detiene en un estado final, entonces acepta w. M. Arenas Una (muy) breve introducción a la teoría de la computación 17 / 48

Máquinas de Turing: Componentes Memoria... 1 B 1 1 0 B 0 1 B B... Cabeza lectora Estados q 0 q 1 q 2 q 3... q k Programa (q 3, B) (q 3, B, ) (q 2, 1) (q 3, 0, ) (q 0, 0) (q 4, B, )... M. Arenas Una (muy) breve introducción a la teoría de la computación 18 / 48

Máquinas de Turing: Formalización Definición Máquina de Turing (determinista): (Q,A,q 0,δ,F) Q es un conjunto finito de estados A es un alfabeto tal que B A q 0 es el estado inicial (q 0 Q) F es un conjunto de estados finales (F Q) δ es una función parcial: δ : Q (A {B}) Q (A {B}) {,, }. δ es llamada función de transición M. Arenas Una (muy) breve introducción a la teoría de la computación 19 / 48

Máquinas de Turing: Ejemplo Sea L = {w {0,1} el número de 0s en w es par} Queremos construir una MT M = (Q,A,q 0,δ,F) que decida L M. Arenas Una (muy) breve introducción a la teoría de la computación 20 / 48

Máquinas de Turing: Ejemplo Sea L = {w {0,1} el número de 0s en w es par} Queremos construir una MT M = (Q,A,q 0,δ,F) que decida L Se tiene que: A = {0,1} Q = {q 0,q 1,q f } F = {q f } δ es definida como: δ(q 0,0) = (q 1,0, ) δ(q 0,1) = (q 0,1, ) δ(q 0,B) = (q f,b, ) δ(q 1,0) = (q 0,0, ) δ(q 1,1) = (q 1,1, ) M. Arenas Una (muy) breve introducción a la teoría de la computación 20 / 48

Máquinas de Turing: Ejecución Supongamos que w = 00100: Paso 0... B B 0 0 1 0 0 B B... q 0 Paso 1... B B 0 0 1 0 0 B B... q 1 Paso 2... B B 0 0 1 0 0 B B... q 0 M. Arenas Una (muy) breve introducción a la teoría de la computación 21 / 48

Máquinas de Turing: Ejecución Paso 3... B B 0 0 1 0 0 B B... q 0 Paso 4... B B 0 0 1 0 0 B B... q 1 Paso 5... B B 0 0 1 0 0 B B... q 0 Paso 6... B B 0 0 1 0 0 B B... q f F M. Arenas Una (muy) breve introducción a la teoría de la computación 22 / 48

Máquinas de Turing: Ejecución Ahora supongamos que w = 0010: Paso 0... B B 0 0 1 0 B B... q 0 Paso 1... B B 0 0 1 0 B B... q 1 Paso 2... B B 0 0 1 0 B B... q 0 M. Arenas Una (muy) breve introducción a la teoría de la computación 23 / 48

Máquinas de Turing: Ejecución Paso 3... B B 0 0 1 0 B B... q 0 Paso 4... B B 0 0 1 0 B B... q 1 F M. Arenas Una (muy) breve introducción a la teoría de la computación 24 / 48

Máquinas de Turing: Palabra vacía Finalmente supongamos que w = ε: Paso 0... B B B B B... q 0 Paso 1... B B B B B... q f F Inicialmente: La cabeza lectora se encuentra en una posición cualquiera. M. Arenas Una (muy) breve introducción a la teoría de la computación 25 / 48

El lenguaje aceptado por una máquina de Turing Definición Dada una máquina de Turing M = (Q,A,q 0,δ,F): L(M) = {w A M acepta w} L(M) es el lenguaje aceptado por M. En el ejemplo anterior: L(M) = {w {0,1} el número de 0s en w es par}. M. Arenas Una (muy) breve introducción a la teoría de la computación 26 / 48

El lenguaje aceptado por una máquina de Turing Ejercicio 1. Construya una máquina de Turing que acepta el lenguaje de las palabras de 0s que tienen largo divisible por 3. 2. Construya una máquina de Turing que acepta el lenguaje de las palabras de 0s que tienen largo divisible por 6. 3. Construya una máquina de Turing que acepta el lenguaje de las palabras de 0s y 1s que tienen el mismo número de 0s y 1s. Puede ejecutar sus programas aquí: http://db.ing.puc.cl/turingmachine M. Arenas Una (muy) breve introducción a la teoría de la computación 27 / 48

Detención de una máquina de Turing Una máquina de Turing puede no detenerse en alguna entrada. Ejemplo M = (Q,A,q 0,δ,F), donde Q = {q 0,q 1 }, A = {0}, F = {q 1 } y δ es definida de la siguiente forma: δ(q 0,0) = (q 1,0, ) δ(q 0,B) = (q 0,B, ) Con qué palabra no se detiene esta máquina? M. Arenas Una (muy) breve introducción a la teoría de la computación 28 / 48

Problemas decidibles Si una máquina de Turing no se detiene en alguna entrada, entonces no puede ser utilizada como un algoritmo. Un buen programa en Java o Python no se debería quedar en un loop infinito. Definición Un lenguaje L es decidible si existe una máquina de Turing M que se detiene en todas las entradas y tal que L = L(M). Existen problemas para los cuales no hay algoritmos? Se puede demostrar esto? M. Arenas Una (muy) breve introducción a la teoría de la computación 29 / 48

Existencia de problemas no decidibles: Argumento basado en cardinalidad Sea A = {0,1}. Cuántos lenguajes con alfabeto A existen? Cuántas máquinas de Turing con alfabeto A existen? Existen lenguajes no decidibles? M. Arenas Una (muy) breve introducción a la teoría de la computación 30 / 48

Existencia de problemas no decidibles: Argumento basado en cardinalidad Sea A = {0,1}. Cuántos lenguajes con alfabeto A existen? Tantos como 2 N, o equivalentemente R Cuántas máquinas de Turing con alfabeto A existen? Existen lenguajes no decidibles? M. Arenas Una (muy) breve introducción a la teoría de la computación 30 / 48

Existencia de problemas no decidibles: Argumento basado en cardinalidad Sea A = {0,1}. Cuántos lenguajes con alfabeto A existen? Tantos como 2 N, o equivalentemente R Cuántas máquinas de Turing con alfabeto A existen? Tantos como N Existen lenguajes no decidibles? M. Arenas Una (muy) breve introducción a la teoría de la computación 30 / 48

Existencia de problemas no decidibles: Argumento basado en cardinalidad Sea A = {0,1}. Cuántos lenguajes con alfabeto A existen? Tantos como 2 N, o equivalentemente R Cuántas máquinas de Turing con alfabeto A existen? Tantos como N Existen lenguajes no decidibles? Sí, por el teorema de Cantor M. Arenas Una (muy) breve introducción a la teoría de la computación 30 / 48

Un problema no decidible: Décimo problema de Hilbert Problema H10: Dado un polinomio p(x 1,...,x k ) con coeficientes en Z, determinar si existe (a 1,...,a k ) Z k tal que p(a 1,...,a k ) = 0. Cuál es el alfabeto para H10? Cuál es la entrada de H10? M. Arenas Una (muy) breve introducción a la teoría de la computación 31 / 48

Un problema no decidible: Décimo problema de Hilbert Problema H10: Dado un polinomio p(x 1,...,x k ) con coeficientes en Z, determinar si existe (a 1,...,a k ) Z k tal que p(a 1,...,a k ) = 0. Cuál es el alfabeto para H10? Cuál es la entrada de H10? Teorema (Matiyasévich, Davis, Robinson & Putnam) H10 no es decidible. M. Arenas Una (muy) breve introducción a la teoría de la computación 31 / 48

Dónde estamos? El objetivo de esta clase es introducir la noción de complejidad computacional. Cuánto cuesta resolver un problema Hasta ahora: Formalizamos la noción de algoritmo a través de las Máquinas de Turing Mostramos que hay problemas muy difíciles: no son decidibles Lo que viene: Definir la complejidad de un algoritmo. Estudiar la complejidad de un problema M. Arenas Una (muy) breve introducción a la teoría de la computación 32 / 48

Complejidad de un algoritmo Notación Dada una MT determinista M con alfabeto A que para en todas las entradas: Paso de M: Ejecutar una instrucción de la función de transición. tiempo M (w): Número de pasos ejecutados por M con entrada w. M. Arenas Una (muy) breve introducción a la teoría de la computación 33 / 48

Complejidad de un algoritmo Notación Dada una MT determinista M con alfabeto A que para en todas las entradas: Paso de M: Ejecutar una instrucción de la función de transición. tiempo M (w): Número de pasos ejecutados por M con entrada w. Definición Dado un número natural n: t M (n) = máx{ tiempo M (w) w A y w = n}. t M : tiempo de ejecución de M en el peor caso. M. Arenas Una (muy) breve introducción a la teoría de la computación 33 / 48

Complejidad de un problema Definición Un lenguaje L puede ser aceptado en tiempo t si existe una MT determinista M tal que: M para en todas las entradas. L = L(M). t M es O(t), vale decir, existe c R + y n 0 N tal que t M (n) c t(n) para todo n n 0. M. Arenas Una (muy) breve introducción a la teoría de la computación 34 / 48

Clases de complejidad Definición Dado un alfabeto A, DTIME(t) se define como el conjunto de todos los lenguajes L A que pueden ser aceptados en tiempo t. Dos clases fundamentales: PTIME = k NDTIME(n k ) EXPTIME = k NDTIME(2 nk ) PTIME: conjunto de todos los problemas que pueden ser solucionados eficientemente. M. Arenas Una (muy) breve introducción a la teoría de la computación 35 / 48

Ciencia de la computación: Problema fundamental El problema fundamental de nuestra disciplina: Dado un problema, encontrar un algoritmo eficiente para solucionarlo o demostrar que no existe tal algoritmo. M. Arenas Una (muy) breve introducción a la teoría de la computación 36 / 48

Ciencia de la computación: Problema fundamental El problema fundamental de nuestra disciplina: Dado un problema, encontrar un algoritmo eficiente para solucionarlo o demostrar que no existe tal algoritmo. Primera parte: Demostrar que L DTIME(t). Si L = {w {0,1} el número de 0s en w es par}, entonces L DTIME( ) M. Arenas Una (muy) breve introducción a la teoría de la computación 36 / 48

Ciencia de la computación: Problema fundamental El problema fundamental de nuestra disciplina: Dado un problema, encontrar un algoritmo eficiente para solucionarlo o demostrar que no existe tal algoritmo. Primera parte: Demostrar que L DTIME(t). Si L = {w {0,1} el número de 0s en w es par}, entonces L DTIME(n) M. Arenas Una (muy) breve introducción a la teoría de la computación 36 / 48

Ciencia de la computación: Problema fundamental El problema fundamental de nuestra disciplina: Dado un problema, encontrar un algoritmo eficiente para solucionarlo o demostrar que no existe tal algoritmo. Primera parte: Demostrar que L DTIME(t). Si L = {w {0,1} el número de 0s en w es par}, entonces L DTIME(n) Segunda parte: Demostrar que L DTIME(t). Es cierto que 3-COL PTIME? M. Arenas Una (muy) breve introducción a la teoría de la computación 36 / 48

Comentarios finales Los computadores que usamos son equivalentes a las máquinas de Turing. Todo lo que puede ser implementado de manera eficiente en uno, puede ser implementado de manera eficiente en el otro Lo que sabemos: PTIME EXPTIME Existen problemas (naturales) que pueden ser resueltos, pero no de manera eficiente M. Arenas Una (muy) breve introducción a la teoría de la computación 37 / 48

Comentarios finales Lo que creemos (pero no sabemos cómo demostrar): 3-COL PTIME Esta es una formulación (equivalente) del problema P vs NP Puede cambiar 3-COL por el problema de satisfacción de fórmulas proposicionales, programación lineal entera, el problema del agente viajero,... Y existen muchas otras clases de complejidad, y problemas por resolver. M. Arenas Una (muy) breve introducción a la teoría de la computación 38 / 48

Transparencias adicionales M. Arenas Una (muy) breve introducción a la teoría de la computación 39 / 48

Máquinas de Turing no deterministas Definición Máquina de Turing no determinista: (Q,A,q 0,δ,F) Q es un conjunto finito de estados A es un alfabeto tal que B A q 0 es el estado inicial (q 0 Q) F es un conjunto de estados finales (F Q) δ Q (A {B}) Q (A {B}) {,, }: Relación de transición M. Arenas Una (muy) breve introducción a la teoría de la computación 40 / 48

Máquinas de Turing no deterministas: Funcionamiento Inicialmente: Tal como en una MT determinista. En cada paso: La máquina lee el símbolo a en la celda apuntada por la cabeza lectora y determina en que estado q se encuentra. Determina el conjunto de todas las instrucciones para (q, a). Si este conjunto es vacío, entonces la máquina se detiene. Si el conjunto no es vacío, entonces escoge una instrucción de este conjunto y la ejecuta. Si la máquina se detiene en un estado final, entonces la máquina acepta w. M. Arenas Una (muy) breve introducción a la teoría de la computación 41 / 48

Máquinas de Turing no deterministas: Lenguaje aceptado Definición Dada una máquina de Turing M no determinista con alfabeto A: L(M) = {w A existe alguna ejecución de M con entrada w que termina en un estado final}. Ejercicio 1. Sea L = {w {0} el largo de w es divisible por 2 ó 3}. Construya una MT no determinista que acepte L y que sólo mueva su cabeza a la derecha. M. Arenas Una (muy) breve introducción a la teoría de la computación 42 / 48

Máquinas de Turing no deterministas: Poder de computación Son las máquinas de Turing no deterministas más poderosas que las deterministas? Teorema Para cada MT no determinista M, existe una MT determinista M tal que L(M) = L(M ). Ejercicio Demuestre el teorema. M. Arenas Una (muy) breve introducción a la teoría de la computación 43 / 48

Máquinas de Turing no deterministas: Complejidad Para una MT no determinista: Paso de M: Ejecutar una instrucción de la relación de transición tiempo M (w): Número de pasos de M con entrada w en la ejecución más corta que acepta a w Sólo está definido para palabras aceptadas por M Por qué? M. Arenas Una (muy) breve introducción a la teoría de la computación 44 / 48

Máquinas de Turing no deterministas: Complejidad Definición El tiempo de funcionamiento de una MT no determinista M en el peor caso es definido por la función t M : [ t M (n) = máx {n} {tiempo M (w) w Σ, ] w = n y M acepta a w} M. Arenas Una (muy) breve introducción a la teoría de la computación 45 / 48

Máquinas de Turing no deterministas: Complejidad Definición El tiempo de funcionamiento de una MT no determinista M en el peor caso es definido por la función t M : [ t M (n) = máx {n} {tiempo M (w) w Σ, ] w = n y M acepta a w} Por qué incluimos {n} en la definición? M. Arenas Una (muy) breve introducción a la teoría de la computación 45 / 48

Clases de complejidad no deterministas Definición Un lenguaje L es aceptado en tiempo t por una MT M no determinista si: L = L(M) t M es O(t) M. Arenas Una (muy) breve introducción a la teoría de la computación 46 / 48

Clases de Complejidad no deterministas Definición NTIME(t) se define como el conjunto de todos los lenguajes que pueden ser aceptados en tiempo t por alguna MT no determinista. Una clase fundamental: NP = k NNTIME(n k ) Por qué es tan importante esta clase? Qué problemas están en esta clase? M. Arenas Una (muy) breve introducción a la teoría de la computación 47 / 48

Algunas propiedades de la clase NP Dónde vive NP? PTIME NP EXPTIME Se sabe que al menos una de estas inclusiones es estricta ( por qué?), pero no se sabe cuál Tampoco se sabe si ambas inclusiones son estrictas M. Arenas Una (muy) breve introducción a la teoría de la computación 48 / 48

Algunas propiedades de la clase NP Dónde vive NP? PTIME NP EXPTIME Se sabe que al menos una de estas inclusiones es estricta ( por qué?), pero no se sabe cuál Tampoco se sabe si ambas inclusiones son estrictas Qué problemas están en NP? Ejercicio Muestre que 3-COL está en NP. M. Arenas Una (muy) breve introducción a la teoría de la computación 48 / 48

Algunas propiedades de la clase NP Dónde vive NP? PTIME NP EXPTIME Se sabe que al menos una de estas inclusiones es estricta ( por qué?), pero no se sabe cuál Tampoco se sabe si ambas inclusiones son estrictas Qué problemas están en NP? Ejercicio Muestre que 3-COL está en NP. Uno de los problemas del milenio (Clay) Demuestre que PTIME NP M. Arenas Una (muy) breve introducción a la teoría de la computación 48 / 48