Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Complejidad 2024-1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

ICS2121, Métodos de Optimización 2024-1

¿Podemos saber si un problema es “fácil” o “difı́cil”?


Una breve (e incompleta) introducción a la Complejidad
Computacional

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 1 / 16
Intuición

¿Qué es más fácil?


▶ Ordenar una lista de números.

▶ Resolver un problema de Programación Lineal.

▶ Resolver un Problema de Vendedor Viajero.

¿Cuánto esfuerzo requiere hacer esto?


¿Esfuerzo medido en qué?

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 2 / 16
Cómo se resuelve un problema

Para resolver un problema usamos un ALGORITMO.


Dificultad: la hemos asociado con el número de “iteraciones” y/o el tiempo de
computación.

¿Cuántas iteraciones se requieren para ordenar n números?

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 3 / 16
Cómo se resuelve un problema

¿Y para este problema? (Torres de Hanoi):

Objetivo: trasladar los discos desde la barra de la izquierda a la de la derecha, usando la


central como ayuda, sin colocar nunca sobre un disco, otro más grande.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 4 / 16
Cómo se mide la eficiencia

Intuición: número de “operaciones” necesarias hasta resolver el problema puede tomarse


como una medida de la eficiencia del algoritmo.
Para comparar dos algoritmos: comparar número de operaciones sobre datos
equivalentes, o problemas del mismo “tamaño”.

IDEA: estimar o calcular el número de operaciones como función de algún parámetro


relacionado al tamaño del problema.
▶ Cantidad de números.
▶ Número de argollas.

Cada instancia de un problema tiene un tamaño particular.


Denotemos por l el tamaño de una instancia de un problema.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 5 / 16
Problemas “Fáciles” y “Difı́ciles”

Definición
Dado un problema y un algoritmo para resolverlo, diremos que ese algoritmo resuelve el
problema en tiempo polinomial si el número de operaciones que se requieren para una
instancia de tamaño l está acotada por p(l), donde p() es un polinomio.

Diremos que un problema es resoluble en tiempo polinomial si existe un algoritmo tal


que para cualquier instancia del problema, la resuelve en tiempo polinomial.

Entonces: ordenar números es resoluble en tiempo polinomial, las Torres de Hanoi, NO


lo es.

¿Y Programación Entera...?

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 6 / 16
Problemas de decisión v/s de optimización

En el contexto más correcto uno considera problemas de “decisión” más que de


optimización.

Un problema es de decisión si las respuestas posibles son SI o NO.


Ejemplo, consideremos un poliedro P = {x ∈ Rn : Ax ≤ b} y un vector c.
▶ Problema de decisión: ¿Existe x ∈ P ?
▶ Problema de optimización: min{cT x : x ∈ P }.

Si sabemos resolver el problema de decisión, con algunas hipótesis adicionales puedo


optimizar.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 7 / 16
Clases de Complejidad
Definición
Se dice que un problema de decisión partenece a la clase P (polinomial) si existe un
algoritmo que se detiene con SI o NO en un número de etapas acotado por p(l), donde l es
el tamaño de la instancia y p es un polinomio.

Estos son los problemas “fáciles”.

Definición
Se dice que un problema de decisión pertenece a la clase NP (no determinı́stico polinomial)
si para una instancia de largo l, dada una posible solución al problema, es posible verificar si
la respuesta es SI o NO para esa solución en tiempo polinomial.

En otras palabras: es posible verificar si un candidato a solución dado es la respuesta


correcta, en tiempo polinomial, pero esto no significa que pueda encontrar una
respuesta correcta en tiempo polinomial...
(fácil de verificar, no necesariamente fácil de encontrar)

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 8 / 16
Clases de Complejidad

Ejemplos:
▶ El Problema de Vendedor Viajero
▶ Programación Entera
▶ El problema de la mochila

Si el problema es NP, ¿puedo dar una cota al esfuerzo máximo necesario para encontrar
una solución correcta?
Ilustremos para Programación Entera (decisión):
¿Existe x tal que Ax ≤ b, xj ∈ {0, 1}, j = 1, . . . , n?

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 9 / 16
Clases de Complejidad

Entonces:
▶ Hay problema fáciles, en P
▶ Hay problemas intratables, que requieren al menos tiempo exponencial
▶ Hay problemas que requieren a lo más, tiempo exponencial, en NP

