MODELOS DE COMPUTACIÓN Y COMPLEJIDAD Grado de Ingeniería Informática. Tecnologías Informáticas Mario de J. Pérez Jiménez Grupo de investigación en Computación Natural Dpto. Ciencias de la Computación e Inteligencia Artificial E.T.S. Ingeniería Informática Universidad de Sevilla Curso 2015-2016
Problemas, problemas, problemas... Una eterna aspiración del hombre... Mejorar la calidad de Vida. Para ello, necesita resolver problemas. A ser posible usando procedimientos mecánicos. 2 / 15
Problemas abstractos vs problemas concretos (1) Determinar si el número 4730099 es primo. (2) Calcular el producto de dos números naturales. (3) Hallar el máximo común divisor de 314 y 4524. (4) Determinar si la suma de los ángulos de un triángulo es 127 o. (5) Para cada número natural n hallar un número primo y mayor que n. (6) Hallar la suma de los números 1234567 y 9876543. (7) Determinar si un número natural n es primo. (8) Hace un par de horas, una empresa de reparto ha recibido 75 electrodomésticos de El Corte Inglés dirigidos a otros tantos clientes sevillanos a los que debe entregárselos esta misma tarde. Todos los electrodomésticos tienen cabida en un camión Qué ruta debe seguir el conductor para consumir la menor cantidad de gasolina? 3 / 15
Problema concreto (I) Dadas 42 ciudades, tiempos t ij entre dos ciudades, hallar un circuito que recorra las 42 ciudades en el menor tiempo posible. 4 / 15
Problema concreto (II) Dadas 3150 ciudades, tiempos t ij entre dos ciudades, hallar un circuito que recorra las 3150 ciudades en el menor tiempo posible. 5 / 15
Problema abstracto (III) Dadas n ciudades y unos valores t ij que representan los tiempos para ir de la ciudad i a la ciudad j. Determinar un circuito que permita recorrer todas las ciudades en el menor tiempo posible. Problema del viajante de comercio (TSP). 6 / 15
Problemas concretos vs Problemas abstractos Problema abstracto: conjunto de problemas concretos. Tamaño de un problema concreto. Resolución de problemas abstractos: Procedimiento mecánico (algoritmo/programa). Ventajas de la resolución mecánica de problemas abstractos? Asistentes del hombre: las máquinas. 7 / 15
Cómo resolver problemas de la vida real Un problema de la vida real: es un problema concreto. Cómo se puede resolver? Se modeliza a través de un problema abstracto. Se diseña una solución mecánica del problema abstracto (algoritmo). Se escribe dicha solución en un lenguaje específico (programa). Se ejecuta el programa sobre una máquina que entienda ese lenguaje, introduciendo los datos específicos del problema concreto. Se obtiene la solución del problema concreto al final de dicha ejecución. 8 / 15
Programa + Dato entrada Máquina Solución 9 / 15
Cómo saber si un problema abstracto se puede resolver mecánicamente? Asimetría entre la respuesta afirmativa o negativa a esa cuestión. Precisar, formalizar la idea intuitiva. Modelo de computación. Los modelos son manejados a través de máquinas. Máquinas virtuales (teóricas). Máquinas reales. Análisis a priori de la cantidad de recursos (memoria y/o tiempo) que es necesario para resolver un problema. Complejidad Computacional. Limitaciones de las máquinas reales convencionales (electrónicas). 10 / 15
Objetivos generales Formalizar el concepto informal de resolución mecánica de un problema abstracto. Presentar un modelo de computación orientado a programas. Describir medidas que cuantifiquen recursos computacionales. Analizar la complejidad computacional de problemas. Estudiar el problema P versus NP. Presentar modelos no convencionales inspirados en la Naturaleza Viva. 11 / 15
Contenidos 0. Preliminares. 1. Modelos de computación. 2. Funciones computables. 3. Programas universales. 4. Recursividad enumerable e indecidibilidad. 5. Medidas abstractas de complejidad. 6. Complejidad en tiempo. El problema P versus NP. 7. Complejidad en espacio. 8. Modelos de computación no convencionales. 12 / 15
Contenidos PARTE I: Teoría de la Computabilidad. Modelos de computación. Funciones computables. Programas universales. Recursividad enumerable e indecidibilidad. PARTE II: Teoría de la Complejidad Computacional. Medidas abstractas de complejidad. Complejidad en tiempo. El problema P versus NP. Complejidad en espacio. Modelos de computación no convencionales. 13 / 15
Evaluación de la asignatura y Tutorías A. Evaluación alternativa 1. Ejercicios propuestos en clase. 2. Dos exámenes escritos. 3. Trabajo práctico propuesto por el profesor. 4. Trabajo teórico propuesto por el profesor. Condición necesaria: haber asistido, al menos, al 80% de las sesiones. B. Examen de evaluación final Examen escrito relativo a los contenidos impartidos en clase. Convocatoria oficial: 14 de junio de 2016. TUTORÍAS: Martes, Miércoles y Jueves: de 8:30 h. a 10:30 h. (Módulo H, despacho H1.41) 14 / 15
Página web de la asignatura http://www.cs.us.es/cursos/mcc/ Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Modelos de Computación y Complejidad [Curso 2015-2016] Programa docente de la asignatura. Temas. Relaciones de ejercicios y problemas. Otro material. Modelos de Computación y Complejidad 15 / 15