Clase18Abril-EstrategiasVoraces
-
Upload
claudio-urrutia -
Category
Documents
-
view
214 -
download
0
Transcript of Clase18Abril-EstrategiasVoraces
-
7/21/2019 Clase18Abril-EstrategiasVoraces
1/42
Algoritmos voraces(Greedy algorithms)
-
7/21/2019 Clase18Abril-EstrategiasVoraces
2/42
Algoritmos voraces
Tambin conocidos como algoritmos vidos omiopes
Su caracterstica es que toman decisiones basndoseen la informacin que tienen en forma inmediata, sintener en cuenta los efectos que esto pueda tener en
el futuro, es decir, nunca reconsidera su decisin, seacual fuera la situacin que ocurrir ms adelante
Se confa que la decisin tomada sea la mejor para la
solucin general del problema...
-
7/21/2019 Clase18Abril-EstrategiasVoraces
3/42
Algoritmos voraces
Utiliados en aplicaciones de optimiacin...
Son algoritmos fciles de dise!ar " de implementar pero NOsiempre llevan a una solucin correcta del
problema
#uando si obtienen la solucin correcta, lo $acen deuna manera eficiente Sin embargo, es difcil demostrar formalmente cuando
un algoritmo vora es correcto o no...
-
7/21/2019 Clase18Abril-EstrategiasVoraces
4/42
Ejemplo: cambio
%l cliente compra unamercancia de &' pesos "
paga con ()** +a" que dar pesos
con monedas de (&*,()*, (- " ()
Se considera ptima lasolucin que entreguelas menos monedas.
-
7/21/2019 Clase18Abril-EstrategiasVoraces
5/42
Algoritmo cambio
epetir/ %legir la moneda ms grande que no supere el cambio a entregar 0asarla al montn del cambio
+asta que se alcance el cambio e1acto 2o no se
pueda3
Seleccin
Factibilidad
Verificacin de la solucin
-
7/21/2019 Clase18Abril-EstrategiasVoraces
6/42
Ejemplo cambio
Tomar moneda de/ 4levamos/ &* 5 &*
&* 5 6* &* 5 7* )* 5 * - 5 -
) 5 7 ) 5
-
7/21/2019 Clase18Abril-EstrategiasVoraces
7/42
Estructura general de un
algoritmo voraz Se apo"a en un conjunto original de datos 2C3, " el
conjunto resultante que contendr la solucin 2S3
S =
Mientras C y no se haya encontrado la solucin:
x = seleccinde mejor candidato de C C = C - {x}
si esfactibleS {x} entonces S = S {x}
Si S tiene la solucindevolver S, sino, no hay solucin
-
7/21/2019 Clase18Abril-EstrategiasVoraces
8/42
El problema del rbol de
extensin mnima 8ado un grafo no dirigido " ponderado Cul es el costo MNIMO para tener a todos los
vrtices conectados? 4a solucin del problema, implica que se obtenga un
subgrafo del grafo original, en el que 9: se tengan
ciclos por lo tanto, la solucin obtiene un ;?9 @A9>@B por la optimiacin
que se realia.
-
7/21/2019 Clase18Abril-EstrategiasVoraces
9/42
Ejemplo
C#mo puedo tener conectadas a las siguientesciudades por un costo mnimoD
Monterrey
Reynosa
Tampico
Cd. Victoria
Saltillo
Mxico DF
4!"
"#
$%&
#!#$
-
7/21/2019 Clase18Abril-EstrategiasVoraces
10/42
Ejemplo
C#mo puedo tener conectadas a las siguientesciudades por un costo mnimoD
Monterrey
Reynosa
Tampico
Cd. VictoriaSaltillo
Mxico DF
4!"
"#
$%&
#!#$
-
7/21/2019 Clase18Abril-EstrategiasVoraces
11/42
Algoritmo general paraobtener el !rbol de extensin
mnima Sea el grafo E F 2G, B3 en donde G es el conjunto de
vrtices " B el conjunto de arcos de la forma !vi, vj".
S =
Mientras !no se haya resuelto el #ro$lema"
Seleccionar un arco de % de acuerdo a cierta #ol&tica de
o#timi'acin --> SELECCION Si al a(re(ar ese arco a S no (enera un ciclo en el su$(ra)o,a(re(arlo a S --> FC!I"ILI##
Si !*,S" cu$re todos los v+rtices, el #ro$lema se ha resuelto --
> $E%IFICCI&N #E L SOL'CI&N
a )orma en ue se
hace la seleccindetermina el al(oritmo
es#ec&)ico
-
7/21/2019 Clase18Abril-EstrategiasVoraces
12/42
Algoritmo de "rim
S =
. = {v/}
Mientras !no se haya resuelto el #ro$lema"
Seleccionar el v+rtice de *-. ue sea el m0s
cercano !menor #eso" a al(uno de los v+rtices
en .%(re(ar el v+rtice a .
%(re(ar el arco corres#ondiente a S
Si . = * el #ro$lema se ha resuelto
-
7/21/2019 Clase18Abril-EstrategiasVoraces
13/42
Ejemplo
S =
. = {v%}*-. = {v1, vC, v2, v3}
Seleccionar el arcode menor costo de
. a *-.7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
14/42
Ejemplo
S = {!v%, v1"}
. = {v%,,v1}*-. = {vC, v2, v3}
Seleccionar el arcode menor costo de
. a *-.7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
15/42
Ejemplo
S = {!v%, v1",!v1, v3"}
. = {v%,,v1, v3}*-. = {vC, v2}
Seleccionar el arco demenor costo de . a
*-.7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
16/42
Ejemplo
S = {!v%, v1",!v1, v3",
!v3, vC"}. = {v%,,v1, v3, vC}
*-. = {v2}
Seleccionar el arco de
menor costo de . a
*-.
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
17/42
Ejemplo
S = {!v%, v1",!v1, v3",
!v3, vC", !vC, v2" }
. = {v%,,v1, vC, v2, v3}
*-. =
4uesto ue . es i(ual a
*, se ha encontrado
la solucin7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
18/42
#mplementacin "rim
%structuras de datos/
H/ @atri de ad"acencias.
nearestIiJ/ >ndice del vrtice de K ms cercano a vi.
distanceIiJ/ peso del arco entre vi" el vrtice de
nearestIiJ.
-
7/21/2019 Clase18Abril-EstrategiasVoraces
19/42
#deas algoritmo
Se inicialia nearestIiJ con ) "distanceIiJ con HI)JIiJ.
Sigue el ciclo para n5) vrtices que pasan a K Se encuentra el mnimo de distanceIiJ, el ndice es
vnear.
Se a!ade a L el vrtice entre vnear " nearestIvnearJ Se $ace distanceIvnearJ F 5) 2pasa a K3 Se actualian distance " nearest
-
7/21/2019 Clase18Abril-EstrategiasVoraces
20/42
$omplejidad
8os ciclos, cada uno con n5) iteraciones dentrode un MrepeatN
4a complejidad no depende de los datos, " es&2n5)32n5)3, o sea de orden :2n&3
-
7/21/2019 Clase18Abril-EstrategiasVoraces
21/42
Algoritmo de %rus&al
S =
. = su$conjuntos disjuntos de *, cada uno con cada uno de
los v+rtices de *
5rdenar los arcos en % en )orma ascendente de acuerdo a
su #eso
Mientras !no se haya resuelto el #ro$lema"
Seleccionar el si(uiente arco de %
Si el arco conecta 6 v+rtices de ., unir los su$conjuntos y
a7adir el arco a S
Si todos los su$conjuntos se han unido, el #ro$lema se ha
resuelto
-
7/21/2019 Clase18Abril-EstrategiasVoraces
22/42
Ejemplo
S =
. = {{v%} {v1} {vC} {v2} {v3}}
% = {!v%, v1", !vC, v3", !v1, v3",
!vC, v2", !v2, v3", !v1, vC", !v%,
v2", !v%, vC"}
Seleccionar el arco de menor
costo de % y si une a dos
su$conjuntos de ., unirlos y
a(re(ar el arco a S
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
23/42
Ejemplo
7
A B
C
D E
2
59
310
12
6
S = {!v%, v1"}
. = {{v%,v1} {vC} {v2} {v3}}
% = {!vC, v3", !v1, v3", !vC, v2",
!v2, v3", !v1, vC", !v%, v2", !v%,
vC"}
Seleccionar el arco de menor
costo de % y si une a dos
su$conjuntos de ., unirlos y
a(re(ar el arco a S
-
7/21/2019 Clase18Abril-EstrategiasVoraces
24/42
Ejemplo
7
A B
C
D E
2
59
310
12
6
S = {!v%, v1", !vC, v3"}
. = {{v%,v1} , {vC,v3} {v2}}
% = {!v1, v3", !vC, v2", !v2, v3",
!v1, vC", !v%, v2", !v%, vC"}
Seleccionar el arco de menorcosto de % y si une a dos
su$conjuntos de ., unirlos y
a(re(ar el arco a S
-
7/21/2019 Clase18Abril-EstrategiasVoraces
25/42
Ejemplo
7
A B
C
D E
2
59
310
12
6
S = {!v%, v1", !vC, v3", !v1, v3"}
. = {{v%,v1 ,vC,v3} {v2}}
% = {!vC, v2", !v2, v3", !v1, vC",
!v%, v2", !v%, vC"}
Seleccionar el arco de menorcosto de % y si une a dos
su$conjuntos de ., unirlos y
a(re(ar el arco a S
-
7/21/2019 Clase18Abril-EstrategiasVoraces
26/42
Ejemplo
7
A B
C
D E
2
59
310
12
6
S = {!v%, v1", !vC, v3", !v1, v3" ,
!vC, v2"}
. = {{v%,v1 ,vC, v2,v3}}
% = {!v2, v3", !v1, vC", !v%, v2",
!v%, vC"}
4uesto ue . slo contiene un
su$conjunto con todos los
v+rtices, S contiene la
solucin
-
7/21/2019 Clase18Abril-EstrategiasVoraces
27/42
#mplementacin de los
algoritmos equieren de un tipo de dato conjunto, que permita
trabajar con las operaciones de conjuntos 2unin,
diferencia, a!adir3. (ri)se apo"a en la matri de transiciones, " en
arreglos au1iliares (ver detalle en libro).
*rus+alrequiere de la implementacin del tipo de datoconjunto disjunto (ver detalle en libro).
4os ,E(Spueden a"udar a obtener otras versiones
eficientes de implementacin.
-
7/21/2019 Clase18Abril-EstrategiasVoraces
28/42
'$mo se comprueba uelos algoritmos son
correctos %n el caso de la prora)aci.n din)ica, basta
comprobar que se cumple el principio de optimalidad
para saber que se tiene un algoritmo vlido %n el caso de divide / vencers, la recursividad est
fundamentada, " comprueba la valide del
algoritmo %n el caso de alorit)os voraces, se requiere una
demostracin matemtica especfica dependiendo del
problema, " normalmente es ms compleja (ver
-
7/21/2019 Clase18Abril-EstrategiasVoraces
29/42
'$mo es elcomportamiento de los
algoritmos (ri)es un algoritmo con un comportamiento igual
para todos los casos, que tiene una complejidad de
tiempo de orden O0n12, siendo nla cantidad devrtices en el grafo (ver detalle en el libro).
*rus+ales un algoritmo en el que influ"e la cantidad
de arcos en su comportamiento. Su peor caso, tieneuna complejidad de tiempo de orden O0n1lo1n2oO0) lo1)2, siendo nla cantidad de vrtices " mla
cantidad de arcos (ver detalle en el libro).
-
7/21/2019 Clase18Abril-EstrategiasVoraces
30/42
'$ul de los dosalgoritmos es mejor
utilizar C#untos arcos puede tener un grafo no dirigido
conectado de nvrticesD @>9>@:/ n - 1 arcos @B=>@:/ n (n - 1) / 2 arcos
Prim O(n2)vs. Kruskal O(m log2m)
0or lo tanto, para un grafo con pocos arcos, *rus+alresultar ms eficiente, "
para un grafo mu" denso 2altamente conectado3, (ri)
funcionar mejor...
-
7/21/2019 Clase18Abril-EstrategiasVoraces
31/42
E*E+",-
# "
! 4 %
& ' $ #(
!"
#(
4
#'
$ #"
%
"'
"!
4#&
# "
! 4 %
& ' $ #(
!"
#(
4
#'
$ #"
%
"'
"!
4#&
%./0%A,
".#+
-
7/21/2019 Clase18Abril-EstrategiasVoraces
32/42
El problema del
camino ms corto COu pasara si en determinada aplicacin se requiere
conocer el camino ms corto de un vrtice a otroD
%lAlgoritmo de Floydobtiene el camino ms corto deT:8:S los vertices $acia T:8:S los vrtices " tieneun comportamiento de O0n32
Si slo se requiere el anlisis para un slo camino,Cpodra $acerse de una manera ms eficienteD SI la propuesta delAlgoritmo de Dijkstraresuelve el
problema en O0n1
2.
-
7/21/2019 Clase18Abril-EstrategiasVoraces
33/42
Algoritmo de 1ij&stra
S =
. = {v/}
Mientras !no se haya resuelto el #ro$lema"
Seleccionar el v+rtice de *-. ue ten(a el caminom0s corto desde v/usando slo a los v+rtices en .
como intermediarios
%(re(ar el v+rtice a .
%(re(ar el arco ue lle(a a al v+rtice seleccionado
a S
Si . = * el #ro$lema se ha resuelto
-
7/21/2019 Clase18Abril-EstrategiasVoraces
34/42
Ejemplo
S =
. = {v%}
*-. = {v1, vC, v2, v3}
Seleccionar el v+rtice de
*-. ue ten(a el
camino m0s corto
desde v%, #asando #or
los v+rtices de .
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
35/42
Ejemplo
S = {!v%, v1"}
. = {v%, v1}*-. = {vC, v2, v3}
Seleccionar el v+rtice de
*-. ue ten(a el
camino m0s corto
desde v%, #asando #or
los v+rtices de .
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
36/42
Ejemplo
S = {!v%, v1",!v1, v3"}
. = {v%, v1, v3}*-. = {vC, v2}
Seleccionar el v+rtice de
*-. ue ten(a el
camino m0s corto
desde v%, #asando #or
los v+rtices de .
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
37/42
Ejemplo
S = {!v%, v1" ,!v1, v3",
!v3
, vC
"}
. = {v%, v1, vC, v3}
*-. = {v2}
Seleccionar el v+rtice de
*-. ue ten(a el
camino m0s corto
desde v%, #asando #or
los v+rtices de .
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
38/42
Ejemplo
S = {!v%, v1" ,!v1, v3",
!v3
, vC
", !v%
, v2
" }
. = {v%, v1, vC, v2, v3}
*-. =
4uesto ue . es i(ual a
*, se ha encontrado
la solucin
7
A B
C
D E
2
59
310
12
6
-
7/21/2019 Clase18Abril-EstrategiasVoraces
39/42
#mplementacin del
Algoritmo de 1ij&stra Utilia a la matri de ad"acencias del grafo 2H3. Se au1ilia de un arreglo L, inde1ado de & a n, en donde
guardar la longitud de los caminos ms cortos delvrtice v/al vrtice vi, usando slamente a los vrtices
del conjunto K como intermediarios.
Se au1ilia de un arreglo !, inde1ado de & a n, en dondeguardar el ndice del vrtice v, cu"o arco !v,vi"es elPltimo arco en el camino ms corto de v/a viusando
solamente a los vrtices del conjunto K comointermediarios.
-
7/21/2019 Clase18Abril-EstrategiasVoraces
40/42
Algoritmo de 1ij&stra
S = 8
)or !i = 68 i
-
7/21/2019 Clase18Abril-EstrategiasVoraces
41/42
Algoritmo de 1ij&stra
e = arco )ormado #or vmin; y vmin8
%7adir e a S8
)or !i=68 i
-
7/21/2019 Clase18Abril-EstrategiasVoraces
42/42
2rabajo 3: +ximo 4
personas 0rogramar en 0"ton, Qava, #, #RR, los
algoritmos de 0rim, rusal " 8istra. 4uego
#ompararlos terica como empricamente. Lec$a %ntrega/ * @a"o &*)- V )-/'* +rs %ntregar #digo e >nforme del trabajo.