Técnica de Diseño de Algoritmos

Page 119

109

DIVIDE Y VENCERÁS

“simplificación”. Por supuesto, aquí no es necesario un proceso de combinación de resultados. Su caso base se produce cuando el vector tiene sólo un elemento. En esta situación la solución del problema se basa en comparar dicho elemento con x. Como el tamaño de la entrada (en este caso el número de elementos del vector a tratar) se va dividiendo en cada paso por dos, tenemos asegurada la convergencia al caso base. La función que implementa tal algoritmo ya ha sido expuesta en el primer capítulo como uno de los ejemplos de cálculo de complejidades (problema 1.16), con lo cual no reincidiremos más en ella.

3.3 BÚSQUEDA BINARIA NO CENTRADA Una de las cuestiones a considerar cuando se diseña un algoritmo mediante la técnica de Divide y Vencerás es la partición y el reparto equilibrado de los subproblemas. Más concretamente, en el problema de la búsqueda binaria nos podemos plantear la siguiente cuestión: supongamos que en vez de dividir el vector de elementos en dos mitades del mismo tamaño, las dividimos en dos partes de tamaños 1/3 y 2/3. ¿Conseguiremos de esta forma un algoritmo mejor que el original? Solución

(☺)

Tal algoritmo puede ser implementado como sigue: PROCEDURE BuscBin2(Var a:vector; prim,ult:CARDINAL;x:INTEGER):BOOLEAN; VAR tercio:CARDINAL; (* posicion del elemento n/3 *) BEGIN IF (prim>=ult) THEN RETURN a[ult]=x ELSE tercio:=prim+((ult-prim+1)DIV 3); IF x=a[tercio] THEN RETURN TRUE ELSIF (x<a[tercio]) THEN RETURN BuscBin2(a,prim,tercio,x) ELSE RETURN BuscBin2(a,tercio+1,ult,x) END END END BuscBin2;

El cálculo del número de operaciones elementales que se realiza en el peor caso de una invocación a esta función puede hacerse de manera análoga a como se hizo en el problema 1.16 cuando se estudió la búsqueda binaria. En este caso obtenemos la ecuación en recurrencia T(n) = 11 + T(2n/3), con la condición inicial T(1) = 4. Para resolverla, haciendo el cambio tk = T((3/2)k) obtenemos tk – tk–1 = 11,


Turn static files into dynamic content formats.

Create a flipbook

Articles inside

BIBLIOGRAFÍA Y REFERENCIAS

14min
pages 315-326

7.11 El fontanero con penalizaciones

10min
pages 307-314

7.10 Las n reinas

5min
pages 303-306

7.9 La asignación de tareas

7min
pages 298-302

7.6 La colocación óptima de rectángulos

6min
pages 285-290

7.8 La mochila (0,1) con múltiples elementos

2min
pages 296-297

7.5 El laberinto

10min
pages 278-284

7.4 El viajante de comercio

11min
pages 270-277

7.2 Consideraciones de implementación.......................................................257 7.3 El puzzle (n 2–1

12min
pages 262-269

6.15 Reconocimiento de grafos

2min
pages 249-250

6.14 El coloreado de mapas

3min
pages 246-248

6.16 Subconjuntos de igual suma

2min
pages 251-252

6.17 La múltiples mochilas (0,1

3min
pages 253-254

3.14 Divide y Vencerás multidimensional

7min
pages 132-136

3.13 El torneo de tenis

9min
pages 127-131

3.12 La moda de un vector

6min
pages 124-126

3.11 El elemento mayoritario

5min
pages 121-123

3.4 Búsqueda ternaria

2min
pages 110-111

1.4 Resolución de ecuaciones en recurrencia

7min
pages 10-15

3.10 Repetición de cálculos en Fibonacci

2min
page 120

3.8 Mediana de dos vectores

5min
pages 117-118

3.9 El elemento en su posición

1min
page 119

3.7 Producto de matrices cuadradas (2

1min
page 116

3.6 Producto de matrices cuadradas (1

2min
pages 114-115

3.5 Multiplicación de enteros

3min
pages 112-113

2.6 Ordenación mediante Montículos (Heapsort

4min
pages 65-66

2.5 Ordenación por Mezcla (Mergesort

4min
pages 63-64

3.3 Búsqueda binaria no centrada

1min
page 109

2.8 Ordenación por Incrementos (Shellsort

1min
page 70

3.2 Búsqueda binaria

2min
page 108

2.3 Ordenación por Selección

1min
page 61

2.2 Ordenación por Inserción

2min
page 60
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.