¿Será posible que pueda resolver un problema NP de manera fácil?


La práctica parece indicar lo contrario.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 10 / 16
Los problemas NP-Completos

Existe un subconjunto de los problemas en NP que son los más difı́ciles de entre todos.

Definición
Sean A y B dos problemas de decisión. A es polinomialmente reducible a B si existe una
transformación g evaluable en tiempo polinomial que transforma una instancia e de A en
una instancia e′ = g(e) de B y e es SI si y sólo si la respuesta de g(e) es SI.

Definición
Un problema B en la clase NP se dice NP-Completo si cualquier problema A en NP se
puede reducir polinomialmente a B.

¿Qué pasa si descubro un algoritmo polinomial para un problema NP-completo?

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 11 / 16
Los problemas NP-Completos

Se conocen muchos problemas NP-completos:


▶ El problema del vendedor viajero.
▶ Corte máximo en un grafo (MAXCUT).
▶ Conjunto Independiente en un grafo.
▶ El problema de la mochila.
▶ Programación entera en muchas de sus variantes.
▶ Un “montón” de los que aparecen en aplicaciones...

El primer problema NP-completo fue identificado por Cook [1972].


(SATISFABILIDAD).
Después Held y Karp [1972] identificaron otros.
De ahı́ en adelante muchos otros fueron identificados...
Esto explica por qué a veces se observa tanto estudio de los problemas que son
NP-completos.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 12 / 16
Los problemas NP-Completos

Pregunta: dado que P ⊂ NP, ¿qué será cierto: P = NP ó P ̸= NP ?

Si fuera P = NP , entonces significa que efectivamente existen algoritmos eficientes


para problemas enteros y combinatoriales, aunque hasta ahora no los hemos encontrado.
Si la inclusión es estricta, entonces los problemas combinatoriales son, efectivamente,
muy difı́ciles.

La pregunta anterior aún está abierta.


( Y vale algunos millones:
http://http://www.claymath.org/millennium-problems)

Algunos piensan que podrı́a ser un caso de problema “indecidible”

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 13 / 16
Nota sobre la verdadera teorı́a formal

Hemos hablado de “tamaño” de problemas y “operaciones” de un algoritmo.


Pensamos en: número de variables y similares, sumas, multiplicaciones, comparaciones...

La teorı́a formal es un poco más complicada que eso...


Un algoritmo es un programa en un MODELO formal de un computador.
Este modelo formal es la MAQUINA DE TURING. (por Alan Turing).
El concepto de “tamaño” tiene un significado más preciso: es el número de sı́mbolos
necesarios para codificar el problema en el lenguaje adecuado: en este caso, número de
bits (incluyendo signos y marcadores).

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 14 / 16
La complejidad de Programación Lineal

Los problemas de Programación Lineal se resuelven habitualmente usando el método


SIMPLEX.

Resultado de 1972 de V. Klee y G. Minty:


Instancia de problema de programación lineal en n variables para la cual el método
SIMPLEX (con varios criterios conocidos de selección de variables) requiere realizar 2n
pivotes, luego, NO ES UN ALGORTIMO POLINOMIAL.

La pregunta sobre la complejidad de P.L. permaneció abierta hasta 1979:


Leonid Khachiyan presentó un algoritmo aplicable a P.L. que corrı́a en tiempo
polinomial:
▶ Método de las Elipsoides,
▶ origen anterior: Shor , Nemirovski y Yudin en los 70.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 15 / 16
La complejidad de Programación Lineal

Pero en la práctica, el Método de las Elipsoides era horrible de lento!


Y el SIMPLEX siguió reinando...

Aún es una pregunta abierta entender por qué el método SIMPLEX, pese a ser
ineficiente en el peor caso, se comporta muy bien “en promedio”.
Un comportamiento “promedio”: O(max{m, n}) pivotes para llegar al óptimo.
Pero la última palabra en polinomialidad para P.L. no estaba dicha...
1984: N. Karmarkar presentó un nuevo algoritmo que también era polinomial para
programación lineal.
El método presentado era un Algoritmo de Punto Interior.
Estos provee un método “teórico” polinomial para resolver P.L. pero, además, son
eficientes en la práctica...
Y es el siguiente tema del curso.

Prof. Jorge Vera (Escuela de Ingenierı́a) ICS2121 Métodos de Optimización Pontificia Universidad Católica de Chile 16 / 16

También podría gustarte