1 / 16

Diseño y análisis de algoritmos

Diseño y análisis de algoritmos. Técnica de diseño “Greedy” II. Temario. Técnica de diseño “Greedy” Aplicaciones Caminos más cortos con origen único Coloreado de Grafos Problema del vendedor viajero. Técnica de diseño “Greedy” Caminos más cortos con origen único. Problema:

lora
Download Presentation

Diseño y análisis de algoritmos

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. Diseño y análisis de algoritmos Técnica de diseño “Greedy” II

  2. Temario • Técnica de diseño “Greedy” • Aplicaciones • Caminos más cortos con origen único • Coloreado de Grafos • Problema del vendedor viajero

  3. Técnica de diseño “Greedy” • Caminos más cortos con origen único Problema: Sea G(N,A) un grafo dirigido y conexo, con pesos en sus arcos (no negativos), donde se distingue un nodo de origen. Hallar los caminos desde el origen hasta cada uno de los restantes nodos con la menor longitud posible. Considerar el grafo representado por una matriz de adyacencia Dnxn, con nodos 1..n, y el nodo origen, etiquetado con 1. G[i,j] contiene el peso del arco (i,j) si o G[i,j]= si el arco no existe. G[i,i] = nulo. Se verá primero el problema de encontrar las distancias mínimas, y después los caminos que la implementan. Un enfoque greedy es el Algoritmo de Dijsktra, para resolver este problema. Consiste en mantener en S al conjunto de nodos cuyas distancias mínima ya se conoce y en C a aquellos que todavía falta calcular. En cada paso se selecciona el nodo de C más cercno al origen. Luego de incorporar un nodo a S, se comprueba si los caminos todavía no definitivos se Pueden acortar pasando por él.

  4. Técnica de diseño “Greedy” • Caminos más cortos con origen único Implementación Sea D[1..n] un arreglo donde D[i] es la distancia más corta de 1 a i conocida hasta el momento. FUNCION dijsktra(G[1..n,1..n]):[1..n] DE i:=1 to n HACER D[i]:=G[1,n] FIN-De S:={1} ; C:={2....n}; MIENTRAS NOT S contiene n nodos HACER v := elemento de C que minimiza en D[v] S:=S {v} ; C:=C-{v} PARA cada w en C HACER D[w]:=min{D[w], D[v]+ G[v,w]} FIN-Para FIN –Mientras //la solución esta asegurada Retorne D

  5. Técnica de diseño “Greedy” • Caminos más cortos con origen único Ejemplo, para el siguiente grafo: • Paso v C D • - {2,3,4,5} [50,30,100,10] • 5 {2,3,4} [50,30,20,10] • 4 {2,3} [40,30,20,10] • 3 {2} [35,30,20,10] • 2 {} [35,30,20,10] • G(N,A) • 1 2 3 4 5 • --- 50 30 100 10 • --- --- --- --- --- • --- 5 --- --- --- • --- 20 50 --- --- • --- --- --- 10 ---

  6. Técnica de diseño “Greedy” • Caminos más cortos con origen único • Para obtener los caminos más cortos: • Es suficiente mantener un arreglo auxiliar P[1..n] inicializado en 1 (contiene el último • nodo en el camino más corto entre 1 e i. • Reemplazar la sentencia: • D[w]:=min{D[w], D[v]+ G[v,w]} • por: • SI D[w] > D[v]+ G[v,w] ENTONCES • D[w]:= D[v]+ G[v,w] • P[w]:=v • FIN-SI • ¿Ejercicio:cómo se obtiene el camino a partir del arreglo P? • Complejidad: • Fase de inicialización de arreglo y creación de los conjuntos es • Dento del mientras prinsipal hay una selección qué podría ser rápida, pero hay otro ciclo dentro por lo que es la complejidad final.

  7. Técnica de diseño “Greedy” • Coloreado de grafos • A veces se utilizan algoritmos greedy a pesar de que no calculan soluciones óptimas: • - Bien porque el cálculo de la solución óptima es demaciado costoso, • - Bien porque porque el algoritmo greedy calcula una solución subóptima que resulta suficiente. • Problema: • Sea G(N,A), un grafo no dirigido, cuyos nodos se desea colorear. • Se exige que todo par de nodos unidos por un arco (adyacentes), tengan asignados un color diferente. • Minimizar el número de colores cupliendo la restricción. • Este problema es conceptual pero tiene aplicaciones, por ejemplo en rdes de antenas de • telefonía celular: donde los colores son frecuencias que no pueden usarse entre dos • antenas adyacentes. • Optimización de código en la CPU. • Coloreado de mapas, usar el mínimo de colores para cada pais sin que los paises • adyacentes tengan los mismos colores.

  8. Técnica de diseño “Greedy” • Coloreado de grafos • Una posible solución greedy podría ser: • Escoger inicialmente un color y un nodo arbitrario como punto de partida; • Tratar de asignar ese color al mayor número posible de nodos, respetando la restricción impuesta (nodo adyacentes deben tener distinto color); • Escoger un nodo aún no coloreado y un color distinto y repetir el proceso hasta que todos los nodos tengan un color. • Ejemplo: 3 3 1 2 5 1 2 5 4 4 Aplicando el algoritmo

  9. Técnica de diseño “Greedy” • Coloreado de grafos Implementación Sea G[1..n,1..n] grafo con valor 1 en G[i,j]=G[j,i], si existe arco (i,j), 0 en caso contrario. Sea D[1..n] un arreglo donde D[i] es el color del nodo i. Sea S conjunto de nodos coloreados y C conjunto de nodos por colorear FUNCION coloreado(G[1..n,1..n]):[1..n] D[1]:=color S:={1} ; C:={2....n};v:=1;no_colorear:=FALSE; MIENTRAS NOT S contiene n nodos HACER PARA cada w en C HACER PARA cada v tal que D[v]=color HACER SI G[v,w] =1 ENTONCES no_colorear:=TRUE Fin-si FIN-Para SI NOT no_colorear ENTONCES S:=S {w} ; C:=C-{w} D[w]:=color; no_colorear :=FALSE; Fin-Si FIN-Para color:=color+1; v:=proximo C sin colorear; C:=C-{v}; no_colorear :=FALSE; FIN –Mientras //la solución esta asegurada la optimalidad no Retorne D

  10. Técnica de diseño “Greedy” • Coloreado de grafos La implementación es muy sensible a la lista de candidatas, si se toma el mismo grafo pero con una lista C={5,2,3,4}, al algoritmo propuesto colorearía 1 y 5 de un color, pero luego al tratar de colorear 2, detecta que es adyacente con 1 por lo que le asigna otro color, y necesitaría un tercer color para 3 y 4. 3 1 2 5 4 Por lo tanto es una algoritmo heurístico que tiene la posibilidad, pero no la certeza, de encontrar la solución óptima. Todos los algoritmos exactos conocidos para el coloreado de grafos emplean un exponencial, mientras que el expuesto aquí es . Tiempo que puede mejorarse con alguna estrategia, tal vez de preprocesamiento de la información.

  11. Técnica de diseño “Greedy” • Problema del vendedor viajero Problema: Originalmente este problema consiste en un vendedor que debe visitar n ciudades, las distancias de un viaje entre cada par de ciudades se representa en una matriz. Se requiere partir de una ciudad y hacer un recorrido visitando cada una de las restantes ciudades, exactamenta una vez cada ciudad , regresando al punto de partida, de tal forma que el largo del trayecto total sea mínimo. Se pueden pensar las distancias como costos de viaje entre ciudades. Además puede ser que ir de a-b tenga un costo o una distancia distinta que el recorrido b-a, esta es una variante llamada ATSP (Asymetric Travel Salesman Problem). Este problema tiene muchas aplicaciones, tales como minimizar costo en procesos de abastecimiento, diseño de microchips. Por ejemplo, una compañía de teléfonos debe elegir la ruta para un recolector de dinero de las cabinas públicas instaladas en la ciudad.

  12. Técnica de diseño “Greedy” • Problema del vendedor viajero Ejemplo: Los datos pueden entregarse como coordenadas en el espacio, para el ejemplo, en kilómetros, relativos a la central. Cinco cabinas telefónicas b,c,d,e,f , para las que se conocen sus coordenadas relativas a la central telefónica a, desde la que parte el recolector y a donde debe regresar al terminar. La distancia es la distancia euclideana.

  13. Técnica de diseño “Greedy” • Problema del vendedor viajero El algoritmo usando “fuerza bruta” consiste en intentar todas las posibilidades, es decir, calcular las longitudes de todos los recorridos posibles y seleccionar el recorrido de longitud mínima. Pero en la medida que aumenta la cantidad de ciudades el al goritmo se torna inviable, pues la cantidad posible de recorridos es = (n-1)!/2. n= 5, 60 posibilidades. n=17; posibilidades. Una aproximación greedy simple, se conoce como el algoritmo del vecino más cercano. Consite en comenzar en el punto de partida, elegir en cada paso la ciudad no visitada con distancia mínima.

  14. Técnica de diseño “Greedy” • Problema del vendedor viajero Implementación Sea G[1..n,1..n] grafo con valor distancia en G[i,j]=G[j,i], 0 en caso G[i,i]. Sea S conjunto de nodos visitados y C conjunto de nodos por visitar Sea d distancia del tour. FUNCION TSP(G[1..n,1..n]):distancia d:=0 S:={1} ; C:={2....n}; v:=1 MIENTRAS NOT S contiene n nodos HACER distmin:=inf; PARA w en C HACER SI G[v,w] <distmin ENTONCES distmin:=G[v,w] c:=w Fin-Si FIN-Para S:=S {c} ; C:=C-{c}; v:=c; d:=d+ distmin; FIN –Mientras d:=d+ G[1,v] //la solución esta asegurada la optimalidad no Retorne distancia

  15. Técnica de diseño “Greedy” • Problema del vendedor viajero Ejemplo: Usando el algoritmo. • Paso S C distancia • {a} {b,c,d,e,f} • {a-b} {c,d,e,f} 5 • {a-b-c} {d,e,f} 10 • {a-b-c-d} {e,f} 24 • {a-b-c-d-e} {f} 27 • {a-b-c-d-e-f} {} 32 /falta el regreso • {a-b-c-d-e-f-a} {} 50

  16. Técnica de diseño “Greedy” • Problema del vendedor viajero La solución óptima para este caso es :a-c-d-e-f-b-a, con una distancia de 48,39, sólo un 3,3% de diferencia con 50, que es baja, puede haber mucha más con este algoritmo que es el más sencillo, pero a la vez es muy efiiente con una complejidad cuadrática. Queda como ejercicio inventar alguna otra heurística, que mejore los resultados, especialmente cuando las soluciones no son tan ovias.

More Related