Professional Documents
Culture Documents
De
archivos
Rosa Mara Valdovinos
Rosas
Docencia_rmvr@hotmail.com
Evaluacin
30% Tareas y exposiciones
35% Examen terico
35% Examen prctico
Extraordinario y Ttulo
60% examen y 40% proyecto
Asistencia
Se considera asistencia a la
asistencia presencial.
No se contempla la justificacin
de inasistencias, excepto casos
especiales
debidamente
justificados.
Para el registro de asistencia se
establecen 15 min de tolerancia,
despus de este tiempo, se podr
entrar a clase pero sin derecho
al registro de la asistencia.
Mecnica de trabajo
Apr
e
ndiz
aje
bas
pro
blem ado
en
as
Mecnica de trabajo
Mecnica de trabajo
Exposiciones
Portada
Contenido
Presentacin de
trabajos escritos
Portada
ndice
Contenido
Fuentes consultadas
En hoja blanca, folder o grapa,
no sueltas
Contenido
Unidad I. Introduccin
Unidad 2. Archivos
secuenciales
Unidad 3. Archivos directos
Unidad 4. Archivos indexados
Unidad 5. Archivos multillave
Unidad I.
Introducci
n
1. Introduccin
2. Conceptos generales
3. Caractersticas fsicas y
lgicas de los archivos
4. Clasificacin de los
archivos
5. Operaciones sobre
archivos
6. Medios de
almacenamiento Vs
organizacin de archivos
7. Seguridad, proteccin y
respaldos.
Tarea 1
Teora general de sistemas
Tipos de sistemas de informacin y ejemplos
Tipos de Informacin y ejemplos
1. Introduccin
Solicitud
del usuario
Documentacin
Del proyecto
Problema
Solicitud
del usuario
Implementaci
n
Diseo del
Analista de sist.
Enfoque del
programador
Recomendacin
Del consultor
Presupuesto
Del proyecto
El soporte
operativo
La necesidad
real
1. Introduccin
Problema
Qu informacin necesito para
hacer mi trabajo?
Cundo la necesito?
En qu forma?
1. Introduccin
Problema
Qu nuevas tareas puedo realizar
ahora que tengo todos estos datos?
1. Introduccin
Problema, informticos
Qu informacin debo dar?
A quin?
Cundo?
En qu forma?
1. Introduccin
Problema
Data rich,
Information poor
Conocimiento
Informacin
1. Introduccin
Teora general de
sistemas
Theora: examinar.
1. Introduccin
TGS. Objetivos
Impulsar el desarrollo de una teora
general que permita describir
las
caractersticas,
funciones
y
comportamientos sistemticos.
Desarrollar un conjunto de leyes
aplicables
a
todos
estos
comportamientos.
Promover
una
formalizacin
(matemtica) de estas leyes.
1. Introduccin
Teora general de
sistemas
IO
Administraci
n cientfica
Anlisis
de
sistema
s
Bilogo austriaco
Ludwig von Bertalanffy, 1950
1. Introduccin
TGS. Sistema
Conjunto de componentes que interaccionan entre s para
lograr un objetivo comn.
Mecanismo
Objetivos
de control
Entradas
Transformaci
n
Salidas
1. Introduccin
Ejemplos de Sistemas
Sistema Natural
Sistema artificial
1. Introduccin
Ejemplos de Sistemas
Sistema Social
Sistema Mecnico
1. Introduccin
Despachadora de
refrescos
Objetivo
Sist. de control
Elemento de entrada
Transformacin
Salida
1. Introduccin
Coche
Posee
diferentes
elementos
que
estn
interrelacionados
entre
si
para
su
buen
funcionamiento, y que a su vez se relaciona con el
medio ambiente (conductor), y que persigue un fin
comn, sea transporte familiar, de carga, o algn
otro propsito.
1. Introduccin
TGS. Informacin
reducir
la
1. Introduccin
TGS. Informacin
1. Introduccin
TGS. Objetivo de la
informacin
Anlisis de problemas
1. Introduccin
TGS. Informacin
La informacin se evala con forme:
1.Calidad de la informacin. Cuanto ms exacta la informacin,
tanto mayor su calidad y tanta mayor confianza pueden depositar los
directivos en ella para tomar decisiones.
2.Oportunidad de la informacin. La informacin ofrecida por un
sistema de informacin debe estar al alcance de la persona indicada,
en el momento oportuno, para que se emprendan las medidas
adecuadas.
3.Cantidad de informacin. Si los directivos reciben ms informacin
de la que pueden usar en forma productiva, quiz pasen por alto la
informacin sobre problemas graves.
4.Relevancia de la informacin. La informacin que reciben los
directivos debe ser relevante para sus funciones y labores. El director
de personal seguramente no necesita saber cules son los niveles de
inventarios, y el directivo a cargo de reordenar los inventarios no
1. Introduccin
TGS. SI
1. Introduccin
TGS. SI
Fuente: http://es.wikipedia.org
1. Introduccin
TGS. SI
1. Introduccin
TGS. SI
Sistema abierto: interacta con el entorno.
Sistema cerrado: No interacta, automatizacin total.
Estacionario: no cambia con el tiempo.
No estacionario: dinmico.
Duro: Una y slo una solucin.
Suave: varias soluciones
1. Introduccin
TGS. Tipos de SI
SI informales
SI formales
1. Introduccin
TGS. Tipos de SI
1.
Sistemas transaccionales
2.
Sistemas estratgicos
3.
1. Introduccin
La organizacin como un
Sistema
Proces
o
Entrada: $, informacin,
Salida
Producto, servicio
1. Introduccin
La organizacin como un
Sistema
Abierto
innovar, progresar, controlar
Cerrados
Estabilidad
1. Introduccin
La organizacin como un
Sistema
Estructuralmente
divisible.
Funcionalmente
indivisibles
1. Introduccin
SI. Caractersticas
Entrada de informacin: Interfaz, BD.
Procesamiento: modelado, simulacin,
clculos.
Salida de informacin: modelos, grficos,
etc.
Usuarios: Profesional del conocimiento.
1. Introduccin
SI. Requisitos
Crear nuevo conocimiento e informacin
1. Introduccin
SI. Requisitos
Proporcionar
herramientas
especializadas a
los trabajadores
del conocimiento:
grficos, anlisis,
comunicaciones,
etc.
1. Introduccin
SI. Requisitos
Interfaz amigable: fcil de utilizar y
atractiva.
1. Introduccin
SI. Requisitos
Potencia de cmputo: Procesamiento gil de datos,
generacin de grficos, realizacin de clculos
complejos, anlisis financieros, elaboracin de
experimentos.
1. Introduccin
Conceptos generales
Una computadora sera de poca utilidad si
perdiera toda la informacin al desconectarla
de la red elctrica o su capacidad de
almacenamiento estuviera limitada a la
memoria RAM de que se dispusiera.
Un
elemento
fundamental
es
el
almacenamiento secundario, que guarda
informacin
an
cuando
no
reciba
suministro elctrico y cuya capacidad es
superior a la de la memoria RAM.
La forma de guardar los datos en estos
Archivo
Grupo de informacin estructurados sobre el
mismo tema que son almacenados en algn
dispositivo de almacenamiento (disco, memoria) y
pueden ser utilizados por las aplicaciones:
Es es una coleccin de bytes.
Existe fsicamente.
Pueden contener programas, datos o
algn otro elemento que
el usuario desee.
El sistema operativo proporciona operaciones
Objetivo
Almacenamiento permanente de la
informacin
Manipulacion de un gran numero de datos
Independencia de los programas
Residentes en soportes externos
Objetivo
Almacenamiento permanente de la
informacin
Manipulacion de un gran numero de datos
Independencia de los programas
Residentes en soportes externos
Archivo, caractersticas
o Independencia de la informacin respecto de los
programas
o La informacin almacenada es permanente
o Puede ser accedido por distintos programas en
distintos momentos
o Gran capacidad de almacenamiento.
Archivo, caractersticas
fsicas
Nombre y extensin. No tiene un tamao
predeterminado
Datos sobre el archivo: Para cada
archivo(dependiendo del S.A) se guarda la
fecha de creacin, modificacin y del ltimo
acceso. Tambin poseen propiedades como
oculto, de sistema, de solo lectura, etc.
Ubicacin
Archivo, caractersticas
lgicas
Entrada: Son los archivos que alimentan un
procesamiento de datos, o sea solo son ledos.
Salida: Archivos que solo son escritos.
Entrada/Salida: Permiten la lectura y
escritura, o sea proporcionan los datos de
entrada al proceso y tambin los datos
procesados son escritos en el mismo.
Conceptos generales
Base de datos
Conjunto de datos relacionados entre s que tienen
un significado implcito.
Extensamente utilizado por ser la nica solucin
posible para manejar grandes volmenes de
datos, la complejidad de la extraccin de datos y la
concurrencia de datos (accesos simultneos).
Base de datos
Una base de datos tiene
una fuente de la cual se
derivan los datos, cierto
grado de interaccin con
los acontecimientos del
mundo real y un pblico
que est activamente
interesado en el
contenido de la base de
datos.
Ramez Elmasri y Shamkant B.
Navathe
Carctersticas de las
BD
Organizacin jerrquica
Base de datos
Base de datos
Campo
Unidad mnima de informacin de un registro y consiste en un
conjunto de caracteres capaz de suministrar una determinada
informacin referida a un concepto. Al igual que en las
variables, al definir un campo hay que indicar claramente sus
tres caractersticas:
Nombre: identifica a ese conjunto de caracteres
Tipo: Tipo de caracteres que puede contener (alfabtico,
entero, etc.-)
Tamano: Cantidad de caracteres que puede contener
Por ejemplo, si tenemos que definir al campo nombre:
Nombre: nombre Tipo: caracter Tamao: 20 caracteres
Campo
Un cheque de un banco tiene los siguientes
campos:
Cuenta habiente, Nmero de cheque, Fecha,
Persona a la que se le paga, Monto numrico,
Monto con letra, Nota, Identificacin del banco,
Nmero de cuenta y Firma.
Registro
Es un conjunto de campos referentes a una entidad en
particular y constituyen una unidad para su proceso. Un
ejemplo de un registro puede ser la informacin de un
determinado alumno que contiene los campos: nm. De
cuenta, apellido y nombre, domicilio, fecha de nacimiento,
entre otros campos.
Nmero de cuenta
Apellido y nombre
Domicilio
Fecha de nacimiento
Registro
BD Vs Archivos
Archivos tradicionales. Consiste en almacenar los
datos en archivos individuales, exclusivos para cada
aplicacin particular. En este sistema los datos pueden
ser redundantes (repetidos innecesariamente) y la
actualizacin de los archivos es ms lenta que en una
base de datos.
Base de datos. Es un almacenamiento de datos
formalmente definido, controlado centralmente para
intentar servir a mltiples y diferentes aplicaciones.La
base de datos es una fuente significativa de datos que
son compartidos por numerosos usuarios para diversas
aplicaciones.
BD Vs Archivos
Seguridad. Las BD (bien administradas) son ms
confiables con respecto a la seguridad. Los archivos,
pueden estar protegidos y an as son fciles de que
cualquiera tenga acceso.
Uniformidad:Si se tienen diversos archivos con la
informacin relacionada, es probable que cada uno
tenga un formato diferente, lo que dificulta
sucomparacin. El uso de BD permite informacin en
un formato comn.
Acceso. Las BD tienen mayor velocidad para
acceder; adems, puede realizar bsquedas, insertar,
modificar y eliminar datos de forma ms sencilla y
segura que en un archivo.
BD Vs Archivos
Independencia de datos: La independencia de
datos implica un divorcio entre programas y datos
Complejidad. Los programadores y analistas deben
tomar cursos que los adiestren para poder
comprender las capacidades y limitaciones del
DBMS
Costo.Los productos de BD (Oracle, DB2, Etc.) son
productos caros. Esto sin contar los adiestramientos
del personal del centro de cmputos y de los
usuarios.
BD Vs Archivos
Tamano.DBMS requiere de mucho espacio en
disco duro y de memoria principal (RAM) para poder
ejecutarse adecuadamente.
Velocidad. Al tener una BD con demasiada
informacin su acceso se har ms lento, pudiendo
influir el uso simultneo por varios usuarios.
Complejo el recuperar los datos. En caso de un
accidente el proceso de recuperacin y restauraci
de la BD, es mucho mas complejo de ejecutar que
en sistemas tradicionales.
BD Vs Archivos
BD
Centralizacin de datos
Control de datos y
estandarizacin
Consistencia, integridad,
seguridad y no redundancia
y espacio)
Mayor costo
No iteraccin
Obtener ms informacin de
Archivos
No hay control sobre
los datos
Bajo costo de
instalacin
Duplicidad
Inconsistencia
Mas recursos (memoria
BD Vs Archivos
Desventajas
Base de Datos
Tamao
Complejidad
Costo
Requerimientos adicionales
de Equipo
En caso de falla, el impacto
es mayor
Complejo el recuperar los
datos
Archivos
Lento acceso a los datos
En los diferentes tipos de
organizacin la direccin de
registro est implcita y estn
vulnerables a fallas del
sistema.
BD Vs Archivos
DIFERENCIAS
Base de Datos
Tienen datos de varias entidades.
El
sistema
permite
interrelacionar entidades.
Archivos
Tienen registros de
entidad tipo.
El sistema
archivos.
no
una
sola
interrelaciona
Ejemplo
Factura
Clientes
Nombre
Direccin
Telefono
1225
Juan Garca
Guan
1202
4182569
jgarcia@adinet.co
m.uy
1226
Fernando
Martnez
Rincn 876
9157878
Fmar@gmail.com
....
.......
.........
.........
........
-Se
-Redundancias
de
datos (datos repetidos
innecesaramente)
-Se
Num
Nombre
Dom.
Producto
Precio
1225
Joaqun Garca
Rincn
1224
Azulejos
1250
1226
Fernando
Martnez
Misiones
1456
Pintura
900
.....
.......
........
.......
......
duplican esfuerzos
pueden producir
contradicciones entre
los datos, si por
ejemplo se ingresan
nombres diferentes para
un mismo cliente.
Organizacin fsica
La mayora de las computadoras organizan los
archivos en carpetas, directorios o catlogos.
Cada carpeta puede contener un nmero arbitrario
de archivos, y tambin puede contener otras
carpetas. Las otras carpetas pueden contener
todava ms archivos y carpetas, y as
sucesivamente.
Registro lgico y
registro fsico
Registro Fisico o bloqueo: Cantidad de datos
que puede transferirse en una operacin de I/O a
traves del buffer entre la memoria central y los
dispositivos perifricos y viseversa. Un bloque
puede contener uno o ms registros lgicos.
Registro Logico: Definido por el programador
cargado en RAM
Factor de bloqueo
Factor de Bloqueo: Numero de registros lgicos que puede
contener un registro fsico. Por ejemplo:
Un registro por bloque (factor=1)
N registros por bloque (factor = N)
Factor de bloqueo
Factor de bloqueo
Ejemplo
Archivo 1
Factor de
bloqueo=1
(1 registro por
bloque)
Archivo 2
Factor de
bloqueo=10
(10 registro por
bloque)
Factor de bloqueo
Las operaciones de L/E se realizan por bloques
Contendr los registros lgicos
Depende del S.O.
Apoya al aprovechamiento de la capacidad de almacenamiento
Hace uso del buffer
Con un factor de bloqueo menor tarda en procesar los datos
Factor de bloqueo
Determinar el factor de bloqueo:
Conocer tamao del Registro Fsico (RF)
Conocer el tamao del Registro Lgico (RL)
FB = TRF / TRL
(Valor entero)
Factor de bloqueo
Registro fsico 10000 registros
Registro lgico 100 registros
Factor de bloqueo = 100 registros por bloque
tiempo de acceso = 1 segundo por bloque
FB x Tiempo = 100 seg
RF = FB X RL
Buffer
Memoria intermedia destinada para las operaciones de E/S
El perifrico lee y escribe los datos desde y hacia el buffer, el
cual es luego manejado por el Sistema Operativo trasladando
los datos desde y hacia la memoria del usuario.
Existe un buffer por cada archivo abierto y cada buffer tiene la
longitud necesaria para almacenar un registro fsico del
archivo.
Un programa que trabaje con muchos archivos puede por
ejemplo utilizar en buffers tanta memoria que no quede
suficiente para los datos del programa.
Factor de bloqueo
Si la longitud Mxima del buffer es 3541 bytes y el RL = 300
bytes
Cul es la mxima longitud de un RF de acuerdo al buffer?
Cul es el mayor FB factible segn el buffer?
Factor de bloqueo
Si la longitud Mxima del buffer es 3541 bytes y el RL = 300
bytes
Cul es el mayor FB factible segn el buffer?
MaxFB = 3541/300 = 11,803
Cul es la mxima longitud de un RF de acuerdo al buffer?
Cunto mide el buffer?
Con MaxFB=11 re-calculo MaxLRF = 11 * 300 = 3300. Por lo
tanto el buffer medir 3300 bytes.
Factor de bloqueo
optimo, Tarea, DF
Criterios de optimizacin:
a) Minimizar el nmero de accesos al disco.
b) Minimizar la cantidad de bytes desperdiciados. (por
archivo o por pista.
Minimizar accesos a
disco
Hiptesis: Cada registro fsico exige un acceso para ser ledo o
grabado.
Si hay un acceso por cada RF, entonces minimizar accesos
implica minimizar la cantidad de registros fsicos del disco.
Como un disco se compone de n pistas, minimizar QRF es lo
mismo que minimizar QRP (Cantidad de registros fsicos por pista)
Para minimizar QRP hay que lograr que la longitud del registro
fsico sea mxima, para ello hay que maximizar el factor de
bloqueo.
Conclusin: El FB que minimiza los accesos al disco es el mayor
FB posible.
QRP, cantidad de
registros fsicos por
pista
QRP, cantidad de
registros fsicos por
pista
QP = QRF/QRP
Minimizar accesos a
disco, FB que minimice
accesos
LP=8927 bytes.
IRG=237 bytes.
LRL=450 bytes.
Hallar el Fb que minimice los accesos al disco.
Calcular el QRP
3 Caractersticas
y lgicas
Minimizarfsicas
accesos
a
QRP = 8927/8550
+ 237
Minimizar accesos a
disco, FB que minimice
accesos
LP=8927 bytes, IRG=237 bytes. LRL=450 bytes. MaxBuf= 3000 bytes.
MaxLrf= LP-IRG = 8927-237 = 8690 (pero no entra en el buffer)=> el
buffer restringe
MaxLRF= MaxBuf => MaxLRF= 3000
Calculo MaxFB = MaxLRF / LRL = 3000 / 450 = 6,66
Redondeo: Si FB=7 => LRF = 3150 y no entra en el buffer => FB= 6
Re-calculo MaxLRF con FB=6,
MaxLRF= 6 x 450 = 2700
QRP = 8927/2700 +
237 =3
Minimizar accesos a
disco, FB que minimice
accesos
LP=10092 bytes,
LP=14184 bytes
IRG=250 bytes.
IRG=305 bytes.
LRL=521 bytes.
MaxBuf= 2500
bytes.
Calcular QRP
Minimizar accesos a
disco, FB que minimice
accesos
LP=10092 bytes,
IRG=250 bytes.
LRL=521 bytes.
MaxBuf= 2500 bytes.
QRP = LP/(LRF+IRG)=10092/(521+250)
= 10092/771 = 13
LRF=FB*LRL
FB=BUFFERLRF
QPR=100422084+250=4.32=4
LRF=4*521=2084
FB=2500521=4.
Minimizar la cantidad
de bytes desperdiciados
Si el buffer no restringe realizando muy pocos clculos
puede obtenerse el FB que no solo minimiza los accesos
sino tambin los bytes desperdiciados por pista.
Si el buffer restringe entonces lo que se hace es analizar
todos los factores de bloqueo factibles de acuerdo al
buffer y obtener de todos ellos el que desperdicia menos
bytes por pista.
3 Caractersticas
y lgicas
Cantidad fsicas
de bytes
desperdiciados por
archivo
FRI = Fragmentacin interna. Bytes desperdiciados por una mala
utilizacin del ULTIMO registro fsico. Esto ocurre solo en la ltima
pista del archivo. En discos la FRI no es un desperdicio real pues un
RF puede sobreescribirse, luego es posible agregar RLs a un RF ya
grabado y de esta forma disminuir FRI.
FRS = Fragmentacin del sistema. Bytes desperdiciados por
IRGs, esto ocurre en todas las pistas. (Espacio que asigna el
Sistema operativo)
FRE = Fragmentacin Externa. Bytes "desperdiciados" por pista y
que no son IRGs. Bytes que "sobran" por pista. Esto ocurre por cada
pista que ocupe el archivo. Debido a la FRE puede darse que
habiendo muchos bytes libres en un disco no pueda grabarse un
registro de un determinado archivo pues no existe ninguna pista con
suficiente espacio disponible.
Cantidad de bytes
desperdiciados por
archivo
la
cantidad
de
bytes
que
Cantidad de bytes
desperdiciados por
archivo
Cantidad de bytes
desperdiciados por
archivo
LP = 19 bytes.
IRG = 2 bytes.
LRL = 3 bytes.
FB = 2
QRL = 7.
Clculos auxiliares:
LRF = 3x2 = 6
QRP = 19/(6+2) = 19/8 = 2
QRF = QRL/FB= 7/2 = 4
Cantidad de bytes
desperdiciados por
archivo
Cantidad de bytes
desperdiciados por
archivo
3 Caractersticas
fsicas
y lgicas
Cantidad de
bytes
desperdiciados por
archivo
FRS = bytes desperdiciados por fragmentacin del
sistema, como puede verse son 4 bytes por pista. Esta es
la nica fragmentacin que implica un desperdicio
verdadero de bytes.
FRS= QRP x IRG = 2x2 = 4.
Cantidad de bytes
desperdiciados por
archivo
Cantidad de
bytes
3 Caractersticas
fsicas
y lgicas
desperdiciados por
archivo
LP = 8927 bytes.
IRG = 237 bytes.
Clculos auxiliares:
LRF = 450x19 = 8550
Clculos
FRE= LP - QRP (LRF + IRG ) = 8927- 1(8550+237) = 8927 - 8787 =140.
FRS= QRP x IRG = 1x237 = 237.
FRI= (QRF x FB - QRL) x LRL = (1x19-7)x450 = 12 x 450 = 5400
QP = QRF/QRP = 1/1 = 1
QBD = FRI + QP (FRS + FRE) = 5400 + 1 (237+140) = 5400+1(377)
5400 + 377 = 5777 bytes.
Cantidad de
bytes
3 Caractersticas
fsicas
y lgicas
desperdiciados por
archivo
Clculos auxiliares:
LRF = 801x1 = 801
QRP = 14184/(801+305) = 14184/1106 = 12
QRF = QRL/FB= 5/1 = 5
Cantidad de bytes
desperdiciados por
pista
FRI = 0
Cantidad de
bytes
3 Caractersticas
fsicas
y lgicas
desperdiciados por
archivo
LP = 14184 bytes.
Clculos auxiliares:
QRL = 5
Clculos
FRE= LP - QRP (LRF + IRG ) = 14184 - 12(801+305) = 14184 - 4461 =912
FRS= QRP x IRG = 12 x 305 = 3660.
QP = QRF/QRP = 5/12 = 1 (0.4)
QBD = FRS + FRE= 3660 + 912 = 4572 bytes.
Conceptos generales
Tarea, Ensayo
Portada
Por equipo
ndice
Impreso
Introduccin
Desarrollo
Conclusiones
Bibliogrfia
Con ejemplos
Clasificacin
Tipos bsicos de archivos, clasificados por la funcin
que desempean en un sistema de informacin:
Archivo maestro
Archivo de transacciones
Archivo de reporte
Archivo de trabajo
Archivo de programa
Archivo de texto
Clasificacin
Archivo maestro: Representa una visin esttica
de algn aspecto de los negocios de una
organizacin en un momento dado.
Clasificacin
Archivo de trabajo: Es un archivo temporal en el
sistema. Se usa comnmente para pasar datos
creados por un programa a otro.
Segn su ejecucin
Ejecutables. Funcionan por s solos.
No ejecutables o archivos de datos. Almacenan
informacin para ser utilizada con la ayuda de algn programa.
Se pueden crear grupos, especialmente por la temtica o clase
de informacin que almacenen. Por ejemplo: texto, vdeo,
audio, grficos, informacin comprimida... entre otros
Operaciones
Creacin: Definicion del archivo, se realiza la primera vez (al
abrir con Rewrite y escribir los datos con Write).
Apertura: Comunicacion del archivo logico con el fisico.
Cierre: Cerrar la conexion.
Lectura/Consulta: Acceder al archivo para ver su contenido.
Fin de Archivo: Toda instruccin de ingreso de datos, ya sea
desde teclado o desde un dispositivo magntico, requiere una
condicin de fin de ingreso de los datos, con el objeto de
determinar cuando se han terminado los registros de un archivo
o cuando ya no se desean ingresar mas datos desde el teclado.
Esta condicin la denominamos fin de archivo conocida como
EOF (end of file).
Apertura
Antes de escribir o leer datos de un archivo es necesario
abrirlo. Al abrir el archivo se establece comunicacin entre el
programa y el SO a cerca de cmo accesarlo.
El programa le proporcione al SO el nombre completo del
archivo y la intencin de uso (leer o escribir datos), entonces
se definen reas de comunicacin entre ellos. Una de estas
reas es una estructura que controla el archivo (alias del
archivo).
Apertura
Apertura
Apertura:
lectura/escritura
Ejemplo
Un mtodo en Java cuya funcin es escribir un nuevo archivo
con una lnea de texto.
El mtodo consta de un parmetro que es el nombre del
archivo, por ejemplo "archivo.txt".
Debe estar incluida la extensin en el nombre, pues no se
asigna por defecto.
Apertura:
lectura/escritura
Es necesario incluir el cdigo dentro de un "try" y un "catch" para
evitar errores.
Se utilizan 4 clases para poder escribir:
File: esta clase es la escencia de crear un nuevo archivo, si un
archivo con el mismo nombre ya existe podramos sin querer escribir
contenido sobre el mismo.
FileWriter: es un objeto que tiene como funcin escribir datos en un
archivo.
BufferedWriter: objeto que reserva un espacio en memoria donde se
guarda la informacin antes de ser escrita en un archivo.
PrintWriter: Es el objeto que utilizamos para escribir directamente
sobre el archivo de texto.
Apertura:
lectura/escritura
Apertura:
lectura/escritura
Apertura: escritura
1. publicstaticvoidEcribir(FileFArchivo,StringSCadena{
2. try{
3. if(!FArchivo.exists()) {FArchivo.createNewFile();}// si no existe, lo
crea
/*AbreunFlujodeescritura, sobre el archivo con codificacin utf-8. En
"FileOutputStream(FArchivo,true)",trueesporsiexisteelarchivoaadete
xtoynoborrarloquetenia
4. BufferedWriterFescribe =
newBufferedWriter(newOutputStreamWriter(newFileOutputStream(FArchiv
o,true),"utf-8"));
5. Fescribe.write(SCadena+"\r\n"); //Escribe en archivo, \r\n= salto de lnea
Apertura: lectura
1. publicstaticvoidLeer(FileFArchivo){
2. try{if(FArchivo.exists()){*Siexisteelarchivo, abre un flujo de
lectura
3. BufferedReaderFlee = new BuffereadReader
(newFileReader(FArchivo));
4. StringSlinea;//Lee el archivo lnea a lnea
5. System.out.println("**********LeyendoArchivo***********");
6. while((Slinea=Flee.readLine())!=null){
7. System.out.println(Slinea); } // imprime la lnea leda
8. System.out.println("*********FinLeerArchivo**********");
9. Flee.close();} //*Cierraelflujo*/
10. Else{System.out.println(El archivoNoExiste");}
11. }catch(Exceptionex){System.out.println(ex.getMessage());}
//captura los errores e imprime en pantalla
12. }
Borrado
Este procedimiento permite borrar un archivo, el archivo a
borrar no debe estar abierto. Para borrar un archivo se debe
realizar lo siguiente :
Borrado
1. publicstaticvoidBorrarArchivo(FileFArchivo){
2. try{
3. if(FArchivo.exists())
{/*Siexisteelarchivo*/
4. Ffichero.delete();/*Borraelarchivo*/
5. System.out.println(ArchivoBorrado");}
6. }catch(Exceptionex){System.out.println(ex.getMessag
e());}//Captura los errores
7. }
Borrado de registros
Borradod de registros
1. publicstaticvoidEliminarRegistro(FileFArchivoA,StringSatigualine
a){
2. StringSnomB=ArchivoA.getParent()+/ auxiliar+".txt";/*Crea
nombre para archivo nuevo
3. FileFArchivoB=newFile(SnomB);
/*CreaunobjetoFileparaelarchivonuevo
4. try{
5. If(FArchivoA.exists()){/*Siexisteelarchivoinicial A, abre flujo de
lectura
6. BufferedReader Flee
newBufferedReader(newFileReader(FArchivoA));
7. StringSlinea;/*Recorreelarchivodetextolineaalinea*/
Borradod de registros
11. Ecribir(FArchivoB,Slinea);/*laescribeenelarchivonuevo
12. }//del if
13. else{} /*Siesigualnose hacenada*/
14. }/* del while, lnea 9
15. StringSnomA=FArchivoA.getName(); /*Se obtiene nombre
del archivo A
16. Flee.close();} / cierre del flujo de lectura, del if lnea 6
17. Borrar(FArchivoA); /*Borroelarchivo A
18. FfArchivoB.renameTo(FArchivoA); /Renombre de B como
A
19. else{System.out.println(El archivo noexiste");}
20. }catch(Exceptionex){System.out.println(ex.getMessage
Modificacin
Modificacin
1. publicstaticvoidModificar(FileFArchivoA, StringSatigualinea,
StringSnuevalinea){
2. StringSnomB=ArchivoA.getParent()+/ auxiliar+".txt";/*Crea
nombre para archivo nuevo
3. FileFArchivoB=newFile(SnomB);
/*CreaunobjetoFileparaelarchivonuevo
4. try{
5. If(FArchivoA.exists()){/*Siexisteelarchivoinicial A, abre flujo
de lectura
6. BufferedReader Flee
newBufferedReader(newFileReader(FArchivoA));
7. StringSlinea;/*Recorreelarchivodetextolineaalinea*/
Modificacin
11. Ecribir(FArchivoB,Snuevalinea);/*laescribeenelarchivonuevo
12. }//del if
13. else{EcribirFichero(FficheroNuevo,Slinea);}/ *Escribelalneaantigua
14. }/* del while, lnea 9
15. StringSnomA=FArchivoA.getName(); /*Se obtiene nom. del archivo A
16. Flee.close();} / cierre del flujo de lectura, del if lnea 6
17. Borrar(FArchivoA); /*Borroelarchivo A
18. FfArchivoB.renameTo(FArchivoA); /Renombre de B como A
19. else{System.out.println(El archivoNoExiste");}
20. }catch(Exceptionex){System.out.println(ex.getMessage());}
21. }
Tarea, ensayo
Primario
Magnticos
Secundario
pticos
Off-line
De estado
slido
1.6 Almacenamiento
1.6 Almacenamiento
Nombre y extensin: Cada archivo es individual y es identificable
por un nombre y una extensin opcional que identifica su formato.
Anteriormente los nombres tenan longitud mxima sin caracteres
especiales.
En los archivos de datos la extensin no tiene que ser escrita por el autor
al guardar el archivo, el programa nativo lo hace automticamente.
1.6 Almacenamiento
1.6 Almacenamiento
Si un archivo consta de una sucesin de bloques, el
sistema de archivo debe contar con
alguna manera de
llevar el control de los bloques de cada archivo. La forma
ms evidente (el almacenamiento consecutivo de los
bloques) suele no ser viable porque los archivos pueden
crecer.
1.6 Almacenamiento
Listas enlazadas
En este mtodo de almacenamiento, cada bloque del disco de
1024 bytes (por ejemplo) contiene 1022 bytes de datos y un
apuntador de 2 bytes al siguiente bloque de la cadena.
En cada disco hay una tabla llamada tabla de asignacin de
archivos (FAT). Tiene una entrada por cada bloque del disco.
La entrada del directorio de cada archivo da el nmero del
primer bloque del archivo.
1.6 Almacenamiento
Listas enlazadas
Esquema de
asignacin que
utiliza MS-DOS. En
este ejemplo, se
tienen tres archivos,
A, con bloques 6, 8,
4 y 2; B con bloques
5, 9 y 12; y C con
bloques 10, 3 y 13.
1.6 Almacenamiento
Listas enlazadas
Explicacin
La FAT contiene el nmero del bloque del siguiente bloque. El
archivo A comienza en el bloque 6, de modo que la entrada 6
de la FAT contiene el nmero del siguiente bloque del archivo
A, que es 8; la entrada 8 de la FAT contiene el siguiente nmero
de bloque, 4; la entrada 4 apunta a la 2 y la 2 se marca como
fin del archivo.
1.6 Almacenamiento
Listas enlazadas
Desventajas
El nmero de bytes de datos en un bloque ya no es una potencia
de 2.
El acceso al azar es costoso de implementar. Los apuntadores de
todos los archivos del disco en su totalidad se combinan al azar
en la misma tabla. Esto quiere decir que toda la FAT se necesita
en potencia, aun si slo se abre un archivo.
Por ej. Si un programa hace la localizacin del byte 32768 y
despus inicia la lectura, el sistema operativo tiene que hallar su
camino a travs de 32768/1022 o 32 bloques para hallar los
datos que se necesitan. Tener que leer 33 bloques del disco para
hacer la localizacin es ineficiente.
1.6 Almacenamiento
i-nodo (UNIX)
Conserva las listas de bloques de diferentes archivos en
lugares distintos.
En asociacin con cada archivo hay una tabla pequea (en el
disco) llamada i-nodo.
El i-nodo contiene informacin sobre el archivo y de proteccin,
adems de la informacin necesaria para localizar los bloques
del archivo. Los elementos importantes son los 10 nmeros de
bloques del disco y los 3 nmeros de bloque indirectos. Para
archivos de menos de 10 bloques de longitud, todas las
direcciones del disco se conservan justamente en el i-nodo,
hacindolos fciles de hallar.
1.6 Almacenamiento
i-nodo (UNIX)
1.6 Almacenamiento
i-nodo (UNIX)
Cuando un archivo crece hasta ms de 10 bloques de disco, se
adquiere un bloque de disco libre y se coloca el apuntador indirecto
hacia l. Este bloque se utiliza para contener apuntadores de los
bloques del disco. Con un tamao de bloque de 1K y direcciones de
disco de 32 bits, el bloque indirecto puede contener 256 direcciones
del disco. Este esquema basta para archivos de hasta 266 bloques
(10 en el i-nodo y 256 en el bloque indirecto individual).
Despus de 266 bloques, el apuntador doble indirecto se utiliza para
apuntar a un bloque del disco de hasta 256 apuntadores, slo que
estos apuntadores no apuntan a bloques de datos, sino que apuntan
a 256 bloques indirectos individuales. El bloque indirecto doble basta
para archivos de hasta 266 + 256 2 = 65802 bloques. Para archivos
de ms de 64M, se utiliza el apuntador triple indirecto para apunta a
un bloque que contiene apuntadores a 256 bloques indirectos dobles.
1.6 Almacenamiento
i-nodo (UNIX)
Los archivos que sobrepasan los 16 gigabytes no se pueden
manejar (con tamao de bloque de 1K). El tamao de la FAT de
un disco de 16 gigabytes es poco agradable de contemplar.
La fuerza del esquema de UNIX es que los bloques indirectos se
utilizan slo cuando se necesitan. Para archivos menores de
10K, no se necesitan bloques indirectos.
1.6 Almacenamiento
Directorio de archivos
Para llevar el control de los archivos, el sistema operativo
normalmente proporciona directorios, los cuales, en muchos
sistemas, son archivos. Un directorio suele contener varias
entradas, una por archivo.
1.6 Almacenamiento
Directorio de archivos
Los directorios tienen informacin que apunta hacia la
ubicacin de los archivos reales, atributos y propietario.
al
1.6 Almacenamiento
Directorio de archivos
Los archivos se
organizan en
directorios.
Para su acceso se
hace uso de la ruta
del archivo. Slo
puede existir una
ruta para un nico
archivo.
1.6 Almacenamiento
Directorio de archivos,
estructura
Parte de la informacin puede almacenarse en un registro
de cabecera asociado al archivo, haciendo ms fcil la
estructuracin del directorio en una lista de entradas para
cada archivo.
Esta estructura puede representarse con un simple archivo
secuencial, con el nombre del archivo haciendo las veces
de clave.
1.6 Almacenamiento
Directorio de archivos,
estructura
Si el directorio es una simple lista secuencial no favorecer
la organizacin de los archivos y obligara al usuario a tener
cuidado de no usar el mismo nombre para dos tipos
diferentes de archivos.
Para resolver este problema se puede acudir a un esquema
de dos niveles donde hay un directorio para cada usuario y
un directorio maestro.
1.6 Almacenamiento
rbol de directorio
Un mtodo mas potente y flexible es el directorio jerrquico
o estructurado en arbol.
Existe un directorio maestro que contiene un numero
determinado de directorios de usuario. Cada uno de estos
directorios puede tener a su vez subdirectorios y archivos
como entradas. Esto se cumple en cualquier nivel.
1.6 Almacenamiento
rbol de directorio
Elimina conflictos de nombre entre
los usuarios.
El usuario agrupa los archivos en
formas lgicas, en una jerarqua
general.
Cada usuario puede tener tantos
directorios como se necesiten de
manera que los archivos se puedan
agrupar en formas naturales.
Directorio
Archivo
1.6 Almacenamiento
rbol de directorio
Mtodos para especificar los nombres de archivo:
Ruta absoluta. Consta de la ruta que va del directorio raz al
archivo. Por ejemplo, la ruta /opt/gnu/gcc significa que el
directorio raz contiene un subdirectorio opt, el cual a su vez
contiene un subdirectorio gnu, que contiene el archivo gcc.
Los nombres de ruta absoluta siempre comienzan en el
directorio raz y son nicos.
1.6 Almacenamiento
rbol de directorio
Mtodos para especificar los nombres de archivo:
Nombre de ruta relativa. Se utiliza junto con el concepto de
directorio actual. Un usuario puede designar un directorio como
el directorio actual, en cuyo caso todos los nombres de ruta
que no comienzan en el directorio raz se toman en relacin al
directorio actual.
Por ejemplo, si el directorio actual es /opt/gnu, entonces el
archivo cuya ruta absoluta es /opt/gun/gcc puede referenciarse
simplemente como gcc.
1.6 Almacenamiento
Operaciones con
directorios
Buscar: Cuando alguien referencia el archivo, debe
buscarse en el directorio la entrada correspondiente al
archivo.
Crear archivo: Al crear un nuevo archivo, debe aadirse una
entrada al directorio.
Borrar archivo: Al borrar un archivo, debe eliminarse una
entrada al directorio.
Listar directorio: Puede solicitarse todo el directorio o una
parte.
.7 Organizacin de archivos
Organizacin de
archivos
.7 Organizacin de archivos
Organizacin de
archivos
.7 Organizacin de archivos
Organizacin de
archivos
.7 Organizacin de archivos
Tarea
Realizar la captura de datos en las interfaces.
No condiciona el almacenamiento
Incluye validaciones
Tipo de dato
Nulos
Obligatorios
.7 Organizacin de archivos
Diseno lgico de
archivos
Estructurado
Entidades
Relaciones
Campos
.7 Organizacin de archivos
Anlisis
Qu informacin necesito?
Identificar las entidades involucradas
Qu atributos describen a cada una de
mis entidades?
Cul de mis atributos puede ser el
identificador nico irrepetible?
Como se relacionan las entidades en la
solucin del problema?
.7 Organizacin de archivos
Entidades
Todo objeto del mundo real que
requiere ser modelado
En singular
Involucra ms de un objeto
Se constituyen por campos
.7 Organizacin de archivos
Campos
Descomposicin en su unidad ms
simple
No sebe derivarse de otros campos
Nombres especficos No ambiguos
Unidad II.
Archivos
1. Introduccin
secuenciales 2. Operaciones:
Acceso, Alta, Consulta,
Modificacin, Bajas
3. Ventajas y desventajas
4. Ordenamiento
5. Mezcla de archivos
2.1 Introduccin
Que son?
No es mas que una sucesin de registros
almacenados en forma consecutiva sobre un
soporte externo.
Los registros estn ubicados fsicamente en una
secuencia usualmente fijada por uno o ms
campos de control contenidos dentro de cada
registro, en forma ascendente o descendente.
Esta organizacin tiene el ltimo registro en
particular, contiene una marca (en general un
asterisco) de fin de archivo, la cual se detecta
con funciones tipo EOF (end of file) o FDA (Fin
de Archivo).
2.1 Introduccin
Introduccin
Cuando el orden secuencial coincide con el orden fsico
se dice que existe un orden serial.
Se utiliza cuando: Se est buscando en un archivo de
texto algn patrn, son archivos con pocos registros.
El orden de complejidad ser O(n) lo cual implica que
es demasiado lento para grandes volmenes de datos,
O(n/2) en promedio.
2.1 Introduccin
Tipos
ecuenciales ordenados
Almacena los registros lgicos secuencialmente pero en orden
creciente (o decreciente) de acuerdo con los valores de alguna
de sus claves (id).
ecuenciales no ordenados
Almacena los registros lgicos consecutivamente
2.1 Introduccin
Tipos
Texto: Caracteres + salto de carro
Acceso
El modo de acceso es la manera de acceder a los
registros de un archivo para leer informacin o para
grabar informacin nueva en el mismo.
Se accede a los registros segn secuencia fsica, en
el orden es que estn escritos. Dicho de otro modo,
para acceder al registro N hay que pasar
previamente por los N-1 registros anteriores.
No se puede regresar en la lectura de un registro
anterior. Para esto es necesario volver a empezar.
Especificaciones
Lectura
La nica operacin disponible es la lectura de
registros.
Sita el puntero al siguiente registro (next record
pointer, NRP) al comienzo del archivo.
El archivo debe existir previamente.
Escritura
Slo se pueden hacer operaciones de escritura.
Sita el puntero al siguiente registro al comienzo del
archivo, aadiendo registros.
Si el archivo existe lo sobrescribe, en caso contrario,
hace una llamada al sistema operativo para que cree
el archivo en el sistema de archivos.
Especificaciones
Cerrar archivo
Rompe la va de comunicacin entre el archivo y el dispositivo.
Es necesario si el archivo se va a abrir en otro modo. Puesto
que slo se puede abrir un archivo en un modo concreto, ser
necesario cerrarlo si se desea, por ejemplo, leer los datos
despus de escribirlos.
En los modos de escritura vuelca los datos del buffer al
dispositivo.
Hay que recordar que los datos se escriben en el buffer, es decir, no
se escriben en el disco sino en la memoria.
No cerrar el archivo puede suponer perder las modificaciones que se
hayan hecho en memoria.
Especificaciones
Marca de fin de archivo
Al cerrar un archivo abierto en los modos de
escritura se coloca la marca de fin de archivo
que indicar al sistema operativo hasta
dnde llega el mismo.
La funcin fda(varArchivo) devuelve un
valor lgico verdadero si se ha detectado el
final del archivo despus de la ltima lectura.
Escritura
Escribe el contenido de la expresin en el
archivo especificado en la posicin indicada
por el puntero al siguiente registro.
El puntero se colocar al final del registro
escrito.
La expresin ser una variable en aquellos
tipos de datos que no admitan constantes,
expresiones aritmticas, etc.
Altas
Ejemplo: Registro de productos
Se considera un nmero de producto (campo
no_prod) que servir como referencia para
identificarlo y diferenciarlo de otros productos y no
se permite que se graben dos productos diferentes
con el mismo nmero.
Es necesario realizar un recorrido secuencial
completo del archivo para asegurarse que no haya
duplicados.
La primera ocasin que se intente insertar registros
en un archivo, ste debe crearse.
Altas
El modo de apertura aadir, abre el archivo y mueve
el puntero al siguiente registro despus del ltimo
registro.
Cualquier operacin de lectura aadir los nuevos
datos al final del archivo.
Alta secuencial
Altas secuencial
2.1 Introduccin
Altas manteniendo la
estructura lgica
Escribir todos los registros con clave menor
que el registro a insertar
Escribir el registro
Copiar el resto de datos.
Inse
rtar
man
teni
end
o la
estr
uct
ura
Consulta especfica
Se busca un registro particular de un
producto en un archivo secuencial.
Consulta especfica
Consulta especfica
Consulta general
Es muy semejante a la consulta individual, solo que
en la consulta general se despliegan todos los
registros lgicos que contiene el archivo.
En este tipo de archivo se inicia el recorrido desde el
primer registro almacenado y se detiene cuando se
encuentre el final del archivo.
Lee el registro donde se encuentra el puntero y sta
pasa al siguiente registro.
Los datos ledos se cargan en la variable.
Detecta error si se lee ms all de la marca de final
de archivo.
Consulta general
Modificacin secuencial
La forma de modificar el contenido de los campos de
registros de un archivo, depende mucho de la rutina
de consulta, ya que es necesario localizar
previamente el registro que se desea modificar,
capturar los nuevos valores y posteriormente grabar
el registro completo en la misma posicin que se
encontraba.
Cuando se termina de leer un registro del archivo, el
apuntador se posiciona al inicio del siguiente
registro, por lo que, antes de grabar el registro
modificado, es necesario reposicionar el apuntador
del archivo en la direccin correcta
Modificacin secuencial
Modificacin
secuencial
Bajas secuenciales
Existen dos formas de eliminar registros en un
archivo: lgica y fsicamente.
Cuando se elimina un registro en forma lgica de un
archivo, slo se le coloca una marca especial en
alguno de sus campos que lo identifique como
registro borrado, sin embargo, el registro sigue
existiendo en el archivo y por lo tanto ocupa
espacio.
En la baja fsica de registros, se elabora una rutina
que elimine fsicamente el registro del archivo, es
decir, que el archivo solo conserve los registros
vlidos. Las bajas fsicas tambin son conocidas
Baja lgica
secuencial
Modificacin y bajas
Cualquier modificacin o eliminacin exige la
creacin de un nuevo archivo con los datos
modificados.
Grabar el arreglo en el
archivo secuencial
.3 Ventajas y desventajas
2.3 Ventajas
Se desempean bien para
(recuperar muchos registros)
(recuperar todos los registros).
operaciones Batch
y Recuperar_Todos
Normalmente
requieren
de
un
almacenamiento bastante pequeo.
espacio
de
.3 Ventajas y desventajas
Desventajas
No existe una manera rpida de acceder a
un registro lgico especfico.
Es ineficiente la bsqueda de informacin en
archivos muy grandes.
Mezcla
Obtener un nuevo archivo de salida a partir de dos o
ms archivos de entrada de forma que el nuevo
archivo mantenga la misma estructura lgica que los
archivos de entrada.
Mezcla de archivos
Es necesario realizar una lectura sincronizada de los
dos archivos, con base a uno de sus campos.
Una vez se tiene en memoria un registro de cada
archivo de entrada:
1. Se selecciona aquel que tenga la clave ms
pequea.
2. Se lleva al archivo de salida.
3. Se lee el siguiente registro del archivo que se haya
seleccionado.
Mezcla de archivos
Pseudocdigo
Si de un archivo se acaban
los registros, y de otro no,
entonces copian todos los
registros restantes del
archivo
Ordenacin de archivos
Cada pasada se compone de dos fases:
En la primera se separa el archivo original en dos
auxiliares, los elementos se dirigen a uno u otro
archivo separando los tramos de registros que ya
estn ordenados.
En la segunda fase los dos archivos auxiliares se
mezclan de nuevo de modo que de cada dos tramos
se obtiene siempre uno ordenado.
El proceso se repite hasta que slo obtenemos un
tramo.
Ejemplo
Original: 9, 75, 14, 68, 29, 17, 31, 25, 4, 5, 13,
18, 72, 46, 61
identifican los tramos ordenados
75], [14, 68], [29], [17, 31], [25], [4, 5, 13, 18, 72], [46, 61]
aux2: [4,5,13,18,25,46,61,72]
Se mezclan por tramos
mezcla: 4,5,9,13,14,17,18,25,29,31,46,61,72,7
Se mezclan por tramos
mezcla: [9,14,17,29,31,75], [4,5,13,18,25,46,61,72]
Ejemplo
Original: 3, 1, 2, 4, 6, 9, 5, 8,
10, 7
Unidad III
Organizacin
1. Introduccin
directa 2. Funciones Hash
3. Solucin de Colisiones
1. Reasignacin: Prueba lineal,
3.1 Introduccin
Organizacin directa
El orden fsico no se corresponde con el orden lgico. Se
podrn insertar nuevos registros en ranuras vacas, eliminar
el contenido o modificar sus datos en cualquier momento.
Los datos se colocan y se acceden aleatoriamente mediante
su posicin, es decir, indicando el lugar relativo que ocupan
dentro del conjunto de posiciones posibles.
La relacin entre la clave del registro y su posicin la
establece el programa que los maneje.
Esta relacin se establece por alguna funcin de transformacin
de claves (hashing) que obtendr la direccin de almacenamiento
(NRR, nmero de registro relativo) a partir del campo clave del
registro.
3.1 Introduccin
Organizacin directa
El archivo se divide en espacios (ranuras) de
longitud fija que pueden estar libres u
ocupadas total o parcialmente.
Tenemos una manera de saber en que
posicin del archivo est un registro (ej.
campo id=nmero del registro en el archivo).
A cada registro se accede por su posicin
relativa (archivos relativos).
Si se conoce la longitud de las ranuras y la
posicin de comienzo del archivo se podr
acceder a cualquier registro a partir de su
nmero de registro relativo (NRR).
3.1 Introduccin
Organizacin directa
La obtencin de la direccin relativa ideal debera ser biyectiva,
esto es, que a cada elemento le corresponda un ndice, y que a
cada ndice le corresponda un elemento.
No siempre es fcil encontrar esa funcin, e incluso a veces es
intil, ya que puedes no saber el nmero de elementos a
almacenar.
La funcin de hash depende de cada problema y de cada
finalidad, y se pueden utilizar con nmeros o cadenas.
3.1 Introduccin
Organizacin directa
Archivo 1
001
002
004
005
006
008
010
011
012
014
Archivo 1
001
004
007
010
036
047
048
050
056
3.1 Introduccin
Hash
El trminohashproviene, aparentemente, de la
analoga con el significado estndar (eningls) de
dicha palabra en el mundo real:picar y
mezclar.Se cree queH.P. Lunh, empleado
deIBM, fue el primero en utilizar el concepto en
un memorndum fechado en enero de1953. Su
utilizacin masiva no fue hasta despus de 10
aos.
Funciones hash o
funciones resumen
Funcin o mtodo para generar claves o llaves que representen de
manera casi unvoca a un documento, registro, archivo, etc. Es decir,
la funcin transforma una llave K en una direccin, la cual se usa
como base para la bsqueda y almacenamiento de registros.
Algoritmo matemtico que nos da un resultado B al aplicarlo a un
valor inicial A.
Es como cualquier funcin matemtica, por ejemplo la funcin raz
cuadrada nos dara como resultado 2 si se la aplicamos al nmero 4.
No nos puede devolver cualquier cosa, lo que nos devuelva requiere
que tenga ciertas propiedades para que podamos usarlo.
3.3 Colisiones
Caractersticas
Representacin
compacta de un archivo
o conjunto de datos que
normalmente
es
de
mayor tamao que el
hash
independientemente del
propsito de su uso.
Los
sistemas
de
criptografa
usan
algoritmos
que
aseguran que con la
hash se identifique la
integridad
de
la
informacin.
3.3 Colisiones
Caractersticas
Proteger la confidencialidad de una contrasena: Ya que
podra estar en texto plano y ser accesible por cualquiera y an
as no poder ser capaces de deducirla.
Para saber si una contrasea que est guardada, por ejemplo,
en una base de datos, es igual a la que hemos introducido no
se descifra elhash(ya que debera de ser imposible hacerlo)
sino que se aplicar la misma funcin de resumen a la
contrasea que especificamos y se comparar el resultado
con el que tenemos guardado (como se hace con las
contraseas de los sistemasLinux).
3.3 Colisiones
Propiedades
1. Resistencia a la preimagen: One Way Hash Function. Significa
que es computacionalmente imposible encontrar una clave x
tal que f(x)=y.
2. Resistencia dbil: Weak One Way Hash Function. Significa que
dado x, es computacionalmente imposible encontrar una x
tal que f(x)=f(x). Dos claves, misma hash.
3. Resistencia fuerte: Strong One Way Hash Function. Significa
que es computacionalmente imposible encontrar dos
diferentes claves x, x tal que f(x)=f(x).
Propiedades
1. Fcil de calcular
2. Sea cual sea la longitud de la clave de registro A, la longitud
de su hash resultante B siempre va a ser la misma.
3. Para cada entrada A, la funcin generar una salida B nica.
Es imposible que dos registros bases A y A' tengan un
mismo hash B.
4. Es imposible reconstruir la clave base a partir de la
direccin relativa Esto se conoce como One-Way hash
functions. A partir del hash B es imposible reconstruir el
registro base A, quiere decir que no existe forma o es
computacionalmente imposible, que mediante operaciones
matemticas inversas a las del algoritmo de hash, se llegue
desde B a la clave de registro A.
La eficiencia depende
de:
Utilidad
Utilizadas en mltiples aplicaciones, como los arrays
asociativos, criptografa, procesamiento de datos y
firmas digitales, validacin de contraseas, entre
otros.
Muchos sistemas relacionados con la seguridad
informtica usan funciones o tablas hash.
Favorece la bsqueda no secuencial
Los tiempos de bsqueda son independientes al
tamao del archivo
3.2 Funciones
Hash
Aplicaciones,
construccin
de utilidades mas
complejas
Aplicaciones vinculadas a
autenticacin y control de
acceso
Aplicaciones,
3.2 Funciones
Hash
identificacin y
comparacin de datos
Utilidad
Se puede utilizar para generar un resumen de algo. De hecho, estas funciones
se conocen tambin como funciones resumen.
Ejemplo: el repositorio de documentos. Si alguien quiere almacenar digamos
"Las_Aventuras_Del_Ingenioso.doc" cuyo contenido es El Quijote enterito, el
sistema lo primero que tiene que hacer es revisar que no est previamente ya
almacenado con el mismo o con otro nombre, por ejemplo "El Quijote.doc". El
sistema puede comparar letra a letras el documento de entrada con todos los
docs de la BD para comprobar que no est, o puede comparar el resumen del
documento de entrada con los resmenes de los documentos de la BBDD,
opcin mucho ms manejable y rpida. Adems, como la salida B es nica
para cada A, se puede usar tambin para verificar la integridad de A. Podemos
ver que muchos programas incluyen su hash junto con su descarga, de esta
forma, podemos verificar que el programa no ha sido modificado ni le han
introducido un virus o ha sido troyanizado. Si a los bytes de una aplicacin A
les calculo el hash B y lo adjunto, cuando alguien modifique la aplicacin A, al
calcular de nuevo su hash su valor habr cambiado y ser distinto de B.
Funciones ms comunes
Residuo de la divisin. La idea principal es dividir
el valor de la llave entre un nmero apropiado, y
despus utilizar el residuo de la divisin como
direccin relativa para el registro.
Medio del cuadrado
Pliegue
3.1 Introduccin
Factor de carga
Calculo de la capacidad mxima que tendr el
archivo.
FC = # registros almacenados / # mximos registros
a almacenar
Ideal una expansin entre 70 y 80%
Ej. 300 reg, expandible hasta 1000
Residuo de la divisin
Factores a considerar:
El rango de valores que resultan de "llave MOD divisor", va
desde 0 hasta el divisor.
El divisor determina el tamao del espacio de direcciones
relativas. Si se sabe que el archivo contiene n registros,
entonces divisor > n, suponiendo que solamente un
registro puede ser almacenado en una direccin relativa
dada.
El divisor debe seleccionarse de tal forma que la
probabilidad de colisin sea minimizada. Cmo escoger
este nmero? Investigaciones han demostrado que
divisores pares tienden a comportase pobremente. Se
sugiere que el divisor sea un nmero primo o elegir el
H(001)=02
H(002)=03
H(004)=05
H(005)=06
H(006)=07
H(008)=08
H(010)=11
H(011)=12
H(012)=13
H(014)=01
Cuadrado, doblamiento y
extraccin
c = digtos centrales de K2
D = Divisin de c en dos cadenas de similar longitud (c1 y
c2) y sumar c1+c2
H(K)= Extraccin de n nmeros centrales de D
La llave es elevada al cuadrado, despus algunos dgitos especficos
se extraen de la mitad del resultado para constituir la direccin
relativa.
Si se desea una direccin de n dgitos, entonces los dgitos se truncan
en ambos extremos de la llave elevada al cuadrado, tomando n
dgitos intermedios. Las mismas posiciones de n dgitos deben
extraerse para cada llave.
Cuadrado, doblamiento y
extraccin
Ejemplo: Con la clave 89047 tendremos:
89047 * 89047 = 7929368209
Dividindola en dos partes (79293 y 68209) y
sumndolos tendremos 147502 y por extraccin
(nmeros de en medio) obtenemos el nmero 4750
como direccin de dicha clave.
Folding o pliegue
La clave K se particiona en varias partes, todas ellas
del mismo tamao, salvo quizs la ltima. Dichas
partes se suman o multiplican para obtener la direccin
de entrada a la tabla.
H(K) = digmensig ((d1...di) + (di + 1...dj) + ... +
(d1...dn))
Ejemplo:
K = 123 456 196 43
f (K) = 123+456+196+43 = 818
f (K) = 18
Cambio base
Las cifras de los nmeros de la clave se tratan como si
estuvieran expresadas en otra base distinta del decimal, la ms
comn es el 11, y se hace la conversin a base 10 y si fuese
necesario se lo combina con alguno de los mtodos antes
vistos para obtener la direccin.
Ejemplo:
Tenemos el nmero 11025 y como base el 11; esto hace: (1 *
11^4 + 1 * 11^3 + 0 *11^2 + 2*11^1 + 5*11^0) lo cual nos
da como resultado 15999, al que procedemos a extraer los tres
nmeros centrales convirtindose en la direccin 599.
Por truncamiento
Se toman algunos dgitos de la clave y se forman
con ellos una direccin. La longitud de la direccin
es determinada por el usuario.
H(K) = elegirdigitos (d1,d2...dn) + 1
Ejemplo:
11025 Se quiere una direccin de tres dgitos,
entonces al azar se eligen 102 + 1 = 103.
Ejemplo
Utilizacin
relativa
Utilizacin
Ahora se utiliza en Nmero de Registro Relativo
Ejemplo. Archivo de clientes
NRR
Num
Nombre
Direccin
Telefono
1225
Juan Garca
Guan 1202
4182569
jgarcia@adinet.com.
uy
834
1226
Rincn 876
9157878
Fmar@gmail.com
....
Fernando
Martnez
.......
.........
.........
........
599
Tarea
Calcular por los 4 mtodos las
direcciones relativas para las siguientes
claves
1. 97979718
2. 07012349
3. 99017687
4. 97001698
5. 98765695
Tarea
Por cada 2 integrantes implementar
una funcin Hash.
Proteger las contraseas con
funciones hash.
3.3 Colisiones
Lgica de Hashing
3.3 Colisiones
Qu son?
Se presenta cuando se generan una misma direccin para dos
o ms claves de registro diferentes.
Una buena funcin de hash es una que experimenta pocas
colisiones en el conjunto esperado de entrada; es decir que se
podrn identificar unvocamente las entradas.
Aqu radica la la importancia de dejar aproximadamente un 20
% ms de memoria que la que se estima ocupar, por ejemplo si
se van a almacenar 1,000 elementos, se recomienda reservar
1,200 localidades para que existan direcciones desocupadas,
distribuidas en ese espacio de memoria, para evitar tener que
darle la vuelta completa a la tabla.
3.3 Colisiones
Mtodos
Reasignacin:
Prueba lineal o direccionamiento abierto
Prueba cuadrtica
Doble direccin hash
Arreglos anidados
Encadenamiento
3.3 Colisiones
Reasignacin, prueba
lineal/DA
Una vez detectada la colisin se debe de recorrer el
arreglo secuencialmente a partir del punto de
colisin, buscando al elemento.
El proceso de bsqueda concluye cuando el
elemento es hallado, o bien cuando se encuentra
una posicin vaca. Se trata al arreglo como a una
estructura circular: el siguiente elemento despus
del ultimo es el primero.
3.3 Colisiones
Reasignacin, prueba
lineal/DA
K
H(K)
25
43
56
35
54
13
80
104
3.3 Colisiones
Reasignacin, prueba
lineal
80
Consulta
1
K
2
3
H(K)
25
43
54
56
25
25 / 10 =2
35
Residuo = 5 + 1 = 6
56
54
13
35
80
13
104
10
104
4
5
43
Ejemplo:
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D=
DX =
54
25
56
35
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D=
DX =
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D=6
DX =
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX =
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
H(K)
N = 10
D= 6
DX =
6+1
=7
54
25
56
25
43
56
35
54
13
80
104
35
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la
prueba lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin
D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y
(V[DX] VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin
DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
1
2
3
4
5
3. { Fin del condicional del paso 2 }
V : 80
43
54
K = 35
H(K)
N = 10
D= 6
DX = 7
25
56
25
43
56
35
54
13
80
104
35
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX =
7+1
=8
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la
prueba lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y
(V[DX] VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
+1
25
= 11
D=
6
43
56
35
54
13
80
104
DX = 8
54
25
56
35
13
H(K)
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la
prueba lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin
D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y
(V[DX] VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin
DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
1
2
3
4
5
3. { Fin del condicional del paso 2 }
V : 80
43
54
K = 35
N = 10
D= 6
DX = 8
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
H(K)
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
H(K)
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
13
10
104
Algoritmo Pruebalineal
PRUEBALINEAL (V, N, K)
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos. Resuelve el
problema de las colisiones por medio de la prueba
lineal }
{ D y DX son variables de tipo entero }
1. Hacer D
H (K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
sino
Hacer DX
D+1
2.1 Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACO) y (DX D)
Hacer DX
DX + 1
2.1.1 Si DX = N + 1 entonces
Hacer DX
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
1
V : 80
43
K = 35
H(K)
N = 10
D= 6
DX = 8
54
25
56
25
43
56
35
54
13
80
104
35
13
10
104
3.3 Colisiones
Reasignacin, prueba
lineal/DA.
La principal desventaja de este mtodo es que
puede haber un fuerte agrupamiento alrededor de
ciertas claves, mientras que otras zonas del arreglo
permaneceran vacas.
Si las concentraciones de claves son muy
frecuentes, la bsqueda ser principalmente
secuencial perdiendo as las ventajas del mtodo
hash.
3.3 Colisiones
Reasignacin, prueba
cuadrtica
Similar al de la prueba lineal. La diferencia consiste
en que en el cuadrtico las direcciones alternativas
se generan como
D + 1, D + 4, D + 9, . . ., D + i2 en vez de D + 1, D +
2,...,D + i.
Esta variacin permite una mejor distribucin de las
claves colisionadas.
3.3 Colisiones
Reasignacin, prueba
cuadrtica, insercin
K
H(K)
25
43
56
35
54
13
80
104
55
NRR
Clave
80
55
3
4
43
54
25
56
13
104
10
35
3.3 Colisiones
Reasignacin, prueba
cuadrtica, Consulta
1
80
55
H(K)
25
43
54
56
25
35
6
5
56
54
13
13
80
104
104
5
6
10
35
55
4
5
43
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
25
43
56
DX =
35
I =
54
13
80
104
D=
54
25
H(K)
56
13
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
25
43
56
DX =
35
I =
54
13
80
104
D=
54
25
H(K)
56
13
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX =
I =
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
25
43
56
DX =
35
I =
54
13
80
104
D=6
54
25
H(K)
56
13
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
25
43
56
DX =
35
I =
54
13
80
104
D=6
54
25
H(K)
56
13
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
2
DX =6
+1
=7
I =1
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
25
D=6
43
56
35
54
13
80
104
DX = 7
I =1
54
25
H(K)
56
13
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
25
43
56
DX = 6 + 2
35
=6+4
54
= 10
13
80
104
D=6
2
I =2
54
25
H(K)
56
13
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
Algoritmo Pruebacuadrtica
PRUEBACUADRATICA ( V, N, K )
{ Este algoritmo busca al dato con clave K en el
arreglo V de N elementos}
{ D, DX e I son variables tipo entero }
1. Hacer D
H(K) { Genera direccin }
2. Si V[D] = K entonces
Escribir El elemento est en la posicin D
si no
2
Hacer I
1 y DX
D+I
2.1 repetir mientras (V[DX] K) y (V[DX] VACIO)
2
Hacer I
I + 1 y DX
D+I
2.1.1 Si DX > N entonces
Hacer I
0, DX
1yD
1
2.1.2 { Fin del condicional del paso 2.1.1 }
2.2 { Fin del ciclo del paso 2.1 }
2.3 Si V[DX] = K
entonces
Escribir El elemento est en la posicin DX
si no
Escribir El elemento no est en el arreglo
2.4 { Fin del condicional del paso 2.3 }
3. { Fin del condicional del paso 2 }
V : 80
55
43
K = 35
N = 10
D=6
DX = 10
I =2
54
25
56
13
H(K)
25
43
56
35
54
13
80
104
104 35
10
3.3 Colisiones
Reasignacin, prueba
cuadrtica
La principal desventaja de este mtodo es que
pueden quedar casillas del arreglo sin visitar.
Como los valores de las direcciones varan en 12
unidades, resulta difcil determinar una condicin
general para detener el ciclo.
Este problema podra solucionarse empleando una
variable auxiliar, cuyos valores dirijan el recorrido
del arreglo de tal manera que garantice que sern
visitadas todas las casillas.
3.3 Colisiones
Reasignacin, doble
direccin Hash
Una vez detectada la colisin se debe generar otra
direccin aplicando la funcin hash a la direccin
previamente obtenida.
El proceso se detiene cuando el elemento es
hallado, o bien cuando se encuentra una posicin
vaca.
D =H(K)
D' = H(D)
D'' = H(D')
3.3 Colisiones
Reasignacin, doble
direccin Hash
La funcin hash que se aplique a las direcciones
puede o no ser la misma que originalmente se aplico
a la clave. No existe una regla que permita decidir
cual ser la mejor funcin a emplear en el calculo de
las sucesivas direcciones.
3.3 Colisiones
Reasignacin, doble
direccin Hash
K
Hf
H(K)
H(K
)
25
---
---
---
43
---
---
---
56
---
---
---
43
35
---
---
54
80
25
43
56
35
54
54
---
---
---
25
13
13
10
56
80
80
---
---
---
35
104
104
---
104
1
0
13
H(k)=(k mod
H(D)=((D+1) mod
Dobledireccion (V, N, K)
Int D, DX;
D
1. Hacer D = H(k);
Buscando k=25 DX
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N) y (V[DX] K) y (V[DX] VACIO)y(DX D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
k
V
=
80
1
10
43
2
54
5
25
6
56
7
35
8
13
9
104
Dobledireccion (V, N, K)
Int D, DX;
D=6
1. Hacer D = H(k);
Buscando k=25 DX
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N) y (V[DX] K) y (V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
H(k)=(k mod
Escribir El elemento no esta en el arreglo
10)+1
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
H(25)=6
k
V
=
80
1
10
43
2
54
5
25
6
56
7
35
8
13
9
104
Dobledireccion (V, N, K)
Buscando D = 6
Int D, DX;
1. Hacer D = H(k);
k=25 DX
2. Si V[D]=k
Entonces
25 =
Escribir El elemento esta en la posicin D
25
?
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo H(k)=(k mod
10)+1
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
H(25)=6
k
V
=
80
1
10
43
2
54
5
25
6
56
7
35
8
13
9
104
Dobledireccion (V, N, K)
Buscando
Int D, DX;
1. Hacer D = H(k);
k=25
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX]
VACIO)y(DX D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
Dobledireccion (V, N, K)
Buscando D
Int D, DX;
1. Hacer D = H(k);
k=35 DX
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N) y (V[DX] K) y (V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
V
=
80
1
10
43
2
54
5
25
6
56
7
35
8
13
9
104
Dobledireccion (V, N, K)
Buscando D = 6
Int D, DX;
1. Hacer D = H(k);
k=35 DX
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N) y (V[DX] K) y (V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
H(k)=(k mod
Escribir El elemento no esta en el arreglo
10)+1
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
H(35)=6
V
=
80
1
10
43
2
54
5
25
6
56
7
35
8
13
9
104
Dobledireccion (V, N, K)
Buscando D = 6
Int D, DX;
1. Hacer D = H(k);
k=35 DX
2. Si V[D]=k
Entonces
25 =
Escribir El elemento esta en la posicion D
35 ?
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N) y (V[DX] K) y (V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
H(k)=(k mod
Escribir El elemento no esta en el arreglo
10)+1
2.4. {Fin del condicional del paso 2.3}
H(35)=6
3. {Fin del condicional del paso 2}
V
=
80
1
10
43
2
54
5
25
6
56
7
35
8
13
9
104
Dobledireccion (V, N, K)
Int D, DX;
D=6
1. Hacer D = H(k);
DX = 8
2. Si V[D]=k
Entonces
35 =
Escribir El elemento esta en la posicion D
15 ?
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N) y (V[DX] K) y (V[DX]
VACIO)y(DX D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
H(D)=((D+1) mod
Sino
10)+1
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
H(6)=8
3. {Fin del condicional del paso 2}
Buscando
k=35
V
=
80
1
43
2
54
3
25
4
56
35
5
13
6
104
7
Dobledireccion (V, N, K)
Buscando N = 8
Int D, DX;
1. Hacer D = H(k);
k=35 D = 6
2. Si V[D]=k
DX = 8 8
Entonces
Escribir El elemento esta en la posicion D
DX = 8 6
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
V
=
80
1
43
2
54
3
25
4
56
35
5
13
6
104
7
Dobledireccion (V, N, K)
Buscando N = 8
Int D, DX;
1. Hacer D = H(k);
k=35 D = 6
2. Si V[D]=k
DX = 10
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX] VACIO)y(DX
D)
H(DX)=((DX+1) mod
Hacer DX = H(DX)
10)+1
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
H(8)=10
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
V
=
80
1
43
2
54
3
25
4
56
35
5
13
6
104
7
Dobledireccion (V, N, K)
Buscando N = 8
Int D, DX;
1. Hacer D = H(k);
k=35 D = 6
2. Si V[D]=k
DX = 10
Entonces
8
Escribir El elemento esta en la posicion D
DX = 10 6
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
V[DX]
3. {Fin del condicional del paso 2}
V
=
80
1
43
2
54
3
25
4
56
35
5
13
6
104
7
Dobledireccion (V, N, K)
Buscando N = 8
Int D, DX;
1. Hacer D = H(k);
k=35 D = 6
2. Si V[D]=k
DX = 10
Entonces
8
Escribir El elemento esta en la posicion D
DX = 10 6
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
null = 15 ?
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
V[DX]
3. {Fin del condicional del paso 2}
V
=
80
1
43
2
54
3
25
4
56
35
5
13
6
104
7
Dobledireccion (V, N, K)
Buscando D = 6
Int D, DX;
1. Hacer D = H(k);
k=35 DX = 10
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX] VACIO)y(DX
D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
EL ELEMENTO NO ESTA EN EL
ARREGLO !
Dobledireccion (V, N, K)
Buscando
Int D, DX;
1. Hacer D = H(k);
k=35
2. Si V[D]=k
Entonces
Escribir El elemento esta en la posicion D
Sino
Hacer DX=H(D)
2.1. Repetir mientras (DX N)y(V[DX] K)y(V[DX]
VACIO)y(DX D)
Hacer DX = H(DX)
2.2. {Fin del ciclo del paso 2.1}
2.3. Si V[DX]=k
Entonces
Escribir El elemento esta en la posicion DX
Sino
Escribir El elemento no esta en el arreglo
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
3.3 Colisiones
Arreglos anidados
Cada elemento del arreglo tiene otro arreglo en el
cual se almacena los elementos colisionados. Si bien
la solucion parece ser sensilla, es claro tambin que
resulta ineficiente.
Al trabajar con arreglos se depende del espacio que
se alla asignado a este lo cual onduce a un nuevo
problema difcil de solucionar: elegir un tamao
adecuado de arreglo que permita el equilibrio entre
el coste de memoria y el numero de valores
colisionados que pudiera almacenar
3.3 Colisiones
Arreglos anidados
K
H(K)
25
43
46
35
54
13
80
104
80
---
---
---
---
---
---
---
---
---
---
---
43
13
---
---
54
104
---
---
25
35
---
---
46
---
---
---
---
---
---
---
---
---
---
---
1
0
---
---
---
---
3.3 Colisiones
Encadenamiento
separado o abierto
1. Se construye para cada localizacin de la tabla,
una lista enlazada de registros cuyas claves caigan
en esa direccin.
2. La cantidad de tiempo requerido para una
bsqueda depender de la longitud de las listas y
de las posiciones relativas de las claves en ellas.
3. Existen variantes dependiendo del mantenimiento
que se haga de las listas
1.FIFO
2.LIFO
3.Por valor Clave, etc.
3.3 Colisiones
Encadenamiento
separado o abierto
1. La mayora de los casos, se suele optar por la
alternativa ms simple, la LIFO.
2. En cualquier caso, si las listas se mantienen en
orden esto puede verse como una generalizacin
del mtodo de bsqueda secuencial en listas. La
diferencia es que en lugar de mantener una sola
lista con un solo nodo cabecera se mantienen M
listas con M nodos cabecera de forma que se
reduce el nmero de comparaciones de la
bsqueda secuencial en un factor de M (en media)
usando espacio extra para M punteros.
3.3 Colisiones
Listas
Estructura que permite almacenar datos de forma
organizada.
A diferencia de los vectores, las listas son dinmica,
no se necesita saber "a priori" los elementos que
puede contener.
En una lista, cada elemento apunta al siguiente
excepto el ltimo que no tiene sucesor y es null. Por
ello los elementos son registros que contienen el
dato a almacenar y un enlace al siguiente elemento.
3.3 Encadenamiento
Colisiones
separado o abierto
(LIFO)
1
80
H(K)
25
43
43
56
54
35
25
54
56
13
80
104
10
13
10
4
35
V
1
Encadenamiento (V, N, K)
D=
Int D, P, Q ;
1. Hacer D = H(K){genera direccin}
Q
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
Hacer Q = V[D].SIG {apuntador a la lista}
80
K
H(k)
25 6
43
54
25
56
8
9
10
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=35
13 4
80 1
1045
Encadenamiento (V, N, K)
D=6
Int D, P =^Q ;
Q
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
V
Hacer Q = V[D].SIG {apuntador a la lista}
1
80
K
H(k)
25 6
43
54
25
56
8
9
10
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=35
13 4
80 1
1045
V
1
80
Encadenamiento (V, N, K)
D=6
Int D, P =^Q ;
1. Hacer D = H(K){genera direccin}
Q
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin
D
Sino
Hacer Q = V[D].SIG {apuntador a la
lista}
K
25 =
35 ?
3
4
43
54
25
56
8
9
10
13
H(k)
25 6
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=35
13 4
80 1
1045
V
1
80
Encadenamiento (V, N, K)
Int D, P =^Q ;
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin
D
Sino
Hacer Q = V[D].SIG {apuntador a la
lista}
Q vacio
SI
3
4
43
54
25
56
8
9
10
13
10
4
35
Q
35 35
NO
D=6
K
H(k)
25 6
43 4
56 7
35 6
54 5
Buscando
k=35
13 4
80 1
1045
80
D=6
Q vacio
K
H(k)
35 = 35
25 6
43
54
25
56
8
9
10
13
43 4
56 7
10
4
35
Q
35 6
54 5
Buscando
k=35
13 4
80 1
1045
80
Q = vaco
NO
3
4
43
54
25
56
8
9
10
13
35 = 35
K
H(k)
25 6
43 4
56 7
10
4
35
Q
D=6
35 6
54 5
Buscando
k=35
13 4
80 1
1045
Sino
Escribir El elemento esta en la lista
2.4. {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}
D=6
V
1
80
EL ELEMENTO ESTA EN LA
LISTA!
2
3
4
43
54
25
56
8
9
10
13
10
4
35
Q
Buscando
k=35
V
1
Encadenamiento (V, N, K)
Int D, P =^Q ;
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
Hacer Q = V[D].SIG {apuntador a la lista}
80
H(k)=(k mod
10)+1
3
4
43
54
25
56
8
9
10
13
H(10) = 1
D=1
Q
K
H(k)
25 6
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=10
13 4
80 1
1045
V
1
Encadenamiento (V, N, K)
D=1
Int D, P =^Q ;
Q
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
Hacer Q = V[D].SIG {apuntador a la lista}
80
80 = 10 ? NO
25 6
43
54
25
56
8
9
10
K
H(k)
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=10
13 4
80 1
1045
Encadenamiento (V, N, K)
Int D, P =^Q ;
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
Hacer Q = V[D].SIG {apuntador a la lista}
D=1
Q
V
1
80
80 = 10 ? NO
25 6
43
54
25
56
8
9
10
K
H(k)
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=10
13 4
80 1
1045
D=1
Q
V
1
80
3
4
43
54
25
56
8
9
10
vacio
Q VACIO ? NO
K
H(k)
VACIO 10 ? SI
25 6
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=10
13 4
80 1
1045
80
3
4
43
54
25
56
8
9
10
vacio
D=1
Q
Q VACIO ? NO
K
H(k)
VACIO 10
25 6
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=10
13 4
80 1
1045
80
3
43
54
25
56
9
10
EL ELEMENTO 10 NO ESTA EN
LA LISTA !K
Q = VACIO ? SI
H(k)
25 6
vacio
D=1
13
43 4
56 7
10
4
35
35 6
54 5
Buscando
k=10
13 4
80 1
1045
Encadenamiento (V, N, K)
Int D, P =^Q ;
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
Hacer Q = V[D].SIG {apuntador a la lista}
D=7
Q
V
1
80
K
H(k)
25 6
43
54
25
56
8
9
10
13
43 4
56 7
10
4
35
35 6
54 5
Buscando k=
56
13 4
80 1
1045
V
1
Encadenamiento (V, N, K)
D=7
Int D, P =^Q ;
Q
1. Hacer D = H(K){genera direccin}
2. Si V[D]=K
Entonces
Escribir El elemento esta en la posicin D
Sino
Hacer Q = V[D].SIG {apuntador a la lista}
80
56 = 56 ? SI
25 6
43
54
25
56
8
9
10
K
H(k)
13
43 4
56 7
10
4
35
35 6
54 5
Buscando k=
56
13 4
80 1
1045
3.3 Colisiones
Tarea
1. Introduccin
Unidad IV
2.
Organizacin
indexada
3.
ndices (AVL)
2. rboles multicamino como
modificaciones, consultas
5. Caractersticas, ventajas y
desventajas
4.1 Introduccin
Organizacin indexada
INDIZAR, INDICE = INDEXAR.
Las ltimas pginas de un libro suelen
contener un ndice, es decir, una tabla que
contiene una lista de temas (llaves) y nmeros
de pgina en donde pueden encontrarse esos
temas (campos de referencia).
En archivos, un ndice funciona como el ndice
de un libro. Se accede directa y eficientemente
a los datos del archivo sin necesidad de ver
todos los registros
4.1 Introduccin
Ejemplo
Si se va a buscar un tema (especificado por una palabra o una
frase) en este libro, se puede buscaren el ndice al final del
libro, encontrar las pginas en las que aparece y despus leer
esas pginas para encontrar la informacin que estamos
buscando.
Las palabras de ndice estn ordenadas, lo que hace fcil la
bsqueda del trmino que se est buscando. Adems, el ndice
es mucho ms pequeo que el libro, con lo que se reduce an
ms el esfuerzo necesario para encontrar las palabras en
cuestin
4.1 Introduccin
ndices en archivos
Los ndices son archivos de control que
facilitan la recuperacin de registros de
datos
Los registros de ndice se componen del
valor de una clave de recuperacin de
registros de datos, y un puntero al archivo
de datos al que corresponde ese valor
4.1 Introduccin
Ejemplo
Por ejemplo, en una aplicacin bancaria, podra
existir un archivo de registros que describiesen a las
sucursales.
Ser adecuado indexar el archivo en base al nombre
de la sucursal, para proporcionar informacin de una
sucursal en particular a travs de consulta
interactiva.
El acceso a un archivo se lleva a cabo gracias a la
creacin y mantenimiento de los archivos: Archivo
de ndice y archivo de datos.
4.1 Introduccin
ndices en archivos
Area de ndices:
4.1 Introduccin
ndices en archivos
Se dispone de una tabla en que aparecen ordenados
secuencialmente los nmeros de la clave del archivo y
asociados a cada uno de ellos de la direccin (puntero) del
registro correspondiente.
Archivo de ndices
Archivo de datos
4.1 Introduccin
Ejemplo
Insertar 30: Siempre se
inserta al final, es decir, el
archivo crece siempre hacia
abajo.
Eliminar 4: Se marca el
registro con cero, y as se
elimina lgicamente
Insertar 8: Se pone al final
del archivo o se busca un
hueco.
4.1 Introduccin
ndices en archivos
El ndice se puede organizar de diversas formas, las
ms tpicas son: secuencial, multinivel y rbol.
Los registros de ndice pueden ser de longitud fija o
variable
A travs del ndice se puede procesar un archivo de
forma secuencial o de forma directa segn la clave
de indexacin, y esto independientemente de como
est organizado el archivo por s mismo.
4.1 Introduccin
Implementaciones
ndices total o denso
El ndice contiene las claves y direccin de todos los
registros del rea de datos y su posicin relativa.
En el rea de ndices los registros se ordenan por su
clave.
ndices dispersos o no densos.
Contiene la pareja de clave y direccin slo para
algunos de los registros. El ndice contiene la clave del
ltimo registro y la direccin de acceso al primer
registro del bloque.
Multinivel
4.1 Introduccin
Implementaciones
4.1 Introduccin
Implementaciones
ndices multinivel
ndices
densos
Orga
niza
cin
inde
xada
Especificaciones
Existe una entrada del ndice por cada registro en el
rea de datos.
Cada entrada contiene la clave por la que se
acceder a la informacin y la posicin de los datos
en el rea de datos.
El rea de datos deber se de acceso directo.
El rea de ndices est ordenada por la clave.
Tipos
Secuencial o de un solo nvel
Primarios. Sobre el campo clave de ordenacin
De agrupacin. Sobre el campo de ordenacin,
no forzosamente el campo clave.
Secundarios. Sobre cualquier campo que no sea
el de ordenacin
Creacin
1. Crear los archivos vacos originales de ndices y
datos
Creacin
2. Cargar el archivo de ndices en la memoria antes
de usarlo, es decir crear un buffer de memoria y
copiar en el buffer. De esta manera manejaremos
nuestro buffer y tendremos ms efectividad por la
velocidad que tiene la memoria RAM.
Creacin
3. Recorrer el archivo de datos secuencialmente e ir
extrayendo de cada registro el campo clave
4. Crear la dupla (clave, direccin) la direccin es
donde se encuentra en registro con dicha clave
5. Insertar de forma ordenada dicha dupla en el
ndice en memoria
6. En este momento es conveniente guardar el ndice
en archivo para mantener la integridad del
sistema. Se hace un recorrido secuencial del ndice
y se guarda la dupla (clave, direccin) en el archivo
de ndices
Acceso
Acceso directo
Se busca la clave en el
ndice, se obtiene la
direccin donde est
almacenada y se accede de
forma directa al registro
especificado en el rea de
datos.
Acceso secuencial
Los registros son ledos
ordenados por el
contenido del campo
clave,
independientemente del
orden en que se fueron
grabando
Consulta
Buscamos en el archivos de ndices a Bertha (I)
Archivo de ndices
Archivo de datos
Consulta
Accedemos directamente al registro Bertha en
el archivo de datos (I)
Archivo de ndices
Archivo de datos
Insercin
1. Primero se debe buscar la clave en el indice
2. Se busca una posicin libre en el rea de datos.
3. Se inserta un elemento en el rea de datos
4. Se extrae la clave del registro insertado
5. Se inserta de forma ordenada la dupla (clave,
direccin) en el ndice de memoria o en el buffer
Actualizacin
Ordenacin del
archivo de ndices
Actualizacin
Reescribir el archivo
de ndices copiado
de la memoria o del
buffer creado
Modificacin
La actualizacin de registros entra dos categoras
Se realiza un acceso secuencial y se modifican los datos a
partir del NRR obtenido en el ndice.
1. La actualizacin cambia el valor del campo de clave o el
ndice y puede traer consigo el reacomodo del archivo de
ndices, as como del de datos. Se implementa a base de
realizar una operacin de borrado o eliminacin, seguida de
una operacin de insercin del registro modificado
2. La actualizacin no afecta el campo clave o ndice y no
requiere el reacomodo del archivo de ndices pero si el de
datos. Segn el tipo de registros el nuevo registro se ubicar
o no en la misma posicin. Dependiendo de esto se realizar
una simple modificacin o una operacin
deborrado/insertado.
Borrado
Se realiza un acceso secuencial y se elimina la
entrada en el rea de ndices.
Se busca la clave del dato a borrar en el ndice,
para conocer su localizacin en el archivo de datos
Segn sus caractersticas y disposicin de los datos
en archivo se utilizara un mtodo de borrado u otro
(lgico o fsico).
Se elimina en memoria la dupla (clave, direccin)
del ndice
Debe ser consistente la eliminacin de registros en
el archivo de datos y en el de ndices
ndices
dispersos
Orga
niza
cin
inde
xada
ndices dispersos
El rea de ndices no contiene todas las claves.
El rea de datos contiene la informacin ordenada y
agrupada por bloques, ningn bloque tiene registros
intercalados con otro
El rea de ndices almacena una entrada por cada
bloque y puede incluir atributos extra para
agruparlos
La entrada contiene la clave mayor del bloque y el
valor de la clave mayor del bloque.
Acceso
Combina los ndices con un acceso secuencial.
1. Busca la clave secuencialmente en el ndice hasta encontrar
una clave mayor o igual que la que se est buscando o
localiza el bloque dnde podra estar el dato.
2. A partir de ah, obtiene la posicin de inicio del bloque y
accede al primer registro del bloque en el rea de datos.
3. Recorre secuencialmente el bloque hasta encontrar la clave
=> a la que se est buscando, si es mayor, el registro no
est.
ndices dispersos
Ancla
de
bloque
Insercin
Primero se intenta aadir el registro dentro del
bloque dnde le correspondera estar.
Para ello, entre bloque y bloque se pueden dejar posiciones
libre.
Si hay sitio disponible (hay espacio entre bloques), se inserta
el nuevo dato manteniendo el bloque ordenado.
La estructura del ndice no cambiara.
Modificacin
Se busca la clave del dato a modificar en el ndice,
para conocer su localizacin en el archivo de datos
Sigue los mismos pasos para el proceso de acceso
Una vez identificado el registro se modifican los
datos.
En caso de modificar el campo clave, es necesario
realizar la modificacin del ndice y realizar el
ordenamiento correspondiente.
Borrado
Se busca la clave del dato a borrar/modificar en el ndice,
para conocer su localizacin en el archivo de datos
Sigue los mismos pasos para el proceso de acceso
Una vez identificado el registro, se elimina la dupla (clave,
direccin) del ndice
Debe ser consistente la eliminacin de registros en el archivo
de datos y en el de ndices
ndices
multinive
l
Org
aniz
aci
n
inde
xad
a
ndices multinivel
Consiste en varios ndices
secuenciales encadenados. Se
dispone de un ndice a los
registros de datos y otros
ndices que apuntarn a un
ndice de nivel menor.
Los ndices de nivel alto suelen
ser escasos y los de primer nivel
2 nivel
densos.
1er nivel
Archivo de datos
ndices multinivel
Se estructuran en forma de rbol.
En el primer nivel se encuentran las clave
ordenadas de menor a mayor y la direccin
del siguiente nivel del rbol.
En el nivel inferior se encuentran las claves
ordenadas y punteros hacia el rea de
datos.
ndices multinivel
ndices
densos
ndices dispersos
ndices multinivel
ndices dispersos
ndices
densos
rboles
binarios
Org
aniz
aci
n
inde
xad
a
rbol
Es una estructura en la que los datos estn
organizados y sus elementos de informacin estn
relacionados por sus ramificaciones.
Conjunto finito de uno o ms nodos, tal que:
Hay slo un nodo raz.
Los dems nodos estn separados dentro de n conjuntos
desordenados, donde cada uno de estos es un rbol. Estos
sub-rboles son llamados hijos.
Grado: nmero de subrboles de un nodo, cuando el grado=0
se dice que es una hoja o nodo terminal
rbol
(A(B(E,F(K,L)), C(G), D(H(M),I,J)))
rbol binario
Estructura poderosa y eficiente para almacenar y
recuperar informacin. Debido al dinamismo que
caracteriza a los rboles, el beneficio de utilizarlo es
mayor, cuando ms variable sea el nmero de datos.
Es un rbol de N ramas que se caracteriza porque la
informacin de cada nodo es comn a todos los
sucesores.
Para buscar una clave se procede carcter a
carcter de manera descendente en el rbol.
La inicial de la clave est en la raz del rbol y el
nodo terminal un indicador del final de la clave
rbole binario
Un rbol binario consiste en un nodo raz y dos subrboles,
izquierdo y derecho
Pre-orden
Trayectorias:
. RID
. IRD
-RDI
-IDR
-DRI
-DIR
In-orden
Post-orden
rbol binario
rbol binario
Caractersticas
Cada nodo debe contener una clave que no pueda
ser duplicado
La clave del hijo izquierdo (si existe) debe ser
menor a la clave de su padre
La clave del hijo derecho (si existe) debe ser mayor
a la de su padre No
Si
Insercin
Compara la clave a insertar con el nodo raz
Si es mayor, avanza hace el subrbol derecho.
Si es menor, avanza hacia el subrbol izquierdo.
Repetir mientras
Si El subrbol derecho o izquierdo = nulo
Insertar
Si la clave a insertar es igual al dato del nodo
No insertar
Insercin
Construir el rbol con las siguientes claves:
21, 33, 13, 25, 40, 18, 10
Insercin del 26
Insercin
Insercin
Padre = NULL, nodo = Raz, dato = elemento a
insertar
Bucle: mientras nodo actual no sea un rbol vaco o
hasta que se encuentre el elemento
Si el valor del nodo raz > dato, buscar en el rbol izquierdo
Padre=nodo, nodo= nodo izquierdo
Si el valor del nodo raz < dato, buscar en el rbol derecho
Padre=nodo, nodo= nodo derecho
Si nodo no es NULL, el dato est en el rbol, salimos
Si Padre es NULL, el rbol est vaco y se inserta como raz
Si dato < Padre, se inserta como hijo izquierdo
Insercin
El orden de insercin de los datos determina la forma del rbol.
Bsqueda
Compara la clave a insertar con el nodo raz
Si es mayor, avanza hace el subrbol derecho.
Si es menor, avanza hacia el subrbol izquierdo.
Repetir mientras
Si El subrbol derecho o izquierdo = nulo
No se encuentra
Si la clave a insertar es igual al dato del nodo
Encontrado, mostrar
Bsqueda del 25
Borrado 25
2. Padre con un solo descendiente: el padre del
nodo a borrar pasa a apuntar al hijo del nodo
borrado.
Borrar un nodo
3. Padre con dos hijos: sustituir por el mayor de los
menores o el menor de los mayores
Eliminar 6
1.El menor de los mayores 7
2.El mayor de los menores 4
.3.1Borrar
rboles binarios
21, utilizando
sucesor
Borrado
1. Padre = NULL
2. Si el rbol est vaco: el dato no est en el rbol
3. Si el nodo raz = dato, entonces
1.El nodo raz es una hoja
1.Si Padre=NULL el nodo raz es el nico del rbol, nodo
raz=NULL
2.Se elimina el nodo y sali
2.El nodo no es un nodo hoja
1.Buscar el nodo ms a la izq del rbol der de raz o el ms a la
der del iqz.
2.Se intercambian los elementos del nodo raz y el nodo
encontrado
3.Se borra el nodo.
Ejercicios
1. Construir el rbol binario de la siguiente secuencia
de claves
1. 50, 25, 75, 10, 40, 60, 90, 35, 45, 70, 42.
2. 10, 75, 34, 22, 64, 53, 41, 5, 25, 74, 20, 15, 90.
rboles
balanceado
s AVL
Orga
niza
cin
inde
xada
rboles AVL
AVL son las iniciales de los hombres que idearon
este tipo de rbol Adelson-Velskii y Landis en 1962.
Bsicamente un rbol AVL es un rbol binario de
bsqueda al que se le aade una condicin de
equilibrio. Es decir, para todos los nodos la altura de
sus subrboles izquierdo y derecho pueden diferir a
lo sumo en 1.
Condiciones
Caractersticas
La diferencia entre las alturas de los
subrboles derecho e izquierdo no debe
excederse en ms de 1.
Cada nodo tiene asignado un peso de
acuerdo a las alturas de sus subrboles
1 si su subrbol derecho es ms alto
-1 si su subrbol izquierdo es ms alto
0 si las alturas son las mismas.
Ejemplo
-2
-1
6
1
0
-1
2
8
-1
4
1
0
0
7
0
3
Factor de equilibrio
El factor de equilibrio (FE) es la diferencia entre las
alturas del rbol derecho y el izquierdo.
FE= altura subrbol derecho altura subrbol
izquierdo
+ (positivo) der mas alto (profundo)
- (negativo) izq mas alto (profundo)
Factor de
equilibrio
Implementacin
Como cualquier rbol binario
Punteros a padre e hijos o slo a hijos
Se aade a cada nodo un campo que indica su FE o la altura
1
2
3
4
Rotacin
Rotacin
Rotacin
Rotacin
Insercin
1.
2.
3.
Insercin del 3
1
-1
-1
-1
Borrado
Al eliminar un nodo en un rbol AVL puede afectar
el equilibrio de sus nodos. Entonces hay que hacer
rotaciones simples o dobles.
Eliminas un nodo como lo hacemos en un rbol
binario ordenado. Al localizar el nodo que queremos
eliminar seguimos este procedimiento:
Si el nodo es un nodo hoja, simplemente lo
eliminamos.
Si el nodo solo tiene un hijo, lo sustituimos con su hijo.
Si el nodo eliminado tiene dos hijos, lo sustituimos por
el hijo derecho y colocamos el hijo izquierdo en el
Borrado
Ahora que se ha eliminado el nodo, se debe volver a equilibrar
el rbol:
Si el equilibrio del padre del nodo eliminado cambia de 0 a +-1 el
algoritmo concluye.
Si el padre del nodo eliminado cambio de +-1 a 0, la altura del rbol
ha cambiado y se afecte el equilibrio de su abuelo.
Si el equilibrio del padre del nodo eliminado cambia de +- 1 a +- 2
hay que hacer una rotacin. Despus de concluirla, el equilibrio del
padre podra cambiar, lo que, a su vez, podra forzarnos a hacer
otros cambios (y probables rotaciones) en toda la ruta hacia arriba a
medida que ascendemos hacia la raz. Si encontramos en la ruta un
nodo que cambie de 0 a +- 1 entonces finaliza.
Borrado
rboles AVL
Balancear
Tras efectuar una de estas operaciones pueden
ocurrir diversos casos:
1) No se ha producido desbalanceo, es decir, a partir
de todo nodo, la diferencia de alturas entre sus hijos
es menor o igual que 1. En este caso no se hace
nada.
2) Existe algn nodo que se ha desbalanceado. Una
regla importante es actuar sobre el primer nodo que
incumpla el factor de balance 1, empezando desde
abajo hacia arriba, o sea, desde las hojas hacia la
raz.
Balanceo
Balancear
Debe cumplir:
x < y
Los nodos de A < x y y
Los nodos de B > x pero < y
Los nodos de C > y y x.
Balancear, rotacin
simple izquierda
RSI
-2
-1
5
3
0
8
Balancear, rotacin
simple izquierda
RSI
Ejemplo 2
8 -2
3
2
-1
-1
9
0
5
3
0
2
0
8
-1
7
0
9
Balancear, rotacin
simple izquierda
RSI
Ejemplo 3
Balancear, rotacin
simple derecha RSD
Ejemplo 1
2
0
8
1
7
0
15
15
8
17
7 0
0
20
1
7
0
9
0
20
Balancear, rotacin
simple derecha RSD
Ejemplo 2
Balancear, rotacin
simple derecha RSD
Hay varios puntos que cabe sealar aqu:
Balancear, rotacin
simple
Rotacin
Construir los rboles: 8, 15, 7, 9, 17, 20 y 8, 5, 9, 7, 3, 2
Realizar la rotacin correspondiente
Rotacin doble
Pueden ocurrir
"desequilibrios en zigzag", es decir
desequilibios que no son
ni a la derecha ni a la
izquierda.
Constar de dos
rotaciones simples
Balancear, rotacin
doble izquierda RDI
Inicia del ms distal al ms proximal a la raz
Ejemplo 1
8 -2
5
0
8 -2
1
7
7
5
-1
7
5
0
8
Balancear, rotacin
doble izquierda RDI
Ejemplo 2
8 -2
8 -2
5
3
1
6
0
5
5 -1
1
7
-1
7
-1
0
3
Balancear, rotacin
doble izquierda RDI
Ejemplo 3
Balancear, rotacin
doble izquierda RDI
Ejemplo 3
Balancear, rotacin
doble derecha RDD
Si esta desequilibrado a la derecha y su hijo izquierdo tiene
distinto signo () hacemos rotacin doble derecha-izquierda.
Ejemplo 1
-2
-2
8
-1
5
1
7
7
0
5
8
0
8
Balancear, rotacin
doble derecha RDD
Ejemplo 2
-1
-1
0
9
0
7
1
0 5
8
0
0 4
9
-1 8
6
rboles AVL
Crear el rbol con los valores: 50, 23, 65, 70, 82, 68, 39
6
5
-2
5
0
2
0 39
6
5
0
6
8
7
0
-1
8
2
0
85
3
9
5
0
-1 3
9
23
23 0
7
0
0
0
6
8
7
0
6
8
0
8
2
0
85
6
5
5
0
8
2
rboles AVL
-2
-1 3
9
0
23
6
5
5
0
0
7
0
6
8
6
5
1
3
9
0
8
2
0
85
2
3
0
50
6
8
7
0
8
2
0
85
Ventajas
Rpido acceso. Evita examinar archivo por archivo para
recuperar algn registro buscado; por lo tanto se ahorra
tiempo.
El sistema se encarga de relacionar la posicin de cada registro
con su contenido por medio del rea de ndices.
Permite un acceso secuencial y directo de una forma
aceptable.
Permite acceder por varias claves.
El espacio de almacenamiento es mayor que en las otras
organizaciones.
Se pueden actualizar los registros en el mismo archivo sin
necesidad de crear uno nuevo
Desventajas
Necesidad de espacio adicional para el rea de ndices.
Desaprovechamiento de espacio que resulta al quedar huecos
intermedios libres despus de sucesivas actualizaciones.
Tiene tendencia a que aumente el tiempo medio de acceso a
los registros, cuando se producen muchas altas nuevas con
claves que hay que intercalar entre las existentes, por el
ordenamiento.
Aumenta el tiempo de acceso a los registros
rboles
B
Orga
niza
cin
inde
xada
4.3.3 rboles B
Caractersticas
Creado por Rudolf Bayer y Ed McCreight. Se cree que la B es de
balanceado, dado que todos los nodos hoja se mantienen al
mismo nivel en el rbol.
Son rboles balanceados de bsqueda para ndices multinivel
en los que cada nodo puede tener ms de dos hijos.
Para que siga mantenindose el nmero de nodos dentro del
rango predefinido, los nodos internos se juntan o se parten.
Pueden desperdiciar memoria, porque los nodos no
permanecen totalmente ocupados.
Requiere que todos los nodos hoja se encuentren a la misma
altura.
4.3.3 rboles B
Caractersticas
Dependiendo el autor, el orden de un rbol B
es m y puede ser el nmero mximo o
mnimo de claves o de descendientes por
nodo.
Si m es el nmero de ramas que parten de un
nodo de un rbol, el nodo (excepto la raz)
contendr mximo m-1 claves y (m+1)/2
como mnimo
El rbol est ordenado. Si un nodo tiene k
claves, tiene siempre k + 1 descendientes.
4.3.3 rboles B
Caractersticas
Dependiendo el autor, el orden de un rbol B
es m y puede ser el nmero mximo o
mnimo de claves o de descendientes por
nodo.
Si m es el nmero de ramas que parten de un
nodo de un rbol, el nodo (excepto la raz)
contendr mximo m-1 claves y (m+1)/2
como mnimo
El rbol est ordenado. Si un nodo tiene k
claves, tiene siempre k + 1 descendientes.
4.3.3 rboles B
Caractersticas
Cada clave en un nodo est asociada siempre
con dos referencias. Una a otro nodo que
contiene elementos con claves menores y la
otra a un nodo con elementos con claves
mayores.
Existe una relacin entre las caractersticas
de cantidad de claves y descendientes
mnimos y mximos por nodo.
Entre la cantidad mnima de claves y
descendientes existe una diferencia de 1
4.3.3 rboles B
Caractersticas
4.3.3 rboles B
Caractersticas
La raz tiene al menos 2 hijos si no es un nodo
hoja.
Un nodo no hoja con k hijos contiene k-1
elementos almacenados.
Los hijos que cuelgan de la raz (r1, , rm) tienen
que cumplir ciertas condiciones:
El primero tiene valor menor que r1.
El segundo tiene valor mayor que r1 y menor
que r2, etc.
El ltimo hijo tiene valor mayor que rm.
4.3.3 rboles B
Caractersticas
Esquema de un nodo del rbol. Cada elemento del nodo tiene
dos referencias a descendientes, una a nodos cuyas claves son
menores a la clave del elemento y otra a mayores.
4.3.3 rboles B
Bsqueda
Consiste en situarse en el nodo raz del rbol, si la clave se
encuentra ah hemos terminado y si no se selecciona de entre
los hijos el que se encuentra entre dos valores de clave que son
menor y mayor que la buscada respectivamente y repetimos el
proceso hasta que la encontremos.
En caso de que se llegue a una hoja y no podamos proseguir la
bsqueda la clave no se encuentra en el rbol.
4.3.3 rboles B
Bsqueda
1. Seleccionar como nodo actual la raz del rbol.
2. Comprobar si la clave se encuentra en el nodo actual:
1.Si la clave est, fin.
2.Si la clave no est:
1.Si estamos en una hoja, no se encuentra la clave. Fin.
2.Si no estamos en una hoja, hacer nodo actual igual al hijo que
corresponde segn el valor de la clave a buscar y los valores
de las claves del nodo actual (y se busca la clave K en un nodo
con n claves: el hijo izquierdo si K < K1, el hijo derecho si K >
Kn y el hijo i-simo si Ki< K< Ki+1) y volver al segundo paso.
4.3.3 rboles B
Insercin
Todas las inserciones se realizan en las hojas
Dos pasos recursivos:
1. Validar la existencia.
1.Buscar la hoja donde debiramos encontrar el valor de la clave, si
se encuentra la clave a insertar, salir (ya existe).
2.Si la clave no se encuentra en el rbol habremos llegado a una
hoja que es justamente el lugar donde debemos realizar esa
insercin.
4.3.3 rboles B
Insercin
2. Posicin:
1.Situados en un nodo donde realizar la insercin si no est
completo (el nmero de claves que existen es menor m-1), el
elemento puede ser insertado respetando el orden y termina.
2.En caso de que el nodo est completo, lo dividimos a partes
iguales en dos nuevos nodos, los valores menores en el nodo
izquierdo y los mayores en el derecho. Se toma el valor medio
para insertarlo en el padre.
3.Si el padre est tambin completo, habr que repetir el proceso
hasta llegar a la raz.
4.En caso de que la raz est completa, la altura del rbol aumenta
en uno creando un nuevo nodo raz con una nica clave.
4.3.3 rboles B
Insercin
4.3.3 rboles B
Insercin
Ejemplo 1
4.3.3 rboles B
Insercin, redistribucin
Ejemplo 1
4.3.3 rboles B
Insercin, redistribucin
Ejemplo 1
4.3.3 rboles B
Insercin, redistribucin
Ejemplo 2, insertar el 18
El 18 < 20 corresponde al
nodo que contiene
10,15,17,19. Esta completa
4.3.3 rboles B
Ejemplo 3
Insertar las claves 40, 20, 10, 30
Se crea el nodo raz con las 4 claves ordenadas
10
20
Insertar el 25: Se crean dos nodos hijos y se reparten
as:30
el
nmero mediano pasa a la raz y los menores pasan al nodo
izquierdo y los mayores al derecho
25
10
20
30
40
40
4.3.3 rboles B
Ejemplo 3
Insertar las claves 5, 15, 23
Despus de la insercin del 15, es necesario la creacin de otro
nodo.
2
5
1
0
1
5
2
0
3
0
1
5
4
0
5
1
0
< 15
2
5
2 2
0 3
>15 < 25
3 4
0 0
>25
4.3.3 rboles B
Ejemplo 4
3
0
1
0
2
0
2
5
3
2
3
4
3
8
4
3
4
0
4
2
4
4
5
0
5
6
4.3.3 rboles B
Ejemplo 4
Insertar 58, 60, 52, 54, 46
3
0
3
8
4
3
1
1
0
2
0
2
5
3
2
3
4
4
0
3
0
3
8
4
3
5
6
4
4
4
2
5
0
5
6
2
2
1
0
2
0
2
5
3
2
3
4
4
0
4
2
4
4
5
0
5 5
23 44
5
8
6
0
5
8
4.3.3 rboles B
Ejemplo 4
Insertar 58, 60, 52, 54, 46
1
0
2
0
2
5
3
2
3
0
3
4
4
0
3
8
4
3
5
6
4
4
4
2
5
0
5
2
5
4
5
8
6
0
5
8
6
0
4
3
3
0
1
0
2
0
3
8
5
0
4
0
2
5
3
2
3
4
4
2
4
4
4
6
5
6
5
2
5
4
4.3.3 rboles B
Borrado
4.3.3 rboles B
Borrado, operaciones
4.3.3 rboles B
Borrado, algoritmo
1. Localizar el nodo donde se encuentra la clave.
2. Si el nodo localizado no es una hoja, intercambiar el valor de la
clave localizada con mayor elemento del subrbol izq. o el
menor del subrbol der.. Colocar la clave a borrar en una hoja.
Hacemos nodo actual igual a esa hoja. Borrar la clave.
3. Si el nodo actual contiene al menos el mnimo de claves como
para seguir siendo un B-rbol, fin.
4. Si el nodo actual tiene un nmero menor que el mnimo:
1.Si un hermano tiene ms del mnimo de claves,
redistribucin y fin.
2.Si ninguno de los hermanos tiene ms del mnimo, unin de
dos nodos junto con la clave del padre y vuelta al paso 3
para propagar el borrado de dicha clave (ahora en el padre).
4.3.3 rboles B
Ejemplo 1
1. Se elimina el elemento 18
2. Se fusionaron el primero y la
segundo nodo con su nodo
mediano situado en la pgina
padre.
4.3.3 rboles B
Ejemplo 2
2
1. Se elimina el elemento 14
5
1
0
2
0
3
0
2 2
2 4
1 1 1 1
3 y
4 se5reordenan
8
2. Se elimina
2
5
1
0
2
2
7
2
0
8
1
2
6
2
8
3
2
3
0
2
2
2
4
2
6
2
7
4
0
2
8
3
5
3
8
4
1
4
2
4
5
4
0
4
1
4
2
4
5
4.3.3 rboles B
Ejemplo 3
1. Se elimina el elemento 40
2
5
1
0
2
2
0
8
1
3
1
4
1
5
3
0
2
2
1
8
2
4
2
6
2
7
2
8
4
0
3
2
3
5
3
8
4
1
4
2
4
5
4.3.3 rboles B
Ejemplo 3
2
0
8
1
3
1
5
2
5
1
8
3
0
2
2
2
4
2
6
2
7
2
8
4
1
3
2
3
5
3
8
4
2
4
5
4.3.3 rboles B
Tarea
Construir el rbol (K=5) con la insercin de los siguientes
valores. Realizar los ajustes correspondientes:
Insercin
33, 20, 57,90, 49, 30, 17, 35, 10, 21, 40, 80, 56, 8, 39, 43, 60,
4, 31, 99, 1, 2, 11
Baja
80, 11, 8, 57, 33
4.3.3 rboles B
Tarea
Insercin
Insercin
30
Insercin 2
0
17 y 35
1
Insercin
10
1
0
1
7
3
0
2
0
3
3
3
0
3
3
2
0
4
9
3
4
9
5
7
9
0
5
7
3
5
3 4
0 9
3 3
3 5
9
0
5
7
1
0
1
7
2
0
2
1
3
3
3
5
9
0
9
3
9
4
0
4
3
5
6
5
7
6
0
8
0
9
0
4.3.3 rboles B
Tarea
Insercin
4, 31, 99 4
2
0
2
1
Insercin 1
1y2
1
7
1
0
3
1
4
1
0
1
1
8
0
4
9
8
0
4 4
0 3
3 3
3 5
1
7
3
0
4
0
4
9
9 9
0 9
5 5 6
6 7 0
3
9
8
3
9
1
0
Insercin 11
3
0
4
3
9 9
0 9
5 5 6
6 7 0
4.3.3 rboles B
Tarea
3
9
Borrado 80
8
1
1
0
1
1
2
0
1
7
3
0
4
9
3
1
2
1
4
0
4
3
3
3
3
5
8
0
5
6
9
0
5
7
6
0
3
9
4
9
4
0
4
3
5
6
6
0
5
7
9
0
9
9
9
9
4.3.3 rboles B
Tarea
3
9
Borrado 11
8
1
1
0
1
1
2
0
3
0
4
9
3
1
2
1
4
1
7
1
7
4
0
4
3
3
3
3
5
3
0
2
8
1
0
6
0
5
6
9
0
5
7
9
9
4.3.3 rboles B
Tarea
3
9
Borrado 8
4
1
3
0
4
9
2
8
1
0
2
0
3
1
2
1
1
7
1
7
4
0
4
3
3
3
3
5
3
0
1
0
2
6
0
5
6
9
0
5
7
9
9
4.3.3 rboles B
Tarea
3
9
Borrado 57
1
7
1
4
2
0
1
0
2
1
4
3
4
9
5
6
4
9
3
1
9
0
3
3
4
0
3
5
4
3
4
0
9
9
6
0
5
6
3
9
6
0
4
0
3
0
4
3
9
0
9
9
5
7
6
0
4
9
5
6
9
0
9
9
4.3.3 rboles B
Tarea
Borrado 57
1
7
1
0
2 2
0 1
3
0
3
9
6
0
9
0
3
1
3
3
3
5
4
0
4
3
4
9
9
9
5
6
rboles
B*
Orga
niza
cin
inde
xada
4.3.4 rboles B*
Caractersticas
El rbol B* (B asterisco, B Estrella o B Star) es una variante del
rbol B.
El comportamiento similar, con la ventaja de disminuir el
crecimiento en la altura del rbol al aplicar la redistribucin en
la insercin, deteniendo hasta ltimo momento los split y el
aprovechamiento del espacio en el nodo al cambiar las
polticas para decidir cuando hacer un split o una
concatenacin.
Asegura que a la hora de realizar un split al menos dos nodos
estn llenos, por lo que el split se realiza tomando dos
hermanos y dividindolos en 3 nodos 2/3 llenos.
4.3.4 rboles B*
Caractersticas
Todas las ramas tienen igual profundidad
Si un nodo tiene k claves, tiene siempre m + 1 descendientes.
Cada clave en un nodo est asociada siempre con dos
referencias. Una hacia otro nodo que contiene elementos con
claves menores y la otra a un nodo con elementos con claves
mayores.
Existe una relacin entre las caractersticas de cantidad de
claves y descendientes mnimos y mximos por nodo.
4.3.4 rboles B*
Caractersticas
Cantidad mxima de claves por nodo (k).
Cantidad mxima de descendientes por nodo: m = k+1
Cantidad mnima de claves por nodo (excepto la raz): [k*2/3] 3.
Cantidad mnima de descendientes por nodo (excepto la raz y
las hojas) [(2m-1)/3]4
El tamao de la raz es de
2*k+1 claves.
Si k = 2, la capacidad max. = 5
claves
Si se restringe a tener a lo k
llaves, al insertar una nueva
llave, deberamos proceder a
dividir el nodo en dos nodos,
que no cumpliran con la
condicin de tener al menos
4.3.4 rboles B*
Insercin
Se busca la ubicacin donde debe agregarse la clave.
Pueden ocurrir 2 situaciones:
El nodo tiene lugar: Se agregar la clave de la misma manera
que en un rbol B
El nodo esta completo: Se realiza una redistribucin con alguno
de sus hermanos y la clave separador del nivel superior. En
caso de no ser posible se realiza el split tomando para eso un
hermano completo, juntando los dos y realizando un split a 3
nodos con 2/3 de sus claves completas y promovindose una
clave al nivel superior.
4.3.4 rboles B*
Insercin
Si se va a insertar en la raz del rbol y est llena:
Insertar la llave como si realmente tuviese sitio libre.
Crear un nuevo nodo, que pasar a ser la raz del rbol. Extraer
el nodo que ocupa la posicin del medio en el nodo en que se
insert e insertarlo en la nueva raz.
Dividir equitativamente la pgina original en dos nuevos nodos.
Esto sucede solo cuando la raz, producto de la insercin,
excede las (4/3)k llaves, lo cual garantiza que al dividirse en
dos el nodo original, en cada nodo queden las (2/3)k llaves que
necesita un nodo del rbol B*.
4.3.4 rboles B*
Ejemplo
Cantidad mxima de claves por nodo 6.
Cantidad mxima de descendientes por nodo: m = 6+1 =7
Cantidad mnima de claves por nodo (excepto la raz) = 4.
Cantidad mnima de descendientes por nodo (excepto la raz y
las hojas) = 5
El tamao mximo
de la raz es de
2*6+1 = 13 claves.
4.3.4 rboles B*
Insercin
Ejemplo 1
1
0
2
0
3
0
4
0
5
0
6
0
4
0
1
0
2
0
3
0
3
5
4
5
5
0
6
0
7
0
7
0
4.3.4 rboles B*
Insercin
4
0
Insertar 25 y 38
1
0
2
0
2
5
3
0
3
5
3
8
4
5
5
0
6
0
7
0
Insertar 55
1
0
1
5
2
0
2
5
3
0
3
5
4
0
4
5
5
0
6
0
7
0
3
8
1
0
1
5
2
0
2
5
3
0
3
5
4
0
4
5
5
0
5
5
6
0
7
0
4.3.4 rboles B*
Insercin
3
8
Insertar 32
1 1 2 2 3 3
4 4 5 5 6 7
0 5 en0que
5 se0 inserta,
5
Se combina el nodo
con0el hermano,
5 0 5 para
0 0
1
0
1
5
2
0
2
5
1
5
2
0
3
0
4
5
3
2
2
5
3
5
3
0
3
8
3
2
4
0
3
5
3
8
4
0
4
5
5
0
5
0
5
5
6
0
5
5
7
0
6
0
7
0
4.3.4 rboles B*
Borrado
Se procede de la misma manera que en el rbol B.
Cuando va a eliminarse una clave de un nodo con la cantidad
mnima de llaves, deben seguirse los pasos siguientes:
1. Si el hermano tiene una clave para ceder: la clave cedida se
intercambia con la clave Ki del padre, que se encuentra entre
ambos nodos y esta se inserta en el nodo del cual se elimin.
2. Si los hermanos no tienen la posibilidad de ceder una clave,
se analiza el hermano del hermano, si tiene, mover la clave
mediante rotaciones entre hermanos.
4.3.4 rboles B*
Borrado
Rotacin. Llamaremos H0 al nodo del cual se elimin, H1 al
hermano que no poda ceder y H2 al otro hermano. En caso de
ser posible, deben hacerse dos rotaciones para hacer llegar la
llave a H0:
1. Una primera rotacin de H1 a H0 (ahora H1 es quien tiene la
falta)
2. Segunda rotacin desde H2 a H1.
.Estas rotaciones involucran a las clave Ki del nodo padre, que
se encuentran entre los nodos H0 y H1, H1 y H2,
respectivamente.
4.3.4 rboles B*
Borrado
3. Si existen dos nodos hermanos del nodo del que se elimin
que no tenan posibilidad de ceder una llave:
. Se realiza una combinacin de tres nodos para obtener dos,
con participacin de las llaves Ki del padre que se encuentran
entre los tres nodos. La idea es, dividir las llaves de los tres
nodos en dos conjuntos que pasarn a estar en los dos nodos
a formar, extrayendo la llave del medio, que quedar en el
nodo padre, entre los nodos resultantes.
. Si del proceso, el nodo padre ha perdido una llave y provoca
una falta de llave, se debe seguirse analizando el rbol hacia
arriba.
4.3.4 rboles B*
Borrado
4. Si el nodo del cual se elimin solo tiene un hermano (rbol
con dos niveles, en uno la raz y el otro las dos hojas) y este
hermano no puede ceder la llave, se deben fundir las claves
que quedan en un solo nodo, que quedara como raz del rbol.
4.3.4 rboles B*
Borrado
4
0
Eliminar 35
1
0
2
0
3
0
3
5
4
5
5
0
6
0
7
0
5
0
6
0
7
0
8
0
8
0
2
0
3
0
4
0
4.3.4 rboles B*
Borrado
3
0
Eliminar 40
4
8
9
0
9 9 9 9 9
2 4 5 6 8
3 3 4 4
5 6 7 8
2 5 0 5
0 0 0
Los hermanos inmediatos
no pueden cederle
una0llave, pero el
1
0
1
5
2
0
2
5
3
0
1
0
1
5
2
0
2
5
3
2
3
5
4
5
5
0
4
8
9
2
6
0
7
0
8
0
9
4
9
0
9
5
9
6
9
8
4.3.4 rboles B*
Borrado
3
0
Eliminar 20
4
8
9
0
9 9 9 9
2 4 5 6
3 3 4 4
5 6 7 8
2 5 0 pueden
5
0 0una0 clave,
0
Ninguno de los hermanos
cederle
por lo que
1
0
1
5
2
0
2
5
1
0
1
5
2
5
1
5
3
0
2
5
3
2
3
0
4
5
3
5
3
2
4
8
3
5
4
0
4
0
9
0
5
0
6
0
4
5
7
0
4
8
8
0
5
0
6
0
7
0
8
0
9
2
9
4
9
5
9
6
4.3.4 rboles B*
Borrado
3
0
Eliminar 15
1
0
1
5
2
0
2
5
3
2
3
5
4
0
4
5
1
0
2
0
2
5
3
0
3
2
3
5
4
0
4
5
4.3.4 rboles B*
Tarea
Cantidad mxima de claves por nodo 5.
Cantidad mxima de descendientes por nodo = 6
Cantidad mnima de claves por nodo (excepto la raz) = 3.
Cantidad mnima de descendientes por nodo (excepto la raz y
las hojas) = 4
El tamao mximo
de la raz es de
2*5+1 = 11 claves.
4.3.4 rboles B*
rboles B*
Con el siguiente rbol
3
3
1
7
2
0
3
0
4
9
5
7
9
0
Realizar la insercin de: 8, 10, 1, 99, 86, 25, 63, 77, 54, 19, 14
4.3.4 rboles B*
Tarea
3
3
Insertar 8 y 10
8
1
0
1
7
2
0
1
7
2
0
3
0
4
9
5
7
9
0
9
9
Insertar: 1, 99
3
0
1
1
0
3
3
4
9
5
7
9
0
4.3.4 rboles B*
Tarea
Insertar 86
1
0
1
7
3
0
5
7
2
0
3
3
4
9
9
0
9
9
4.3.4 rboles B*
Tarea
Insertar 86
3
0
1
1
0
1
7
2
0
3
3
4
9
5
7
9
0
9
9
4.3.4 rboles B*
Tarea
Realizar la baja de: 49, 67, 18
5
7
1
1
1
1
4
1
7
1
0
1
8
2
0
2
5
2
8
1
9
3
0
3
1
6
5
3
3
4
0
4
9
5
4
5
8
7
5
8
5
7
7
6 7
7 0
5 6
9 0
8 9
6 0
7 8
9 0
7
3
6 6
3 4
9
9
rboles
B+
Org
aniz
aci
n
inde
xad
a
4.3.5 rboles B+
Caractersticas
ndice multinivel. En un rbol-B+, en contraste
respecto un rbol-B, toda la informacin se guarda en
las hojas. Los nodos internos slo contienen claves y
punteros.
Todas las hojas se encuentran en el mismo, ms bajo
nivel. Los nodos hoja se encuentran unidos entre s
como una lista enlazada para permitir bsqueda
secuencial.
Los rboles B+ ocupan un poco ms de espacio que los
rboles B, debido a la duplicidad de alguna de sus
claves.
Los punteros a datos se almacenan slo en los nodos
4.3.5 rboles B+
Caractersticas
Los nodos hoja tienen una entrada por cada valor
del campo de indexacin, junto con un puntero al
registro del fichero de datos (o al bloque que
contiene el registro).
Estos nodos estn enlazados para ofrecer un acceso
ordenado a los registros a travs del campo de
indexacin.
Los nodos internos del rbolB+ corresponden a los
dems niveles del ndice.
Algunos valores del campo de indexacin se repiten
en los nodos internos del rbolB+ con el fin de guiar
la bsqueda.
4.3.5 rboles B+
Caractersticas
Cada nodo, excepto la raz, contiene entre d y 2d
elementos.
Cada pgina, excepto la raz, tiene entre d+1 y
2d+1 descendientes. Por ejemplo, si el orden de un
rbol-B+ es d, cada nodo (exceptuando la raz) debe
tener entre d/2 y d claves.
La raz tiene al menos dos descendientes.
Las claves de los nodos raz e interiores se usan
como ndices.
4.3.5 rboles B+
4.3.5 rboles B+
Estructura
Nodo interno
4.3.5 rboles B+
Estructura
4.3.5 rboles B+
Set secuencial
Un set-secuencial es un conjunto de bloques de tamao
fijo que contienen una cantidad mxima de claves.
Los bloques se encuentran ordenados en base a sus
claves.
Cada bloque cuenta con una referencia al bloque anterior
y otra al posterior.
Los bloques se manejan en forma similar a los nodos de
los rboles B, se realiza redistribucin, concatenacin o
particin segn corresponda.
Recorre secuencialmente todas las claves por bloque y al
llegar al final pasar al siguiente para seguir leyendo.
4.3.5 rboles B+
Set secuencial
4.3.5 rboles B+
Bsqueda
Es similar a los rboles B, diferencindose con stos
en que la bsqueda no termina al encontrar la clave,
sino que se debe llegar a las hojas.
Al buscar una clave sta se encuentra en un nodo
raz o interior, en este caso no debe detenerse el
proceso, sino que debe continuarse la bsqueda con
el nodo apuntado por la rama derecha de dicha
clave.
4.3.5 rboles B+
Bsqueda
Por ejemplo, al buscar la clave 55 sta se encuentra en el nodo
raz. En este caso, debe continuarse el proceso de bsqueda en
el nodo apuntado por la rama derecha de dicha clave.
4.3.5 rboles B+
Insercin
Similar a los rboles B. La diferencia se presenta cuando se
inserta una clave en un nodo lleno (m=2d). En este caso, el
nodo se divide en dos:
Las d primeras claves se ubican en el nodo de izquierda.
Las d+1 restantes en el nodo de la derecha.
Una copia de la clave del medio sube a la pgina antecesora.
4.3.5 rboles B+
Insercin ejemplo 1
2
5
Insercin de la clave 13
1
0
1
5
1
7
2
5
2
1
2
7
2
9
3
1
1
3
1
5
1
7
2
1
2
5
2
5
2
7
2
9
3
1
4.3.5 rboles B+
Insercin ejemplo 1
Insercin de la clave 66
1
0
1
31
5
1
7
2
1
1
5
2
5
2
5
2
7
4
8
7
2
2
9
4
8
7 8 9
2 0 0
5 5 6
1 6 0
1
31
5
1
7
2
1
2
5
2
7
2
9
4
8
7
2
5
6
5
1
5
6
6
0
6
6
8
0
9
0
4.3.5 rboles B+
Insercin ejemplo 1
Fusiona 72 y 50. Bajan un nivel 15 y 25
4
8
1
5
1
0
1
3
1
5
1
7
2
1
2
5
5
6
2
5
2
7
2
9
4
8
5
1
5
6
7
2
6
0
6
6
7
2
8
0
9
0
4.3.5 rboles B+
Insercin ejemplo 2
B+ k=4: 10-27-29-17-25-21-15-31-13-51-20-24-48-1960-35-66
Insertar 10, 27, 29,
1
17 0
Insercin 25
1
0
2
7
2
9
2
5
2
5
1
7
2
7
2
9
2
5
1
7
1
5
1
7
2
1
2
5
2
7
2
9
3
1
4.3.5 rboles B+
Insercin ejemplo 2
2
5
Insertar 13.
1
0
1
5
1
7
2
1
2
5
2
7
2
9
3
1
4.3.5 rboles B+
Insercin ejemplo 2
2
5
Insertar 13.
1
0
1
5
1
7
2
1
1
5
2
5
2
5
2
7
2
9
3
1
1
0
1
3
1
5
1
7
2
1
2
5
2
7
2
9
3
1
4.3.5 rboles B+
Insercin ejemplo 2
1
5
Insertar 51.
1
Se parte el nodo en dos0
1
3
1
5
1
7
2
5
2
1
2
5
2
7
2
9
3
1
4.3.5 rboles B+
Insercin ejemplo 2
1
5
Insertar 51.
1
Se parte el nodo en dos0
1
3
1
5
1
0
1
3
1
5
1
7
2
5
2
1
1
5
1
7
2
5
2
7
2
5
2
1
2
5
2
7
2
9
2
9
3
1
5
1
2
9
3
1
4.3.5 rboles B+
Insercin ejemplo 2
1
5
Insertar 20, 24
1
0
1
3
1
5
1
7
2
5
2
0
2
9
2
1
2
5
2
7
2
9
3
1
5
1
4.3.5 rboles B+
Insercin ejemplo 2
1
5
Insertar 20, 24
1
0
1
3
1
5
1
7
2
5
2
0
2
9
2
5
2
1
2
7
2
9
3
1
3
1
5
1
1
5
1
0
1
3
1
5
1
7
2
0
2
0
2
5
2
1
2
9
2
5
2
4
2
7
2
9
5
1
4.3.5 rboles B+
Insercin ejemplo 2
Insertar 48, 19
1
5
1
0
1
3
1
5
1
7
1
9
2
0
2
0
2
5
2
1
2
9
2
5
2
4
2
7
2
9
3
1
4
8
5
1
4.3.5 rboles B+
Insercin ejemplo 2
Insertar 60
1
0
1
3
1
5
1
5
1
7
1
9
2
0
2
0
2
5
2
1
2
9
2
5
2
4
2
7
2
9
3
1
4
8
5
1
4.3.5 rboles B+
Insercin ejemplo 2
Insertar 60
1
0
1
5
1
3
1
5
1
7
1
9
2
0
2
0
2
5
2
1
2
9
2
5
2
4
2
7
2
9
3
1
4
8
5
1
2
5
1
5
1
0
1
3
2
9
2
0
2
5
2
7
4
8
2
9
3
1
4
8
5
1
6
0
4.3.5 rboles B+
Insercin ejemplo 2
Insertar 35
2
5
1
5
1
0
1
3
1
5
2
0
1
7
2
9
2
9
1
9
2
0
2
5
2
7
2
1
2
4
4
8
2
9
3
1
4
8
3
5
5
1
6
0
4.3.5 rboles B+
Borrado
Ms simple que en rboles-B, porque las claves a eliminar
siempre se encuentran en las paginas hojas.
Se distinguen bsicamente dos casos:
1. Si al eliminar una clave, m queda mayor o igual al minmo,
entonces se termina la eliminacin. Las claves en la raz o
pginas internas no se alteran, aunque sean copia de una
clave eliminada.
2
5
2
5
1
0
1
3
2
5
2
7
2
9
1
0
1
3
2
7
2
9
4.3.5 rboles B+
Borrado
2. Si al eliminar una clave, la cantidad de llaves queda menor
que el minmo entonces se realiza una redistribucin de
claves, tanto en el ndice como en las paginas hojas.
Eliminar 27. Se elimina el 27 y se redistribuye. Se toma la clave
que se encuentra ms a la derecha en la rama izquierda de
25 (21) y se agrega en la raz y una copia de ella, como
ndice.
1
5
1
0
1
3
1
5
1
5
2
5
1
7
2
1
2
5
2
7
1
0
1
3
1
5
2
1
1
7
2
1
2
5
4.3.5 rboles B+
Borrado
Eliminar 21. Al eliminar la clave 21 el nodo queda con menos
claves del mnimo, por lo que debe realizarse una
redistribucin de claves. Como no se puede tomar una clave
del hijo izquierdo, entonces se realiza una fusin de los dos
hijos derechos.
1
5
1
0
1
3
1
5
1
5
2
1
1
7
2
1
2
5
1
0
1
3
1
5
1
7
2
5
4.3.5 rboles B+
Borrado
29
Eliminar
37
1
0
1
1
1
3
1
3
3
5
2
3
2
3
1
5
2
5
1
1
1
3
1
5
23
2
3
4
5
3
5
2
9
13
1
0
2
7
4
5
2
5
4
9
3
7
3
2
29 45
2
7
2
9
3
2
3
5
4
5
4
9
4.3.5 rboles B+
Ejercicio
Dada la siguiente secuencia de claves:
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
dibuje el rbol B+ con k=4
4.3.5 rboles B+
Ejercicio
Del siguiente rbol B+ eliminar: 15,51,48,60,31,20,10,25,17,24
2
5
1
5
1
0
1
3
1
5
1
7
1
9
2
0
2
9
2
0
2
1
2
4
2
5
4
8
2
7
2
9
3
1
4
8
4
5
5
1
6
0
6
6
4.3.5 rboles B+
Ejercicio
Del siguiente rbol B+ eliminar: 15,51,48,60,31,20,10,25,17,24
2
5
1
0
5
2
0
3
0
4
0
8
1
3
1
5
1
8
2
2
2
4
2
6
2
7
3
2
3
5
4
2
3
8
4
5
4
6
OI. Ventajas
Rpido acceso. Evita examinar archivo por archivo para
recuperar algn registro buscado; por lo tanto se ahorra
tiempo.
El sistema se encarga de relacionar la posicin de cada registro
con su contenido por medio del rea de ndices.
Permite un acceso secuencial y directo de una forma
aceptable.
Permite acceder por varias claves.
El espacio de almacenamiento es mayor que en las otras
organizaciones.
Se pueden actualizar los registros en el mismo archivo sin
necesidad de crear uno nuevo
OI. Desventajas
Necesidad de espacio adicional para el rea de ndices.
Desaprovechamiento de espacio que resulta al quedar huecos
intermedios libres despus de sucesivas actualizaciones.
Tiene tendencia a que aumente el tiempo medio de acceso a
los registros, cuando se producen muchas altas nuevas con
claves que hay que intercalar entre las existentes, por el
ordenamiento.
Aumenta el tiempo de acceso a los registros
1. Archivos invertidos
1. Operaciones. Altas, bajas, modificaciones,
consultas
2. Ventajas y desventajas
2. Archivos multilista
Unidad V
consultas
Archivos
Ventajas y desventajas
multillave