Técnica de Diseño de Algoritmos

Page 112

100

TÉCNICAS DE DISEÑO DE ALGORITMOS

(* calcula la mediana de un vector de hasta 5 elementos (es decir, ult<prim+5) *) VAR i,n:CARDINAL; b:vector; (* para no modificar el vector *) BEGIN n:=ult-prim+1; (* numero de elementos *) FOR i:=1 TO n DO b[i]:=a[prim+i-1] END; FOR i:=1 TO (n+1) DIV 2 DO Intercambia(b,i,PosMinimo(b,i,n)) END; RETURN b[(n+1) DIV 2]; END Medianade5;

El procedimiento es capaz de calcular el k-ésimo elemento de un vector en tiempo lineal respecto al tamaño de la entrada, aunque sin embargo vuelve a ocurrir aquí lo que comentamos anteriormente. Para conseguir un tiempo lineal hemos tenido que pagar un precio, que en este caso es que la constante multiplicativa del tiempo de ejecución de este método se ha visto duplicada. La decisión de si merece la pena pagar ese precio sólo para cubrir los dos casos especiales del algoritmo la dejamos al usuario del mismo. Solución al Problema 2.16.

( )

a) La opción de ordenar el vector y escoger los m primeros elementos es de complejidad O(nlogn) si escogemos uno de los métodos de ordenación de este orden. b) Si usamos repetidamente el procedimiento de ordenación por Selección conseguimos una mejora en la complejidad para valores pequeños de m: el método es de orden O(mn). c) Como el procedimiento que encuentra el k-ésimo elemento es de complejidad lineal, invocándolo m veces obtenemos también un método de orden O(mn). Estudiemos por tanto otras opciones. • Pensando en modificar alguno de los métodos de ordenación ya conocidos, podemos pensar en el método de ordenación por montículos. Es fácil modificar este método para conseguir un procedimiento que encuentre los m elementos más pequeños en tiempo O((n–m)logn), o bien en tiempo O(mlogn) si utilizamos montículos invertidos, es decir, en donde en la raíz se encuentra el menor elemento. • Pero es al pensar en una modificación de Quicksort cuando conseguimos un algoritmo basado en su estrategia y con mejor tiempo. Queremos buscar los m elementos menores de un vector, y podemos utilizar la función Pivote para esto.


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.