Problemas fáciles, difíciles e imposibles

Documentos relacionados
Computando lo áspero

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

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Procesadores de Lenguaje

El método infalible para ganar a la ruleta en 21 días. Llame YA!

Tema 2 Introducción a la Programación en C.

Materia: Matemática de 5to Tema: Método de Cramer. Marco Teórico

Distancia entre un punto y una recta

Notación Asintótica 2

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

Sistemas de Ecuaciones Lineales y Matrices

Taller de Resolución de Problemas Computacionales

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

16 - Programando robots

Función logarítmica (parte 1)

MATEMÁTICAS UNIDAD 4 GRADO 6º. Números naturales

1 Razones y proporciones

Matemáticas I: Hoja 1

Unidad 2: Ecuaciones, inecuaciones y sistemas.

El Autómata con Pila

S.E.L.: 3 ecuaciones con 3 incógnitas

Problema 1. Para un planeta general del interior, la probabilidad de visita se calculará a partir de la probabilidad de los planetas anteriores. .

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan?

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

Tema 05: Números Decimales, Fracciones y Porcentajes Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

En una recta numérica el punto que representa el cero recibe el nombre de origen.

3. LA SUMA Y LA RESTA

Factorización de polinomios FACTORIZACIÓN DE POLINOMIOS

Materia: Matemática de Octavo Tema: Raíces de un polinomio. Marco teórico

CONJUNTOS NUMÉRICOS. La noción de número es tan antigua como el hombre mismo ya que son necesarios para resolver situaciones de la vida diaria.

Método de diferencias finitas para ecuaciones diferenciales parciales elípticas. (Parte II)

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

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

Sumar es reunir varias cantidades en una sola.

Cifras significativas

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Algebra lineal y conjuntos convexos

UNIDAD 10: ECUACIONES DE SEGUNDO GRADO.

Materia: Matemática de Octavo Tema: Conjunto Q (Números Racionales)

MATEMÁTICAS UNIDAD 2 NÚMEROS ROMANOS. Como se escriben los números romanos y poder descifrarlos.

Proyecto Guao ADICIÓN Y SUSTRACCIÓN DE FRACCIONES ALGEBRAICAS

Matemáticas 2º E.S.P.A. Pág.1 C.E.P.A. Plus Ultra. Logroño

11. MOSAICOS. El ángulo interior de un polígono regular de n lados es

PREPARACION OLIMPIADA MATEMATICA CURSO

Sistemas de Ecuaciones Lineales

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Lección 2: Notación exponencial

Cardinalidad. Teorema 0.3 Todo conjunto infinito contiene un subconjunto infinito numerable.

Proceso Selectivo para la XXII IMC, Bulgaria

Espacios topológicos. 3.1 Espacio topológico

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

El estudiante de Pitágoras

Problemas indecidibles

EL LENGUAJE ALGEBRAICO

Sistemas de dos ecuaciones lineales de primer grado con dos incógnitas

Cap. 3: relaciones en un triángulo

Multiplicación y División de Números Naturales

FUNCIONES REALES DE VARIABLE REAL.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Ecuaciones de primer grado

Infinito más un número Infinito más infinito. Infinito por infinito. OPERACIONES CON INFINITO Sumas con infinito. Productos con infinito

El lenguaje C. 1. Identificadores, constantes y variables

R no es enumerable. Por contradicción, supongamos que existe una biyección f : N! R. diagonalización de Cantor. Para cada i 2 N:

Desde la secundaria estamos acostumbrados a trabajar con polinomios, los cuales identificamos con expresiones de la forma

CONJUNTO DE LOS NÚMEROS NATURALES

Método de Sustitución

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

SISTEMAS DE ECUACIONES LINEALES Y MATRICES Dos ecuaciones lineales con dos

Aritmética de Enteros

evaluables Productos Resolución y explicación de los cálculos

Lección 8: Suma y resta de en teros

Unidad II. 2.1 Concepto de variable, función, dominio, condominio y recorrido de una función.

