Sesión 06 - Algoritmos de Retroceso

download Sesión 06 - Algoritmos de Retroceso

of 50

Transcript of Sesión 06 - Algoritmos de Retroceso

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    1/50

    Algoritmos de retroceso

    Robert Espinoza Domnguez

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    2/50

    Retroceso o Backtracking

    El backtracking(o mtodo de retrocesoo vueltaatrs) es una tcnica general de resolucin deproblemas, aplicable en problemas de

    optimizacin,juegosy otros tipos.

    El backtrackingrealiza una bsqueda exhaustivay sistemtica en el espacio de soluciones. Por ello,

    suele resultar muy ineficiente.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    3/50

    Retroceso o Backtracking

    Se puede entender como opuesto a losalgoritmos voraces o de avance rpido.

    Voraz:aadir elementos a la solucin y no

    deshacer ninguna decisin tomada.

    Backtracking:aadir y quitar todos loselementos. Probar todas las combinaciones.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    4/50

    Caractersticas

    Una solucinse puede expresar como una tupla:(x1, x2, ..., xn), satisfaciendo unas restriccionesP(x1, x2, ..., xn) y tal vez optimizando cierta funcinobjetivo.

    En cada momento, el algoritmo se encontrar encierto nivel k, con una solucin parcial (x1, ..., xk). Si se puede aadir un nuevo elemento a la solucin

    xk+1, se genera y se avanza al nivel k+1.

    Si no, se prueban otros valores de xk. Si no existe ningn valor posible por probar,

    entonces se retrocede al nivel anterior k-1.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    5/50

    Caractersticas

    Se sigue hasta que la solucin parcial sea unasolucin completa del problema, o hasta que noqueden ms posibilidades por probar.

    El resultado es equivalente a hacer un recorrido

    en profundidaden el rbol de soluciones. Sinembargo este rbol es implcito, no se almacenaen ningn lugar.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    6/50

    Mtodo general.

    Inicio

    x1=0

    x1=0x2=0

    x1=0x2=0x3=0

    x1=0x2=1

    x1=0x2=0x3=1

    x1=0x2=1x3=0

    x1=0x2=1x3=1

    x1=1x2=0

    x1=1x2=0x3=0

    x1=1x2=1

    x1=1x2=0x3=1

    x1=1x2=1x3=0

    x1=1x2=1x3=1

    x1=1

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    7/50

    Caractersticas

    Inicio

    x1=0

    x1=0x2=0

    x1=0x2=0x3=0

    x1=0x2=1

    x1=0x2=0x3=1

    x1=0x2=1x3=0

    x1=0x2=1x3=1

    x1=1x2=0

    x1=1x2=0x3=0

    x1=1x2=1

    x1=1x2=0x3=1

    x1=1x2=1x3=0

    x1=1x2=1x3=1

    x1=1

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    8/50

    Caractersticas

    Representacin simplificada del rbol.

    1

    2

    3

    4

    6

    5 7 8

    10

    11

    13

    12 14 15

    9

    0

    0

    0 1

    01

    1

    0 10 10 1

    1

    x1

    x2

    x3

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    9/50

    Ejemplo

    Dado un conjunto de nmeros enteros{13, 11, 7}, encontrar si existe algn

    subconjunto cuya suma seaexactamente 20.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    10/50

    EjemploPosibilidad 1

    En cada nivel i decidir si el elemento i est o no en lasolucin. Representacin de la solucin: (x1, x2, x3),donde xi= (0, 1).

    1

    2

    3

    4

    6

    5 7 8

    10

    11

    13

    12 14 15

    9

    0

    0

    0

    1

    1

    0 1

    1

    k = 1 (13)

    0 1 0 1 0 1

    0 7 11 18 13 20 24 31

    k = 2 (11)

    k = 3 (7)

    Sumas

    totales

    rbol desoluciones 1

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    11/50

    Cada nodo representa un paso del algoritmo, unasolucin parcial en cada momento dado.

    El rbol indica un orden de ejecucin (recorrido enprofundidad) pero no se almacena en ningn lugar.

    Una solucin es un nodo hoja con valor de suma 20. Posible mejora: En cada nodo llevamos el valor de la

    suma hasta ese punto. Si el valor es mayor que 20,retroceder al nivel anterior

    EjemploPosibilidad 1

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    12/50

    EjemploPosibilidad 2

    En cada nivel i decidir qu elemento se aade (1, 2 3) enla solucin. Representacin de la solucin: (s1, , s3),donde m n y si {1, 2, 3}.

    1

    2

    3

    4

    5 7

    6 8

    21

    3

    3

    2

    k = 1

    0

    711

    18

    13

    24

    31

    k = 2

    k = 3

    rbol de

    soluciones 2

    3

    320

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    13/50

    Cada nodo es una posible solucin. Ser vlida si lasuma es 20.

    El recorrido es tambin en profundidad.

    Necesitamos funciones para generar los nodos, para

    descartar nodos y para saber si un nodo es solucin Cmo ser la eficiencia del algoritmo? Depende del

    nmero de nodos.

    EjemploPosibilidad 2

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    14/50

    rboles de retroceso (backtracking)

    El rbol es simplemente una forma derepresentar la ejecucin del algoritmo.

    Es implcito, no almacenado (nonecesariamente).

    El recorrido es en profundidad, normalmente deizquierda a derecha.

    La primera decisin para aplicar backtracking:

    cmo es la forma del rbol? Preguntas relacionadas:Qu significa cada

    valor de la tupla solucin (x1, ..., xn)? Cmo esla representacin de la solucin al problema?

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    15/50

    5.1. rboles de retroceso (backtracking)

    Tipos comunes de rboles de backtracking:

    rboles binarios.

    rboles n-arios.

    rboles permutacionales.

    rboles combinatorios.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    16/50

    rboles binarios

    s= (x1, x

    2, ..., x

    n), con x

    i{0, 1}

    Tipo de problemas:elegir ciertos elementos de entre unconjunto, sin importar el orden de los elementos. Problema de la mochila 0/1. Encontrar un subconjunto de {12, 23, 1, 8, 33, 7, 22} que

    sume exactamente 50.

    1

    2

    3 4 6 7

    5

    0

    0 01

    1

    1

    x1

    x2

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    17/50

    rboles k-arios

    s= (x1, x2, ..., xn), con xi{1,..,k}

    Tipo de problemas:varias opciones para cada xi. Problema del cambio de monedas.

    Problema de las nreinas.

    1

    2

    3 5 11 13

    10

    1

    1 13

    3

    3

    x1

    x2

    4 127 9

    6

    1 3

    8

    2

    2 2 2

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    18/50

    rboles permutacionales

    s = (x1, x

    2, ..., x

    n), con x

    i{1,..,n} y x

    i x

    j

    Tipo de problemas:los xino se pueden repetir. Generar todas las permutaciones de (1, ..., n). Asignar ntrabajos a npersonas, asignacin uno-a-uno.

    1

    2

    3 5 12 14

    11

    1

    3

    13

    3

    2

    x1

    x2

    4 13

    7 9

    6

    1 3

    8

    2

    2

    23

    6 10 15

    1 2 1 x3

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    19/50

    rboles combinatorios

    s= (x1, x2, ..., xm), con mn, xi

    {1,..,n} y xi< xi+1

    Tipo de problemas:los mismos que con rboles binarios

    Binario: (0, 1, 0, 1, 0, 0, 1)Combinatorio: (2, 4, 7)

    1

    2

    3 5

    8

    1

    3

    3 x1

    x2

    4

    7

    6

    3

    2

    2

    3x3

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    20/50

    Mtodo general.

    Cuestiones a resolver antes de programar: Qu tipo de rbol es adecuado para el problema?

    Cmo es la representacin de la solucin? Cmo es la tupla solucin? Qu indica cada xiy qu valores

    puede tomar?

    Cmo generar un recorrido segn ese rbol? Generar un nuevo nivel. Generar los hermanos de un nivel. Retroceder en el rbol.

    Qu ramas se pueden descartar por no conducir asoluciones del problema? Poda por restricciones del problema. Poda segn el criterio de la funcin objetivo.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    21/50

    Mtodo general

    Mtodo Clase.Backtracking (var s: TuplaSolucin)nivel1ssINICIALfinfalsoHacer

    Generar (nivel, s)

    Si Solucin (nivel, s)entoncesfinverdaderoSino Si Criterio (nivel, s)entonces

    nivelnivel + 1Sino Mientras NO MasHermanos (nivel, s)hacer

    Retroceder (nivel, s)fMientrasfSi

    fSiMientras fin = falso

    fMetodo

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    22/50

    Mtodogeneral

    Variables: s: Almacena la solucin parcial hasta cierto punto. sINICIAL: Valor de inicializacin. nivel: Indica el nivel actual en el que se encuentra el algoritmo. fin: Valdr verdaderocuando hayamos encontrado alguna

    solucin.

    Funciones: Generar (nivel, s): Genera el siguiente hermano (o el primero)

    para el nivelactual.

    Solucin (nivel, s): Comprueba si la tupla (s[1], ..., s[nivel]) esuna solucin vlida para el problema.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    23/50

    Mtodo general

    Criterio (nivel, s): Comprueba si a partir de (s[1], ..., s[nivel])se puede alcanzar una solucin vlida. En otro caso serechazarn todos los descendientes (poda).

    MasHermanos (nivel, s): Devuelve verdaderosi hay mshermanos del nodo actual que todava no han sido

    generados. Retroceder (nivel, s): Retrocede un nivel en el rbol de

    soluciones. Disminuye en 1 el valor de nivel, y posiblementetendr que actualizar la solucin actual, quitando loselementos retrocedidos.

    Adems, suele ser comn utilizar variables temporales conel valor actual (beneficio, peso, etc.) de la tupla solucin.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    24/50

    Mtodo general

    Cmo seran estas funciones en los ejemplos anteriores? Otros posibles casosde problemas:

    1. No est garantizado que exista una solucin, puede existiralguna o no.

    2. Queremos obtener todas las soluciones, no slo una.3. El problema es de optimizacin. De todas las solucionesposibles queremos aquella que maximice (o minimice) unafuncin objetivo.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    25/50

    Depende del nmero de nodos generados y del tiemporequerido para cada nodo.

    Por lo general el tiempo de cada nodo es constante.

    Suponiendo que una solucin sea de la forma:

    (x1, x2, , xn), en el peor caso se generarn todas lasposibles combinaciones para cada x1.

    Si el nmero de posible de valores para cada xies mi,entonces se generan:

    m1 nodos en el nivel 1m1 m2 nodos en el nivel 2

    m1 m2 mn nodos en el nivel 3

    Anlisis de tiempos de ejecucin

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    26/50

    Ejemplo. Para el problema de la suma desubconjuntos mi = 2. El nmero de nodos generadoses:

    t(n) = 2 + 22+ 23+ + 2n= 2n-1- 2

    Ejemplo. Calcular todas las permutaciones de (1, 2,, n). En el primer nivel tenemos n posibilidades, en elsegundo nivel (n-1), , en el nivel n una posibilidad.

    t(n) = n + n(n-1) + n(n-1)(n-2) + + n! O(n!)

    En general tendremos tiempos con rdenes decomplejidad factoriales o exponenciales.

    Anlisis de tiempos de ejecucin

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    27/50

    Conclusiones

    Backtracking:Recorrido exhaustivo y sistemtico en unrbol de soluciones.

    Pasos para aplicarlo: Decidir la forma del rbol.

    Establecer el esquema del algoritmo. Disear las funciones genricas del esquema.

    Relativamente fcil disear algoritmos que encuentrensoluciones ptimas pero...

    Los algoritmos de backtracking son muy ineficientes. Mejoras:mejorar los mecanismos de poda, incluir otros

    tipos de recorridos (no solo en profundidad)Tcnica de Ramificacin y Poda.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    28/50

    Ejemplo. Subconjuntos de suma dada

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    29/50

    Encontrar un subconjunto del

    Conjunto T= {t1, t2, ..., tn} que

    sume exactamente P.

    Subconjuntos de suma dada

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    30/50

    Variables:Representacin de la solucin con un rbol binario. s: array [1..n] de {-1, 0, 1}s[i] = 0el nmero i-simo no se utilizas[i] = 1el nmero i-simo s se utilizas[i] = -1valor de inicializacin (nmero i-simo

    no estudiado) sINICIAL: (-1, -1, ..., -1) fin: Valdr verdaderocuando se haya encontrado

    solucin. tact:Suma acumulada hasta ahora (inicialmente 0).

    Subconjuntos de suma dada

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    31/50

    Funciones: Generar (nivel, s)s[nivel]s[nivel] + 1sis[nivel] =1 entoncestact:= tact + tnivel

    Solucin (nivel, s)devolver(nivel = n) Y (tact = P)

    Criterio (nivel, s)devolver(nivel

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    32/50

    Retroceder (nivel, s)tact:= tacttnivel*s[nivel]s[nivel]:= -1nivel:= nivel1

    Subconjuntos de suma dada

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    33/50

    Mtodo Clase.Backtracking (var s: TuplaSolucin)nivel1ssINICIALfinfalsoHacer

    Generar (nivel, s)siSolucin (nivel, s) entonces

    finverdaderosinosiCriterio (nivel, s) entonces

    nivelnivel + 1

    sinomientrasNOT MasHermanos (nivel, s) hacerRetroceder (nivel, s)

    finsiMientrasfin = falso

    Fin Mtodo

    Subconjuntos de suma dada

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    34/50

    Subconjuntos de suma dada

    Variacionesdel esquema general:

    1) Y si no es seguro que exista una solucin?

    2) Y si queremos almacenar todas las soluciones(no slo una)?

    3) Y si el problema es de optimizacin (maximizar ominimizar)?

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    35/50

    Subconjuntos de suma dada - Caso 1

    Puede que no exista ninguna solucin.

    Mtodo Clase.Backtracking (var s: TuplaSolucin)nivel1ssINICIALfinfalsoHacer

    Generar (nivel, s)siSolucin (nivel, s) entonces

    fintruesinosiCriterio (nivel, s) entonces

    nivel

    nivel + 1sinomientrasNOT MasHermanos (nivel, s)

    hacerRetroceder (nivel, s)finsi

    Mientras fin = falsoFin= falso Y (nivel > 0)

    Y (nivel > 0)

    Para poder generar todo elrbol de backtracking

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    36/50

    Subconjuntos de suma dada - Caso 2

    Queremos almacenar todas las soluciones.

    Mtodo Clase.Backtracking (var s: TuplaSolucin)nivel1ssINICIALfinfalso

    HacerGenerar (nivel, s)siSolucin (nivel, s) entonces

    finverdaderosinosiCriterio (nivel, s) entonces

    nivelnivel + 1sino

    mientrasNOT MasHermanos (nivel, s)hacerRetroceder (nivel, s)

    finsiMientrasfin = falsonivel >0

    Y (nivel > 0)

    Almacenar (nivel, s)siCriterio (nivel, s) entonces

    En algunos problemas los nodosintermedios pueden ser soluciones O bien, retroceder despus de encontraruna solucin

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    37/50

    Subconjuntos de suma dada - Caso 3

    Problema de optimizacin (maximizacin).

    Mtodo Clase.Backtracking (var s: TuplaSolucin)nivel1ssINICIALfinfalso

    HacerGenerar (nivel, s)siSolucin (nivel, s) entonces

    finverdaderosinosiCriterio (nivel, s) entonces

    nivelnivel + 1sino

    mientrasNOT MasHermanos (nivel, s)hacerRetroceder (nivel, s)

    finsiMientrasfin = falsoNivel > 0

    Y (nivel>0)

    voa Valor(s); soa ssiCriterio (nivel, s) entonces

    voa -; soa

    voa: valor ptimo actual

    soa:solucin ptima actual

    y Valor(s) > voaentonces

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    38/50

    Problema de la mochila 0/1

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    39/50

    Problema de la mochila 0/1

    Los objetos no se pueden partir (se cogen enteros onada).

    Datos del problema: n: nmero de objetos disponibles.

    M: capacidad de la mochila. p = (p1,p2, ..., pn) pesos de los objetos.

    b = (b1,b2, ..., bn) beneficios de los objetos.

    Formulacin matemtica:Maximizar xi bisujeto a la restriccin xi pi M, y xi{0,1}

    i=1..n i=1..n

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    40/50

    Problema de la mochila 0/1

    Caractersticas del problema Es un problema de optimizacin (maximizacin)

    Slo nos interesa una solucin, la ptima

    Existir al menos una solucin (no incluir ningn objeto)

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    41/50

    Problema de la mochila 0/1

    Ejemplo:n = 4; M = 7

    b = (2, 3, 4, 5)p = (1, 2, 3, 4)

    Qu solucin devuelve el algoritmo voraz para el problema

    de la mochila? Qu solucin devuelve el algoritmo voraz adaptado al caso

    0/1 (o se coge un objeto entero o no)? Cul es la solucin ptima?

    4 kg

    3 kg

    2 kg

    1 kg7 Kg.

    PVP 5 PVP 4 PVP 2PVP 3

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    42/50

    Problema de la mochila 0/1

    Ejemplo:n = 2; M = 100

    b = (2, 190)p = (1, 100)

    Qu solucin devuelve el algoritmo voraz para elproblema de la mochila? Qu solucin devuelve el algoritmo voraz adaptado al

    caso 0/1 (o se coge un objeto entero o no)?

    Cul es la solucin ptima?

    100 Kg.

    100 kg

    1 kgPVP 190PVP 2

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    43/50

    Problema de la mochila 0/1.

    Aplicacin de backtracking (proceso metdico):1) Determinar cmo es la forma del rbol de

    backtracking cmo es la representacin de lasolucin.

    2) Elegir el esquema de algoritmo adecuado,adaptndolo en caso necesario.

    3) Disear las funciones genricas para la aplicacinconcreta: segn la forma del rbol y las

    caractersticas del problema.4) Posibles mejoras: usar variables locales con valores

    acumulados, hacer ms podas del rbol, etc.

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    44/50

    Problema de la mochila 0/1

    1. Representacin de la solucin.

    Con un rbol binario: s= (x1, x2, ..., xn), con xi{0,1} xi= 0No se coge el objeto i xi= 1S se coge el objeto i x

    i= -1Objeto ino estudiado

    En cada nivel ise pruebala posibilidad de incluiro no el objeto i

    Las solucionesestn en nivel n

    1

    2

    3 6 10 13

    9

    0

    0 01

    1

    1

    x1

    x2

    4 5

    0 1

    7 8 11 12 14 15

    1 11

    000x3

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    45/50

    Problema de la mochila 0/1

    1. Representacin de la solucin. Tambin es posible usar un rbol combinatorio:

    s= (x1, x2, ..., xm), con m n, xi{1,..,n} y xi< xi+1 xiNmero de objeto escogido mNmero total de objetos escogidos

    Las soluciones estn en cualquier nivel

    1

    2

    3 5

    8

    1

    3

    3 x1

    x2

    4

    7

    6

    3

    2

    2

    3x3

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    46/50

    Problema de la mochila 0/1

    2. Elegir el esquema de algoritmo: caso optimizacin.

    Mtodo Clase.Backtracking (var s: array [1..n] de entero)nivel1; ssINICIALvoa-; soapact0; bact0

    HacerGenerar (nivel, s)siSolucin (nivel, s) AND (bact > voa) entonces

    voabact; soassiCriterio (nivel, s) entonces

    nivelnivel + 1

    sinomientrasNOT MasHermanos (nivel, s) AND (nivel>0)

    hacerRetroceder (nivel, s)finsi

    Mientrasnivel > 0

    Fin Mtodo

    pact: Peso actual

    bact:Beneficio actual

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    47/50

    Problema de la mochila 0/1

    sis[nivel] = 1 entoncespactpact + p[nivel]bactbact + b[nivel]

    finsi

    3) Funciones genricas del esquema. Generar (nivel, s)Probar primero 0 y luego 1

    s[nivel]s[nivel] + 1pactpact + p[nivel]*s[nivel]bactbact + b[nivel]*s[nivel]

    Solucin (nivel, s)devolver(nivel =n) Y (pact M)

    Criterio (nivel, s)devolver(nivel < n) Y (pact M)

    MasHermanos (nivel, s)

    devolvers[nivel] < 1 Retroceder (nivel, s)

    pactpactp[nivel]*s[nivel]bactbactb[nivel]*s[nivel]s[nivel]-1nivelnivel1

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    48/50

    Problema de la mochila 0/1

    Ejemplo:n = 4; M = 7;b = (2, 3, 4, 5)p = (1, 2, 3, 4)

    1

    2

    3 10 18 25

    17

    0

    0 01

    1

    1

    x1

    x2

    4 7

    0 1

    11 14 19 22 26 29

    1 11

    000x3

    5 6 9 13 21 24 288 12 15 20 23 27 30 31

    x40 0000 0001 1 1 11 1 1 1

    pact: 0

    bact: 0

    4

    5

    7

    9

    9

    12

    8

    11

    7

    10

    10

    14

    16

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    49/50

    Problema de la mochila 0/1

    El algoritmo resuelve el problema, encontrandola solucin ptima pero es muy ineficiente.

    Cunto es el orden de complejidad? Nmero de nodos generados = 2n+11

    El algoritmo es del orden O(2n)

    Problema adicional:en el ejemplo, segeneran todos los nodos posibles, no hay

    ninguna poda. La funcin Criterioes siemprecierta (excepto para algunos nodos hoja).

  • 7/23/2019 Sesin 06 - Algoritmos de Retroceso

    50/50

    Problema de la mochila 0/1

    Solucin:Intentar eliminar algunos nodos delrbol de soluciones con una funcin Criterioms restrictiva.

    Incluir una poda segn el criterio de optimizacin. Poda segn el criterio de peso:si el peso actual

    es mayor que M podar el nodo.

    Poda segn el criterio de optimizacin:si elbeneficio actual no puede mejorar el voapodar elnodo.