158
Backtracking Conclusiones Backtracking, grafo implícito Ocho reinas Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II

Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Algoritmos y Estructuras de Datos II

Backtracking

15 de mayo de 2019

Backtracking Algoritmos y Estructuras de Datos II

Page 2: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Clase de hoy

1 BacktrackingForma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

2 Conclusiones

3 Backtracking, grafo implícito

4 Ocho reinas

Backtracking Algoritmos y Estructuras de Datos II

Page 3: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Forma general de algoritmos voraces

fun voraz(C) ret S{C: conjunto de candidatos, S: solución a construir}

S:= {}do S no es solución→ c:= seleccionar de C

C:= C-{c}if S∪{c} es factible→ S:= S∪{c} fi

odend fun

Ser solución y ser factible no tienen en cuenta optimalidad.Optimalidad depende totalmente del criterio de selección.

Backtracking Algoritmos y Estructuras de Datos II

Page 4: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

¿Y cuando no hay un buen criterio de selección?

A veces no hay un criterio de selección que garanticeoptimalidad.Por ejemplo:

Problema de la moneda para conjuntos de denominacionesarbitrarios.Problema de la mochila para objetos no fraccionables.

En este caso, si se elige un fragmento de solución puedeser necesario “volver hacia atrás” (backtrack) sobre esaelección e intentar otro fragmento.En la práctica, estamos hablando de considerar todas lasselecciones posibles e intentar cada una de ellas parasaber cuál de ellas conduce a la solución óptima.(backtracking = fuerza bruta)

Backtracking Algoritmos y Estructuras de Datos II

Page 5: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Forma general de algoritmos que hacen backtracking

fun backtrack(C) ret S{C: conjunto de candidatos, S: solución a construir}

S:= backtracking(C, { })end fun

fun backtracking(C, Sp) ret S {Sp: solución parcial}if Sp es solución then S:= Spelse para cada c ∈ C tal que Sp ∪{c} sea factible, calcular

Sc:= backtracking(C-{c}, Sp ∪{c})S:= la mejor entre todas las Sc’s calculadas

fiend fun

Backtracking Algoritmos y Estructuras de Datos II

Page 6: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

A diferencia de la técnica voraz

Siempre que haya solución, backtracking la encuentra.En general son algoritmos ineficientes (aunque pueda queno se conozcan mejores alternativas).No hay buen criterio de selección: se utiliza fuerza bruta.A veces se puede ser un poco menos brutal...

Backtracking Algoritmos y Estructuras de Datos II

Page 7: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Problema de la moneda

Sean d1,d2, . . . ,dn las denominaciones de las monedas(todas mayores que 0),no se asume que estén ordenadas,se dispone de una cantidad infinita de monedas de cadadenominación,se desea pagar un monto k de manera exacta,utilizando el menor número de monedas posibles.Vimos que el algoritmo voraz puede no funcionar paraciertos conjuntos de denominaciones.Daremos un algoritmo consistente en considerar todas lascombinaciones de monedas posibles.

Backtracking Algoritmos y Estructuras de Datos II

Page 8: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Problema de la moneda usando backtracking

fun cambio({d1, . . . ,dn}, k ) ret S : conjunto de monedasS:= cambiando({d1, . . . ,dn}, k , { })

end fun

fun cambiando({d1, . . . ,dn}, k , Sp) ret S {Sp: carrito de monedas}if monto total de Sp = k then S:= Spelse para cada i tal que monto total de Sp+di ≤ k , calcular

Si := cambiando({d1, . . . ,dn}, k , Sp ∪{����di })

S:= la Si con menor cantidad de monedasfi

end fun

Backtracking Algoritmos y Estructuras de Datos II

Page 9: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Algunas observaciones

El algoritmo mantiene un cierto conjunto Sp de monedas.Prueba extender ese conjunto de n maneras posibles:

agregando una moneda de valor d1 (si no se pasa).o agregando una moneda de valor d2 (si no se pasa).etcéteraagregando una moneda de valor dn (si no se pasa).

