You are on page 1of 536

Organizacin

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

Aprendizaje con esquema convencional

Apr
e
ndiz
aje
bas
pro
blem ado
en
as

Mecnica de trabajo

Mecnica de trabajo

1. Equipos de mximo 4 estudiantes cada uno.


2. Cada equipo elegir un problema real que
requiera ser automatizado. Por ejemplo, control
de acceso a recintos, control de inventarios,
control de calificaciones, control de prestamos,
entre otros.
3. Entregar una hoja con los integrantes y el
problema a resolver.
4. No hay cambios de integrantes ni de problemas

Exposiciones
Portada
Contenido

Enviarse al correo electrnico a


ms tardar a las 10 am del da
de la clase de presentacin

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?

Dnde tendra que conseguirla?

1. Introduccin

Problema
Qu nuevas tareas puedo realizar
ahora que tengo todos estos datos?

Qu viejas tareas debera abandonar?

Cules debera hacer de forma


diferente?

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.

Systema: conjunto de reglas, principios o medidas, enlazados


entre s. Conjunto de cosas o partes coordinadas segn una
ley, o que, ordenadamente relacionadas entre s,
contribuyen a determinado objeto o funcin.

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

Las propiedades de los sistemas, no pueden ser descritos en


trminos de sus elementos separados; su comprensin se
presenta cuando se estudian globalmente.

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

Entidad tangible o intangible que permite


incertidumbre acerca de algn estado o suceso.

reducir

la

1. Introduccin

TGS. Informacin

Son datos que dentro de un contexto dado tienen un


significado para alguien.

1. Introduccin

TGS. Objetivo de la
informacin
Anlisis de problemas

Visualizacin de casos complejos

Creacin de productos nuevos.

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

Conjunto de procedimientos ordenados e interrelacionados


que recolectan, almacenan y distribuyen informacin para
apoyar la toma de decisiones y el control de la Institucin.

1. Introduccin

TGS. SI

Fuente: http://es.wikipedia.org

Todos estos elementos interactan para procesar los datos(incluidos


los procesos manuales y automticos) y dan lugar a informacin ms
elaborada, que se distribuye de la manera ms adecuada en una
organizacin, en funcin de sus objetivos.

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.

Sistemas para la toma de


decisiones

1. Introduccin

La organizacin como un
Sistema
Proces
o

Entrada: $, informacin,

R. humano, financiero, material

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

SI. Etapas de desarrollo

1.2 Conceptos generales

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

dispositivos auxiliares es mediante unas


estructuras llamadas archivos o ficheros.

1.2 Conceptos generales

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

1.2 Conceptos generales

Objetivo
Almacenamiento permanente de la
informacin
Manipulacion de un gran numero de datos
Independencia de los programas
Residentes en soportes externos

1.2 Conceptos generales

Objetivo
Almacenamiento permanente de la
informacin
Manipulacion de un gran numero de datos
Independencia de los programas
Residentes en soportes externos

1.2 Conceptos generales

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.

1.2 Conceptos generales

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

1.2 Conceptos generales

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.

1.2 Conceptos generales

Conceptos generales

1.2 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).

1.2 Conceptos generales

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

1.2 Conceptos generales

Organizacin jerrquica

Base de datos

1.2 Conceptos generales

Base de datos

1.2 Conceptos generales

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

1.2 Conceptos generales

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.

1.2 Conceptos generales

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

1.2 Conceptos generales

Registro

1.2 Conceptos generales

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.

1.2 Conceptos generales

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.

1.2 Conceptos generales

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.

1.2 Conceptos generales

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.

1.2 Conceptos generales

BD Vs Archivos
BD

Centralizacin de datos

Control de datos y
estandarizacin

Consistencia, integridad,
seguridad y no redundancia

Interaccin con otras


aplicaciones

Los datos se pueden


compartir

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

1.2 Conceptos generales

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.

1.2 Conceptos generales

BD Vs Archivos
DIFERENCIAS

Base de Datos
Tienen datos de varias entidades.
El
sistema
permite
interrelacionar entidades.

Todas las aplicaciones trabajan


con la misma BD y la integracin
de los evita la redundancia.
Es
compartida
por
muchos
usuarios de distintos tipos.
Ofrece varias visiones del mundo
real.

Archivos
Tienen registros de
entidad tipo.
El sistema
archivos.

no

una

sola

interrelaciona

Se crean archivos a la medida de


cada aplicacin, con todos los
datos necesarios aunque algunos
sean redundantes respecto de
otros archivos.
Sirven para un solo usuario o una
sola aplicacin. Dan una sola
visin del mundo real.

1.2 Conceptos generales

Ejemplo

Factura

Clientes

Se cuenta con dos archivos Clientes y Facturas. Al emitir


cada factura se ingresan nuevamente los datos num,
nombre, domicilio.
Num

Nombre

Direccin

Telefono

E-mail

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.

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

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

3 Caractersticas fsicas y lgicas

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)

3 Caractersticas fsicas y lgicas

Factor de bloqueo

3 Caractersticas fsicas y lgicas

Factor de bloqueo
Ejemplo

Archivo 1
Factor de
bloqueo=1
(1 registro por
bloque)

Archivo 2
Factor de
bloqueo=10
(10 registro por
bloque)

Cada uno tiene un milln de registros. El Archivo 2 requerir


900000 operaciones de I/O menos, para leer todos los registros.
Un factor de bloqueo >1 mejora el rendimiento.
No se puede tener factores de bloqueo muy grandes pues
aumenta el tamao de la memoria intermedia (buffer) y
disminuye el tamao de la memoria central.
Tamao de memoria intermedia = Tamao del bloque

3 Caractersticas fsicas y lgicas

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

3 Caractersticas fsicas y lgicas

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)

cul es el tamao del buffer?

3 Caractersticas fsicas y lgicas

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

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

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?

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

IRG, Inter record gap


El usuario no puede guardar datos en este espacio de
memoria.
Contiene informacin del sistema:
sub-bloque de cuenta (indica la longitud del bloque)
sub-bloque de llave (ltima clave del ultimo bloque)
ibgs propiamente dichos.
etc..

3 Caractersticas fsicas y lgicas

QRP, cantidad de
registros fsicos por
pista

Este nmero se obtiene de:


QRP = LP/(LRF+IRG)
LP: Longitud de la pista (bytes)
Si QRP no fuera un nmero entero, entonces el ltimo registro
fsico de la pista ocupa una parte de la primera pista y una
parte de la segunda pista. A este efecto se lo denomina
"spanning".
Solo consideraremos unidades de disco que NO admitan
spanning de pistas, por lo tanto QRP debe ser redondeado.

3 Caractersticas fsicas y lgicas

QRP, cantidad de
registros fsicos por
pista

LP es una constante propia del dispositivo al igual que el IRG, la


nica variable de la frmula es entonces LRF.
Si LRF ES UN DATO FIJO, entonces puede concluirse que QRP
deber ser redondeado siempre hacia abajo para que entre un
nmero entero de registros fsicos por pista.

3 Caractersticas fsicas y lgicas

QP, cantidad de pistas


que ocupa un archivo
Conociendo QRP y QRF la cantidad de pistas que ocupa un
archivo se calcula de la forma:

QP = QRF/QRP

3 Caractersticas fsicas y lgicas

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

El Fb que minimiza el nmero de Accesos al disco es 19.

