IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda...

22
IBD Plan 2003 Clase 4

Transcript of IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda...

Page 1: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

IBD Plan 2003

Clase 4

Page 2: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 42

Archivos - Búsqueda

Búsqueda de información (costo) # de comparaciones (operaciones en

memoria)• Se pueden mejorar con algoritmos más eficientes.

# de accesos (operaciones en disco) Buscar un registro

+ rápido si conocemos el NRR (directo) Secuencia debe buscarse desde el principio Trataremos de incorporar el uso de claves o

llaves.

Page 3: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 43

Archivos - Búsqueda

Búsqueda binaria Supongamos

• Archivo ordenado por clave• Registros de longitud fija

Búsqueda, partir el archivo a la mitad y comparar la clave, puedo acceder al medio por tener long. Fija

Si N es el # de registros, la performance será del orden de Log2 N (teniendo en cuenta los accesos)

Se mejora la performance de la búsqueda secuencial.

Page 4: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 44

Archivos - Búsqueda

Algoritmo de búsqueda secuencia tener en cuenta que es un pseudocódigo NO estructurado

Function Busqueda_Bin ( entrada, llave, #reg) menor := 1 mayor := #reg mientras ( menor <= mayor ) intento :=[(mayor+menor )/2] leo un reg con NRR = intento armo llave canónica del reg. leído en llave_c If llave < llave_c entonces mayor:=intento+1 sino if llave > llave_c entonces menor:=intento+1

sino devuelve (registro) fin mientrasdevuelve ( ‘no esta’ )

Page 5: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 45

Archivos - Clasificación

La búsqueda binaria acota el espacio para encontrar información tiene un costo mantener ordenado el archivo

Primera solución Llevar el archivo a RAM (vector) y ordenar Por que RAM y no disco directamente

• El número de corrimientos implica accesos a disco, muy costoso.

• Primer paso, llevar las llaves a forma canónica• Algoritmos de ordenación se pueden encontrar en

bibliografía, aparece una variante interesante.

Page 6: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 46

Archivos - Clasificación

Algunas conclusiones Búsqueda binaria mejora la secuencial Problemas

• # accesos baja pero no llega a uno• Acceder por el NRR requiere una lectura

• Costo de mantener el orden• Análisis costo beneficio entre costo del orden o costo de

la búsqueda

• Clasificación en RAM solo para archivos pequeños Mejorar el método de ordenación

• No reordenando TODO el archivo• Reorganizando con métodos más eficientes (árboles)

Page 7: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 47

Archivos - Clasificación

Segunda posibilidad de clasificaciónNo llevar todo el archivo a RAM solo

llevar la llave o clave • Esto permite clasificar archivos más

grandes• Algoritmos en la bibliografía

Se obtienen mejoras o es la solución esperada??

Page 8: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 48

Archivo - Clasificación

Tercera soluciónEl archivo de datos no cabe en RAMLas claves del archivo tampoco caben

en RAMLa clasificación debe hacerse de otra

forma• Partir el archivo• Ordenar cada parte• Juntar las partes ordenadas

Page 9: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 49

Archivos – Clasificación

Primer paso: establecer las particiones

• Ventajas • Permite clasificar archivos grandes (aumenta

el número de particiones)• Lectura de cada partición es siempre

secuencial• Lectura de cada partición en orden, escritura

en un nuevo archivo (ambas secuenciales)

• Como determinar el tamaño• Lo que quepa en memoria RAM

Page 10: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 410

Archivos – Clasificación

Ejemplo del método • Formamos 40 particiones, 1/40 parte del archivo

original. • Ordena cada parte• Juntamos las partes• Estudio numérico

Registros desordenados

Registros ordenados

Partir

Ordenar

Juntar

Page 11: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 411

Archivos – Clasificación

Como mejorar la performance• Achicar el número de particiones• Intercalar de otra forma (por ej. en más

de un paso, o por otro método de merge)Particiones

• El tamaño está dado por lo que cabe en RAM

• Tres posibilidades• Sort interno• Selección por reemplazo• Selección natural

Page 12: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 412

Archivos - Clasificación

• Sort interno: mecanismo ya visto, M registros que caben en RAM y se genera un archivo de salida ordenado.

• Selección por reemplazo:• Aumenta el tamaño de las particiones en

promedio al doble1. Leer M registros desordenados2. Obtener clave menor3. Pasar la clave menor al archivo de salida4. Reemplazar por otro, si tiene clave menor a la

pasada al arch. de salida dormirlo.5. Repetir dos hasta que todos los registros en la

entrada estén dormidos.6. Comenzar con una nueva partición despertando

todos los dormidos, desde el paso 2 y hasta terminar el archivo original

Page 13: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 413

Archivos - Clasificación

AlgoritmoN {# de registros}buffer {reg. entrada}escrito {reg. ya escritos}dormido {reg. dormidos}ult_llave {ult.clave pasada}for i:=1 to M escrito[i] := truei := 0repetir i:=i + 1 leer buffer[i] de entrada escrito[i] := falsohasta (eof(entrada)) o (i = M)

mientras not( eof( entrada ) ) for i := 1 to M if not escrito[i] then dormido[i]:= false mientras (haya reg.despiertos) encontrar clave menor de buffer y que este despierto

ult_llave:=llave buffer[s] escrito[s]:= true dormido[s]:= true if not eof(entrada)

then leer buffer[s] de entr. escrito[s]:= false

if ult_llave < buffer[s] then dormido[s]:=true

endend

Page 14: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 414

Archivos - Clasificación

• Algunos datos de selección por reemplazo• Aumenta el tamaño de cada partición• Los registros se deben leer de a uno esto es

imposible, se utilizan buffers que ocupan parte de la RAM

• Selección natural• Aprovecha el espacio de memoria, necesitamos

algún buffer más pero ahorra memoria• Los dormidos se pasan a un buffer secundario, y

permiten que entren nuevos elementos del archivo de entrada, cuando el buffer secundario se llena se termina de dormir elementos.

• Particiones quedan con más elementos.

Page 15: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 415

Archivos - Clasificación

AlgoritmoM,M’ {# reg. y reserva exter.}buffer, escrito, dormidoreserva {#reg. actual en reserva}sin_espacio {flag de reserva}ult_llave {idem}{seteo estado inicial}for i:= 1 to M escrito[i]:= truei := 0Repetir i:=i + 1 leer buffer[i] de entrada escrito[i]:= falsohasta eof(entrada) or i = Mrepetir reserva := 0 sin_espacio := falso repetir obtener clave menor y escribirla en

buffer[s] ult_llave := buffer[s] escrito[s]:= true

if not eof(entrada) then listo:=falso repetir if llave reg siguiente >= ult_llave then escrito[s]:=false listo:= true

buffer[s]:=new elem. else if reserva < M’ then nueva entrada pasa al reservorio reserva:=reserva+1 else sin_espacio := true hasta listo or sin_espacio hasta eof(entrada) or sin_espacio sacar los elementos no escritos de buffer

en orden, poner escrito en true {preparar buffer para la nueva partición} if reserva > 0 then mover a buffer reg. del reservorio y actualizar escrito y reserva. if buffer no lleno y not eof(entrada) then completar bufferhasta escrito este todo en true

Page 16: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 416

Archivos - Clasificación

Conclusiones Ventajas

• Interno: particiones del mismo tamaño• Natural: tiende a producir particiones mayores• Interno y selección: costo de acceso menor

Desventajas• Natural: mayor costo en acceso (generar el

archivo intermedio)• Selección: tiende a generar muchos registros

dormidos.

Page 17: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 417

Archivos - Clasificación

Intercalación en más de un pasoSolución: agregar pasos intermedios con

archivos temporales para mejorar la eficiencia

EjemploConclusiones

• Intercalando más de 5 porciones hacer dos pasos

• El método mejora si se disponen de varios discos o con varias cabezas lectoras grabadoras.

Page 18: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 418

Archivos - Clasificación

Otros métodos de intercalación• Balanceado de n caminos• Óptimo• Multifase

Que estudiaremos• Eficiencia medida como:

# total de registros leídos

# total de registros ordenados

Page 19: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 419

Archivos - Clasificación

Balanceado de N caminos• Dos conjuntos de buffer

• Entrada• Salida

• #archivos, divididos proporcionalmente en los buffer de entrada asignado por el SO.

• Método1. C/partición (con M elementos) se acomoda en un

archivo de entrada2. Merge entre archivos de entrada produciendo

archivos de salida (con M2 registros ordenados)3. Continuar dos hasta terminar los archivos de

entrada4. Convertir archivos de E en arch de S y viceversa5. Repetir 2 hasta formar una partición con todos los

elementos ordenados.

Page 20: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 420

Archivos - Clasificación

AlgoritmoN { tamaño de c/set }set_entrada { flag indica cual EoS base tam. set de salida }num_arc_salida { # arc. de salida }num_particion { # part. Generada }

N := F div 2 { # arch. de E y S }set_entrada := falserepetir {preparar los archivos} cambiar valor de set_entrada if set_entrada then abrir arch 1 a N Entrada abrir arch N+1 a F Salida tam_set_salida := F – N base := N + 1 else abrir arch 1 a N Salida abrir arch N+1 a F Entrada tam_set_salida := N base := 1

{fase del método} num_arc_salida := 0 num_particion := 0 repetir merge partición de c/arch.Entr.

dentro del arch. numerado (base + num_arc_salida) num_particion:=num_particion+1 num_arc_salida:=(num_arc_salida +1) mod tam_set_salida hasta terminen los arch. de E hasta num_particion = 1 if set_entrada then archivo ordenado N+1 else archivo ordenado 1

Page 21: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 421

Archivos - Clasificación

Merge óptimo• 1 archivo de salida, el resto de entrada• Se hace el merge entre las particiones de entrada

y genera una de salida esto se repite hasta generar una partición con todos los datos

Merge multifase• Mayor complejidad inicial en distribuir las

particiones• Varios conceptos:

• Fibonacci• Particiones dummy• # de particiones no se adecua con el # de Fibonacci

Page 22: IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.

UNLP - Facultad de InformáticaIBD - CLASE 422

Archivos - Clasificación

método # Reg. Leídos

Tamaño partición

# partición

# desplazamientos

Patron intercalación

# desp. Intercalacion

Tot. Desplazamiento

40 clasif. En RAM + por intercala-ción en 40 forma

10000 10000 40 40 40 1600 1640

40 clasif. + inter-calación en varios pasos

10000 10000 40 40 8:8:8:8:8 520 560

Selec por reem-plazo + interca-lación en pasos

2500 15000 27 160 5:5:5:5:5 423 583

Idem anterior reg. Parcialmente ordenados

2500 40000 10 160 3:3:4 256 416