decrementa y vencerás ii - cinvestavertello/algorithms/sesion11.pdf · búsqueda por...

23
Decrementa y vencerás II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás II 21 de febrero de 2018 1 / 22

Upload: others

Post on 22-Aug-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II

Dr. Eduardo A. RODRÍGUEZ TELLO

CINVESTAV-Tamaulipas

21 de febrero de 2018

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

Page 2: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

1 Decrementa y vencerás II

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

Page 3: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

1 Decrementa y vencerás IIAlgoritmo de decremento con factor constanteAlgoritmos de decremento variable

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

Page 4: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Algoritmo de decremento con factor constante

En esta versión de algoritmos decrementa y vencerás el tamaño de lainstancia se reduce con el mismo factor (típicamente 2)Ejemplos:

Búsqueda binariaExponenciación por cuadradosMultiplicación por el método ruso

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

Page 5: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Búsqueda binaria

Es un algoritmo muy eficiente para búsqueda en arreglosordenadosFunciona comparando el término buscado (llave) K con elelemento en la mitad del arreglo A[m]. Si son iguales, el algoritmose detiene, sino, se repite la misma operación recursivamente conla primera mitad del arreglo si K < A[m], o con la segunda mitaddel arreglo si K > A[m]

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

Page 6: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Búsqueda binaria

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

Page 7: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Búsqueda binaria, Eficiencia temporal

Peor caso

Arreglo no contiene la llave K. Operación básica: comparación entre K y A[m] (3 vías)

Cworst(n) = Cworst(bn/2c) + 1 para n > 1, Cworst(1) = 1

Esta relación de recurrencia ya la habíamos resuelto antesCworst(n) = blog2 nc + 1 = dlog2(n + 1)e ∈ Θ(log n)

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

Page 8: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Búsqueda binaria, Eficiencia temporal

Peor casoArreglo no contiene la llave K. Operación básica: comparación entre K y A[m] (3 vías)

Cworst(n) = Cworst(bn/2c) + 1 para n > 1, Cworst(1) = 1

Esta relación de recurrencia ya la habíamos resuelto antesCworst(n) = blog2 nc + 1 = dlog2(n + 1)e ∈ Θ(log n)

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

Page 9: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Búsqueda binaria, Eficiencia temporal

Ejemplos:

Para encontrar un elemento K en un arreglo ordenado de 1,000 elementos (oconfirmar que no está) toma sólo

dlog2(103 + 1)e = 10 comparaciones de 3 vías

Para encontrar un elemento K en un arreglo ordenado de 1’000,000 elementos(o confirmar que no está) toma sólo

dlog2(106 + 1)e = 20 comparaciones de 3 vías

Es un algoritmo óptimo para búsqueda en arreglos ordenados

El número de comparaciones en el caso promedio es sólo ligeramente máspequeño que en el peor caso:

Cavg(n) ≈ log2 n

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

Page 10: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Multiplicación por el método ruso

Sean n y m dos enteros positivos cuyo producto deseamos encontrar(n representa el tamaño de la instancia). Se hace una tabla con 2columnas encabezadas por n y m

1 Dividir n entre 2, sucesivamente, ignorando el residuo, hastallegar a la unidad. Escribir los resultados en la columna n.

2 Multiplicar m por 2 tantas veces como veces se ha dividido n entre2. Escribir los resultados sucesivos en la columna m.

3 Sumar todos los números de la columna m que estén al lado deun número impar de la columna n. Éste es el resultado.

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

Page 11: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Multiplicación por el método ruso

Se multiplica 50× 65. El resultado se encuentra sumando todoslos elementos de la columna m que tienen un valor impar en lacolumna n

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

Page 12: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Multiplicación por el método ruso

Este método funciona porque la multiplicación es distributiva, i.e.,a× (b + c) = a× b + a× c, así que:

65× 50 = 65× (0× 20 + 1× 21 + 0× 22 + 0× 23 + 1× 24 + 1× 25)= 65× (2 + 16 + 32)= (130 + 1040 + 2080)= 3250

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

Page 13: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmo de decremento con factor constante

Ejercicio 1

1 Suponga que se le presenta un arreglo con 42 fotografías depersonas (ordenadas en 6 filas con 7 columnas) y se le solicitaidentificar una foto objetivo únicamente haciendo preguntas quepueden ser respondidas con sí y no. Además existe la restricciónde hacer el menor número de preguntas posible. Diseñe elalgoritmo más eficiente para este problema e indique el númeromás grande de preguntas que pueden requerirse.

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