La recursión asegura que en cada uno de los casosanteriores vuelven a considerarse los n casos posiblespara agregar una moneda más, . . . , hasta llegar a unasolución (caso base).Hmmm. Estamos repitiendo casos...

Backtracking Algoritmos y Estructuras de Datos II

Page 10: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Sin repetir casos

fun cambio({d1, . . . ,dn}, k ) ret S : conjunto de monedasS:= cambiando({d1, . . . ,dn}, k , { })

end fun

fun cambiando({d1, . . . ,dj}, k , Sp) ret Sif monto total de Sp = k then S:= Spelse para cada i ≤ j tal que monto total de Sp+di ≤ k , calcular

Si := cambiando({d1, . . . ,di}, k , Sp ∪{����di })

S:= la Si con menor cantidad de monedasfi

end fun

Backtracking Algoritmos y Estructuras de Datos II

Page 11: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Simplifiquemos el problema

sólo nos interesa por ahora hallar la menor cantidad demonedas necesarias,no nos interesa saber cuáles son esas monedas.

Backtracking Algoritmos y Estructuras de Datos II

Page 12: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Algoritmo simplificado 1

fun cambio({d1, . . . ,dn}, k ) ret s : número de monedass:= cambiando({d1, . . . ,dn}, k ,0,0)

end fun

fun cambiando({d1, . . . ,dj}, k ,m, sp) ret sif m = k then s:= spelse para cada i ≤ j tal que m + di ≤ k , calcular

si := cambiando({d1, . . . ,di}, k , m + di , sp+1)s:= mínimo de los si

fiend fun

Backtracking Algoritmos y Estructuras de Datos II

Page 13: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Observemos

El for i:= 1 to j pone en evidencia que estamos intentandosolucionar el problema con

i = 1i = 2etcéterai = j

y de estas -a lo sumo j- posibilidades nos quedamos conla mejor.Una solución más simple: en vez de j posibilidades (¿quémoneda uso?) podemos reducir a dos posibilidades (¿usoo no la moneda de denominación dj?).

Backtracking Algoritmos y Estructuras de Datos II

Page 14: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Algoritmo simplificado 2

fun cambio({d1, . . . ,dn}, k ) ret s : número de monedass:= cambiando({d1, . . . ,dn}, k ,0,0)

end funfun cambiando({d1, . . . ,dj}, k ,m, sp) ret s

if m = k then s:= spelse s:=∞

for i:= 1 to j doif sp+di ≤ k then

s:= min(s, cambiando({d1, . . . ,di}, k , m + di , sp + 1))fi

odfi

end funBacktracking Algoritmos y Estructuras de Datos II

Page 15: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Simplificación y generalización

Simplificamos el problema:sólo nos interesa por ahora hallar el menor número demonedas necesario,no nos interesa saber cuáles son esas monedas.

Generalizamos el problema:Sea ds una lista cualquiera de denominaciones y 0 ≤ j ≤ k ,definimos cambio(ds, j) = “menor número de monedasnecesarias para pagar exactamente el monto j con lasdenominaciones de ds.”La solución del problema original se obtiene calculandocambio([d1,d2, . . . ,dn], k).

Backtracking Algoritmos y Estructuras de Datos II

Page 16: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definiendo cambio(ds, j)Caso j = 0

Recordemos que cambio(ds, j) = “menor número demonedas necesarias para pagar exactamente el monto jcon las denominaciones de ds.”cambio(ds,0) = 0

Backtracking Algoritmos y Estructuras de Datos II

Page 17: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definiendo cambio(ds, j)Caso j > 0 y ds = [ ]

Recordemos que cambio(ds, j) = “menor número demonedas necesarias para pagar exactamente el monto jcon las denominaciones de ds.”cambio(ds,0) = 0,j > 0⇒ cambio([ ], j) =∞,ya que no hay manera posible de pagar el monto

Backtracking Algoritmos y Estructuras de Datos II

Page 18: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definiendo cambio(ds C d , j)Caso d > j > 0

