1 / 24

Problemas de Grafos y Tratbilidad Computacional

Problemas de Grafos y Tratbilidad Computacional. Cronograma. 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.

geraldo
Download Presentation

Problemas de Grafos y Tratbilidad Computacional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Problemas de Grafos y Tratbilidad Computacional

  2. Cronograma 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 Problemas de grafos y Tratabilidad Computacional

  3. Trabajo 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. Problemas de grafos y Tratabilidad Computacional

  4. Trabajo 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. Problemas de grafos y Tratabilidad Computacional

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

  6. Cronograma 19/11 Consultas 26/11 Coloquio 03/12 Coloquio Problemas de grafos y Tratabilidad Computacional

  7. Bibliografí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. Problemas de grafos y Tratabilidad Computacional

  8. 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”). Problemas de grafos y Tratabilidad Computacional

  9. Problema y Algoritmo PROBLEMA: • 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 Problemas de grafos y Tratabilidad Computacional

  10. Complejidad 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 Problemas de grafos y Tratabilidad Computacional

  11. 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 ordenn Problemas de grafos y Tratabilidad Computacional

  12. Tratabilidad Computacional 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 POLINOMIAL = “bueno” EXPONENCIAL = “malo” Problemas de grafos y Tratabilidad Computacional

  13. Tratabilidad Computacional Cuándo decimos que un problema está computacionalmente bien resuelto o tratable computacionalmente? Cuando hay un algoritmo polinomial para resolverlo. Problemas de grafos y Tratabilidad Computacional

  14. Técnicas de diseño de algoritmos • Algoritmos golosos • Dividir y conquistar • Backtracking • Recursión • Programación dinámica • Algoritmos Probabilísticos Problemas de grafos y Tratabilidad Computacional

  15. Algoritmos Golosos • 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. Problemas de grafos y Tratabilidad Computacional

  16. Dividir y conquistar • 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. Problemas de grafos y Tratabilidad Computacional

  17. Backtracking • 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. Problemas de grafos y Tratabilidad Computacional

  18. Recursión • 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. Problemas de grafos y Tratabilidad Computacional

  19. Programación Dinámica • 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. Problemas de grafos y Tratabilidad Computacional

  20. Algoritmos probabilísticos • 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. Problemas de grafos y Tratabilidad Computacional

  21. Clasificación de algoritmos probabilisticos • 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) Problemas de grafos y Tratabilidad Computacional

  22. Clasificación de algoritmos probabilisticos • 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). Problemas de grafos y Tratabilidad Computacional

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

  24. Algoritmos con certificados • 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) Problemas de grafos y Tratabilidad Computacional

More Related