Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf ·...

42
Estratégias generales de análisis y diseño de algorítmos comp-420 Friday, August 30, 13

Transcript of Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf ·...

Page 1: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Estratégias generales de análisis y diseño de algorítmos

comp-420

Friday, August 30, 13

Page 2: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Ayudantes

• Hugo Eduardo Dueñas [email protected] (ordinaria)

• Alberto José Ramirez Valadez [email protected] (ordinaria)

• Mandar tareas (programas)

• dropbox

• comentarios en el codigo

• Hugo taréas impares

• Beto taréas pares

• Programa que no compile vale cero

Friday, August 30, 13

Page 3: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Búsqueda exhaustiva (fuerza bruta)

• Probar todas las soluciones candidatas posibles hasta encontrar la solución al

problema.

• Limite: ineficiencia

• en general el número de candidatos a solución que se necesitan procesar crecen

exponencialmente al tamaño del problema.

• generación de candidatos a solución,

• procesamiento y verificación de candidatos a solución.

• Ej. Magic Square Fill

Friday, August 30, 13

Page 4: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Búsqueda exhaustiva (fuerza bruta)

• Probar todas las soluciones candidatas posibles hasta encontrar la solución al

problema.

• Limite: ineficiencia

• en general el número de candidatos a solución que se necesitan procesar crecen

exponencialmente al tamaño del problema.

• generación de candidatos a solución,

• procesamiento y verificación de candidatos a solución.

• Ej. Magic Square Fill

Friday, August 30, 13

Page 5: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

Friday, August 30, 13

Page 6: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Es un Algoritmo general para encontrar todas, o alguna solución a un problema

computacional.

Friday, August 30, 13

Page 7: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Es un Algoritmo general para encontrar todas, o alguna solución a un problema

computacional.

• Incrementalmente genera soluciones candidatas, y abandona una solucion parcial C

tan pronto como se da cuenta de que C n podrá completar una solución valida.

Friday, August 30, 13

Page 8: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

Friday, August 30, 13

Page 9: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Da un método conveniente para generar candidatos a solución y evitar generar

candidatos innecesarios.

Friday, August 30, 13

Page 10: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Da un método conveniente para generar candidatos a solución y evitar generar

candidatos innecesarios.

• Construir soluciones un componente cada vez y evaluar las soluciones parcialmente

construidas como sigue:

Friday, August 30, 13

Page 11: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Da un método conveniente para generar candidatos a solución y evitar generar

candidatos innecesarios.

• Construir soluciones un componente cada vez y evaluar las soluciones parcialmente

construidas como sigue:

• si puede desarrollarse más sin violar las restricciones del problema, expandir

tomando la primera opción legítima posible.

Friday, August 30, 13

Page 12: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Da un método conveniente para generar candidatos a solución y evitar generar

candidatos innecesarios.

• Construir soluciones un componente cada vez y evaluar las soluciones parcialmente

construidas como sigue:

• si puede desarrollarse más sin violar las restricciones del problema, expandir

tomando la primera opción legítima posible.

• si no hay opción legítima para el siguiente componente no se necesita seguir

expandiendo y regresamos al primer nodo posible.

Friday, August 30, 13

Page 13: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Da un método conveniente para generar candidatos a solución y evitar generar

candidatos innecesarios.

• Construir soluciones un componente cada vez y evaluar las soluciones parcialmente

construidas como sigue:

• si puede desarrollarse más sin violar las restricciones del problema, expandir

tomando la primera opción legítima posible.

• si no hay opción legítima para el siguiente componente no se necesita seguir

expandiendo y regresamos al primer nodo posible.

• en el peor caso puede ser como búsqueda exhaustiva pero casi nunca pasa esto.

Friday, August 30, 13

Page 14: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking

• Da un método conveniente para generar candidatos a solución y evitar generar

candidatos innecesarios.

• Construir soluciones un componente cada vez y evaluar las soluciones parcialmente

construidas como sigue:

• si puede desarrollarse más sin violar las restricciones del problema, expandir