Recordemos que cambio(ds, j) = “menor número demonedas necesarias para pagar exactamente el monto jcon las denominaciones de ds.”cambio(ds,0) = 0,j > 0⇒ cambio([ ], j) =∞,d > j > 0⇒ cambio(ds C d , j) = cambio(ds, j),ya que no se pueden usar monedas de denominación d ,es como si no estuvieran disponibles

Backtracking Algoritmos y Estructuras de Datos II

Page 19: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definiendo cambio(ds C d , j)Caso j ≥ d

Recordemos que cambio(ds, j) = “menor número demonedas necesarias para pagar exactamente el monto jcon las denominaciones de ds.”cambio(ds,0) = 0,j > 0⇒ cambio([ ], j) =∞,d > j > 0⇒ cambio(ds C d , j) = cambio(ds, j),si j ≥ d hay dos posibilidades

la solución óptima no usa monedas de denominación dcambio(ds C d , j) = cambio(ds, j)

la solución óptima usa una o más monedas dedenominación d

cambio(ds C d , j) = 1 + cambio(ds C d , j − d)

Backtracking Algoritmos y Estructuras de Datos II

Page 20: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definición recursiva (a la Haskell) de cambio(ds, j)

Conclusión de estas últimas filminas:

cambio ds 0 = 0cambio [] j =∞cambio (ds C d) j | d > j = cambio ds j

| otherwise = min (cambio ds j)(1 + cambio (ds C d) (j - d))

Decisión que determina esta definición: ¿usamos monedas dedenominación d o no?

Backtracking Algoritmos y Estructuras de Datos II

Page 21: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definición recursiva de cambio(i , j)

Otra notación: definir cambio(i , j) = “menor número demonedas necesarias para pagar exactamente el monto j condenominaciones d1,d2, . . . ,di .”

cambio(i, j) =

0 j = 0∞ j > 0 ∧ i = 0cambio(i − 1, j) di > j > 0 ∧ i > 0min(cambio(i − 1, j), 1 + cambio(i, j − di)) j ≥ di > 0 ∧ i > 0

Decisión que determina esta definición: ¿usamos monedas dedenominación di o no?

Backtracking Algoritmos y Estructuras de Datos II

Page 22: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Otras posibles definiciones que usan backtrackingConsiderando el número exacto de monedas de denominación di

cambio(i, j) =

0 j = 0∞ j > 0 ∧ i = 0minq∈{0,1,...,j÷di}(q + cambio(i − 1, j − q ∗ di)) j > 0 ∧ i > 0

Acá estamos considerando la posibilidad de usar 0 monedas(q = 0) de denominación di , 1 moneda (q = 1) dedenominación di , etc. De todas esas posibilidades se elige laque minimice el número total de monedas.Decisión que determina esta definición: ¿cuántas monedas dedenominación di usamos?

Backtracking Algoritmos y Estructuras de Datos II

Page 23: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Otras posibles definiciones que usan backtrackingConsiderando cuál moneda de las disponibles se usa