3 Caractersticas
y lgicas
Minimizarfsicas
accesos
a

disco, FB que minimice


accesos
LP=8927 bytes, IRG=237 bytes. LRL=450 bytes.
Busco el mayor RF: MaxLRF= LP IRG
MaxLRF= 8927-237 = 8690

QRP = 8927/8550
+ 237

MaxFb = MaxLRF / LRL = 8690 / 450 = 19,31


Redondeo: Si FB=20 => LRF (FB*LRL)=9000 y no entra en la
pista => FB= 19
Re-calculo MaxLRF con Fb=19. MaxLRF= 19x450 = 8550Rta:
El Fb que minimiza el nmero de Accesos al disco es 19.

3 Caractersticas fsicas y lgicas

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

Conclusion: El FB que minimiza el nmero de accesos al disco es 6.

3 Caractersticas fsicas y lgicas

Minimizar accesos a
disco, FB que minimice
accesos
LP=10092 bytes,

LP=14184 bytes

IRG=250 bytes.

IRG=305 bytes.

LRL=521 bytes.

LRL= 801 bytes.

MaxBuf= 2500
bytes.

Calcular QRP

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

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.

3 Caractersticas fsicas y lgicas

Cantidad de bytes
desperdiciados por
archivo

QBD = Cantidad de bytes desperdiciados es:


QBD = (QP x LP)-(QRL x LRL)
QP x LP mide la cantidad de bytes necesarios
QRL x LRL indica
contienen datos.

la

cantidad

QP = Cantidad de pistas del archivo.


LP = longitud de pista

de

bytes

que

3 Caractersticas fsicas y lgicas

Cantidad de bytes
desperdiciados por
archivo

FRE = LP - QRP (LRF + IRG) (todas las pistas menos


la ltima)
FRE = LP QRPUltima (LRF + IRG) (ltima pista)
FRS = QRP x IRG
FRI = (QRF x FB - QRL) x LRL

3 Caractersticas fsicas y lgicas

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

3 Caractersticas fsicas y lgicas

Cantidad de bytes
desperdiciados por
archivo

Grficamente el archivo quedara:


X = bytes usados.I = bytes de IRG.

3 Caractersticas fsicas y lgicas

Cantidad de bytes
desperdiciados por
archivo

Si el disco tuviera solo dos pistas tendramos 6 bytes


libres, pero no podramos grabar otro registro fsico del
archivo ya que no entrara en ninguna de las dos pistas.
FRE= bytes desperdiciados por fragmentacin externa,
como puede verse son 3 bytes por cada pista.
FRE= LP - QRP (LRF + IRG )
= 19- 2x (6+2)
= 19-16
= 3.

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.

FRI= fragmentacin interna, como se ven son 3 bytes y


solo se producen en el ltimo RF de la ltima pista del
archivo.
FRI= (QRF x FB - QRL) x LRL = 3

3 Caractersticas fsicas y lgicas

Cantidad de bytes
desperdiciados por
archivo

QBD = FRI + QP (FRS + FRE) = 3 + 2 (4+3) = 3 + 14 =


17 bytes.
Nuevamente observemos que esto es correcto porque la
ltima pista tienen una utilizacin idntica a las
anteriores, en general esta frmula vale slo para las
pistas 1..n-1 y para la pista n hay que realizar clculos
especiales.

Cantidad de
bytes
3 Caractersticas
fsicas
y lgicas
desperdiciados por
archivo
LP = 8927 bytes.
IRG = 237 bytes.

Clculos auxiliares:
LRF = 450x19 = 8550

LRL = 450 bytes.


FB = 19
QRL = 7

QRP = 8927/(8550+237) = 8927/8787 = 1


QRF = QRL/FB= 7/19 = 1 (0.4)

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

LP = 14184 bytes.IRG = 305 bytes.LRL = 801 bytes.FB = 1QRL =


5
Clculos
FRE= LP - QRP (LRF + IRG ) = 14184 - 12(801+305) = 14184 4461 =912
FRS= QRP x IRG = 12 x 305 = 3660.
FRI= (QRF x FB - QRL) x LRL = (5x1-5)x801 = 0 x 801 = 0
QP = QRF/QRP = 5/12 = 1 (0.4)

3 Caractersticas fsicas y lgicas

Cantidad de bytes
desperdiciados por
pista
FRI = 0

Si no se conoce QRL no se puede calcular FRI, entonces se


asume que no hay fragmentacin interna FRI=0.
Si QRL es variable (cuando constantemente se agregan y
quitan registros).
Se minimizan los bytes desperdiciados por pista sin
considerar FRI.
QBD = FRE + FRS

Cantidad de
bytes
3 Caractersticas
fsicas
y lgicas
desperdiciados por
archivo
LP = 14184 bytes.

Clculos auxiliares:

IRG = 305 bytes.


LRL = 801 bytes.
FB = 1

LRF = 801x1 = 801

QRP = 14184/(801+305) = 14184/1106 = 1


QRF = QRL/FB= 5/1 = 5

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.

3 Caractersticas fsicas y lgicas

Direccin fsica y lgica


Por lo general, un archivo utilizado por un
usuario desde un lenguaje de alto nivel, no
es manejado directamente por el propio
programa, sino por el sistema operativo o
por el software especfico para la gestin de
archivos.

3 Caractersticas fsicas y lgicas

Direccin fsica y lgica


Direccin lgica de un registro. Es la posicin relativa que
ocupa el registro en el archivo.
Direccin fsica. es la posicin real o efectiva donde se
encuentra dicho registro en el soporte de informacin
(direccin hardware).
En el archivo los registros aparecen al usuario en secuencia
lgica, es decir, ordenados linealmente. Por ejemplo, un
archivo de nminas puede estar ordenado alfabticamente por
el apellido de los trabajadores. No obstante el orden de los
archivos en el disco puede no tener ninguna relacin con la
informacin que contiene.

1.2 Conceptos generales

Conceptos generales

3 Caractersticas fsicas y lgicas

Direccin fsica y lgica


El software se encargar de:
Acceder a un archivo para leer, modificar o escribir en uno de
sus registros.
Al leer transfiere de bloque en bloque la informacin del
archivo a un rea de memoria principal asociada a las
entradas/salidas del archivo (buffer), desde aqu la informacin
es procesable por el programa.
Puede transferir informacin desde el buffer al archivo,
modificando su contenido.

3 Caractersticas fsicas y lgicas

Direccin fsica y lgica


El software se encargar de:
Realizar los accesos necesarios al dispositivo donde se
encuentra ubicado el archivo y transferir la informacin
solicitada del archivo al programa o a la inversa.
Facilita que los programas sean portables, ya que en ellos no
se hace referencia a la forma especfica de gestionar la
informacin sobre el soporte, que puede ser diferente de un
sistema a otro. As, un programa que utilice archivos escritos
en algn lenguaje para un determinado equipo, puede ser
trasladado a otro equipo con relativa facilidad, aunque la
memoria masiva est estructurada fsicamente de otra forma.

3 Caractersticas fsicas y lgicas

Direccin fsica y lgica


El SO se encarga de:
Realizar la transformacin de la direccin lgica usada en los
programas, en la direccin fsica con la que se direcciona el
soporte.
Transportar, cada vez que accede al dispositivo, una cantidad
fija de informacin (bloque o registro fsico) que depende de
las caractersticas del hardware o fsicas de ste.