tomando la primera opción legítima posible.

• si no hay opción legítima para el siguiente componente no se necesita seguir

expandiendo y regresamos al primer nodo posible.

• en el peor caso puede ser como búsqueda exhaustiva pero casi nunca pasa esto.

• Se puede pensar como un árbol de decisiones.

Friday, August 30, 13

Page 15: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking (vuelta atrás)

Friday, August 30, 13

Page 16: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking (vuelta atrás)

• Un algoritmo de backtracking intenta construir una solución a un problema computacional de manera incremental.

Friday, August 30, 13

Page 17: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking (vuelta atrás)

• Un algoritmo de backtracking intenta construir una solución a un problema computacional de manera incremental.

• Cuando el algoritmo necesita decidir entre dos opciones para el siguiente componente de la solución, trata ambas recursivamente.

Friday, August 30, 13

Page 18: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Backtracking (vuelta atrás)

• Un algoritmo de backtracking intenta construir una solución a un problema computacional de manera incremental.

• Cuando el algoritmo necesita decidir entre dos opciones para el siguiente componente de la solución, trata ambas recursivamente.

• El término backtrack fue acuñado por el matemático estadounidense D.H. Lehmer en los años 1950s.

Friday, August 30, 13

Page 19: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas

Friday, August 30, 13

Page 20: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Problema prototipo que se resuelve por backtracking.

Friday, August 30, 13

Page 21: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Problema prototipo que se resuelve por backtracking.

• Propuesto por el entusiasta del ajedrez Max Bezzel en 1848 para un tablero estándar de 8x8.

Friday, August 30, 13

Page 22: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Problema prototipo que se resuelve por backtracking.

• Propuesto por el entusiasta del ajedrez Max Bezzel en 1848 para un tablero estándar de 8x8.

• Resuelto y generalizado a tableros más grandes por Franz Nauck en 1950.

Friday, August 30, 13

Page 23: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Problema prototipo que se resuelve por backtracking.

• Propuesto por el entusiasta del ajedrez Max Bezzel en 1848 para un tablero estándar de 8x8.

• Resuelto y generalizado a tableros más grandes por Franz Nauck en 1950.

• Poner a n reinas en un tablero de nxn de tal forma que ningún par de reinas se puedan atacar.

Friday, August 30, 13

Page 24: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Problema prototipo que se resuelve por backtracking.

• Propuesto por el entusiasta del ajedrez Max Bezzel en 1848 para un tablero estándar de 8x8.

• Resuelto y generalizado a tableros más grandes por Franz Nauck en 1950.

• Poner a n reinas en un tablero de nxn de tal forma que ningún par de reinas se puedan atacar.

• ningún par de reinas pueden estar en la misma columna, renglón o diagonal.

Friday, August 30, 13

Page 25: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Problema prototipo que se resuelve por backtracking.

• Propuesto por el entusiasta del ajedrez Max Bezzel en 1848 para un tablero estándar de 8x8.

• Resuelto y generalizado a tableros más grandes por Franz Nauck en 1950.

• Poner a n reinas en un tablero de nxn de tal forma que ningún par de reinas se puedan atacar.

• ningún par de reinas pueden estar en la misma columna, renglón o diagonal.

• En cualquier solución al problema de las n-reinas habrá solamente 1 reina en cada columna del tablero.

Friday, August 30, 13

Page 26: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas

Friday, August 30, 13

Page 27: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

Friday, August 30, 13

Page 28: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

[4,7,3,8,2,5,1,6]

Friday, August 30, 13

Page 29: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

• Para resolver el problema se colocan las reinas renglón por renglón empezando de arriba.

[4,7,3,8,2,5,1,6]

Friday, August 30, 13

Page 30: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

• Para resolver el problema se colocan las reinas renglón por renglón empezando de arriba.

• Una solución parcial es un arreglo Q[1,...,n] cuyas primeras r-1 entradas son positivas y cuyas últimas n-r+1 entradas son ceros, para un entero dado r.