Page 14: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

1 Decrementa y vencerás IIAlgoritmo de decremento con factor constanteAlgoritmos de decremento variable

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

Page 15: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Algoritmos de decremento variable

En los algoritmos de tipo decrementa y vencerás con decrementovariable la reducción del tamaño de la instancia es diferente en cadauna de las iteraciones.

Ejemplos:Algoritmo de EuclidesAlgoritmo basado en partición para el problema de selecciónBúsqueda por interpolaciónAlgunos algoritmos para búsqueda en árboles binarios

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

Page 16: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Algoritmo de Euclides

El algoritmo de Euclides se basa en la aplicación iterativa de lasiguiente ecuación:

gdc(m,n) = gdc(n,m m«od n)

Ejemplo:

gdc(80, 44) = gdc(44, 36) = gdc(36, 12) = gdc(12, 0) = 12

Es posible probar que el tamaño del problema (medido con el valor den) decrece al menos en la mitad después de dos iteraciones. Por lotanto, T(n) ∈ O(log n)

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

Page 17: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Problema de selección

Encontrar el k-ésimo elemento más pequeño en una lista de números.

Puede realizarse tomando ventaja de la idea de hacer una partición dela lista en torno a un elemento pivote p.

Existen dos técnicas algorítmicas para hacer esta partición: elalgoritmo de Hoare y el algoritmo de particionamiento de Lomuto.

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

Page 18: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Problema de selección, algoritmo de Lomuto

Utiliza un subarreglo A[l . . . r] donde 0 ≤ l ≤ r ≤ n− 1, con tres partes(posiblemente vacías):

Un segmento con elementos conocidos < pUn segmento con elementos conocidos ≥ pUn segmento con elementos por comparar

Iniciando en i = l + 1, el algoritmo recorre A[l . . . r] hacia la derechamanteniendo esta estructura hasta obtener una particiónEn cada iteración, compara el elemento A[i] en el segmento conelementos por comparar con p. Si A[i] ≥ p, se incrementa i. Si A[i] < p,se incrementa s, se intercambian A[i] y A[s] y se incrementa i

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

Page 19: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Problema de selección, algoritmo de Lomuto

Cuando no hay elementos sin procesar, se intercambian el pivote p yA[s]

Esto permite encontrar la partición buscada

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

Page 20: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Problema de selección, algoritmo de Lomuto

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

Page 21: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Problema de selección, algoritmo de Lomuto

¿Cómo puede resolverse el problema de selección (encontrar el k-ésimoelemento más pequeño) aprovechando la partición de una lista?

Asumamos que la lista es un arreglo (cero basado) y que s es el índicedel pivote p después de aplicar el algoritmo de Lomuto para encontrar lapartición.Si s = k− 1, entonces el problema fue resuelto porque el pivote p es elk-ésimo elemento más pequeñoSi s > k− 1, el k-ésimo elemento más pequeño del arreglo puedeencontrarse como el k-ésimo elemento más pequeño en la parteizquierda de la particiónSi s < k− 1, el k-ésimo elemento más pequeño del arreglo puedeencontrarse como el (k− s)-ésimo elemento más pequeño en la partederecha de la partición

Si no se resuelve el problema, este se reduce y puede resolverse usando elmismo enfoque de manera recursiva.

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

Page 22: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Problema de selección, algoritmo quickselect

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

Page 23: Decrementa y vencerás II - CINVESTAVertello/algorithms/sesion11.pdf · Búsqueda por interpolación Algunos algoritmos para búsqueda en árboles binarios Dr. Eduardo RODRÍGUEZ

Decrementa y vencerás II Algoritmos de decremento variable

Algoritmo quickselect, complejidad

Mejor caso

Cuando al hacer la primera partición (usando n− 1 comparaciones) seresuelve el problema

Cbest(n) = n− 1 ∈ Θ(n)

Peor casoCuando se producen particiones no balanceadas (una parte vacía y otra conn− 1 elementos) en las n− 1 iteraciones

Cworst(n) = (n− 1) + (n− 2) + · · ·+ 1 =n(n− 1)

2∈ Θ(n2)

Caso promedio

Cavg(n) = C(n/2) + (n− 1) ∈ Θ(n)

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