Anexo C. Introducción a las series de potencias. Series de potencias

Ejemplo, generación de #s aleatorios

Límite de una función

Sesión No. 1. Contextualización. Nombre: Fundamentos del Álgebra MATEMÁTICAS

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Pablo Cobreros Tema 6. El tamaño del infinito

5to. ESTANDARES MATEMATICOS COMUNES FUNDAMENTALS

TRA NSFORMACIO N ES LIN EA LES

MÉTODOS NUMÉRICOS PARA INGENIERÍA ERROR GUIÓN PARA EL TEMA CONCEPTOS BÁSICOS

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Cómo hacer divisiones con y sin decimales

CONCEPTOS BASICOS DE LA TRANSFORMADA DE LAPLACE LA TRANSFORMADA DE LAPLACE

Autómatas Mínimos. Encontrar el autómata mínimo. Universidad de Cantabria. Introducción Minimización de Autómatas Deterministas Resultados Algoritmo

UD Trigonometría Ejercicios Resueltos y Propuestos Col La Presentación

DISTRIBUCIÓN N BINOMIAL

NÚMEROS RACIONALES Y REPRESENTACIÓN DECIMAL. Mate 3041 Profa. Milena R. Salcedo Villanueva

TEMA I: LOS CONCEPTOS FUNDAMENTALES DE LA TEORÍA DE LA COMPUTABILIDAD

TEMA 1: NÚMEROS NATURALES

Probabilidad Condicional

Curso Propedéutico de Cálculo Sesión 2: Límites y Continuidad

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

GUÍA DE EJERCICIOS CONCEPTOS FUNDAMENTALES

Métodos directos para resolver sistemas de ecuaciones lineales

MATEMÁTICAS PARA LA COMPUTACIÓN CAPÍTULO 1. SISTEMAS NUMÉRICOS

Transcripción:

Problemas fáciles, difíciles e imposibles La computadora lo resuelve todo? Santiago Figueira Departamento de Computación FCEyN, UBA Semana de la Computación 2015 1

Qué son los métodos efectivos? Intuitivamente son métodos que pueden ser resueltos por medio de un procedimiento mecánico. 2

Qué son los métodos efectivos? Intuitivamente son métodos que pueden ser resueltos por medio de un procedimiento mecánico. Los métodos resuelven problemas. No cualquier tipo de problemas: funciones matemáticas que reciben números naturales y devuelven números naturales. f : N N o g : N N N o h : N N N N 2

Intento 1 para método efectivo: funciones recursivas Podemos usar: 0: el cero que todos conocemos +1: sumarle 1 a un número composición de funciones. Por ejemplo 0 + 1 = 1. También puedo al 1 sumarle 1 y obtener el 2: (0 + 1) + 1 = 2 recursión: una función que se llama a sí misma. 3