1.4 Clasificacin de archivos

Tarea. Cuadro sinptico,


mapa mental, etc.
Clasificacin de archivos segn:
Tipo de archivo: texto, binarios, postscript, comprimidos, de
imgenes, audio, etc.
Longitud de registro: fija, variable, delimitada, indefinida.
Uso que se hace de ellos: permanente, temporal
Su ejecucin

1.4 Clasificacin de archivos

Tarea, Ensayo
Portada

Por equipo

ndice

Impreso

Introduccin
Desarrollo
Conclusiones
Bibliogrfia

Con ejemplos

1.4 Clasificacin de archivos

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

1.4 Clasificacin de archivos

Clasificacin
Archivo maestro: Representa una visin esttica
de algn aspecto de los negocios de una
organizacin en un momento dado.

Archivo de transacciones: Los cambios que


han de ser aplicados al archivo maestro.

Archivo de reporte: Contiene datos que son


formateados para su presentacin al usuario

1.4 Clasificacin de archivos

Clasificacin
Archivo de trabajo: Es un archivo temporal en el
sistema. Se usa comnmente para pasar datos
creados por un programa a otro.

Archivo de programa: Contiene instrucciones


para procesar datos.

Archivo de texto: Contiene datos alfanumricos


y grficos interesados a travs de un programa
editor de texto.

1.4 Clasificacin de archivos

Segn tipo de archivo


Directorios y archivos especiales. Estos se utilizan (como hace
UNIX) para modelar dispositivos de disco y terminales.
Regulares. Se subdividen en tipos distintos en base a su uso los tipos
diferentes se distinguen por medio de nombres que terminan con
extensiones de archivos distintas.
Archivos de texto ASCII: .txt, .dat
Documentos enriquecidos: .doc, .rtf, .pdf, etc.
Binario ejecutables: .exe, .com, etc.
De datos: .xls, .dbs, etc.
Imagen: .jpg, .png, .bmp, .gif, etc.
Audio: .wav, .mp3, .au, .midi, etc.
Video: .mpg, .avi, .asf, etc.
Procesamiento por lotes: .bat.

Cualquier archivo puede ser editable y cada formato tiene diferentes


tipos de editores.

1.4 Clasificacin de archivos

Segn tipo de archivo


Archivo de texto: Pueden contener cualquier clase de datos,
los datos en un archivo de texto se almacenan usando el
cdigo ASCII, en el cual cada carcter es representado por un
simple byte.
Todos sus datos se almacenan como cadenas de caracteres, es
decir, los nmeros se almacenan con su representacin ASCII y
no su representacin numrica, por lo tanto no se pueden
realizar operaciones matemticas directamente con ellos.
Si se guarda el dato 3.141592 en un archivo de texto, se
almacena como 3.141592, no son lo mismo.

1.4 Clasificacin de archivos

Segn tipo de archivo


Archivo binario: Almacenan los datos numricos con su
representacin binaria. Pueden ser archivos que contienen
instrucciones en lenguaje mquina listas para ser ejecutadas. Por
ejemplo, cuando escribimos un programa en un lenguaje en particular
(como C++, Pascal, Fortran, etc), tenemos las instrucciones
almacenadas en un archivo de programa fuente, una vez que se
compila y ejecuta el programa se traslada a un programa ejecutable
(en lenguaje mquina), que es directamente entendido por la
computadora y se crea un archivo binario.
Tambin se pueden almacenar diferentes tipos de datos incluyendo
datos numricos; sin embargo, los datos numricos se graban con su
representacin binaria (no con su representacin ASCII)
Si se guarda el dato 27 en un archivo binario, se almacena como
00001111 y no como 27.

1.4 Clasificacin de archivos

Segn tipo de archivo


Acrobat Reader: Documentos de texto enriquecido (Portable
Document Format .pdf) que permite transferir documentos
como folletos, trpticos y en general, aquellos que contengan
diseo grfico y utilicen fuentes tipogrficas especiales, con la
seguridad de que se vern en la forma adecuada, sin importar
el tipo de equipo que se utilice.
Fue creado por Adobe Systems, Inc., pero existen otros
programas no propietarios que generan este tipo de archivos.

1.4 Clasificacin de archivos

Segn tipo de archivo


PostScript: Archivos de texto para imprimir (.ps). Aunque son
archivos de texto plano, nicamente pueden ser ledos por
Impresoras PostScript o con la ayuda de un visualizador
especfico.
Fue creado por Adobe, es utilizado para difundir documentos
listos para imprimir, es decir, documentos que ya tienen un
formato y no ser necesario editar. Este formato, junto con el
PDF, se ha convertido en un estndar para la difusin de
documentos en Internet.

1.4 Clasificacin de archivos

Segn tipo de archivo


Quick Time: archivos multiformato (.qt). Identifica archivos
cuyo contenido fue creado en el programa Quick Time. Este
formato tiene la capacidad de manejar audio, animacin, vdeo
y capacidades interactivas.
Fue creado por Apple e inicialmente se desarroll para la
plataforma Macintosh.
Actualmente tambin se utiliza con Windows y Unix y es un
estndar para el manejo de vdeo. (al igual que .mov).

1.4 Clasificacin de archivos

Segn tipo de archivo


WinZip: archivos comprimidos con el programa WinZip (.zip).
WinRAR: archivos comprimidos (.rar).

1.4 Clasificacin de archivos

Segn tipo de archivo


Djvu: archivos de imgenes escaneadas (.djvu). Se caracteriza
por incorporar en las imgenes tecnologas avanzadas:
separacin de capas de imgenes, carga progresiva,
codificacin aritmtica y compresin sin prdida para imgenes
bitonales (dos colores), permitiendo que imgenes de alta
calidad se almacenen en un mnimo de espacio.
Alcanza relaciones de compresin aprox. entre 5 y 10 veces
menores que JPEG Y GIF para documentos en color, y entre 3 y
8 veces que TIFF para los documentos en blanco y negro.

1.4 Clasificacin de archivos

Segn tipo de archivo


GIF: imgenes (.gif). Diseado por Compu Serve y debe su
nombre a las siglas del ingls Graphic Interchange Format
(Formato Grfico de Intercambio).
Un archivo de imagen con este formato puede almacenar hasta
256 colores, por lo que generalmente son diseos sencillos,
como rayas, tramados, dibujos animados simples.
Archivos de bajo peso y multiplataforma.

1.4 Clasificacin de archivos

Segn tipo de archivo


JPG o JPEG: formato de imgenes (.jpeg). Este formato es
utilizado para almacenar y presentar fotos e imgenes sin
movimiento.
A diferencia de ".gif", permite el manejo de un mayor nmero
de colores.

1.4 Clasificacin de archivos

Segn tipo de archivo


TIFF: Tagged Image File Format, formato de archivo de
imgenes etiquetadas (.tiff). Se trata de un formato de imagen
de alta resolucin basado en etiquetas.
Se utiliza para el intercambio universal de imgenes digitales.
Ampliamente utilizado y desarrollado por Aldus y Microsoft, que
maneja monocromtico, escala de grises, color de 8 y 24 bits.

1.4 Clasificacin de archivos

Segn tipo de archivo


MIDI: archivos de audio (.mid). Este formato debe su nombre
al acrnimo del termino ingls Musical Instrument Digital
Interface y es un estndar para la transmisin de informacin
musical entre instrumentos electrnicos y computadoras.
Algunas de sus caractersticas son: no almacena con suficiente
nitidez sonidos complejos como la voz humana y los archivos
que generalmente son de poco peso.