cambio(i, j) ={

0 j = 01 + mini′∈{1,2,...,i | di′≤j}(cambio(i ′, j − di′)) j > 0

Acá estamos considerando la posibilidad de usar 1 moneda dedenominación di (i ′ = i), 1 moneda de denominación di−1(i ′ = i − 1), etc. De todas esas posibilidades se elige la queminimice el número total de monedas. Para evitar cálculosrepetidos, se restringe la búsqueda a monedas de índicemenor o igual a los ya utilizados.Decisión que determina esta definición: de las monedas deque disponemos, ¿cuál usamos?

Backtracking Algoritmos y Estructuras de Datos II

Page 24: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Primera definición recursiva en pseudocódigo

cambio(i, j) =

0 j = 0∞ j > 0 ∧ i = 0cambio(i − 1, j) di > j > 0 ∧ i > 0min(cambio(i − 1, j), 1 + cambio(i, j − di)) j ≥ di > 0 ∧ i > 0

fun cambio(d:array[1..n] of nat, i,j: nat) ret r: natif j=0 then r:= 0else if i = 0 then r:=∞else if d[i] > j then r:= cambio(d,i-1,j)else r:= min(cambio(d,i-1,j),1+cambio(d,i,j-d[i]))fi

end fun

Backtracking Algoritmos y Estructuras de Datos II

Page 25: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Segunda definición recursiva en pseudocódigo

cambio(i, j) =

0 j = 0∞ j > 0 ∧ i = 0minq∈{0,1,...,j÷di}(q + cambio(i − 1, j − q ∗ di)) j > 0 ∧ i > 0

fun cambio(d:array[1..n] of nat, i,j: nat) ret r: natif j=0 then r:= 0else if i = 0 then r:=∞else r:= cambio(d,i-1,j)

for q:= 1 to j ÷ d[i] dor:= min(r,q+cambio(d,i-1,j-q*d[i]))

odfi

end fun

Backtracking Algoritmos y Estructuras de Datos II

Page 26: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Tercera definición recursiva en pseudocódigo

cambio(i, j) ={

0 j = 01 + mini′∈{1,2,...,i | di′≤j}(cambio(i ′, j − di′)) j > 0

fun cambio(d:array[1..n] of nat, i,j: nat) ret r: natif j=0 then r:= 0else r:=∞

for i’:= 1 to i doif d[i’] ≤ j then r:= min(r,cambio(d,i’,j-d[i’])) fi

odr:= r + 1

fiend fun

Backtracking Algoritmos y Estructuras de Datos II

Page 27: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Otras posibilidades

No son éstas las únicas formas de resolver el problemausando backtracking.Podríamos definir, por ejemplo, a la Haskellcambio ds 0 = 0cambio [] j =∞cambio (d B ds) j | d > j = cambio ds j

| otherwise = min (cambio ds j)(1 + cambio (d B ds) (j - d))

Backtracking Algoritmos y Estructuras de Datos II

Page 28: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Otras posibilidades

Se correspondería concambio(i , j) = “menor número de monedas necesariaspara pagar exactamente el monto j con denominacionesdi+1,di+2, . . . ,dn.”

Obtendríamos, entre otras posibles definicionesrecursivas,

cambio(i, j) =

0 j = 0∞ j > 0 ∧ i = ncambio(i + 1, j) di > j > 0 ∧ i < nmin(cambio(i + 1, j), 1 + cambio(i, j − di)) j ≥ di > 0 ∧ i < n

Para resolver el problema original se calcula cambio(0, k).

Backtracking Algoritmos y Estructuras de Datos II

Page 29: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Primera solución, pero ¡Queremos las monedas!

fun cambio(d:array[1..n] of nat, i,j: nat) ret r: list of natvar r1, r2 : list of natif j=0 then r:= [ ]else if i = 0 then r:= una lista infinita o muy largaelse if d[i] > j then r:= cambio(d,i-1,j)else r1 := cambio(d,i-1,j)

r2 := cambio(d,i,j-d[i]) C d[i]if |r1| ≤ |r2| then r:= r1 else r:= r2 fi

fiend fun

donde |x| es la longitud de x,y la llamada principal es cambio(d,n,k).

Backtracking Algoritmos y Estructuras de Datos II

Page 30: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Problema de la mochila

Tenemos una mochila de capacidad W .Tenemos n objetos no fraccionables de valorv1, v2, . . . , vn y peso w1,w2, . . . ,wn.Se quiere encontrar la mejor selección de objetos parallevar en la mochila.Por mejor selección se entiende aquélla que totaliza elmayor valor posible sin que su peso exceda la capacidadW de la mochila.

Backtracking Algoritmos y Estructuras de Datos II

Page 31: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Simplificación y generalización

Simplificamos el problema:sólo nos interesa por ahora hallar el mayor valor posible sinexceder la capacidad de la mochila,no nos interesa saber cuáles son los objetos que alcanzanese máximo.

Generalizamos el problema:Sea os una lista cualquiera de pares (valor,peso) y0 ≤ j ≤W ,definimos mochila(os, j) = “mayor valor alcanzable sinexceder la capacidad j con objetos de os.”La solución del problema original se obtiene calculandomochila([(v1,w1), (v2,w2), . . . , (vn,wn)],W ).

Backtracking Algoritmos y Estructuras de Datos II

Page 32: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definición recursiva (a la Haskell) de mochila(os, j)

mochila os 0 = 0mochila [] j = 0mochila (os C (v,w)) j | w > j = mochila os j

| otherwise = max (mochila os j)(v + mochila os (j - w))

Decisión que determina esta definición: ¿colocamos o no elobjeto de (valor,peso) = (v ,w) en la mochila?

Backtracking Algoritmos y Estructuras de Datos II

Page 33: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definición recursiva de mochila(i , j)

Otra notación: definir mochila(i , j) = “mayor valor alcanzablesin exceder la capacidad j con objetos 1,2, . . . , i .”

mochila(i, j) =

0 j = 00 j > 0 ∧ i = 0mochila(i − 1, j) wi > j > 0 ∧ i > 0max(mochila(i − 1, j), vi + mochila(i − 1, j − wi)) j ≥ wi > 0 ∧ i > 0

Decisión que determina esta definición: ¿colocamos o no elobjeto i en la mochila?

Backtracking Algoritmos y Estructuras de Datos II

Page 34: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Otras posibilidades

Ofrece las mismas variantes que en el problema de lamoneda,el pasaje a pseudocódigo es similar,la incorporación de información con los objetos que van enla mochila es también parecido.

Backtracking Algoritmos y Estructuras de Datos II

Page 35: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Problema del camino de costo mínimoEntre todo par de vértices

Tenemos un grafo dirigido G = (V ,A),con costos no negativos en las aristas,se quiere encontrar, para cada par de vértices, el caminode menor costo que los une.Se asume V = {1, . . . ,n}

Backtracking Algoritmos y Estructuras de Datos II

Page 36: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Simplificación y generalización

Simplificamos el problema:sólo nos interesa por ahora hallar el costo de cada uno delos caminos de costo mínimo.no nos interesa saber cuáles son los caminos quealcanzan ese mínimo.

Generalizamos el problema:Sean 1 ≤ i , j ≤ n y 0 ≤ k ≤ n,definimos caminok (i , j) = “menor costo posible paracaminos de i a j cuyos vértices intermedios se encuentranen el conjunto {1,. . . ,k}.”La solución del problema original se obtiene calculandocaminon(i , j) para el par i (origen) y j (destino) que sedesea.

Backtracking Algoritmos y Estructuras de Datos II

Page 37: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Forma general de algoritmos voraces¿Y cuando no hay un buen criterio de selección?Problema de la monedaProblema de la mochilaCamino de costo mínimo entre todo par de vértices

Definición recursiva de caminok(i , j)

caminok (i, j) ={

L[i, j] k = 0min(caminok−1(i, j), caminok−1(i, k) + caminok−1(k , j)) k ≥ 1

donde L[i , j] es el costo de la arista que va de i a j , o infinito sino hay tal arista.Decisión que determina esta definición: ¿pasamos por elvértice k o no?

Backtracking Algoritmos y Estructuras de Datos II

Page 38: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Conclusiones

Hemos visto soluciones a tres problemas.En general, muy ineficiente.Por ejemplo, para el problema de la moneda, si queremospagar el monto 90 con nuestros billetes condenominaciones 1, 5 y 10,

cambio(3,90) llama a cambio(2,90) y cambio(3,80),cambio(2,90) llama a cambio(1,90) y cambio(2,85),cambio(2,85) llama a cambio(1,85) y cambio(2,80),cambio(3,80) llama a cambio(2,80) y cambio(3,70).

Se ve que cambio(2,80) se calcula 2 veces.y muchos otros llamados se repiten, incluso varias veces.Esto vuelve los algoritmos exponenciales en el peor caso.

Backtracking Algoritmos y Estructuras de Datos II

Page 39: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Problema de la monedaPrimera solución que usa backtracking

Recordemos la primera solución al problema de la monedausando backtracking:

cambio(i, j) =

0 j = 0∞ j > 0 ∧ i = 0cambio(i − 1, j) di > j > 0 ∧ i > 0min(cambio(i − 1, j), 1 + cambio(i, j − di)) j ≥ di > 0 ∧ i > 0

Backtracking Algoritmos y Estructuras de Datos II

Page 40: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Grafo implícitoEjemplo d1 = 1, d2 = 10, d3 = 25 y k = 30

(3,30,0)

(2,30,0)�����

������

(3,5,1)XX

XXXXXX

XXX

(1,30,0)�����

(2,20,1)PP

PPP

(1,29,1)

(1,28,2)

(1,0,30)

...

(1,20,1)���

(2,10,2)Q

QQ

(1,19,2)

(1,0,21)

...

(1,10,2)""""

(2,0,3)bb

bb

(1,0,12)

...

(2,5,1)

(1,5,1)

(1,4,2)

(1,0,6)

...

Backtracking Algoritmos y Estructuras de Datos II

Page 41: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Grafo implícitoDefinición general

Desde el vértice (i , j , x), si i , j > 0 y di < j existe una únicaarista al vértice (i − 1, j , x).En cambio si j ≤ di existen dos aristas:

una a (i − 1, j , x)y otra a (i , j − di , x + 1).

la raíz es el vértice (n, k ,0).

Backtracking Algoritmos y Estructuras de Datos II

Page 42: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Problema de la monedaTercera solución que usa backtracking

Recordemos otra solución al problema de la moneda usandobacktracking:

cambio(i, j) ={

0 j = 01 + mini′∈{1,2,...,i | di′≤j}(cambio(i ′, j − di′)) j > 0

Backtracking Algoritmos y Estructuras de Datos II

Page 43: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Grafo implícitoEjemplo d1 = 1, d2 = 10, d3 = 25 y k = 55

(3,55,0)

(1,54,1)

(2,45,1) (3,30,1)```

``````

`````̀

(1,53,2)

(1,52,3)

(1,51,4)

(1,50,5)

(1,49,6)

(1,0,55)

...

(1,44,2)

(2,35,2)

(1,43,3)

(1,42,4)

(1,41,5)

(1,40,6)

(1,0,46)

...

(1,34,3)�����

���

(2,25,3)

(1,33,4)

(1,32,5)

(1,31,6)

(1,0,37)

...

(1,24,4)!!

!!

(2,15,4)

(1,23,5)

(1,22,6)

(1,0,28)

...

(1,14,5) (2,5,5)Q

QQ

(1,13,6)

(1,0,19)

...

(1,4,6)

(1,0,10)

...

(1,29,2)���

����

(2,20,2) (3,5,2)XXX

XXXX

(1,28,3)

(1,27,4)

(1,26,5)

(1,25,6)

(1,0,31)

...

(1,19,3)!!!!

(2,10,3)aa

aa

(1,18,4)

(1,17,5)

(1,16,6)

(1,0,22)

...

(1,9,4)����

(2,0,4)

(1,8,5)

(1,7,6)

(1,0,13)

...

(1,4,3)

(1,3,4)

(1,2,5)

(1,1,6)

(1,0,7)

Backtracking Algoritmos y Estructuras de Datos II

Page 44: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Grafo implícitoDefinición general

La raíz resulta la misma que en el caso anterior,pero el vértice (i , j , x) puede tener 0, 1, o varios hijos:

todos los vértices de la forma (i ′, j − di′ ,1 + x) tal que1 ≤ i ′ ≤ i y di′ ≤ j ,son hijos de (i , j , x).

Backtracking Algoritmos y Estructuras de Datos II

Page 45: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas

Problema: Encontrar la manera de ubicar 8 reinas en untablero de 8 filas por 8 columnas de manera tal que ningúnpar de reinas ocupe la misma fila, la misma columna o lamisma diagonal.para los que saben ajedrez: de modo de que ningunareina amenace a otra.Es un ejemplo típico de problema que se resuelve usandobacktracking, a pesar de no ser de optimización.Generalización: ubicar n reinas en un tablero de n filas porn columnas de manera tal que ningún par de reinas ocupela misma fila, la misma columna o la misma diagonal.

0 reinas, tiene una solución (0 reinas en tablero de 0× 0).1 reina, también (1 reina en tablero de 1× 1).

Backtracking Algoritmos y Estructuras de Datos II

Page 46: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Dos reinas

1

Backtracking Algoritmos y Estructuras de Datos II

Page 47: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Tres reinas

1

2

1

Backtracking Algoritmos y Estructuras de Datos II

Page 48: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Cuatro reinas

1

2 2

3

1

2

3

4

Backtracking Algoritmos y Estructuras de Datos II

Page 49: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Cinco reinas

1

2

3

4

5

2

3

4

5

2

3

1

2

3

4

5

Backtracking Algoritmos y Estructuras de Datos II

Page 50: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Resumiendo

n reinas:n = 0 tiene una soluciónn = 1 tiene una soluciónn = 2 no tiene soluciónn = 3 no tiene soluciónn = 4 tiene soluciónn = 5 varias solucionesn ≥ 4 siempre tiene solución

Backtracking Algoritmos y Estructuras de Datos II

Page 51: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, peor algoritmo posible

1 2 3 4 5 6 7 8

8 8 8

8 8

7

8 8

8 8

Backtracking Algoritmos y Estructuras de Datos II

Page 52: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, peor algoritmo posibleEl algoritmo

Calcula el número de maneras de ubicar 8 reinas sin que seamenacen.

fun ocho_reinas_1() ret r: natr:= 0for i1:= 1 to 57 do

for i2:= i1+1 to 58 do. . .

for i8:= i7+1 to 64 doif solucion_1([i1,i2,i3,i4,i5,i6,i7,i8]) then r:= r+1 fi

od. . .

odod

endBacktracking Algoritmos y Estructuras de Datos II

Page 53: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, peor algoritmo posibleEl grafo implícito

V = {[p1,p2, . . . ,pn] ∈ {1, . . . ,64}∗ |n ≤ 8 ∧ p1 < p2 < . . . < pn ≤ 56 + n}

Dados p = [p1,p2, . . . ,pn] ∈ V y q = [q1,q2, . . . ,qm] ∈ V hayuna arista de p a q sii m = n + 1 y pi = qi para todo 1 ≤ i ≤ n.

Backtracking Algoritmos y Estructuras de Datos II

Page 54: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo menos malo

1

2

3

4

5

6

7

8 8 8 8 8 8 8 8

7

8 8 8 8 8 8 8 8

Backtracking Algoritmos y Estructuras de Datos II

Page 55: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo menos maloEl algoritmo

Calcula el número de maneras de ubicar 8 reinas sin que seamenacen.

fun ocho_reinas_2() ret r: natr:= 0for j1:= 1 to 8 do

for j2:= 1 to 8 do. . .

for j8:= 1 to 8 doif solucion_2([j1,j2,j3,j4,j5,j6,j7,j8]) then r:= r+1 fi

od. . .

odod

endBacktracking Algoritmos y Estructuras de Datos II

Page 56: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo menos maloEl grafo implícito

V = {p ∈ {1, . . . ,8}∗ | |p| ≤ 8}

Y las aristas se definen como antes.

Backtracking Algoritmos y Estructuras de Datos II

Page 57: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, versión recursiva

fun ocho_reinas_2() ret r: natr:= 0or_2([ ], r)

end

proc or_2(in sol: list of nat, in/out r: nat){calcula el número de maneras de extender sol}

{hasta ubicar en total 8 reinas sin que se amenacen}if |sol| = 8 then

if solucion_2(sol) then r:= r+1 fielse for j:= 1 to 8 do

or_2(sol C j, r)od

fiend

Backtracking Algoritmos y Estructuras de Datos II

Page 58: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo mejor

1

2

3

4

5

6

7

8

7

8

6

7

8

7

8

Backtracking Algoritmos y Estructuras de Datos II

Page 59: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo mejorEl algoritmo

fun ocho_reinas_3() ret r: natr:= 0or_3([ ], r)

end

proc or_3(in sol: list of nat, in/out r: nat){calcula el número de maneras de extender sol}

{hasta ubicar en total 8 reinas sin que se amenacen}if |sol| = 8 then

if solucion_3(sol) then r:= r+1 fielse for j:= 1 to 8 do

if j 6∈ sol then or_3(sol C j, r) fiod

fiend

Backtracking Algoritmos y Estructuras de Datos II

Page 60: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo mejorEl grafo implícito

V = {p ∈ {1, . . . ,8}∗ | |p| ≤ 8 ∧ p sin repeticiones}

Y las aristas se definen como antes.

Backtracking Algoritmos y Estructuras de Datos II

Page 61: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo optimizado

1

2

3

4

5 5

4

5

6

7

5

4

5

6

7

55

2

3

4

5

6

7

8

Backtracking Algoritmos y Estructuras de Datos II

Page 62: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 63: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 64: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 65: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 66: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 67: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 68: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 69: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 70: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 71: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 72: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 73: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 74: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 75: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 76: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 77: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 78: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 79: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 80: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 81: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 82: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 83: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 84: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 85: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 86: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 87: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 88: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 89: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 90: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 91: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 92: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 93: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 94: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 95: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 96: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 97: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 98: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 99: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 100: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 101: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 102: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 103: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 104: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 105: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 106: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 107: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 108: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 109: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 110: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 111: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 112: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 113: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 114: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 115: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 116: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 117: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 118: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 119: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 120: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 121: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 122: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 123: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 124: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 125: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 126: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 127: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 128: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 129: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 130: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 131: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 132: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 133: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 134: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 135: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 136: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 137: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 138: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 139: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 140: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 141: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 142: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 143: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 144: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 145: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 146: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 147: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 148: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 149: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 150: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 151: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 152: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 153: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, todas las soluciones

Q

Q

Q

Q

Q

Q

Q

Q

Backtracking Algoritmos y Estructuras de Datos II

Page 154: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo optimizadoEl algoritmo

proc or_4(in sol, bajadas, subidas: list of nat, in/out r: nat){calcula el número de maneras de extender sol}

{hasta ubicar en total 8 reinas sin que se amenacen}{bajadas y subidas son las diagonales ya amenazadas}

if |sol| = 8 then r:= r+1 fielse i:= |sol|+1

for j:= 1 to 8 doif j 6∈ sol ∧ bajada(i,j) 6∈ bajadas ∧ subida(i,j) 6∈ subidasthen or_4(sol C j, bajadas C bajada(i,j), subidas C subida(i,j), r)fi

odfi

end

Backtracking Algoritmos y Estructuras de Datos II

Page 155: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo optimizadoEl algoritmo principal

fun ocho_reinas_4() ret r: natr:= 0or_4([ ], [ ], [ ], r)

end

Backtracking Algoritmos y Estructuras de Datos II

Page 156: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Sobre bajadas y subidas

Observar queTodas las celdas de una bajada tienen en común que ladiferencia entre la fila y la columna dan el mismo resultado.Todas las celdas de una subida tienen en común que lasuma entre la fila y la columna dan el mismo resultado.

Esto sugiere la siguiente idea.

Backtracking Algoritmos y Estructuras de Datos II

Page 157: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo optimizadoAlgoritmos auxiliares

fun bajada(i,j:nat) ret r: natr:= i-j+7

endfun subida(i,j:nat) ret r: nat

r:= i+jend

Backtracking Algoritmos y Estructuras de Datos II

Page 158: Algoritmos y Estructuras de Datos II...Algoritmos y Estructuras de Datos II Backtracking 15 de mayo de 2019 Backtracking Algoritmos y Estructuras de Datos II. ... Ocho reinas Clase

BacktrackingConclusiones

Backtracking, grafo implícitoOcho reinas

Ocho reinas, un algoritmo mejorEl grafo implícito

Ahora resulta más complicado explicitar el grafo implícito: V esel conjunto de listas [p1, . . . ,pn] ∈ {1, . . . ,8}∗ tales que paratodo i 6= j las siguientes condiciones se cumplen:

1 pi 6= pj , es decir que no se repiten columnas,2 pi − i 6= pj − j , es decir que no se repiten bajadas, y3 pi + i 6= pj + j , es decir que no se repiten subidas.

Las aristas se establecen como en los intentos anteriores.

Backtracking Algoritmos y Estructuras de Datos II