Vous êtes sur la page 1sur 24

Problemas de Grafos y Tratbilidad Computacional

Cronograma
03/09 Tcnicas de diseo de algoritmos, algoritmos robustos, algoritmos con certificados. 10/09 Teora de NP-Completitud. 17/09 Algunos problemas de grafos. 24/09 Algunas subclases de grafos conocidas. Distribucin de temas para TP
Problemas de grafos y Tratabilidad Computacional 2

Trabajo Prctico

Se formarn grupos de 2 o 3 personas. Se le asignar a cada grupo una porcin de una matriz similar a las columna de NPCompletitud de Johnson. Donde las columnas corresponden a problemas de grafos y las filas corresponden a las subclases de grafos vistas en las clases.
Problemas de grafos y Tratabilidad Computacional 3

Trabajo Prctico

Se deber presentar por cada celda (i,j) asignada un informe indicando si el problema j para la subclase de grafos i pertenece a alguna clase de problema conocida (P,NPCompleto, etc.). En caso que sea P, se deber describir el o los algoritmos ms eficientes (complejidad, tipo de algoritmo, tcnica utilizada). En caso que sea NP-completo o similar, se deber explicar como se prueba, la complejidad de la transformacin polinomial, etc. Existen caracterizaciones por subgrafos prohibidas para el problema de reconocimiento. Cada grupo deben dar una exposicin de aprox. 40 min.

Problemas de grafos y Tratabilidad Computacional

Cronograma
01/10 Ejemplo de un desarrollo de un algoritmo de reconocimiento. 15/10 Estructura PC-Tree 22/10 Descomposicin de grafos 29/10 Exposicin de Alumnos 05/11 Exposicin de Alumnos 12/11 Exposicin de Alumnos
Problemas de grafos y Tratabilidad Computacional 5

Cronograma
19/11 Consultas 26/11 Coloquio 03/12 Coloquio

Problemas de grafos y Tratabilidad Computacional

Bibliografa Bsica

A. Brandstadt, V. Bang Le and J. Spinrad, Graph classes: A survey, SIAM, 1999. G. Brassard, P. Bratley, Fundamental of Algorithmics, Prentice Hall, 1996. M. Garey, D. Jonhson, Computers and Intractability: A Guide to the Theory of NPCompleteness , W. Freeman and Co., 1979. M. Golumbic, Algorithmic graph theory and perfect graphs, Academic Press, 1980. (Second Edition 2004) J. McHugh, Algorithmic Graph Theory, Prentice Hall, 1990. T. McKee and F. McMorris, Topics in intersection graph theory, SIAM, 1999. C. Papadimitriou, Computational Complexity, Addison-Wesley, 1995.
Problemas de grafos y Tratabilidad Computacional 7

Qu es un algoritmo?
Un algoritmo es una sucesin finita de instrucciones bien definidas tal que:
i) No hay ambigedad en las instrucciones. ii) Despus de ejecutar una instruccin no hay ambigedad respecto de cual es la instruccin que debe ejecutarse a continuacin. iii) Despus de un nmero finito de instrucciones ejecutadas se llega siempre a la instruccin STOP (Un algoritmo siempre para).
Problemas de grafos y Tratabilidad Computacional 8

Problema y Algoritmo
PROBLEMA:
instancia de un problema datos de entrada de una instancia (E) solucin (S)

ALGORITMO:

tcnica para la resolucin de un problema funcin f tal que f (E) = S


Problemas de grafos y Tratabilidad Computacional 9

Complejidad
La complejidad de un algoritmo es una funcin que calcula el tiempo de ejecucin en funcin del tamao de la entrada de un problema. Peor Caso Caso Promedio

Problemas de grafos y Tratabilidad Computacional

10

Notaciones
Dadas dos funciones f y g : N R decimos que:
f(n) = O (g(n)) si c 0 y n0 N tal que f(n) c g(n) n n0 . f(n) = (g(n)) si c 0 y n0 N tal que f(n) c g(n) n n0 . f(n) = (g(n)) si c,c 0 y n0 N tal que c g(n) f(n) c g(n) n n0

. Si f(n) = O (g(n)) se dice que f es de orden n


Problemas de grafos y Tratabilidad Computacional 11

Tratabilidad Computacional
Cundo un algoritmo es suficientemente eficiente para ser usado en la prctica?

POLINOMIAL = bueno EXPONENCIAL = malo

Qu pasa si tengo complejidades como las siguientes?:

n 80 1.001n

Problemas de grafos y Tratabilidad Computacional 12

Tratabilidad Computacional
Cundo decimos que un problema est computacionalmente bien resuelto o tratable computacionalmente?

Cuando hay un algoritmo polinomial para resolverlo.

Problemas de grafos y Tratabilidad Computacional

13

Tcnicas de diseo de algoritmos


Algoritmos golosos
Dividir y conquistar Backtracking

Recursin
Programacin dinmica Algoritmos Probabilsticos

Problemas de grafos y Tratabilidad Computacional

14