1.4 Clasificacin de archivos

Segn tipo de archivo


MOV: archivos de video (.mov). Identifica archivos cuyo
contenido fue creado en el programa Quick Time.
Este formato tiene la capacidad de manejar audio, animacin,
vdeo y capacidades interactivas.
Fue creado por la empresa Apple e inicialmente se desarroll
para la plataforma Macintosh. Actualmente tambin es
utilizado en Windows y Unix y es un estndar para el manejo
de vdeo.

1.4 Clasificacin de archivos

Segn tipo de archivo


WAVE: archivos de audio (.wav). Identifica archivos que
contienen audio.
Diseado por Microsoft, es un estndar para el manejo de
audio en la plataforma Windows y permite obtener una alta
calidad en el almacenamiento y reproduccin de audio, aunque
su principal desventaja es el elevado peso de los archivos que
genera.

1.4 Clasificacin de archivos

Segn tipo de archivo


Podcast: archivos de sonido (.ogg o .mp3). El podcasting
consiste en crear archivos de sonido (generalmente en .ogg
o .mp3) que son distribuidos mediante un archivo RSS de
manera que permita suscribirse y usar un programa que lo
descargue para que el usuario lo escuche en el momento que
quiera, generalmente en un reproductor porttil.

1.4 Clasificacin de archivos

Segn tipo de archivo


RSS: Really Simple Syndication (sindicacin realmente simple). Parte
de la familia de los formatos XML desarrollado especficamente para
todo tipo de sitios que se actualicen con frecuencia y por medio del
cual se puede compartir la informacin y usarla en otros sitios Web o
programas. A esto se le conoce como redifusin o sindicacin.
El RSS es un sencillo formato de datos utilizado para sindicar
(redifundir) contenidos a suscriptores de un sitio Web. El formato
permite distribuir contenido sin necesidad de un navegador, lo cual
tambin puede verse como desventaja ya que necesita de la
instalacin de otro software. Algunos adelantos han permitido utilizar
el mismo navegador para ver los contenidos RSS mediante
programacin de los denominados scripts de interpretacin.

1.4 Clasificacin de archivos

Segn longitud del


registro
Los registros que componen un archivo pueden o no tener todos la
misma longitud. Esto puede ser debido a la existencia de campos de
longitud variable o por haber campos que se repiten un nmero variable
de veces (o por ambas cosas).
Longitud fija. Todos los registros tienen la misma longitud.
Longitud variable. El sistema reserva una palabra al comienzo de cada
registro para anotar su longitud.
Delimitados. El sistema incluye un carcter especial, para indicar el
final del registro. En este caso se dice que el archivo es de tipo texto.
Indefinido. En este caso el sistema operativo no realiza ninguna gestin
sobre la longitud de los registros del archivo. El programa de usuario es
el que se encarga de localizar el principio y el final de cada registro.

1.4 Clasificacin de archivos

Segn el uso que hacen


ellos
Dentro de una aplicacin se pueden utilizar los archivos para
realizar funciones diversas.
Archivo permanente. Contiene informacin relevante para
una aplicacin, es decir, los datos necesarios para el
funcionamiento de la misma. Su vida es larga y normalmente
no puede generarse de forma inmediata a partir de otros
archivos.
Archivo temporal. Contiene informacin que es relevante
para un determinado proceso o programa, pero no para el
conjunto de la aplicacin. Se genera a partir de los datos de los
archivos permanentes o para actualizar stos, y su vida es
generalmente muy corta.

1.4 Clasificacin de archivos

Segn el uso que hace


de ellos
De los archivos permanentes
Archivos maestros. Contiene el estado actual de los datos
susceptibles de ser modificados en la aplicacin. En general, todos los
procesos estn orientados a actualizar el archivo maestro o a obtener
resultados de l. Ej : el archivo de clientes de un banco, en el los
registros contienen informacin de identificacin de clientes, su saldo,
etc.
Archivos constantes. Contiene datos fijos para la aplicacin. En l no
son frecuentes las modificaciones, normalmente se accede slo para
consultar datos. Ej: el archivo que contenga los intereses para los
distintos tipos de cuentas bancarias.
Archivos histricos. Es aquel que contiene datos que fueron actuales
en tiempos anteriores. Se conservan para poder reconstruir situaciones
anteriores. En algunos casos puede estar formado simplemente por los
registros borrados del archivo maestro. Ej: Un fichero que contenga los

1.4 Clasificacin de archivos

Segn el uso que hace


de ellos
De los archivos temporales
Archivos intermedios. Se utilizan para almacenar resultados de un
programa que han de ser utilizados por otro, dentro de una misma aplicacin.
Archivos de maniobras. Contienen informacion de registros selccionados o
semielaborados. Se utilizan para almacenar los datos propios de un programa
que no se pueden conservar en memoria principal por falta de espacio. Se
encuentran normalmente en programas de clculo numrico, compiladores y
editores. Su vida es siempre menor que el tiempo de ejecucin del programa.
Contienen informacion de registros selccionados o semielaborados
Archivos de resultados. Se utilizan para almacenar datos elaborados que
van a ser transferidos a un dispositivo de salida, por ejemplo un archivo de
impresin, que contiene datos que van a ser transferidos a una impresora.

1.4 Clasificacin de archivos

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

.5 Operaciones sobre archivos

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).

1.5 Operaciones con archivos

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).

1.5 Operaciones con archivos

Apertura

1.5 Operaciones con archivos

Apertura

1.5 Operaciones con archivos

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.

1.5 Operaciones con archivos

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.

1.5 Operaciones con archivos

Apertura:
lectura/escritura

1.5 Operaciones con archivos

Apertura:
lectura/escritura

1. Crear un objeto File que recibe como parmetro la ruta


completa con el nombre del archivo.
FileFArchivo=newFile(c:\\ejemplo.txt);
2. La siguiente funcin crea un archivo si no existe y escribe en
el una cadena que recibe comoparmetro.

1.5 Operaciones con archivos

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

6. Fescribe.close(); // cierra el flujo de escritura


7. }catch(Exceptionex){System.out.println(ex.getMessage());} //Capturapo
sibles errores,loimprimeenpantalla
8. }

1.5 Operaciones con archivos

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. }

1.5 Operaciones con archivos

Borrado
Este procedimiento permite borrar un archivo, el archivo a
borrar no debe estar abierto. Para borrar un archivo se debe
realizar lo siguiente :

1.5 Operaciones con archivos

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. }

1.5 Operaciones con archivos

Borrado de registros

1.5 Operaciones con archivos

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*/

