Clase18Abril-EstrategiasVoraces

download Clase18Abril-EstrategiasVoraces

of 42

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.