Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo...

34
Decrementa y vencerás Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 19 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 1 / 30

Transcript of Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo...

Page 1: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás

Dr. Eduardo A. RODRÍGUEZ TELLO

CINVESTAV-Tamaulipas

19 de febrero de 2018

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 1 / 30

Page 2: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

1 Decrementa y vencerásTipos de algoritmos decrementa y vencerásOrdenamiento por inserciónAlgoritmos para generar objetos combinatorios

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 2 / 30

Page 3: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás

Decrementa y vencerás

Algoritmo decrementa y vencerás1 Reduce la instancia del problema a la instancia más pequeña del

mismo problema

2 Resuelve la instancias más pequeña

3 Extiende la solución de la instancias más pequeña para obteneruna solución del problema original

Puede ser implementado de arriba-abajo (top-down), o de abajo-arriba(bottom-up)

También se conoce como enfoque inductivo o incremental

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 3 / 30

Page 4: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Tipos de algoritmos decrementa y vencerás

1 Decrementa y vencerásTipos de algoritmos decrementa y vencerásOrdenamiento por inserciónAlgoritmos para generar objetos combinatorios

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 4 / 30

Page 5: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Tipos de algoritmos decrementa y vencerás

Decrementa y vencerás

Existen tres tipos de algoritmos decrementa y vencerás:1 Decremento con una constante (usualmente 1):

Ordenamiento por inserciónOrdenamiento topológicoAlgoritmos para generar permutaciones, subconjuntos

2 Decremento con factor constante (usualmente la mitad)Búsqueda binariaExponenciación por cuadradosMultiplicación por el método ruso

3 Decremento de tamaño variableAlgoritmo de EuclidesSelección por particiónJuego de tipo Nim

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 5 / 30

Page 6: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Tipos de algoritmos decrementa y vencerás

Decrementa y vencerás, ¿Diferencia?

Considere el problema de exponenciación: calcular f(n) = an

Fuerza bruta:an = a ∗ · · · ∗ a︸ ︷︷ ︸

n veces

Decrementa en uno:

an =