Algoritmos Golosos
Tcnica primitiva que se usan principalmente para problemas de optimizacin. La idea es generar una solucin paso a paso de manera tal que en cada paso trata de lograr la mayor mejora posible. Ejemplos: algoritmo de Dijkstra para el problema de caminos mnimos, algoritmo de Prim y algoritmo de Kruskal para Arboles Generadores Mnimos. No siempre es devuelven las mejores soluciones.

Problemas de grafos y Tratabilidad Computacional 15

Dividir y conquistar
Consiste en descomponer la instancia del problema a ser resuelta en un nmero pequeo de subinstancias del mismo problema, resuelve sucesivamente e independientemente cada una de ellas, y combinando las subsoluciones obtenidas de manera tal que se obtenga la solucin de la instancia original. Es una tcnica top-town. Ejemplo: Bsqueda binaria,Merge Sort,Quick Sort.

Problemas de grafos y Tratabilidad Computacional

16

Backtracking
Tcnica para recorrer sistemticamente todas

las posibles configuraciones de un espacio. Puede pensarse tambin que es una tcnica para explorar implcitamente rboles dirgidos (o grafos dirgidos en general pero sin ciclos). No necesariamente se explora toda rama del rbol (poda). En general tiene complejidad exponencial.
Problemas de grafos y Tratabilidad Computacional 17

Recursin
Es una forma generalizada de induccin

matemtica que puede acompaar otras tcnicas tales como dividir y conquistar, backtracking, etc. Implcitamente utiliza un stack (pila). Ejemplos: Torres de Hanoi, DFS.

Problemas de grafos y Tratabilidad Computacional

18

Programacin Dinmica
Tcnica bottom-up. Empieza a solucionar instancias ms pequeas y va combinando estas para obtener soluciones para instancias cada vez ms grandes, hasta llegar a la instancia original que quiere resolver. Sirve para problemas que cumplen principio de optimalidad, es decir, la solucin ptima de cualquiera de estos problemas, se puede descomponer en soluciones ptimas de subproblemas. Ejemplos: coeficientes binomiales usando tringulo de Pascal, multiplicacin de n matrices, etc.

Problemas de grafos y Tratabilidad Computacional 19

Algoritmos probabilsticos
Cuando un algoritmo tiene que hacer una eleccin a veces es preferible elegir al azar en vez de gastar mucho tiempo tratando de ver cual es la mejor eleccin. Tiempo promedio de un algoritmo determinstico. (ejemplo: quicksort) Tiempo esperado promedio de un algoritmo probabilstico : es el tiempo medio de los tiempos de resolver la misma instancia del mismo problema muchas veces Peor tiempo esperado: tomando en cuenta el peor caso de todas las instancias de un cierto tamao.

Problemas de grafos y Tratabilidad Computacional 20

Clasificacin de algoritmos probabilisticos

Algoritmos al azar para problemas numricos: la respuesta es siempre aproximada pero se espera que la solucin sea mejor cuando ms tiempo hay para ejecutar el algoritmo. (integral).
Algoritmos de Monte Carlo: se quiere una respuesta exacta. Por ejemplo problemas de decisin. Un algoritmo Monte Carlo da siempre una respuesta pero la respuesta puede no ser correcta. La probabilidad de suceso, es decir de respuesta correcta crece con el tiempo disponible para correr ese algoritmo. La principal desventaja es que en general no se puede decidir eficientemente si la respuesta es correcta o no. (determinar si dado un arreglo de n elementos, ms de la mitad son iguales)
Problemas de grafos y Tratabilidad Computacional 21

Clasificacin de algoritmos probabilisticos

Algoritmos Las Vegas: nunca dan una respuesta incorrecta pero pueden no dar ninguna respuesta. Tambin la probabilidad de suceso, es decir de respuesta correcta crece con el tiempo disponible para correr ese algoritmo (protocolo para determinar un coordinador dentro de un anillo de n procesadores ).
Algoritmos Sherwood : en este caso el algoritmo siempre da una respuesta y la respuesta es siempre correcta. Se usan cuando algn algoritmo determinstico para resolver un algoritmo es mucho ms rpido en promedio que en el peor caso. Al incorporar un factor de azar el algoritmo puede llegar a eliminar la diferencia entre buenas y malas instancias (quicksort con pivot random).
Problemas de grafos y Tratabilidad Computacional 22

Algoritmos Robustos

Un algoritmo robusto es un algoritmo que resuelve un determinado problema para un subconjunto de instancias determinadas. Es decir, que si ejecutamos el algoritmo con un input de este subconjunto, el algoritmo lo resuelve satisfactoriamente y si el input no pertenece al subconjunto, o bien el algoritmo lo resuelve de todos modos o no lo puede resolver e informa que el input no pertenece al subconjunto de instancias esperadas.(Determinar el/los centro/s de un rbol).
Problemas de grafos y Tratabilidad Computacional 23

Algoritmos con certificados


Un algoritmo que resuelve un determinado

problema de decisin, no solamente da una respuesta s o no, sino adems entrega una estructura que permite certificar la correctitud de la respuesta, tanto para el s como para el no. Claramente, los certificados se debieran poder verificar en tiempo polinomial. (verificar si un grafo es bipartito)
Problemas de grafos y Tratabilidad Computacional 24