La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Diseño y análisis de algoritmos

Presentaciones similares


Presentación del tema: "Diseño y análisis de algoritmos"— Transcripción de la presentación:

1 Diseño y análisis de algoritmos
Técnica de diseño “Greedy”

2 Temario Técnica de diseño “Greedy” Introducción Esquema genérico
Aplicaciones Mínimo árbol de cobertura Problema de la mochila

3 Técnica de diseño “Greedy”
Introducción Estos algoritmos se usan típicamente en problemas de optimización, donde hay que encontrar un máximo o un mínimo. Los algoritmos greedy, para alcanzar el objetivo, toman decisiones de corto alcance, basadas en información inmediatamente disponible, sin importar las consecuencias futuras. Esta característica hace que , en general, sean algoritmos eficientes y fáciles de implementar, pero no está asegurado que llegen a la solución óptima y a veces no llega a una solución a una solución factible. Ejemplos: Dado un conjunto dado de monedas de distinta denominación, ¿cuál es la Mínima cantidad de monedas necesarias para pagar x pesos? Problema de la mochila Encontrar el camino más corto en un grafo.

4 Técnica de diseño “Greedy”
Introducción Características generales: Se compone de un conjunto C de candidatos de los cuales se debe seleccionar un subconjunto que optimice alguna característica. Usa generalmente una función de evaluación. A medida que avanza el algoritmo, se van seleccionando candidatos y se los coloca en al conjunto S de candidatos aceptados o se rechaza, lo más probable, por no satisfacer cierta(s) restricciones del problema. Existe una función esSolución() que determina si un conjunto de candidatos es una solución, no necesariamente óptima, del problema. Existe una función esViable() que determina si una solución puede ser extendida por un candidato para formar una solución, no necesariamente óptima del problema . Existe una función seleccion() , que devuelve el candidato más promisorio del conjunto de aquellos aún no considerados.

5 Técnica de diseño “Greedy”
Esquema genérico Crear C conjunto de cadidatos; S:= vacía; MIENTRAS NOT esSolución(S) y C NO VACIO HACER x=selecion(C) //Seleccióne el “mejor” elemento del pool de candidatos C= C – {x} SI esViable(S {x}) //ej:satisface restricciones) ENTONCES S = S {x} FIN-SI FIN –Mientras SI esSolucion(S) ENTONCES retorno S SINO retorno no existen soluciones

6 Técnica de diseño “Greedy”
Árboles de cobertura minimal Problema: Sea G(N,A) un grafo no dirigido y conexo, con pesos en sus arcos. Un árbol de cobertura minimal (Min. Spanning Tree), es un subgrafo G’(N,A’), , también conexo. Dado un un G, encontrar al Arbol de cobertura minimal. Se puede demostrar que uno de estos subgrafos siempre existe, si G es conexo, y además el resultado es un árbol (grafo sin ciclos). Es un problema abstracto pero tiene aplicaciones, por ejempo en el diseño de redes de telecomunicaciones. Un enfoque greedy para solucionar este problema un conjunto de candidatos a A. Un conjunto es una solución si contiene n –1 arcos donde n=cantidad de nodos. El control de viable se puede hacer verificando la no existencia de ciclos (las dos condiciones anteriores son necesarias) De acuerdo a distintas funciones de selección, se definen dos algoritmos para este problema. Kruskal y Prim.

7 Técnica de diseño “Greedy”
Árboles de cobertura minimal Se puede demostrar que tanto el algoritmo de Kruskal y Prim llegan a soluciones correctas y óptimas (inusual para algoritmos greedy). Para ello se debe usar el siguiente Lema: Sea G(N,A), un grafo no dirigido, conexo, con pesos; y un conjunto promisorio de arcos tal que ninguno de sus miembros toca a B. Luego si (u,v) es uno de los arcos minimales, que tocan B, entonces también es promisorio. Donde: Sea T es promisorio si está incluido en una solución óptima del problema. Sea , y Se dice que (u,v) toca B si , o El algoritmo de Kruskal, esun algoritmo greedy que resuelve este problema. Se caracteriza por tener la función de selección que elige en cada iteración al menor de los arcos todavía no considerados. Si el arco seleccionado junto con la solución parcial es viable, entonces se incluye en la solución parcial. En caso contrario es descartado.

8 Técnica de diseño “Greedy”
Árboles de cobertura minimal Ejemplo, para el siguiente grafo: Paso Arco Peso Acum Nodos conectados {a}{b} {c} {d} {e} {f} {g} (a,b) {a,b} {c} {d} {e} {f} {g} (b,c) {a,b,c} {d} {e} {f} {g} (d,e) {a,b,c} {d,e} {f} {g} (f,g) {a,b,c} {d,e} {f,g} (a,d) {a,b,c,d,e} {f,g} (b,e) 4 rechazado b y e pertenecen a un componente (d,g) {a,b,c,d,e,f,g} Resultado, el siguente árbol de cobertura mínima. Implementación: Ordenar los arcos al principio para que la selección sea eficiente. Usar conjuntos disjuntos para representar los nodos conectados y validar si un arco nuevo conecta componentes disjuntos