{an−1 · a si n > 0,1 si n = 0,

Decrementa en un factor constante:

an =

(a

n2

)2si n es par y positivo,(

an−12

)2· a si n es impar,

1 si n = 0,

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 6 / 30

Page 7: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

1 Decrementa y vencerásTipos de algoritmos decrementa y vencerásOrdenamiento por inserciónAlgoritmos para generar objetos combinatorios

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 7 / 30

Page 8: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción

Para ordenar un arreglo A[0 . . . n− 1], ordena recursivamenteA[0 . . . n− 2] e inserta después A[n− 1] en su posición correctadentro del sub-arreglo A[0 . . . n− 2]

Usualmente se implementa bottom-up (no recursivo)

A[0] ≤ . . . ≤ A[j] < A[j + 1] ≤ . . . ≤ A[i− 1] | A[i] . . . A[n− 1]

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 8 / 30

Page 9: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 9 / 30

Page 10: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Eficiencia temporal

Peor caso

Arreglo ordenado decrecientemente. La operación básica es la comparación A[j] > v

Cworst(n) =

n−1∑i=1

i−1∑j=0

1 =

n−1∑i=1

i =n(n− 1)

2∈ Θ(n2)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 10 / 30

Page 11: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Eficiencia temporal

Peor caso

Arreglo ordenado decrecientemente. La operación básica es la comparación A[j] > v

Cworst(n) =

n−1∑i=1

i−1∑j=0

1 =

n−1∑i=1

i =n(n− 1)

2∈ Θ(n2)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 10 / 30

Page 12: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Eficiencia temporal

Mejor caso

Arreglo ordenado crecientemente.

Cbest(n) =

n−1∑i=1

1 = n− 1 ∈ Θ(n)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 11 / 30

Page 13: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Eficiencia temporal

Mejor caso

Arreglo ordenado crecientemente.

Cbest(n) =

n−1∑i=1

1 = n− 1 ∈ Θ(n)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 11 / 30

Page 14: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Eficiencia temporal

Caso promedio

Cavg(n) ≈ n2

4∈ Θ(n2)

También es rápido en arreglos casi ordenados

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 12 / 30

Page 15: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Eficiencia temporal

Caso promedio

Cavg(n) ≈ n2

4∈ Θ(n2)

También es rápido en arreglos casi ordenados

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 12 / 30

Page 16: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Ordenamiento por inserción

Ordenamiento por inserción, Ventajas

Su eficiencia promedio junto con la excelente eficiencia enarreglos casi ordenados permite al ordenamiento por insercióndestacar frente a otros algoritmos elementales de ordenamiento(por selección y de burbuja) aplicados a conjuntos de datosrelativamente pequeños

Su extensión conocida como ordenamiento Shell [Shell 1959] daincluso mejores resultados al aplicarlo a archivos relativamentegrandes

Eficiencia espacial: in-situ (in-place), i.e., está acotada por unafunción constante O(1)

Es estable, i.e., no cambia el orden relativo de los elementos conigual llave

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 13 / 30

Page 17: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

1 Decrementa y vencerásTipos de algoritmos decrementa y vencerásOrdenamiento por inserciónAlgoritmos para generar objetos combinatorios

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 14 / 30

Page 18: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Generación de permutaciones

Algoritmo de Heap [Heap, 1963], mínimo cambio - decremento en uno

Procedure generatePermutations(n,A)

Require: Longitud de las permutaciones n; arreglo A de tamaño m donde m ≥ n1: if n == 1 then2: print(A)3: else4: for i← 1; i ≤ n; i← i + 1 do5: generatePermutations(n− 1, A)6: if n es impar then7: j ← 18: else9: j ← i

10: end if11: swap(A[j], A[n])12: end for13: end if

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 15 / 30

Page 19: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Generación de permutaciones

Podemos observar un buen ejemplo del funcionamiento de estealgoritmo en la siguiente URL:

http://en.wikipedia.org/wiki/Heap's_algorithm

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 16 / 30

Page 20: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo de Heap, Análisis

swap es la operación básica. El número de operaciones realizadas para unarreglo de n elementos es S(n):

S(1) = 0

S(n) =

n∑i=1

[S(n− 1) + 1]

S(n) = nS(n− 1) + n para n > 1

Resolviendo la relación de recurrencia mediante sustitución hacia atrás:

S(n) = nn−1S(1) +

n−1∑k=1

nk

Como S(1) = 0 sólo queda el término de la derecha:

S(n) =

n−1∑k=1

nk ≈ n!(e− 1)− 1 ∈ Θ(n!)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 17 / 30

Page 21: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo de Heap, Análisis

swap es la operación básica. El número de operaciones realizadas para unarreglo de n elementos es S(n):

S(1) = 0

S(n) =

n∑i=1

[S(n− 1) + 1]

S(n) = nS(n− 1) + n para n > 1

Resolviendo la relación de recurrencia mediante sustitución hacia atrás:

S(n) = nn−1S(1) +

n−1∑k=1

nk

Como S(1) = 0 sólo queda el término de la derecha:

S(n) =

n−1∑k=1

nk ≈ n!(e− 1)− 1 ∈ Θ(n!)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 17 / 30

Page 22: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Ejercicio

Algoritmo de Heap [Heap, 1963], mínimo cambio - decremento en uno

Procedure generatePermutations(n,A)

Require: Longitud de las permutaciones n; arreglo A de tamaño m donde m ≥ n

1: if n == 1 then2: print(A)3: else4: for i← 1; i ≤ n; i← i+ 1 do5: generatePermutations(n− 1, A)6: if n es impar then7: swap(A[1], A[n])8: else9: swap(A[i], A[n])10: end if11: end for12: end if

Dado A = {1, 2, . . . , n}, y n = 4 trace la salida del algoritmo

¿Cómo podría probarse la correctitud (correctness) del algoritmo?

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 18 / 30

Page 23: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Generación de permutaciones

Respuesta:

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 19 / 30

Page 24: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Otros algoritmos para generar permutaciones

Steinhaus-Johnson-Trotter (Johnson-Trotter)

Lexicographic-order

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 20 / 30

Page 25: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Steinhaus-Johnson-Trotter

Podemos generar las permutaciones en un mismo orden singenerar explícitamente permutaciones de tamaño más pequeño

Para ello asociamos una dirección a cada elemento k (flecha)

Un elemento k es movible si su flecha apunta a un númeroadyacente más pequeño

Ejemplo con n = 3:−→3←−2−→4←−1

3 y 4 son movibles mientras que 1 y 2 no lo son

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 21 / 30

Page 26: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Steinhaus-Johnson-Trotter

Ejemplo con n = 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 22 / 30

Page 27: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Steinhaus-Johnson-Trotter

Este algoritmo es uno de los más eficientes para generarpermutaciones

Puede ser implementado para correr en tiempo proporcional alnúmero de permutaciones, i.e., Θ(n!)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 23 / 30

Page 28: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Lexicographic-order

Observemos que el orden en que genera las permutaciones elalgoritmo Steinhaus-Johnson-Trotter no es el más natural

Por ejemplo, sería deseable que la permutación n(n− 1) . . . 1fuera la última de la lista

Esto sería el caso si se listaran en orden ascendente, tambiénconocido como lexicográfico

Ejemplo con n = 3:123 132 213 231 312 321

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 24 / 30

Page 29: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Lexicographic-order

Cómo podemos generar la permutación que sigue dea1, a2, . . . , an−1, an en el orden lexicográfico

Si an−1 < an, lo cual es el caso para la mitad de todas laspermutaciones, podemos simplemente intercambiar estos dosúltimos elementos

Por ejemplo, 123 es seguido de 132

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 25 / 30

Page 30: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Lexicographic-order

Si an−1 > an, por ejemplo (5, 1, 7, 6, 3, 9, 8, 4, 2)

Encontramos el sufijo decreciente más largo de la permutaciónai+1 > ai+2 > . . . > an (pero ai < ai+1). Iniciando al final tenemosque 4 > 2, 8 > 4, 9 > 8, y finalmente 3 < 9.

Por lo tanto el pivote es i = 5 (ai = 3 y ai+1 = 9):(5, 1, 7, 6, 3, 9, 8, 4, 2)

Iniciando en i + 1 observamos que 3 < 9, 3 < 8, 3 < 4, pero 3 > 2.El ultimo valor que es todavía mayor que 3 es 4, y su índice esj = 8.

Intercambiamos ai y aj (incrementando ai), para obtener:(5, 1, 7, 6, 4, 9, 8,3, 2)

Invertimos el nuevo sufijo (desde ai+1 hasta an) para obtener elresultado:(5, 1, 7, 6, 4, 2, 3, 8, 9)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 26 / 30

Page 31: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Algoritmo Lexicographic-order

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 27 / 30

Page 32: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Generación de subconjuntos

El conjunto potencia de un conjunto A = {a1, . . . , an} es elconjunto de todos los subconjuntos de A, incluyendo el conjuntovacío y al mismo A.Ejemplos:

Para un conjunto con n elementos es posible formar 2n

subconjuntos¿Cómo generarlos?

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 28 / 30

Page 33: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Generación de subconjuntos

Código binario reflejado (Código Gray):Algoritmo de mínimo cambio para generar las 2n cadenas binariascorrespondientes a todos los subconjuntos de un conjunto de nelementos (n > 0)Ventaja: cada cadena difiere de su predecesora sólo en un bitSuponga el caso n = 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 29 / 30

Page 34: Dr. Eduardo A. RODRÍGUEZ T - tamps.cinvestav.mxertello/algorithms/sesion10.pdf · Algoritmo decrementa y vencerás 1 Reduce la instancia del problema a la instancia más pequeña

Decrementa y vencerás Algoritmos para generar objetos combinatorios

Generación de subconjuntos

Ejemplo: generar el código binario reflejado para n = 4.Como el código Gray para n = 3 es: 000 001 011 010 110 111 101 100, entonces elalgoritmo haría lo siguiente:

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás 19 de febrero de 2018 30 / 30