8. while((Slinea=Flee.readLine())!=null){/*si la lnea obtenida es


distinta a la buscada, eliminar
9. if(!
Slinea.toUpperCase().trim().equals(Satigualinea.toUpperCase().trim(

1.5 Operaciones con archivos

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

1.5 Operaciones con archivos

Modificacin

1.5 Operaciones con archivos

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*/

8. while((Slinea=Flee.readLine())!=null){/*si la lnea obtenida es


distinta a la buscada, modificar
9. if(Slinea.toUpperCase().trim().equals(Satigualinea.toUpperCase(

1.5 Operaciones con archivos

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. }

1.5 Operaciones con archivos

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.

Para cada archivo se guarda la fecha de creacin, modificacin y


ltimo acceso.
Pueden poseer propiedades como oculto, de sistema, de slo
lectura, etc.
El tamao se mide en bytes, kilobytes, megabytes, gigabytes y
depende de la cantidad e caracteres
Todo archivo pertenece a un directorio o subdirectorio

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.

Principalmente la informacin concerniente


almacenamiento es gestionada por el SO.

al

El directorio es propiamente un archivo del SO


accesible a travs de rutinas de gestin de archivos.
La manera ms simple de operacin consiste en
que el sistema conserve un solo directorio que
contenga todos los archivos de todos los usuarios.

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

La organizacin de un archivo define la forma en la que los registros se


disponen sobre el soporte de almacenamiento, o la forma en que se
estructuran los datos en un archivo. En general, se consideran tres
organizaciones fundamentales:
Organizacin secuencial. Secuencia de bytes (a).
Organizacin directa o aleatoria (random). Sucesin de registros
de tamao fijo, pueden leerse o escribirse registros arbitrarios, pero no
pueden insertarse o suprimirse registros en la mitad de un archivo (b).
Organizacin secuencial indexada. Es un rbol de bloques de disco,
donde cada nodo contiene n registros con clave. Si se inserta un
registro a un bloque que est repleto, ste se divide en dos, los cuales
se suman al rbol en su secuencia alfabtica correcta (c).

.7 Organizacin de archivos

Organizacin de
archivos

.7 Organizacin de archivos

Organizacin de
archivos

Las operaciones disponibles con archivos difieren ligeramente


de un sistema operativo a otro. Siempre se proporcionan la
lectura y escritura de bytes (o registros) en forma secuencial.
El acceso al azar se puede obtener o bien realizando una
operacin en la que se especifique el nmero (o clave) del
registro que se leer o escribir, o bien, primero se realiza una
operacin para situar la "posicin actual del archivo" en un
lugar determinado y posteriormente se realizan las operaciones
de lectura o escritura que se deseen, las cuales actuarn a
partir de la nueva posicin actual del archivo.

.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

pero sin un orden especfico.

2.1 Introduccin

Tipos
Texto: Caracteres + salto de carro

Estructurado: Registros (campos)

2.2 Acceso secuencial

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.

2.2 Acceso secuencial

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.

2.2 Acceso secuencial

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.

En los modos de escritura, coloca la marca de final de archivo


despus del ltimo registro escrito.

2.2 Acceso secuencial

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.

2.2 Operaciones secuencial

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.

2.2 Operaciones secuencial

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.

2.2 Operaciones secuencial

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.

2.2 Operaciones secuenci

Alta secuencial

2.2 Operaciones 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.

2.2 Operaciones secuenci

Inse
rtar
man
teni
end
o la
estr
uct
ura

2.2 Operaciones secuencial

Consulta especfica
Se busca un registro particular de un
producto en un archivo secuencial.

Se inicia el recorrido desde el primer registro


almacenado y se detiene cuando se localiza
el registro solicitado o cuando se encuentre
el final del archivo.

2.2 Operaciones secuencial

Consulta especfica

En este punto lo debe de visualizar

2.2 Operaciones secuenci

Consulta especfica

2.2 Operaciones secuencial

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.

2.2 Operaciones secuenci

Consulta general

2.2 Operaciones secuencial

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

2.2 Operaciones secuencial

Modificacin secuencial

2.2 Operaciones secuenci

Modificacin
secuencial

2.2 Operaciones 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

2.2 Operaciones secuencial

Baja lgica secuencial


Consisten en marcar los registros eliminados. En el
ejemplo, el registro borrado se limpia, dejando en
blanco todos sus campos (colocando el valor cero en
los campos numricos y blancos en las cadenas o de
tipo carcter).
La rutina de bajas lgicas se asemeja mucho a la
rutina de modificaciones, slo que en las bajas no se
capturan los nuevos valores, sino se les asigna
valores en blanco y se graba el registro completo en
la misma posicin en la que se encontraba.

2.2 Operaciones secuenci

Baja lgica
secuencial

2.2 Operaciones secuencial

Baja fsica secuencial


Las bajas fsicas (tambin conocida como compactar
el archivo), consiste en eliminar definitivamente los
espacios dejados por los registros borrados
lgicamente.
Se disea una rutina que se apoye de un archivo
auxiliar (tambin secuencial), en el cual se graben
todos los registros vlidos, es decir, los registros no
eliminados, para posteriormente eliminar el archivo
original y renombrar este archivo auxiliar como el
archivo original.

2.2 Operaciones secuencial

Baja fsica secuencial

2.2 Operaciones secuenci

Baja fsica secuencial

2.2 Operaciones secuencial

Modificacin y bajas
Cualquier modificacin o eliminacin exige la
creacin de un nuevo archivo con los datos
modificados.

2.2 Operaciones secuencial

Recorrido con arreglos


Suponemos un algoritmo que trabaja con un array
de registros de productos con los campos cdigo del
producto, descripcin y stock.

2.2 Operaciones secuencial

Cargar el arreglo desde


el archivo secuencial

2.2 Operaciones secuencial

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

No necesitan de estructuras auxiliares como ocurre en


los archivos ordenados de forma secuencial indexada.
La organizacin secuencial es la organizacin de
archivo ms comn, todos los dispositivos de
memoria auxiliar soporta este tipo de organizacin

.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.

2.4 Mezcla de archivos

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.

2.4 Mezcla de archivos

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.

2.4 Mezcla de archivos

Mezcla de archivos

2.4 Mezcla de archivos

Pseudocdigo

Si de un archivo se acaban
los registros, y de otro no,
entonces copian todos los
registros restantes del
archivo

2.5 Ordenacin de archivos

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.

2.5 Ordenacin de archivos

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]

e separan los tramos en dos archivos


ux1: [9, 75], [29], [25], [46, 61]

aux2: [14, 68], [17, 31], [4, 5, 13, 18, 72]

e realiza mezcla por tramos


ezcla: [9,14,68,75], [17,29,31], [4,5,13,18,25,72], [46,61]

Se separan los tramos en los auxiliares


Se separan los tramos en los auxiliares
aux1: [9,14,68,75], [4,5,13,18,25,72]
aux1: [9,14,17,29,31,75]
aux2: [17,29,31], [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]

2.5 Ordenacin de archivos

Ejemplo
Original: 3, 1, 2, 4, 6, 9, 5, 8,
10, 7

e identifican los tramos ordenados


], [1, 2, 4, 6, 9], [5, 8, 10], [7]

e separan los tramos en dos archivos


Se separan los tramos en los auxiliar
ux1: [3], [5, 8, 10]
aux1: [1, 2, 3, 4, 6, 9]
aux2: [1, 2, 4, 6, 9], [7]
aux2: [5, 7, 8, 10]
Se realiza mezcla por tramos
mezcla: [1, 2, 3, 4, 6, 9], [5, 7, 8, 10]

Se mezclan por tramos


mezcla: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

.6 Actualizacin por lotes

Actualizacin por lotes


Variacin de la mezcla que trabaja, al menos, con tres
archivos:
Archivo maestro. Archivo que contiene todos los
datos originales (sin actualizar).
Archivo de movimientos. Archivo con las
modificaciones que se harn sobre los datos
originales.
Archivo de salida. Archivo de salida que contiene los
datos originales modificados con la informacin del
archivo de movimientos.
Todos los archivos deben estar ordenados por la

.6 Actualizacin por lotes

Actualizacin por lotes


Procesos interactivos
Requieren de un operador.
Utiles para accesos directos y procesar pocos
registros.
No son tiles cuando se
utilizan archivos secuenciales.
Procesos por lotes, en diferido o batch.
No requieren de un operador.
Utiles en acceso secuencial.
La salida y mensajes de usuario se deben hacer por
algn tipo de dispositivo como impresoras u otros

Unidad III
Organizacin
1. Introduccin
directa 2. Funciones Hash
3. Solucin de Colisiones
1. Reasignacin: Prueba lineal,

prueba cuadrtica, doble direccin


hash
2. Arreglos anidados
3. Encadenamiento

4. Operaciones: Acceso, Alta,

Consulta, Modificacin, Bajas

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.

3.2 Funciones Hash

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).

3.2 Funciones Hash

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.

3.2 Funciones Hash

La eficiencia depende
de:

La distribucin de los valores de claves que


realmente se usan.
El nmero de valores de clave que realmente estn
en uso, con respecto al tamao del espacio de
direcciones.
El nmero de registros que pueden almacenarse en
una direccin sin causar colisin.
La tcnica usada para resolver las colisiones.

3.2 Funciones Hash

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

-Construccin deestructuras de datos: Su uso en distintas estructuras


de datos hacen ms eficientes las bsquedas. Ej.tablas hash.
-Construccin deesquemas de compromiso: Los esquemas de
compromiso permiten que una entidad elija una valor entre un
conjunto finito de posibilidades de tal forma que no pueda cambiarla.
Esa entidad no tiene que revelar su eleccin hasta si acaso el
momento final (la eleccin puede permanecer oculta).
-Construccin de algoritmos decifrado/descifrado: Por ejemplo se usa
en la construccin decifradores de flujoy decifradores de bloque.
-Construccin de algoritmosgeneradores de nmeros
pseudoaleatorios.
-Construccin decadenaspseudoaleatorias: Por ejemplo el llamado
modelo de orculo aleatoriose basa en considerar que funciones hash
con ciertas propiedades se comportan como funciones que
escogencadenasal azar, se usa para el estudio de la seguridad los

3.2 Funciones Hash

Aplicaciones vinculadas a
autenticacin y control de
acceso

-Autenticacin de entidades: Por ejemplo es frecuente el uso para este


propsito de funciones hash deterministas con clave secreta que tienen
ciertas propiedades (Cdigos de autenticacin de mensajes). En
estos esquemas tanto el servicio de autenticacin, o verificador, como la
entidad que se quiere autenticar mantienen en secreto la clave de la
funcin hash.
-Proteccin de claves: Para comprobar la correccin de una clave no es
necesario tener la clave almacenada, lo que puede ser aprovechado para
que alguien no autorizado acceda a ella, sino almacenar el valor hash
resultante de aplicar una funcin hash determinista. De esta forma para
verificar si una clave es correcta basta con aplicar la funcin hash y
verificar si el resultado coincide con el que tenemos almacenado.
-Derivacin de claves: Por ejemplo en algunas aplicaciones usan
funciones hash para derivar una clave de sesin a partir de un nmero
de transaccin y una clave maestra

Aplicaciones,
3.2 Funciones
Hash

identificacin y
comparacin de datos

-Huellas digitales: El uso de funciones hash aplicados acadenaspermiten


obtener valores hash que pueden usarse detectar fcilmente la aparicin
de esos datos en distintos sitios. Pueden ser usados para distintos usos
como bsqueda de virus, autenticacin con datos biomtricos, deteccin
de copias.
-Identificacin de contenidos: En algunas aplicaciones se usa el valor hash
de un contenido multimedia para identificar ese contenido
independientemente de su nombre o ubicacin. Esto es ampliamente
usado en redesPeer-to-peerque intercambian de archivos, tales como
Kazaa, Ares, Galaxy,Overnet,BitTorrent.
-Algortmos de bsqueda de subcadenas: Estos algoritmos tratan el
problema de buscarsubcadenas, a la que llaman patrn, dentro de
otracadenaa la que llaman texto. Ejemplo:algoritmo Karp-Rabin.
-Deteccin de virus: Para esto muchos antivirus definen funciones hash
que capturan la esencia del virus y que permiten distinguirlos de otros
programas o virus. Es lo que se llama firma del virus. Estas firmas son
usadas por los antivirus para poder detectarlos.

3.2 Funciones Hash

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.

3.2 Funciones Hash

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

3.2 Funciones Hash

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

3.2 Funciones Hash

Por residuo de divisin


Archivo 1
H (K) = (K MOD max_long)+1
H () = Funcin Hash, direccin
K = clave del dato
Max_log = mxima longitud del campo
clave

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

3.2 Funciones HashREVISAR RESPECTO AL % Q


EXPLICA LA DISPO 246

Por residuo de divisin


Supongamos que nuestro archivo tendr 6635
registros, el 20% adicional es 1327 por lo que le
daremos al archivo un tamao de 6635 + 1327, es
decir 7962.
El nmero primo ms cercano es 7963, este es el
divisor.
Si tenemos el registro con clave 6883221:
H(k) = (6883221 MOD 7963) + 1
Donde el entero es: 864, y el residuo es: 3189
H(k) = 3190 = direccin relativa.

3.2 Funciones Hash

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.

3.2 Funciones Hash

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.

3.2 Funciones Hash

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

3.2 Funciones Hash

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.

3.2 Funciones Hash

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.

3.2 Funciones Hash

Claves tipo cadena


Representar numricamente la cadena por medio del
cdigo ASCII de las dos primeras letras,
multiplicndolas entre si y considerando nicamente
los tres ltimos dgitos de dicha cifra para poder
asignar la direccin.
El nmero de letras a representar el ASCII esta dado
por la longitud de la direccin relativa a obtener

3.2 Funciones Hash

Ejemplo

3.2 Funciones Hash

Utilizacin

relativa

3.2 Funciones Hash

Utilizacin
Ahora se utiliza en Nmero de Registro Relativo
Ejemplo. Archivo de clientes
NRR
Num

Nombre

Direccin

Telefono

E-mail

1225

Juan Garca

Guan 1202

4182569

jgarcia@adinet.com.
uy

834

1226

Rincn 876

9157878

Fmar@gmail.com

....

Fernando
Martnez
.......

.........

.........

........

599

3.2 Funciones Hash

Tarea
Calcular por los 4 mtodos las
direcciones relativas para las siguientes
claves
1. 97979718
2. 07012349
3. 99017687
4. 97001698
5. 98765695

3.2 Funciones Hash

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)

H(K) = (K mod l0)


+1

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

H(K) = (K mod l0)


+1
Ejemplo:
25 / 10 =2
Residuo = 5 + 1 = 6

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
)

H(D) H(D H(D


)
)

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

2.1. Repetir mientras (Q VACIO) y (Q^.CLAVE


K)
Hacer Q = Q^.LIGA
2.2. {Fin del ciclo del paso 2.1}
2.3. Si Q = VACIO
Entonces
Escribir El elemento no esta en la lista
V
1

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

2.1. Repetir mientras (Q VACIO) y (Q^.CLAVE K)


Hacer Q = Q^.LIGA
2.2. {Fin del ciclo del paso 2.1}
2.3. Si Q = VACIO
Entonces
Escribir El elemento no esta en la lista
V
1

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

2.1. Repetir mientras (Q VACIO) y (Q^.CLAVE


K)
Hacer Q = Q^.LIGA
2.2. {Fin del ciclo del paso 2.1}
2.3. Si Q = VACIO
Entonces
Escribir El elemento no esta en la lista

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

2.1. Repetir mientras (Q VACIO) y (Q^.CLAVE


K)
Hacer Q = Q^.LIGA
2.2. {Fin del ciclo del paso 2.1}
2.3. Si Q = VACIO
Entonces
Escribir El elemento no esta en la lista
V
1

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

2.1. Repetir mientras (Q VACIO) y (Q^.CLAVE


K)
Hacer Q = Q^.LIGA
2.2. {Fin del ciclo del paso 2.1}
2.3. Si Q = VACIO
Entonces
Escribir El elemento no esta en la lista
V
1

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

Aplicar los mtodos de colisiones a las claves y


direcciones identificadas en el ejercicio de funciones
Hash
Proyecto: Por cada 2 integrantes implementar una
funcin Hash.

1. Introduccin

Unidad IV
2.
Organizacin
indexada
3.

ndices: densos, dispersos y


multinivel
ndices basados en rboles:
1. rboles binarios como

ndices (AVL)
2. rboles multicamino como

ndices (B, B+, B*)


4. Operaciones. Altas, bajas,

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:

Contiene un ndices, que es le mismo


que el campo clave del archivo y un puntero al archivo de
datos. Cumple la funcin del ndice de un libro, contiene el
valor de la clave identificativa ms alta en cada grupo de
registros del archivo y la direccin de almacenamiento del
grupo.

rea de datos primaria:

Contiene los registros en


forma secuencial y est organizada en secuencia de claves sin
dejar huecos intercalados.

rea de desbordamiento o excedentes:


Utilizada, si fuese necesario, para las actualizaciones

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.

Archivo de ndices Archivo de datos

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

ndices total o denso

ndices dispersos o no densos.

4.1 Introduccin

Implementaciones

ndices multinivel

ndices
densos

Orga
niza
cin
inde
xada

4.2.1 ndices densos

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.

4.2.1 ndices densos

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

4.2.1 ndices densos

Creacin
1. Crear los archivos vacos originales de ndices y
datos

.En el momento de la creacin, los registros se


almacenan consecutivamente de forma compacta.
.Los registros estn situados en un soporte
direccionable por el orden de los valores indicados
por la clave.

4.2.1 ndices densos

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.

4.2.1 ndices densos

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

4.2.1 ndices densos

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

4.2.1 ndices densos

Consulta
Buscamos en el archivos de ndices a Bertha (I)
Archivo de ndices

Archivo de datos

Nos dice que Bertha se encuentra en registro


nmero 2 del archivo de datos

4.2.1 ndices densos

Consulta
Accedemos directamente al registro Bertha en
el archivo de datos (I)
Archivo de ndices

Archivo de datos

Automticamente como lemos el registro de


Bertha, obtendremos su puntaje y lo reportaremos

4.2.1 ndices densos

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

4.2.1 ndices densos

Actualizacin

Ordenacin del
archivo de ndices

4.2.1 ndices densos

Actualizacin

Reescribir el archivo
de ndices copiado
de la memoria o del
buffer creado

4.2.1 ndices densos

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.

4.2.1 ndices densos

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

.2.2 ndices dispersos

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.

.2.2 ndices dispersos

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.

.2.2 ndices dispersos


Donde inicia el 2 bloque

ndices dispersos
Ancla
de
bloque

.2.2 ndices dispersos

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.

Si no hay sitio para insertarlo en su bloque


correspondiente se almacenara en un rea de
excedentes y se relacionara el nuevo dato con su
bloque correspondiente.

.2.2 ndices dispersos

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.

.2.2 ndices dispersos

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

4.3 ndices multinivel

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

4.3 ndices multinivel

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.

4.3 ndices multinivel

ndices multinivel

ndices
densos

ndices dispersos

4.3 ndices multinivel

ndices multinivel

ndices dispersos

ndices
densos

rboles
binarios

Org
aniz
aci
n
inde
xad
a

.3.1 rboles binarios

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

.3.1 rboles binarios

rbol
(A(B(E,F(K,L)), C(G), D(H(M),I,J)))

.3.1 rboles binarios

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

.3.1 rboles binarios

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

Pre-orden: Raz, Izquierda, Derecha

In-orden

In-orden: Izquierdo, Raz, Derecho


Post-orden: Izquierda, Derecha, Raz

Post-orden

.3.1 rboles binarios

rbol binario

.3.1 rboles binarios

rbol binario

.3.1 rboles binarios

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

.3.1 rboles binarios

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

.3.1 rboles binarios

Insercin
Construir el rbol con las siguientes claves:
21, 33, 13, 25, 40, 18, 10

Construir el rbol con las claves :


5, 9, 3, 7, 8, 12, 6, 4

.3.1 rboles binarios

Insercin del 26

3.1 rboles binarios

Insercin

.3.1 rboles binarios

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

.3.1 rboles binarios

Insercin
El orden de insercin de los datos determina la forma del rbol.

.3.1 rboles binarios

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

.3.1 rboles binarios

Bsqueda del 25

.3.1 rboles binarios

Borrar un elemento hoja


Al realizar un borrado se hace una compresin del
rbol

1. El elemento 25 es una hoja.

.3.1 rboles binarios

Borrado 25
2. Padre con un solo descendiente: el padre del
nodo a borrar pasa a apuntar al hijo del nodo
borrado.

.3.1 rboles binarios

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.1 rboles binarios

Borrar 21, utilizando


predecesor

.3.1Borrar
rboles binarios
21, utilizando

sucesor

.3.1 rboles binarios

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.

4.Si el nodo raz es mayor que el dato, continuar en la bsqueda


en el rbol izquierdo

.3.1 rboles binarios

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.

2. Del rbol construido en el punto 1, eliminar la clave


40 (con predecesor), seguida de la clave 50 (con
sucesor) y la clave 75 con sucesor.

rboles
balanceado
s AVL

Orga
niza
cin
inde
xada

4.3.2 rboles AVL

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.

4.3.2 rboles AVL

Condiciones

4.3.2 rboles AVL

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.

4.3.2 rboles AVL

Ejemplo
-2
-1

6
1
0

-1
2

8
-1
4

1
0

0
7

0
3

lo el rbol de la izquierda es AVL. El de la derecha viola


a condicin de equilibrio en el nodo 6, ya que su subrbol
zquierdo tiene altura 3 y su subrbol derecho tiene altura 1.

4.3.2 rboles AVL

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)

Un rbol binario es un AVL si y slo si cada uno


de sus nodos tiene un equilibrio de 1, 0, + 1
Si alguno de los pesos de los nodos se modifica en
un valor no vlido (2 o -2) debe seguirse un
esquema de rotacin.

4.3.2 rboles AVL

Factor de
equilibrio

La clave de conseguir un factor de balance que se


mantenga entre los lmites establecidos, se
encuentra tanto en el proceso de insercin como
de eliminacin.
De fundamental importancia sern las rotaciones
a derecha y a izquierda

4.3.2 rboles AVL

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

4.3.2 rboles AVL

Operaciones sobre un AVL


Insertar
Eliminar
Balancear
Caso
Caso
Caso
Caso

1
2
3
4

Rotacin
Rotacin
Rotacin
Rotacin

simple izquierda RSI


simple derecha RSD
doble izquierda RDI
doble derecha RDD

4.3.2 rboles AVL

Insercin

Puede realizarse como en un rbol binario y


despus retroceder hacia la raz rotando sobre
cualquier nodo que se haya desequilibrado

1.

Buscar hasta encontrar la posicin de insercin

2.

Se inserta el nodo nuevo con FE.

3.

Repasar el camino verificando el equilibrio de los


nodos. Si el equilibrio de un nodo llega a ser + 2, se vuelve a ajustar los subrboles de los
nodos para que su equilibrio se mantenga
acorde a +- 1

4.3.2 rboles AVL

Insercin del 3
1

-1

-1

-1

4.3.2 rboles AVL

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

4.3.2 rboles AVL

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

4.3.2 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.

4.3.2 rboles AVL

Balanceo

4.3.2 rboles AVL

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

4.3.2 rboles AVL

Se trata de ajustar la profundidad de dos ramas


para hacer el rbol ms equilibrado,
manteniendo la relacin de orden
8 -2
5
3

-2

-1

5
3

0
8

Balancear, rotacin
simple izquierda
RSI

4.3.2 rboles AVL

Ejemplo 2
8 -2

3
2

-1

-1

9
0

5
3

0
2

0
8

-1
7

0
9

4.3.2 rboles AVL

Balancear, rotacin
simple izquierda
RSI

Ejemplo 3

4.3.2 rboles AVL

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

4.3.2 rboles AVL

Balancear, rotacin
simple derecha RSD
Ejemplo 2

4.3.2 rboles AVL

Balancear, rotacin
simple derecha RSD
Hay varios puntos que cabe sealar aqu:

Se conserva el orden apropiado del rbol.


Restablece todos los nodo a equilibrios
apropiados AVL
Conserva el recorrido en orden que el rbol
anterior.

4.3.2 rboles AVL

Balancear, rotacin
simple

4.3.2 rboles AVL

Rotacin
Construir los rboles: 8, 15, 7, 9, 17, 20 y 8, 5, 9, 7, 3, 2
Realizar la rotacin correspondiente

4.3.2 rboles AVL

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

4.3.2 rboles AVL

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

4.3.2 rboles AVL

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

4.3.2 rboles AVL

Balancear, rotacin
doble izquierda RDI
Ejemplo 3

4.3.2 rboles AVL

Balancear, rotacin
doble izquierda RDI
Ejemplo 3

4.3.2 rboles AVL

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

4.3.2 rboles AVL

Balancear, rotacin
doble derecha RDD
Ejemplo 2

-1

-1

0
9

0
7
1

0 5
8
0

0 4
9

-1 8
6

4.3.2 rboles AVL

rboles AVL
Crear el rbol con los valores: 50, 23, 65, 70, 82, 68, 39
6
5

Realizar la rotacin correspondiente


1
2
3

-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

4.3.2 rboles AVL

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

4.3.2 rboles AVL

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

4.3.2 rboles AVL

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.

Condicin entre hijos

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

Se desea construir un rbol cuya cantidad mxima de claves


sea 4 (k=4), entonces:

Cantidad mxima de descendientes por nodo: m = k+1 = 5

Cantidad mnima de claves: k/2 = 2

Cantidad mnima de descendientes por nodo: m/2 = 2-3

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

Se produce el ascenso del nodo


mediano (el 17) y la divisin en
dos nodos del nodo original.

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

Insertar 58, 60, 52, 54, 46

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

La idea es similar a la insercin, pero ahora, en lugar de


divisiones, realizamos uniones.

Cuando se va a borrar una clave que est en un nodo interior,


lo primero que se realiza es un intercambio de este valor con
el inmediato sucesor en el rbol, es decir, el hijo ms a la
izquierda del hijo derecho de esa clave.

4.3.3 rboles B

Borrado, operaciones

Redistribucin: la utilizaremos en el caso en que al borrar una


clave el nodo se queda con un nmero menor que el mnimo y
uno de los hermanos adyacentes tiene al menos uno ms que
ese mnimo, es decir, redistribuyendo podemos solucionar el
problema.

Unin: la utilizaremos en el caso de que no sea posible la


redistribucin y por tanto slo ser posible unir los nodos junto
con la clave que los separa y se encuentra en el padre.

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

Con la eliminacin queda


un solo elemanto,
entonces se sube el
valor central
1
0
2

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

33, 20, 57,90,2493


0

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

Insercin 21, 40, 80, 56, 8, 39, 43,


3 60
4
0
8

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

Debe ser balanceado

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

Insertar 45. Sin problema se inserta en la raz, pues an no se


puede dividir en hijos
1 2 3 4 4 5 6
0 0 0 0 5 0 0
Insertar 70
1 2 3 4 4 5 6
0 0
0 5 0 0
Insertar 35. Ahora la raz se 0
puede
dividir

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 15. Se recorren las claves hacia el hermano q tiene


espacio
3
8

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

obtener tres nodos. En esta combinacin tambin se tiene en


cuenta la llave que se encuentra en el padre, entre ambos
nodos, o sea, el 40 y se parte en 3 nodos, subiendo a la raz los
nodos centrales
1
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

El hermano puede cederle una clave sin romper la condicin


4
5
1
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

hermano de su hermano de la der s. Hacer dos rotaciones.

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

deben combinarse los tres nodos para formar dos


1
0

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

Ninguno de los hermanos pueden cederle una clave, por lo que


deben combinarse los tres nodos para formar uno que quedar
como raz

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

25, 63, 77, 54, 19,


14

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+

Estructura del nodo


hoja
Todo nodo hoja tiene la forma:
<<k1, Pr1>, <k2, Pr2> , , <kq-1, Prq-1>, Psiguiente,> donde q<=p,
cada Pri es un apuntador de datos y Psiguiente apunta al siguiente
nodo hoja del rbol B+.
Dentro de cada nodo hoja K1 < K2 < .< Kq-1,
Cada nodo hoja tiene al menos p/2 valores
Todos los nodos hoja estn en el mismo nivel

4.3.5 rboles B+

Estructura
Nodo interno

Nodo hoja, set secuencial

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

En este rbol las hojas apuntan a los bloques del set


secuencial.
Cada elemento contenido en un nodo de este rbol
B no es necesariamente una clave completa, sino
que puede ser tan slo un separador, es decir, un
valor que permite saber si la clave que se busca est
en el subrbol que est a la izquierda del separador
o en el de la derecha.

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.

Se debe notar que el desbordamiento en un nodo que no es


hoja, no produce duplicidad de claves.

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

El nodo est lleno y se divide en dos y se duplica la


clave media
1
5
1
0

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

El nodo est lleno y se divide en dos y se duplica la


clave media
1 2 4 7
1
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

No se cumple la condicin, es necesario hacer una


fusin y equilibrar

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

Insercin 21, 15, 31


1
0

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

Se parte el nodo en dos

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

Se parte el nodo en dos y llena el nodo raz

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

Se parte el nodo en dos y llena el nodo raz

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

.3.6 Organizacin indizada

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

.3.6 Organizacin indizada

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

1. Operaciones. Altas, bajas, modificaciones,


2.

You might also like