9 Técnica de diseño “Greedy”
Árboles de cobertura minimal Sea G(N,A) un grafo conexo , con pesos enteros para cada arco A Ordenar en L los elementos de A por peso en orden creciente T:= vacía; a:= cantidad arcos; n:=cantidad de nodos; D:=inicializar n conjuntos de componentes disjuntos // uno por cada nodo MIENTRAS NOT T contiene n-1 arcos HACER (u,v)=primer elemento de L eliminar primer elemento de L conju:=buscarenD(u); //entrega el conjunto al que pertenece el nodo u del arco conjv:=buscarenD(v); //entrega el conjunto al que pertenece el nodo v del arco SI conju=conjv //el arco toca, o lo mismo une conjuntos disjuntos unirenD(u,v) T = T {(u,v)} FIN-SI FIN –Mientras //la solución esta asegurada

10 Técnica de diseño “Greedy”
Árboles de cobertura minimal En cuanto a la complejidad del algoritmo de Kruskal, depende de l cantidad de arcos y la cantidad de nodos. En cuanto al ordenamiento inicial, en el mejor caso es de El resto del algoritmo tiene un ciclo y funciones de búsqueda que podrían tardar en el peor caso un tiempo lineal , por lo que el peor caso es que el orden de generación del árbol sea Además en un grafo conexo , en el peor caso se puede reemplazar una forma cuadrática en la complejidad del algoritmo. Dejaremos el algoritmo Prim, para los grupos de investigación de este problema.

11 Técnica de diseño “Greedy”
Problema de la mochila val. continuos Problema: Se tienen n objetos y una mochila (cada objeto i tiene un peso y un valor ;la mochila tiene una capacidad W). Se pretende encontrar la manera de cargar la mochila de forma que maximice el valor de lo transportado, respetando su capacidad máxima. Es decir encontrar valores tal que, se maximice sujeto a la restricción Claramente si , entoncs la solución es trivial logra el máximo de utilidad. Los casos interesantes ocurren cuando Se puede implementar un algoritmo greedy con diversas estrategias de selección de objetos.

12 Técnica de diseño “Greedy”
Problema de la mochila, implementación Sean w[1..n], v[1..n] y x[1..n] arreglos con pesos, valores y la solución FOR i:=1 TO n DO x[i]:=0.0; FIN-FOR peso:=0; MIENTRAS peso < W HACER i:=selección() //de acuerdo a distintas estrategias SI peso+w[i]<W ENTONCES x[i]:=1; peso:=peso+ w[i] SINO x[i]:=(W-peso)/w[i]; peso:=W FIN-SI FIN –Mientras Retorne x

13 Técnica de diseño “Greedy”
Problema de la mochila val. continuos Estrategias: La clave es definir una buena función de selección, que permita al algritmo lograr un máximo de utilidad: Elegir el objeto con mayor beneficio o valor, es una primera aproximación, pero puede conducir a que la mochila se llene muy rápido consiguiendo un valor subóptimo o valor total bajo. Elegir el objeto con menos pesos, es decir, que llene menos la mochila, con la idea de acumular beneficios de muchos objetos. Sin embargo es posible que se elija un objeto con poco beneficio simplemente porque pesa poco. La tercera estrategia, que es la óptima, es tomar siempre el objeto que proporcione el mayor valor por unidad de peso.

14 Técnica de diseño “Greedy”
Problema de la mochila val. continuos Ejemplo: Sea n =5, W=100 y objetos con los siguientes pesos y valores: obj.1 obj.2 obj.3 obj.4 obj.5 w v Considerando las tres estrategias para selección: mayor valor, el del menor peso; o la de mayor valor relativo al peso. Las soluciones son para cada caso: obj.1 obj.2 obj.3 obj.4 obj.5 total max v min w max v/w

15 Técnica de diseño “Greedy”
Problema de la mochila val. continuos Correctitud: Teorema: El algoritmo greedy para el problema de la mochila con valores continuos con selección por mayor encuentra una solución optima siempre. Esto no se cumple cuando se restringe al caso más realista en el problema de la mochila con valores enteros, el objeto va o no va. Para los valores anteriores la solución óptima no es factible. Complejidad. Si se ordenan previamente los elementos de acuerdo con alguno de los criterios se tiene una selección en tiempo constante, por lo que la complejidad es


Descargar ppt "Diseño y análisis de algoritmos"

Presentaciones similares


Anuncios Google