Problemas de Grafos y Tratbilidad Computacional

Slides:



Advertisements
Presentaciones similares
Representación del conocimiento
Advertisements

Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Algoritmos Voraces.
Problemas Algorítmicos
Introducción a la máquina
Grupo 4 Matías Melgar Pablo Carbonell
Resolución de Problemas Algoritmos y Programación
Tema 1: Programación dinámica
Son problemas secuenciales: El problema se puede dividir en etapas. Definición: Método que permite determinar de manera eficiente las decisiones que optimizan.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Investigación Operativa
Complejidad Problemas NP-Completos
Tema 2: Métodos de ajuste
 La resolución de problemas algorítmicos no solamente implica que los informáticos sepan programar sino necesitan de otras habilidades como tener una.
GRAFOS HUGO ARAYA CARRASCO.
Introducción a la NP_Completitud
Programación de Computadores
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
Población y Muestra.
Resolución de Problemas Método Simplex

Análisis de Algoritmos
Algoritmos.

Diseño y análisis de algoritmos
Tablas de Hash.
Complejidad de los problemas de decisión
ALGORITMOS APROXIMADOS
(Organización y Manejo de Archivos)
Parte II. Algorítmica. 3. Algoritmos voraces.
Algoritmos y Estructuras de Datos III (segunda parte) 1er cuatrimestre 2010 Min Chih Lin Irene Loiseau.
Material de apoyo Unidad 4 Estructura de datos
Divide y vencerás 1. Método general.
complejidad de un problema.
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
4.  Métodos matemáticos.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
CONCEPTOS BÁSICOS FUNDACIÓN UNIVERSITARIA LOS LIBERTADORES Fredys Alberto Simanca Herrera Programación Estructurada Semana Bogotá, D.C
Parte II. Algorítmica. 4. Programación dinámica.
Sumario Significados de las operaciones aritméticas.
Parte I. Estructuras de Datos.
SIG. LAURA VELAZQUEZ MORELOS. Hace referencia a un refrán que implica resolver un problema difícil, dividiéndolo en partes más simples tantas veces como.
Problemas de grafos y Tratabilidad Computacional
Parte I. Estructuras de Datos.
Capítulo 6. ANÁLISIS DE ALGORITMOS
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
ALGORÍTMICA Ingeniería Técnica en Informática de Gestión y de Sistemas curso Teoría: Domingo Giménez Seminario C: José María Rodríguez Prácticas.
Diseño y análisis de algoritmos Análisis de Algoritmos II.
Escuela de Ciencias Basicas, Tecnología e Ingeniería
DISEÑAR Y ELABORAR ALGORITMOS Nombre: anayeli hernandez peralta Grado y grupo: 1 “3” Materia: Informática y computación Maestro: Ángel Buendía Turno: Vespertino.
DISEÑAR Y ELABORAR ALGORITMOS NOMBRE: LAURA PAEZ GARCIA GRADO Y GRUPO: 1 “3” MATERIA: INFORMÁTICA Y COMPUTACIÓN MAESTRO: ÁNGEL BUENDÍA TURNO: VESPERTINO.
Conalep Coacalco Algoritmos Recursivos
Introducción a los TADs
Resolución de problemas
“Análisis y Diseño de Algoritmos” 2a Entrega, Programa 6 Centro de Investigación y Estudios Avanzados del IPN Samuel Garrido Daniel 15-Abril-2004 México,
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Algoritmos.
La clase P juega un papel importante en la teoría de la complejidad computacional debido a que: 1. P es invariante para todos los modelos de cómputo que.
Problemas P, NP y NP-Completos CLASE P Los algoritmos de complejidad polinómica se dice que son tratables en el sentido de que suelen ser abordables en.
Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Programación I Prof. Carolina Cols. Algoritmo es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.
Transcripción de la presentación:

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

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

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

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

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

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

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, 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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