Documente Academic
Documente Profesional
Documente Cultură
Dante Zanarini
25 de junio de 2009
Dante Zanarini
Algoritmos Greedy
La estrategia a seguir
Dante Zanarini
Algoritmos Greedy
Algunos ejemplos
Si tenemos que dar un vuelto, elegir la moneda (o billete) de mayor denominacin que no supere el monto a devolver o En el problema del rbol recubridor minimal, elegir la arista de a menor peso que no cierre ciclos En el problema del viajante, elegir la ciudad ms cercana a la a actual Al armar el cdigo de Human, elegir los dos subrboles de o a menor frecuencia y unirlos
Dante Zanarini
Algoritmos Greedy
Para un problema de optimizacin, es bastante fcil encontrar o a una estrategia greedy Las estrategias greedy encuentran una solucin maximal al o problema. La solucin que tenemos no se puede mejorar, a menos, claro o est, que volvamos atrs y revisemos las elecciones que a a hicimos. La cuestin est en ver si esa solucin maximal es realmente o a o mxima a
Dante Zanarini
Algoritmos Greedy
1 kilo, $60
Dante Zanarini
Algoritmos Greedy
Arbol recubridor minimal Algoritmo del camino ms corto a Problema de la mochila fraccionaria Construccin del cdigo de Human o o Problemas de asignacin de tareas (algunos) o Problema del cambio (con algunas denominaciones)
Dante Zanarini
Algoritmos Greedy
Matching Problema del viajante SAT Coloreo Paginacin o Problema del cambio (con algunas denominaciones)
Dante Zanarini
Algoritmos Greedy
La pregunta del d a
Dante Zanarini
Algoritmos Greedy
Pensemos el problema P como uno en el cual, en cada paso, hay que tomar una decisin (greedy) y luego resolver un o subproblema P de P. Demostramos que siempre hay una solucin optima del o problema que toma la eleccin greedy. Por lo tanto, esta o eleccin es segura o Demostramos que, una vez que realizamos la eleccin greedy, o lo que queda es un subproblema tal que, si combinamos su solucin con la eleccin greedy, entonces obtenemos una o o solucin del problema original (subestructura ptima!) o o
Dante Zanarini
Algoritmos Greedy
Un ejemplo
Tenemos n tareas S = {a1 , . . . , an } que requieren acceso exclusivo a un recurso. Cada tarea tiene un tiempo de comienzo si y un tiempo de nalizacin fi . o Dos tareas ai , aj son compatibles si si fj o sj fi Hay que elegir el mximo nmero de tareas compatibles dos a a u dos
Dante Zanarini
Algoritmos Greedy
i si fi
1 1 4
2 3 5
3 0 6
4 5 7
5 3 8
6 5 9
7 6 10
8 8 11
9 8 12
10 2 13
11 12 14
Dante Zanarini
Algoritmos Greedy
1 2
i si fi
1 1 4
2 3 5
3 0 6
4 5 7
5 3 8
6 5 9
7 6 10
8 8 11
9 8 12
10 2 13
11 12 14
Dante Zanarini
Algoritmos Greedy
El algoritmo greedy
Dante Zanarini
Algoritmos Greedy
Otro enfoque...
Veamos otra forma de encarar el problema de optimalidad de un algoritmo greedy Utilizaremos una estructura algebraica llamada matroide, que caracteriza (algunos de los) problemas para los cuales los algoritmos greedy encuentran el ptimo o Escribiremos un algoritmo greedy para matroides, y demostraremos que es ptimo o Por lo tanto, dado un problema, si logramos representarlo como un matroide
1 2
sabemos que se puede seguir una estrategia greedy ya tenemos escrito el algoritmo que encuentra el ptimo o
Dante Zanarini
Algoritmos Greedy
Qu es un matroide? e
S es un conjunto nito I P(S) es una familia de subconjuntos de S, llamados conjuntos independientes, tales que, si B I y A B, entonces A I . A esta propiedad la llamamos propiedad hereditaria. Si A I , B I , y |A| < |B|, entonces existe algn elemento u x B \ A tal que A x I . A esta propiedad la llamamos propiedad de intercambio
Dante Zanarini
Algoritmos Greedy
Ejemplos de matroides
Ejemplo 1 (Grafos) S: conjunto de arcos de un grafo I : conjuntos de arcos ac clicos Ejemplo 2 (Matrices) S: conjunto de las de una matriz de tamao m n n I : conjunto de las linealmente independientes Ejemplo 3 (Subconjuntos) S: cualquier conjunto nito I : conjuntos con a lo sumo k elementos, para algn k |S| u
Dante Zanarini
Algoritmos Greedy
Ejemplo 4 (Matching) S: conjunto de arcos de un grafo I : conjuntos de arcos que no comparten vrtices e Ejemplo 5 (Mochila 0-1 de capacidad W) S = {w1 , w2 , . . . , wn } I : conjuntos {wi1 , . . . , wim } tales que wi1 + + wim W
Dante Zanarini
Algoritmos Greedy
Denicin 2 o Sean M = (S, I ) un matroide, A I . Un elemento x A es una extensin de A si x puede / o agregarse a A preservando independencia; es decir, si A {x} I A I es maximal si no tiene extensiones. Es decir, si no existe B I tal que A B
Dante Zanarini
Algoritmos Greedy
Teorema 3 Todos los elementos maximales de un matroide tienen el mismo cardinal Demostracin o Supongamos que no. Entonces existen A, B I maximales y tales que |A| < |B| Por la propiedad de intercambio, existe x B \ A tal que A {x} I A es extensible. Absurdo, pues es maximal!
Dante Zanarini
Algoritmos Greedy
Optimizacin en matroides o
Denicin 3 (Funcin peso en matroides) o o Sea M = (S, I ). Una funcin w : S R+ es una funcin de pesos o o para M. Para A I , el peso de A es w (A) =
xA
w (x)
Un problema de optimizacin en un matriode se reduce a o buscar un conjunto independiente A I tal que w (A) es mximo. a Tal A siempre ser maximal, dado que los pesos son positivos a
Dante Zanarini
Algoritmos Greedy
Dado que es independiente, y que cada x se agrega slo si o preserva independencia, el conjunto A devuelto es independiente Si n = |S|, ordenar nos lleva O(nlgn). La complejidad de GREEDY es entonces O(nlgn + nf (n)) donde f (n) es el tiempo requerido para vericar la condicin o de extensin o
Dante Zanarini Algoritmos Greedy
Dante Zanarini
Algoritmos Greedy
Correctitud de GREEDY
Teorema 6 El algoritmo GREEDY para matroides devuelve un subconjunto o ptimo de S. Demostracin o Usando los lemas anteriores
Dante Zanarini
Algoritmos Greedy
Un ejemplo conocido
Ejemplo 6 (Algoritmo de Kruskal) Sea G = (V , E ) un grafo con costos c : E R+ . Denimos M = (S, I ) y w donde S =E I son todos los conjunto de aristas ac clicos w (e) = w0 c(e), donde w0 > max {c(e) | e E } Ordenar las aristas ya sabemos, lo hacemos en tiempo O(|E |lg|E |) Para ver si A {x} es independiente (no forma un ciclo), puedo ir guardando las componentes conexas de A, resultando f O(|V |) (set-union-nd les suena?) Por lo tanto, GREEDY encuentra un rbol recubridor minimal a en tiempo O(|E |lg|E |)
Dante Zanarini Algoritmos Greedy
Conclusiones
Hemos encontrado una estructura algebraica que subyace a una tcnica de diseo de algoritmos e n Pudimos probar propiedades generales sobre esta tcnica e Escribimos un algoritmo general y calculamos su complejidad Dado un problema, si lo representamos como un problema de optimizacin en un matroide, tenemos todo resuelto o Hay mucho ms sobre lgebras y algoritmos... a a
Dante Zanarini
Algoritmos Greedy