[4,7,3,8,2,5,1,6]

Friday, August 30, 13

Page 31: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

• Para resolver el problema se colocan las reinas renglón por renglón empezando de arriba.

• Una solución parcial es un arreglo Q[1,...,n] cuyas primeras r-1 entradas son positivas y cuyas últimas n-r+1 entradas son ceros, para un entero dado r.

• El algoritmo recursivo enumera todas las soluciones al problema de las n-reinas que sean consistentes con una solución parcial dada.

[4,7,3,8,2,5,1,6]

Friday, August 30, 13

Page 32: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

• Para resolver el problema se colocan las reinas renglón por renglón empezando de arriba.

• Una solución parcial es un arreglo Q[1,...,n] cuyas primeras r-1 entradas son positivas y cuyas últimas n-r+1 entradas son ceros, para un entero dado r.

• El algoritmo recursivo enumera todas las soluciones al problema de las n-reinas que sean consistentes con una solución parcial dada.

• r → primer renglón r vacío.

[4,7,3,8,2,5,1,6]

Friday, August 30, 13

Page 33: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Problema de las n-reinas• Las soluciones posibles se representan usando un arreglo

Q[1,...,n] donde Q[i] indica la casilla en el renglón i que contiene a la reina o 0 si no se ha colocado reina en el renglón i.

• Para resolver el problema se colocan las reinas renglón por renglón empezando de arriba.

• Una solución parcial es un arreglo Q[1,...,n] cuyas primeras r-1 entradas son positivas y cuyas últimas n-r+1 entradas son ceros, para un entero dado r.

• El algoritmo recursivo enumera todas las soluciones al problema de las n-reinas que sean consistentes con una solución parcial dada.

• r → primer renglón r vacío.

• para resolver el problema se llama al procedimiento RECURSIVEQUEENS( Q[1,...,n],1 ).

[4,7,3,8,2,5,1,6]

Friday, August 30, 13

Page 34: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Friday, August 30, 13

Page 35: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Friday, August 30, 13

Page 36: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Friday, August 30, 13

Page 37: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Suma de subconjuntos

Friday, August 30, 13

Page 38: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Suma de subconjuntos

• Dado un conjunto de X enteros positivos y un entero meta T, ¿existe un subconjunto de elementos en X que sumen T?

Friday, August 30, 13

Page 39: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Suma de subconjuntos

• Dado un conjunto de X enteros positivos y un entero meta T, ¿existe un subconjunto de elementos en X que sumen T?

• Notemos que puede haber más de un subconjunto.

Friday, August 30, 13

Page 40: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Suma de subconjuntos

• Dado un conjunto de X enteros positivos y un entero meta T, ¿existe un subconjunto de elementos en X que sumen T?

• Notemos que puede haber más de un subconjunto.

• Por ejemplo:

Friday, August 30, 13

Page 41: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Suma de subconjuntos

• Dado un conjunto de X enteros positivos y un entero meta T, ¿existe un subconjunto de elementos en X que sumen T?

• Notemos que puede haber más de un subconjunto.

• Por ejemplo:

• si X = {8,6,7,5,3,10,9} y T=15, es VERDADERO porque existen los subconjuntos {8,7} o {7,5,3} o {6,9} o {5,10}.

Friday, August 30, 13

Page 42: Estratégias generales de análisis y diseño de algorítmosalram/analisis_algo/clase05.pdf · Problema de las n-reinas • Las soluciones posibles se representan usando un arreglo

Suma de subconjuntos

• Dado un conjunto de X enteros positivos y un entero meta T, ¿existe un subconjunto de elementos en X que sumen T?

• Notemos que puede haber más de un subconjunto.

• Por ejemplo:

• si X = {8,6,7,5,3,10,9} y T=15, es VERDADERO porque existen los subconjuntos {8,7} o {7,5,3} o {6,9} o {5,10}.

• si X = {11,6,5,1,7,13,12} y T = 15 la respuesta es FALSO.

Friday, August 30, 13