Vous êtes sur la page 1sur 3

PATRONES DE INTERCALACIN DE VARIOS PASOS

Uno de los rasgos distintivos de la solucin a un problema de estructuras de archivos, en contraste con la solucin de un problema meramente de estructuras de datos, es la atencin puesta en la enorme diferencia de costos entre el desplazamiento en disco y el acceso a la informacin en memoria RAM. Si el problema de intercalacin implicara slo operaciones en memoria RAM, la medida importante de trabajo, o de costo, sera el nmero de comparaciones requeridas para terminar la intercalacin. El patrn de intercalacin que minimiza el nmero de comparaciones en el problema del ejemplo, en el que se pretende intercalar 40 porciones, sera la intercalacin de 40 formas estudiada en la seccin anterior. Si se considera desde un punto de vista que ignore el costo de los desplazamientos, esta intercalacin de K formas tiene las siguientes caractersticas deseables:

Cada registro se lee slo una vez. Si se usa un rbol de seleccin para las comparaciones efectuadas en la operacin de intercalacin, como se describe en la seccin 8.3, entonces el nmero de comparaciones requeridas para una intercalacin de K formas de N registros (totales) es funcin de: N x log K

Puesto que K es directamente proporcional a Nt sta es una operacin 0(N x log N) (medida en nmero de comparaciones), la cual es razonablemente eficiente aun cuando N crezca mucho.

Todo esto sera bueno si se trabajara exclusivamente en memoria RAM, pero el verdadero propsito de este procedimiento de clasificacin por intercalacin es poder clasificar archivos que son demasiado grandes para caber en la memoria RAM. Para el caso por resolver, los costos asociados con los desplazamientos en el disco son rdenes de magnitud mayores que los costos de las operaciones en memoria RAM. En consecuencia, si pueden sacrificarse las ventajas de una intercalacin de 40 formas y cambiarlas por ahorro de tiempo de desplazamientos, puede obtenerse una ganancia neta en el desempeo, En ve2 de intercalar las 40 porciones a la vez, se podran intercalar como cinco conjuntos de ocho porciones cada uno, seguidos de una intercalacin de cinco formas de las porciones intermedias. Usando la misma notacin de Knuth [1973b], esto se designa como una intercalacin 8:8:8:8:8 (cinco conjuntos de intercalaciones de ocho formas). Este esquema se ilustra en la figura S.21.

Cuando se compara con la intercalacin original de 40 formas, este mtodo tiene la desventaja de requerir que se lea dos veces cada registro: una para formar las porciones intermedias, y otra, para formar el archivo clasificado final. Pero, puesto que en cada paso de la intercalacin se lee, a lo sumo, de ocho archivos de entrada, es posible emplear buffers grandes y evitar una gran cantidad de desplazamientos en disco. Cuando se analiz el desplazamiento requerido para la intercalacin de 40 formas, sin considerar el desplazamiento para el archivo de salida, se calcul que la intercalacin de 40 formas implicaba 1600 desplazamientos entre los archivos de entrada. Se efectuar un clculo parecido para la intercalacin 8:8:8:8:8. 1. Para cada una de las intercalaciones de 8 formas de las porciones iniciales: Cada uno de los ocho buffers de entrada puede almacenar 1/8 de porcin; Por lo tanto: 8 desplazamientos/porcin x 8 porciones = 64 desplazamiento por cada una de estas intercalaciones; Total de las cinco intercalaciones de ocho formas: 5x64 = 320 desplazamientos. Intercalacin de cinco formas de las porciones intermedias: Cada una de las porciones intermedias es ocho veces ms grande que una inicial. Cada uno de los cinco buffers de entrada puede almacenar 1/40 de una porcin intermedia. Por lo tanto: 40 desplazamientos/porcin x 5 porciones = 200 desplazamientos. Total de desplazamientos para la intercalacin completa 8:8:8:8:8: 320 + 200 = 520 desplazamientos.

2.

3.

As, al aceptar el costo que significa procesar cada registr dos veces, se reduce el nmero de desplazamientos en dos tercios. Es interesante ver lo que sucede si se duplica el nmero de registros por clasificar, de 400 000 a 800 000, y por lo tanto el nmero de porciones iniciales de 40 a 80. Ignorando una vez ms el manejo de buffers para la salida, una intercalacin de 80 formas requiere 6400 desplazamientos! Reemplazando la intercalacin de 80 formas por una intercalacin 10:10:10:10:10:10:10:10 de dos pasos (ocho intercalaciones se- * paradas de 10 formas, seguidas de una intercalacin final de ocho formas), puede reducirse el nmero de desplazamientos a 1440, lo cual es ciertamente un nmero mucho ms manejable que 6400. Un anlisis cuidadoso de los compromisos entre el tiempo de desplazamiento y el tiempo de transmisin (que est relacionado con el nmero de veces que se lee cada registro), tomando en cuenta los buffers de salida y los de entrada, es ms complejo de lo que estos clculos indican. De hecho, es necesario tomar en cuenta las caractersticas especficas del hardware involucrado. Por ejemplo, considerando ciertas configuraciones de hardware, puede tener sentido hacer una intercalacin de tres pasos en vez de dos. Por ejemplo, cul sera el efecto de intercalar las 40 porciones originales, que contienen 400 000 registros, efectuando dos intercalaciones de dos pasos 5:5:5:5:5 de 200 000 registros cada una, y despus un tercer paso donde las dos porciones intermedias de 200 000 registros se combinan por medio de una intercalacin de dos formas? Cmo cambia esto si la intercalacin puede hacerse en cuatro paquetes de disco con brazos de desplazamiento separados? Las referencias citadas al final de este captulo, en especial Knuth [1973b], contienen anlisis detallados de este tipo de aspectos. Se debe tener cuidado, a la luz de estas dificultades y opciones, de no perder de vista el punto principal: al clasificar archivos grandes en disco mediante la intercalacin de un

gran nmero de porciones, casi siempre resulta ventajoso pagar el precio de leer los registros ms de una vez para reducir el nmero necesario de desplazamiento en disco.

Porciones iniciales:

8 porciones

8 porciones

8 porciones

8 porciones 8 porciones

Cinco intermedias:

Archivo final, completamente intercalado: FIGURA 8.21 Intercalacin 8:8:8:8:8 (dos pasos) de 40 porciones.

Vous aimerez peut-être aussi