problemas de grafos y tratbilidad computacional. problemas de grafos y tratabilidad computacional2...

24
Problemas de Grafos y Tratbilidad Computacional

Upload: juan-ponciano

Post on 28-Jan-2016

243 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de Grafos y Tratbilidad Computacional

Problemas de Grafos y Tratbilidad Computacional

Page 2: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

2

CronogramaCronograma

03/09 Técnicas de diseño de algoritmos, algoritmos robustos, algoritmos con certificados.

10/09 Teoría de NP-Completitud.17/09 Algunos problemas de grafos. 24/09 Algunas subclases de grafos conocidas.

Distribución de temas para TP

Page 3: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

3

Trabajo PrácticoTrabajo Práctico

Se formarán grupos de 2 o 3 personas. Se le asignará a cada grupo una porción de

una matriz similar a las columna de NP-Completitud de Johnson. Donde las columnas corresponden a problemas de grafos y las filas corresponden a las subclases de grafos vistas en las clases.

Page 4: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

4

Trabajo PrácticoTrabajo Práctico 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,NP-Completo, etc.). En caso que sea P, se deberá describir el o los algoritmos más eficientes (complejidad, tipo de algoritmo, técnica utilizada). En caso que sea NP-completo o similar, se deberá explicar como se prueba, la complejidad de la transformación polinomial, etc. Existen caracterizaciones por subgrafos prohibidas para el problema de reconocimiento.

Cada grupo deben dar una exposición de aprox. 40 min.

Page 5: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

5

CronogramaCronograma

01/10 Ejemplo de un desarrollo de un algoritmo de reconocimiento.

15/10 Estructura PC-Tree22/10 Descomposición de grafos29/10 Exposición de Alumnos05/11 Exposición de Alumnos12/11 Exposición de Alumnos

Page 6: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

6

CronogramaCronograma

19/11 Consultas26/11 Coloquio03/12 Coloquio

Page 7: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

7

Bibliografía BásicaBibliografía Básica 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.

Page 8: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

8

Qué es un algoritmo?Qué es un algoritmo?Un algoritmo es una sucesión finita de instrucciones “bien

definidas” tal que:

i) No hay ambigüedad en las instrucciones. ii) Después de ejecutar una instrucción no hay

ambigüedad respecto de cual es la instrucción que debe ejecutarse a continuación.

iii) Después de un número finito de instrucciones ejecutadas se llega siempre a la instrucción STOP (“Un algoritmo siempre para”).

Page 9: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

9

Problema y AlgoritmoProblema y AlgoritmoPROBLEMA:

instancia de un problema datos de entrada de una instancia (E) solución (S)

ALGORITMO:

técnica para la resolución de un problema función f tal que f (E) = S

Page 10: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

10

ComplejidadComplejidad

La complejidad de un algoritmo es una función que calcula el tiempo de ejecución en función del tamaño de la entrada de un problema.

Peor Caso Caso Promedio

Page 11: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

11

NotacionesNotacionesDadas 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

Page 12: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

12

Cuándo un algoritmo es suficientemente eficiente para ser usado en la práctica?

Qué pasa si tengo complejidades como las siguientes?:

n 80

1.001n

Tratabilidad Computacional

Tratabilidad Computacional

POLINOMIAL = “bueno”EXPONENCIAL = “malo”

Page 13: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

13

Cuándo decimos que un problema está computacionalmente bien resuelto o tratable computacionalmente?

Cuando hay un algoritmo polinomial para resolverlo.

Tratabilidad Computacional

Tratabilidad Computacional

Page 14: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

14

Algoritmos golosos Dividir y conquistar Backtracking Recursión Programación dinámica Algoritmos Probabilísticos

Técnicas de diseño de algoritmosTécnicas de diseño de algoritmos

Page 15: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

15

Técnica primitiva que se usan principalmente para problemas de optimización.

La idea es generar una solución 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 mínimos, algoritmo de Prim y algoritmo de Kruskal para Arboles Generadores Mínimos.

No siempre es devuelven las mejores soluciones.

Algoritmos GolososAlgoritmos Golosos

Page 16: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

16

Consiste en descomponer la instancia del problema a ser resuelta en un número pequeño 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 solución de la instancia original.

Es una técnica top-town. Ejemplo: Búsqueda binaria,Merge Sort,Quick Sort.

Dividir y conquistarDividir y conquistar

Page 17: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

17

Técnica para recorrer sistemáticamente todas las posibles configuraciones de un espacio. Puede pensarse también que es una técnica para explorar implícitamente árboles dirgidos (o grafos dirgidos en general pero sin ciclos).

No necesariamente se explora toda rama del árbol (poda).

En general tiene complejidad exponencial.

BacktrackingBacktracking

Page 18: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

18

Es una forma generalizada de inducción matemática que puede acompañar otras técnicas tales como “dividir y conquistar”, “backtracking”, etc.

Implícitamente utiliza un stack (pila). Ejemplos: Torres de Hanoi, DFS.

RecursiónRecursión

Page 19: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

19

Técnica bottom-up. Empieza a solucionar instancias más pequeñas y va combinando estas para obtener soluciones para instancias cada vez más grandes, hasta llegar a la instancia original que quiere resolver.

Sirve para problemas que cumplen “principio de optimalidad”, es decir, la solución óptima de cualquiera de estos problemas, se puede descomponer en soluciones óptimas de subproblemas.

Ejemplos: coeficientes binomiales usando triángulo de Pascal, multiplicación de n matrices, etc.

Programación DinámicaProgramación Dinámica

Page 20: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

20

Cuando un algoritmo tiene que hacer una elección a veces es preferible elegir al azar en vez de gastar mucho tiempo tratando de ver cual es la mejor elección.

Tiempo promedio de un algoritmo determinístico. (ejemplo: quicksort)

Tiempo esperado promedio de un algoritmo probabilístico : 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 tamaño.

Algoritmos probabilísticosAlgoritmos probabilísticos

Page 21: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

21

Algoritmos al azar para problemas numéricos: la respuesta es siempre aproximada pero se espera que la solución sea mejor cuando más tiempo hay para ejecutar el algoritmo. (integral).

Algoritmos de Monte Carlo: se quiere una respuesta exacta. Por ejemplo problemas de decisión. 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, más de la mitad son iguales)

Clasificación de algoritmos probabilisticos

Clasificación de algoritmos probabilisticos

Page 22: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

22

Algoritmos Las Vegas: nunca dan una respuesta incorrecta pero pueden no dar ninguna respuesta. También 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 algún algoritmo determinístico para resolver un algoritmo es mucho más rápido 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).

Clasificación de algoritmos probabilisticos

Clasificación de algoritmos probabilisticos

Page 23: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

23

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).

Algoritmos RobustosAlgoritmos Robustos

Page 24: Problemas de Grafos y Tratbilidad Computacional. Problemas de grafos y Tratabilidad Computacional2 Cronograma 03/09 Técnicas de diseño de algoritmos,

Problemas de grafos y Tratabilidad Computacional

24

Un algoritmo que resuelve un determinado problema de decisión, no solamente da una respuesta “sí” o “no”, sino además 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)

Algoritmos con certificadosAlgoritmos con certificados