La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Problemas de Grafos y Tratbilidad Computacional

Presentaciones similares


Presentación del tema: "Problemas de Grafos y Tratbilidad Computacional"— Transcripción de la presentación:

1 Problemas de Grafos y Tratbilidad Computacional
Ingeniería de Software II Problemas de Grafos y Tratbilidad Computacional Validación y Verificación

2 Problemas de grafos y Tratabilidad 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. Distribución de temas para TP Problemas de grafos y Tratabilidad Computacional

3 Problemas de grafos y Tratabilidad Computacional
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 Problemas de grafos y Tratabilidad Computacional
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 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 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 Problemas de grafos y Tratabilidad Computacional
Cronograma 19/11 Consultas 26/11 Coloquio 03/12 Coloquio Problemas de grafos y Tratabilidad Computacional

7 Problemas de grafos y Tratabilidad Computacional
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, (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 Problemas de grafos y Tratabilidad Computacional
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 Problemas de grafos y Tratabilidad Computacional
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 Problemas de grafos y Tratabilidad Computacional
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) 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

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


Descargar ppt "Problemas de Grafos y Tratbilidad Computacional"

Presentaciones similares


Anuncios Google