Intento 1 para método efectivo: funciones recursivas Podemos usar: 0: el cero que todos conocemos +1: sumarle 1 a un número composición de funciones. Por ejemplo 0 + 1 = 1. También puedo al 1 sumarle 1 y obtener el 2: (0 + 1) + 1 = 2 recursión: una función que se llama a sí misma. Por ejemplo, a la función suma se puede definir como: { n si m = 0 suma(m, n) = suma(m 1, n) + 1 si m > 0 Entonces, suma(2, 2) = suma(1, 2)+1 = suma(0, 2)+1+1 = 2+1+1 = 4 3

La función de Ackermann 4

La función de Ackermann n + 1 si m = 0 A(m, n) = A(m 1, 1) si m > 0 y n = 0 A(m 1, A(m, n 1)) si m > 0 y n > 0 4

La función de Ackermann n + 1 si m = 0 A(m, n) = A(m 1, 1) si m > 0 y n = 0 A(m 1, A(m, n 1)) si m > 0 y n > 0 para valores chicos de m, como 1, 2, o 3, A crece relativamente lento con respecto a n 4

La función de Ackermann Cuánto valdrá A(4,2)? Más o menos 100000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 y 18 pantallas más de ceros. 5

Intento 2 para método efectivo: máquinas de Turing 6

Las máquinas de Turing Supongamos que la chica del slide anterior quiere calcular: No es esencial: 2 3 1 1 3 6 9 3 2 3 1 0 3 0 0 3 mientras hace la cuenta está tomando un café? escribe con lápiz o lapicera? importa el tamaño del papel? 7

Las máquinas de Turing Supongamos que la chica del slide anterior quiere calcular: 2 3 1 1 3 6 9 3 2 3 1 0 3 0 0 3 No es esencial: mientras hace la cuenta está tomando un café? escribe con lápiz o lapicera? importa el tamaño del papel? Lo importante es que: hace marcas en un papel para saber qué escribir en cada paso, le presta atención a lo que escribió antes 7

Las máquinas de Turing Sin perder nada esencial, podemos suponer: 2 3 1 1 3 = 6 9 3 + 2 3 1 0 = 3 0 0 3 Empezamos con la multiplicación 2 3 1 1 3 =... Después de un tiempo, vamos a estar sumando 2 3 1 1 3 = 6 9 3 + 2 3 1 0 =... 8

Las máquinas de Turing Sin perder nada esencial, podemos suponer: 2 3 1 1 3 = 6 9 3 + 2 3 1 0 = 3 0 0 3 Empezamos con la multiplicación 2 3 1 1 3 =... Después de un tiempo, vamos a estar sumando 2 3 1 1 3 = 6 9 3 + 2 3 1 0 =... en cada paso de la computación sólo un pequeño número de símbolos reciben atención (en el ejemplo, 2). Hay una cantidad finita de símbolos. 8

Las máquinas de Turing Sin perder nada esencial, podemos suponer: 2 3 1 1 3 = 6 9 3 + 2 3 1 0 = 3 0 0 3 Empezamos con la multiplicación 2 3 1 1 3 =... Después de un tiempo, vamos a estar sumando 2 3 1 1 3 = 6 9 3 + 2 3 1 0 =... en cada paso de la computación sólo un pequeño número de símbolos reciben atención (en el ejemplo, 2). Hay una cantidad finita de símbolos. la acción que se toma en cada paso depende sólo de los símbolos que están recibiendo atención y del estado actual de quien está haciendo el cálculo (en el ejemplo, la señorita está en estado multiplicando o sumando). Hay una cantidad finita de estados. 8

Las máquinas de Turing Sin perder nada esencial, podemos suponer: 2 3 1 1 3 = 6 9 3 + 2 3 1 0 = 3 0 0 3 Empezamos con la multiplicación 2 3 1 1 3 =... Después de un tiempo, vamos a estar sumando 2 3 1 1 3 = 6 9 3 + 2 3 1 0 =... en cada paso de la computación sólo un pequeño número de símbolos reciben atención (en el ejemplo, 2). Hay una cantidad finita de símbolos. la acción que se toma en cada paso depende sólo de los símbolos que están recibiendo atención y del estado actual de quien está haciendo el cálculo (en el ejemplo, la señorita está en estado multiplicando o sumando). Hay una cantidad finita de estados. el procedimiento lleva una cantidad finita de pasos. 8

Intento 3 (más moderno) para método efectivo: lenguajes de programación Java C C++ C# PHP (Visual) Basic Python Perl JavaScript... 9

Entonces... qué es un método efectivo? Tesis de Church-Turing todos los lenguajes de programación y todas las computadoras son equivalentes a una máquina de Turing no es posible construir un dispositivo de cómputo que sea más poderoso que una computadora = = Entonces, lo efectivo es lo que se puede computar en la computadora que más les guste y con el lenguaje de programación que más les guste. 10

Problemas fáciles y difíciles Ahora sabemos qué es un método efectivo para resolver un problema. Extendamos la noción de problema: f : N N f : texto texto Podemos calcular cuántas operaciones nos lleva calcular el resultado. los problemas fáciles se resuelven con programas que ejecutan en pocas operaciones (rápidos) los problemas difíciles se resuelven con programas que necesariamente requieren muchas operaciones (lentos) 11

Ejemplos de problemas fáciles buscar un elemento en una lista de números entrada salida [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] 4 sí [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] 3 sí [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] 6 no tiempo longitud de la entrada 12

Ejemplos de problemas fáciles buscar un elemento en una lista de números entrada salida [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] 4 sí [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] 3 sí [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] 6 no tiempo longitud de la entrada ordenar una lista entrada salida [1, 4, 5, 2, 7, 7, 5, 1, 1, 3] [1, 1, 1, 2, 3, 4, 5, 5, 7, 7] tiempo longitud de la entrada 2 (aunque se puede hacer un poquito más rápido) 12

Ejemplos de problemas difíciles coloreo de grafos hay un coloreo que usa a lo sumo x colores? entrada salida 1-2 1-3 1-5 1-6 2-3... 3 sí 1-2 1-3 1-5 1-6 2-3... 2 no 13

Ejemplos de problemas difíciles coloreo de grafos hay un coloreo que usa a lo sumo x colores? entrada salida 1-2 1-3 1-5 1-6 2-3... 3 sí 1-2 1-3 1-5 1-6 2-3... 2 no el problema de la mochila podemos juntar al menos $x en una mochila que carga hasta y Kg.? entrada salida [4,12] [2,2] [2,1] [1,1] [10,4] 15 15 sí [4,12] [2,2] [2,1] [1,1] [10,4] 100 15 no 13

Problemas fáciles y difíciles entrada } zzzzzzzzzzzzzzzzzzzzzzzzzzzz {{} longitud=x salida sí / no 14

Problemas fáciles y difíciles entrada } zzzzzzzzzzzzzzzzzzzzzzzzzzzz {{} longitud=x salida sí / no P = conjunto de problemas que se resuelven en tiempo polinomial si la entrada tiene longitud x, entonces computar la salida lleva más o menos x n pasos 14

Problemas fáciles y difíciles entrada } zzzzzzzzzzzzzzzzzzzzzzzzzzzz {{} longitud=x salida sí / no P = conjunto de problemas que se resuelven en tiempo polinomial si la entrada tiene longitud x, entonces computar la salida lleva más o menos x n pasos NP = conjunto de problemas que se resuelven en tiempo polinomial pero usando no determinismo si la entrada tiene longitud x, entonces verificar que una solución con salida sí es buena lleva más o menos x n pasos. 14

Problemas fáciles y difíciles entrada } zzzzzzzzzzzzzzzzzzzzzzzzzzzz {{} longitud=x salida sí / no P = conjunto de problemas que se resuelven en tiempo polinomial si la entrada tiene longitud x, entonces computar la salida lleva más o menos x n pasos NP = conjunto de problemas que se resuelven en tiempo polinomial pero usando no determinismo si la entrada tiene longitud x, entonces verificar que una solución con salida sí es buena lleva más o menos x n pasos. todo problema de P está en NP. Pero... realmente hay problemas en NP que no estén en P o los dos conjuntos son iguales? Nadie lo sabe! Es un problema muy famoso en computación. 14

Tiene muchas consecuencias prácticas. Por ejemplo muchos métodos de encriptar se volverían fáciles de romper. 15

Una computadora puede resolver cualquier problema? Hay problemas, o sea, funciones f : texto texto Hay programas (no importa el lenguaje de programación). 16

Una computadora puede resolver cualquier problema? Hay problemas, o sea, funciones f : texto texto Hay programas (no importa el lenguaje de programación). Pero el primer infinito es más grande que el segundo: 16

Una computadora puede resolver cualquier problema? Hay problemas, o sea, funciones f : texto texto Hay programas (no importa el lenguaje de programación). Pero el primer infinito es más grande que el segundo: los programas se pueden enumerar, o listar: Todos los programas de longitud 1 Todos los programas de longitud 2 Todos los programas de longitud 3... las funciones texto texto no se pueden enumerar 16

El argumento diagonal de Cantor Veamos que las funciones f : número texto no se pueden enumerar (estas son un subconjunto de las funciones texto texto). Por el absurdo. Supongamos que sí se pueden enumerar: Me defino una nueva función: del siguiente modo: f 0, f 1, f 2,... g : número texto g(n) = hola seguido de f n (n) Tenemos que g no está en la lista. Absurdo. 17

Hay problemas que ninguna computadora resuelve programas < problemas 18

Hay problemas que ninguna computadora resuelve programas < problemas Hay más problemas que programas Tiene que haber problemas que no tengan una solución efectiva, o sea problemas que ninguna computadora puede resolver. Se llaman problemas indecidibles o incomputables. Cuáles? 18

A veces la computadora se cuelga 19

A veces la computadora se cuelga 19

A veces la computadora se cuelga 19

A veces la computadora se cuelga 19

El problema de la parada Es el problema indecidible más famoso También se lo llama problema de la detención o halting problem, en inglés. Tiene que ver con programas que se cuelgan y programas que no. 20

El problema de la parada Dado un programa p, p se cuelga? Supongamos que p(x) es el programa: int i=1; while (i>x) { i=i+1; } si x = 0 entonces p no para (se cuelga) si x = 1 entonces p para (no se cuelga) 21

El problema de la parada es indecdible entrada (int i=1; while (i>x) {i=i+1;})(0) (int i=1; while (i>x) {i=i+1;})(1) salida sí no Existe un programa que recibe un texto y devuelve sí cuando el texto representa un programa que para y no en caso contrario? 22

El problema de la parada es indecdible entrada (int i=1; while (i>x) {i=i+1;})(0) (int i=1; while (i>x) {i=i+1;})(1) salida sí no Existe un programa que recibe un texto y devuelve sí cuando el texto representa un programa que para y no en caso contrario? No, no existe tal programa. El problema de la parada es indecidible. no importa en qué lenguaje queramos programarlo es un ĺımite absoluto al poder de cómputo. Los métodos efectivos no llegan tan lejos. 22

Un rompecabezas mu difícil Eternity II 256 piezas bordes adyacentes tienen el mismo dibujo se pueden rotar 23

Un rompecabezas mu difícil de 2007 a 2010 hubo 2 millones de dólares para el primero que encuentre una solución 24

Un rompecabezas mu difícil de 2007 a 2010 hubo 2 millones de dólares para el primero que encuentre una solución nadie encontró la solución hay más o menos 1,115 10 557 posibles configuraciones: 1115000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000 000000 24

Otro problema indecidible: el tiling dado un conjunto de piezas, por ejemplo reglas: bordes adyacentes tienen el mismo dibujo no se pueden rotar hay infinitas copias de cada pieza 25

Otro problema indecidible: el tiling dado un conjunto de piezas, por ejemplo reglas: bordes adyacentes tienen el mismo dibujo no se pueden rotar hay infinitas copias de cada pieza podemos ubicarlos de modo tal que cubran todo el plano? 25

Otro problema indecidible: el tiling dado un conjunto de piezas, por ejemplo reglas: bordes adyacentes tienen el mismo dibujo no se pueden rotar hay infinitas copias de cada pieza podemos ubicarlos de modo tal que cubran todo el plano? no hay ningún programa que dado un conjunto finito de azulejos, decida si se puede cubrir todo el plano o no (teniendo en cuenta las reglas). 25

Resumen ahora es fácil definir un método efectivo: es un programa. pero se empezó a pensar en esto mucho antes de que existieran las computadoras se sabe que hay problemas fáciles (se resuelven rápido) el problema de buscar un elemento en una lista el problema de ordenar una lista hay un montón de problemas más difíciles para los que no se conoce una solución rápida (puede que exista pero que nadie la haya encontrado; o puede que no exista) el problema del coloreo de grafos el problema de la mochila hay problemas tan difíciles que ninguna computadora (ni ningún método efectivo) puede resolver el problema de la parada el problema del tiling 26