Problemas de Grafos y Tratbilidad Computacional - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Problemas de Grafos y Tratbilidad Computacional

Description:

03/09 T cnicas de dise o de algoritmos, algoritmos robustos, ... 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) ... – PowerPoint PPT presentation

Number of Views:201
Avg rating:3.0/5.0
Slides: 25
Provided by: www2D2
Category:

less

Transcript and Presenter's Notes

Title: Problemas de Grafos y Tratbilidad Computacional


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

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.

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.

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

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

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.

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

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

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

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 orden n

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
13
Tratabilidad Computacional
  • Cuándo decimos que un problema está
    computacionalmente bien resuelto o tratable
    computacionalmente?
  • Cuando hay un algoritmo polinomial para
    resolverlo.

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

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.

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.

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.

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.

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.

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.

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)

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

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

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)
Write a Comment
User Comments (0)
About PowerShow.com