I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

111
I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y OPERACIONES SOBRE ÉSTOS. 1. ESTRUCTURA JERÁRQUICA Los conceptos de carácter, campo, registro, archivo y base de datos son conceptos lógicos que se refieren al medio en que el usuario de computadoras ve los datos y se organizan. Las estructuras de datos se organizan de un modo jerárquico, de modo que el nivel más alto lo constituye la base de datos y el nivel más bajo el carácter. Ejemplo: Estructura jerárquica de datos. Base de datos Archivos Registros Campos Subcampos Caracteres

Transcript of I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Page 1: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN YOPERACIONES SOBRE ÉSTOS.

1. ESTRUCTURA JERÁRQUICALos conceptos de carácter, campo, registro, archivo y base de datos sonconceptos lógicos que se refieren al medio en que el usuario de computadoras velos datos y se organizan. Las estructuras de datos se organizan de un modojerárquico, de modo que el nivel más alto lo constituye la base de datos y el nivelmás bajo el carácter.

Ejemplo: Estructura jerárquica de datos.

Base de datos

Archivos

Registros

Campos

Subcampos

Caracteres

Page 2: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

a) CAMPOS

Los caracteres se agrupan en campos de datos. Un campo es un ítem o elementode datos elementales, tales como un nombre, número de empleados, ciudad,número de identificación, etc.

Un campo está caracterizado por su tamaño o longitud y su tipo de datos (cadenade caracteres, entero, lógico, etc.). Los campos pueden incluso variar en longitud.En la mayoría de los lenguajes de programación los campos de longitud variableno están soportados y se suponen de longitud fija.

Un campo es la unidad mínima de información de un registro. Los datoscontenidos en un campo se dividen con frecuencia en subcampos.

Ejemplo: Campos de un registro.

Nombre Dirección Fecha de nacimiento Estudios Salario

El campo fecha se divide en los subcampos día, mes y año quedando de lasiguiente manera:

Campo: Fecha de Nacimiento

23 04 1963

subcampos: día mes año

b) REGISTROS

Un registro es una colección de información, normalmente relativa a una entidadparticular. Un registro es una colección de campos lógicamente relacionados quepueden ser tratados como una unidad por algún programa.Un ejemplo de un registro puede ser la información de un empleado que contienenlos campos de nombre, dirección, fecha de nacimiento, etc.

Page 3: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Los registros pueden ser todos de longitud fija; por ejemplo, los registros deempleados pueden contener el mismo número de campos, cada uno de la mismalongitud para nombre, dirección, fecha, etc. También pueden ser de longitudvariable.

Registros de datos

N

N = longitud del registro

Los registros organizados en campos se denominan registros lógicos.

c) ARCHIVOS (FICHEROS)

Un archivo o fichero de datos es una colección de registros relacionados entre sícon aspectos en común y organizados para un propósito específico. Por ejemploun archivo de una clase escolar contiene un conjunto de registros de losestudiantes de esa clase.

Un archivo en una computadora es una estructura diseñada para contener datos,estos están organizados de tal modo que puedan ser recuperados fácilmente,actualizados o borrados y almacenados de nuevo en el archivo con todos loscambios realizados.

d) BASE DE DATOS

Una colección de archivos a los que puede accederse por un conjunto deprogramas y que contienen todos ellos datos relacionados, constituye una base dedatos.

2. TERMINOLOGÍA

Page 4: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

a) Clave

Una clave (key) o indicativo es un campo de datos que identifica al registro y lodiferencia de otros registros. Esta clave debe ser diferente para cada registro.Claves típicas son nombres o números de identificación.

b) Registro físico o bloqueo

Un registro físico o bloque es la cantidad más pequeña de datos que puedentransferirse en una operación de entrada/salida entre la memoria central y losdispositivos periféricos o viceversa. Ejemplos de registros físicos son: una línea deimpresión, un sector de un disco magnético, etc.Un bloque puede contener uno o más registros lógicos.

c) Factor de bloqueo

Otra característica que es importante en relación con los archivos es el conceptode factor de bloqueo. El número de registros lógicos que puede contener unregistro físico se denomina factor de bloque.

Ejemplo: Factor de bloque

a) Un registro por bloque (factor = 1)

Registro Espacio entre bloques

Bloque

b) N registros por bloque (factor = N)

Registro1 Registro2 Registro3 Registro4

Bloque

Espacio entre bloques

Se pueden dar las siguientes situaciones:

Page 5: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Registro lógico > Registro físico. En un bloque que contienen varios registrosfísicos por bloque; se denominan registros expandidos.

Registro lógico = Registro físico. El factor de bloqueo es 1 y se dice que losregistros no están bloqueados.

Registro lógico < Registro físico. El factor de bloqueo es mayor que 1 y losregistros están bloqueados.

La importancia del factor de bloqueo se puede apreciar mejor con un ejemplo.

Ejemplo: Suponer que se tienen dos archivos, uno de ellos tiene un factor debloqueo de 1 (un registro en cada bloque). El otro archivo tiene un factor debloqueo de 10 (10 registros/bloque). Si cada archivo contiene un millón deregistros, el segundo archivo requerirá 900000 operaciones de entrada/salidamenos para leer todos los registros.

Un factor de bloqueo mayor que 1 siempre mejora el rendimiento; entonces,¿porqué no incluir todos los registros en un solo bloque? La razón reside en quelas operaciones de entrada/salida que se realizan por bloques se hacen a travésde un aumento de un área de la memoria central denominada memoria intermedia(buffer) y entonces el aumento del bloque implicará aumento de la memoriaintermedia y por consiguiente se reducirá el tamaño de la memoria central.

Almacenamiento

Flujo de datosPrograma del usuario Secundario

Memoria intermedia

El tamaño de una memoria intermedia de un archivo es el mismo que el deltamaño de un bloque. Como la memoria central es más cara que la memoriasecundaria, no conviene aumentar el tamaño del bloque, sino más bien conseguirun equilibrio entre ambos criterios.

3. ORGANIZACIÓN DE ARCHIVOS

Cinta

Disco

Page 6: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

El soporte es el medio físico donde se almacenan los datos. Los tipos de soporteutilizados en la gestión de archivos son:

Soportes secuenciales Soportes direccionables

Los soportes secuenciales son aquéllos en los que los registros informacionesestán escritos unos a continuación de otros y para acceder a un determinadoregistro, n se necesita pasar por los n-1 registros anteriores. La secuencia puedecorresponder al orden físico de los registros en el archivo (organizaciónsecuencial) o bien al orden de claves (ascendente o descendente) de los registros(organización indexada).

Los soportes direccionables se estructuran de modo que las informacionesregistradas se pueden localizar directamente por su dirección y no se requierepasar por los registros precedentes. En estos soportes los registros deben poseerun campo clave los diferencie del resto de los registros del archivo. Una direcciónen un soporte direccionable puede ser número de pista y número de sector en undisco.

Los soportes direccionables son los discos magnéticos, aunque pueden actuarcomo soporte secuencial.

Según las características del soporte empleado y el modo en que se hanorganizado los registros, se consideran dos tipos de acceso a los registros de unarchivo:

Acceso secuencial Acceso directo

El acceso secuencial implica el acceso a un archivo según el orden dealmacenamiento de sus registros, uno tras otro.El acceso directo implica el acceso a un registro determinado, sin que elloimplique la consulta de los registros precedentes. Este tipo de acceso sólo esposible con soportes direccionables.La organización de un archivo define la forma en la que los registros se disponensobre el soporte de almacenamiento, o también se define la organización como laforma en que se estructuran los datos en un archivo. En general, se considerantres organizaciones fundamentales:

Organización secuencial Organización directa o aleatoria (Random) Organización secuencial indexada (Indexed)

a) Organización secuencial

Page 7: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Un archivo con organización secuencial es una sucesión de registrosalmacenados consecutivamente sobre el soporte externo, de tal modo que paraacceder a un registro n dado es obligatorio pasar por todos los n-1 artículos que lepreceden.

Los registros se graban consecutivamente cuando el archivo se crea y se debeacceder consecutivamente cuando se leen dichos registros.

Principio delarchivo Registro 1

Registro 2....

Registro I-1

Registro I

Registro I+1

.

.

.

.

Registro N-1

Fin del archivo Registro N

Organización secuencial

El orden físico en que fueron grabados (escritos) los registros es el ordende lectura de los mismos.

Todos los tipos de dispositivos de memoria auxiliar soportan la organizaciónsecuencial.

Page 8: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Los ficheros organizados secuencialmente contienen un registro particular elúltimo que contiene un marca fin de archivo (EOF o bien FF). Esta marca fin dearchivo suele ser un carácter especial como ' * '.

b) Organización directa

Un archivo está organizado en modo directo cuando el orden físico no secorresponde con el orden lógico. Los datos se sitúan en el archivo y se accede aellos directa aleatoriamente mediante su posición, es decir, el lugar relativo queocupan.

Esta organización tiene la ventaja de que se pueden leer y escribir registros encualquier orden y posición. Son muy rápidos de acceso a la información quecontienen.

La organización directa tienen el inconveniente de que se necesita programar larelación existente entre el contenido de un registro y la posición que ocupa. Elacceso a los registros en modo directo implica la posible existencia de huecoslibres dentro del soporte, y por consecuencia pueden existir huecos libres entreregistros.

La correspondencia entre clave y dirección debe poder ser programada y ladeterminación de la relación entre el registro y su posición física se obtienemediante una fórmula.

Las condiciones para que un archivo sea de organización directa son:

Almacenado en un soporte direccionable. Los registros deben contener un campo específico denominado clave que

identifica cada registro de modo único; es decir, dos registros distintos nopueden tener un mismo valor de clave.

Existencia de una correspondencia entre los posibles valores de la clave ylas direcciones disponibles sobre el soporte.

Un soporte direccionable es, normalmente, un disco o paquete de discos. Cadaposición se localiza por su dirección absoluta, que en el caso del disco suele venirdefinida por dos parámetros, número de pista y número de sector o bien por tresparámetros pista, sector y número de cilindro; un cilindro i es el conjunto de pistasde número i de cada superficie de almacenamiento de la pila.

En la práctica el programador no gestiona directamente direcciones absolutas,sino direcciones relativas respecto al principio del archivo. La manipulación dedirecciones relativas permite diseñar el programa con independencia de laposición absoluta del archivo en el soporte.

Page 9: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

El programador crea una relación perfectamente definida entre la clave indicativade cada registro y su posición física dentro del dispositivo de almacenamiento.

Ejemplo

Una compañía de empleados tiene un número determinado de vendedores y unarchivo en el que cada registro corresponde a un vendedor. Existen 150vendedores, cada uno referenciado por un número de 5 dígitos. Si se tuviera queasignar un archivo de 100000 registros, cada registro se corresponderá con unaposición del disco.

Para el diseño del archivo se creará 250 registros (un 33 por 100 más del númerode registros necesarios, 25 por 100 suele ser un porcentaje habitual) que sedistribuirán de la siguiente forma:

1. Posiciones 0 -199 constituyen el área principal del archivo y en ella sealmacenarán todos los vendedores.

2. Posiciones 200-249 constituyen el área de desbordamiento, si K(1) <> K(2),pero f(K(1)=f(K(2)), y el registro con clave K(1) ya está almacenado en elárea principal, entonces el registro con K(2) se almacena en el área dedesbordamiento.

La función f se puede definir como:

f (k) = resto cuando K se divide por 199, esto es el módulo de 199; 199 ha sidoelegido por ser el número primo mayor y que es menor que el tamaño del áreaprincipal.

Para establecer el archivo se borran primero 250 posiciones. A continuaciónpara cada registro de vendedor se calcula p = f (k). Si la posición p está vacía,se almacena el registro en ella. En caso contrario, se busca secuencialmente através de las posiciones 200, 201,… para el registro con la clave deseada.

c) Organización secuencial indexada

Un diccionario es un archivo secuencial, cuyos registros son las entradas y cuyasclaves son las palabras definidas por las entradas. Para buscar una palabra (unaclave) no se busca secuencialmente desde la “a” hasta “z”, sino que se abre eldiccionario por la letra inicial de la palabra. Si se desea buscar “índice”, se abre elíndice por la letra I y en su primera página se busca la cabecera de página hastaencontrar la página más próxima a la palabra, buscando a continuación palabra apalabra hasta encontrar “índice”. El diccionario es un ejemplo típico de archivosecuencial-indexado con dos niveles de índices, el nivel superior para las letrasiniciales y el nivel menor para las cabeceras de páginas se guardarán en unarchivo de índice independiente de las entradas del diccionario (archivo de datos).

Page 10: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Por consiguiente, cada archivo secuencialmente-indexado consta de un archivoíndice y un archivo de datos.

Un archivo está organizado en forma secuencial-indexada si:

El tipo de sus registros contiene un campo clave identificador Los registros están situados en un soporte direccionable por el orden de los

valores indicados por la clave Un índice para cada posición direccionable, la dirección de la posición y el

valor de la clave; en esencia, el índice contienen la clave del último registroy la dirección de acceso al primer registro del bloque.

CLAVE DIRECCIÓN CLAVE DATOS

15 010 010011

24 020 012.

36 030 ..

54 040 019 15020

. . 021

. . .

. . .

. . .029 24030

240 090 031

.

.ARCHIVO DE INDICES .

039 36040041

ARCHIVO DE DATOS

Un archivo en organización secuencial-indexada consta de las siguientes partes:

Área de datos o primaria: contienen los registros en forma secuencial y estáorganizada en secuencia de claves sin dejar huecos intercalados

Page 11: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Área de índices: es una tabla que contiene los niveles de índice, laexistencia de varios índices enlazados se denomina nivel de indexación

Área de desbordamiento o excedentes: utilizada, si fuese necesario, paralas actualizaciones.

El área de índices es equivalente, en su función, al índice de un libro. En ella serefleja el valor de la clave identificativa más alta de cada grupo de registros delarchivo y la dirección de almacenamiento del grupo.

Los archivos secuenciales-indexados presentan las siguientes ventajas:

Rápido acceso El sistema de gestión de archivos se encarga de relacionar la posición de

cada registro con su contenido mediante la tabla de índices.

Desventajas:

Desaprovechamiento del espacio por quedar huecos intermedios cada vezque actualiza el archivo

Se necesita espacio adicional para el área de índices

Los soportes que se utilizan para esta organización son los que permiten elacceso directo, los discos magnéticos. Los soportes de acceso secuencial nopueden utilizarse, ya que no dispone de direcciones para sus posiciones dealmacenamiento.

4. Operaciones sobre Archivos

Las distintas operaciones que se pueden realizar a los registros de un archivo son:

Creación Consulta Actualización Clasificación Reorganización Destrucción Fusión Rotura/estallido

a) Creación de un archivo

Es la primera operación que sufrirá el archivo de datos. Implica la elección de unentorno descriptivo que permita un ágil, rápido y eficaz tratamiento del archivo.Para utilizar un archivo, éste tiene que existir, es decir, las informaciones de estearchivo tienen que haber sido almacenados sobre un soporte y ser utilizables. La

Page 12: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

creación exige organización, estructura, localizar observar espacio en el soportede almacenamiento, transferencia del archivo de soporte antiguo al nuevo.Un archivo puede ser creado por primera vez en un soporte, proceder de otropreviamente existente en el mismo o diferente soporte, ser el resultado de uncálculo o ambas cosas a la vez.

La figura muestra un organigrama de la creación de un archivo ordenado deempleados de una empresa por el campo clave (número o código de empleado).

Operación de clasificaciónpor número empleado

Figura: Creación de un archivo ordenado de empleados

b) Consulta de un Archivo

Es la operación que permite al usuario acceder al archivo de datos para conocer elcontenido de uno, varios o todos los registros.

DATOS CREACIÓNde un archivo endisco

MAESTRO(desordenado)

Número deempleado

Maestro ordenado

Page 13: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

c) Actualización de un archivo

Es la operación que permite tener actualizado (puesto al día) el archivo, de talmodo que sea posible realizar las siguientes operaciones con sus registros:

Consulta del contenido de un registro. Inserción de un registro nuevo en el archivo. Supresión de un registro existente Modificación de un registro

Procesode

Consulta

Page 14: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Actualización de un archivo

Procesode

Actualización

Page 15: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Actualización de un Archivo

no

Un ejemplo de actualización es el de un archivo de almacén, cuyos registroscontienen las existencias de cada artículo, precios, proveedores, etc. Lasexistencias, precios, etc. varían continuamente y exigen una actualizaciónsimultánea del archivo con cada operación de consulta.

Inserción de unregistro

Localizarposición de

inserción

Grabar nuevoregistro

Posición libre

fin

Transferir áreasde entrada a

salida

Page 16: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

d) Clasificación de un Archivo

Una operación muy importante en un archivo es la clasificación u ordenación (sort,en inglés). Esta clasificación se realizará de acuerdo con el valor de un campoespecífico, pudiendo ser ascendente (creciente) o descendente (decreciente):alfabética o numérica.

e) Reorganización de un archivo

Las operaciones sobre archivos modifican la estructura inicial o la óptima de unarchivo. Lo índices, enlaces (punteros), zonas de sinónimos, zonas dedesbordamiento, etc. se modifican con el paso del tiempo, lo que hace a laoperación de acceso al registro cada vez más lenta.

La reorganización suele consistir en la copia de un nuevo archivo a partirdel archivo modificado, a fin de obtener una nueva estructura lo más óptimaposible.

clasificación

clasificación copia

Proceso dereorganización

Page 17: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

f) Destrucción de un archivo

Es la operación inversa a la creación de un archivo (kill, en inglés). Cuando sedestruye (anula o borra) un archivo, éste ya no se puede utilizar y por consiguienteno se podrá acceder a ninguno de sus registros.

g) Reunión, fusión de un archivo

Reunión: Esta operación permite obtener un archivo a partir de otros varios.

Reunión / fusión

Fusión: Se realiza una fusión cuando se reúnen varios archivos en uno solo,intercalándose unos en otros, siguiendo unos criterios determinados.

h) Rotura/ estallido de un archivo

Es la operación de obtener varios archivos a partir de un mismo archivo inicial.

Rotura

Page 18: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

GESTION DE ARCHIVOS

Las operaciones más usuales en los registros son:

Consulta: lectura del contenido de un registro. Modificación: alterar la información contenida en un registro. Inserción: añadir un nuevo registro al archivo. Borrado: suprimir un registro del archivo.

Las operaciones sobre archivos se realizan mediante programas, de modo tal quelos archivos se identifican por un nombre externo al que están asociados. Puedenexistir programas que procesen el mismo archivo de datos. La mayoría de losprogramas ejecutarán las siguientes clases de funciones:

crear archivos (create) abrir o arrancar (open) un archivo que fue creado con anterioridad a la

ejecución de este programa. incrementar o ampliar el tamaño del archivo ( append, extend) cerrar el archivo después que el programa ha terminado de utilizarlo (close) borrar (delete) un archivo que ya existe transferir datos desde (leer) o a (escribir) el dispositivo, diseñado por el

programa.

Antes de cualquier dato pueda ser escrito o leído de un archivo, el archivo debeser crear en el dispositivo correspondiente. Las operaciones sobre archivos tratancon la propia estructura del archivo, no con los registros de datos dentro delarchivo.Con anterioridad a la creación de un archivo se requiere diseñar la estructura delmismo mediante los campos de registro, longitud y tipo de los mismos.Para poder gestionar un archivo mediante un programa es preciso declarar elarchivo, su nombre y la estructura de sus registros. La declaración se realizarácon las siguientes instrucciones

archivo nombreregistro

Campo1 = tipoCampo2 = tipoCampo3 = tipo

...

Crear un archivo

La creación de un archivo es la operación mediante la cual se introduce lainformación correspondiente al archivo en un soporte de almacenamiento dedatos.

Page 19: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Antes de que cualquier usuario pueda procesar un archivo, es preciso que éstehaya sido creado previamente. El proceso de creación de un archivo será laprimera operación a realizar. Una vez que el archivo ha sido creado, la mayoría delos usuarios simplemente desearán acceder al archivo y a la informacióncontenida en él.Para crear un archivo dentro de un sistema de computadoras se necesitan lossiguientes datos:

Nombre dispositivo/usuario indica el lugar donde se situará el archivo cuandose cree;

Nombre del archivo: identifica el archivo entre los restantes archivos de unacomputadora;

Tamaño del archivo: indica el espacio necesario para la creación del archivo; Organización del archivo: tipo de organización del archivo; Tamaño del bloque o registro físico: cantidad de datos que se leen o escriben

en cada operación de entrada/salida (E/S)

El procesador de creación de un archivo se suele incluir como un subprogramadentro de un programa principal. Al ejecutar el programa de creación de unarchivo se pueden generar una serie de errores entre los que se pueden destacarlos siguientes:

Otro archivo con el mismo nombre ya existía en el soporte. El dispositivo no tiene espacio disponible para crear otro nuevo archivo. El dispositivo no está operacional. Existe un problema de hardware que hace abortar el proceso. Uno ó más de los parámetros de entrada en la instrucción son erróneos.

La instrucción o acción en pseudocódigo que permite crear un archivo se codificacon la palabra crear.

Abrir un archivo.

La acción de abrir (open) un archivo es permitir al usuario localizar y acceder alos archivos que fueron creados anteriormente.La diferencia esencial entre una instrucción de abrir un archivo y una instrucciónde crear un archivo reside en que el archivo no existe antes de utilizar crear y sesupone que debe existir antes de utilizar abrir.La información que un sistema de tratamiento de archivos requiere para abrir unarchivo es diferente de las listas de información requerida para crear un archivo.La razón para ello reside en el hecho que toda la información que realmentedescribe el archivo se escribió en éste durante el proceso de creación del archivo.Por consiguiente, la operación abrir-archivo sólo necesita localizar y leer estáinformación conocida como atributos del archivo.

Page 20: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

La instrucción de abrir un archivo consiste en la creación de un canal quecomunica a un usuario a través de un programa con el archivo correspondientesituado en un soporte.Los parámetros que se deben incluir en una institución de apertura (abrir) son:

Nombre del dispositivo; Nombre del usuario o canal de comunicación; Nombre del archivo.

Al ejecutar la instrucción abrir-archivo se pueden encontrar los siguientes errores:

Archivo no encontrado en el dispositivo especificado (nombre de archivoo identificador de dispositivo erróneo);

Archivo ya está en uso para alguna otra aplicación del usuario; Errores hardware.

Programa usuarioCrear DEMO

Especificaciones .del archivo .

Abrir DEMO Nombre del caminodel archivo

Escribir entradadirectorio

CREAR_ARCHIVO Escribir especificaciónarchivo ABRIR_ARCHIVO

Page 21: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

La operación de abrir archivos se puede aplicar para operaciones de entrada,salida o bien entrada/salida.

abrir nombrearchivo para entrada

Ampliación de un archivo

El propósito de la institución añadir-archivo (extend-file, append-file) espermitir al usuario incrementar el tamaño de un archivo.

La información que necesita el sistema de gestión de archivos paraincrementar el tamaño de un archivo es:

Nombre del dispositivo y directorio donde está localizado el archivo. Nombre del archivo. Tamaño en que se incrementará el archivo.

Antes de poder realizar con éxito la operación de ampliación de un archivo senecesita comprobar previamente si existe espacio suficiente en el soporte paraalojar el tamaño de la ampliación prevista.

Los errores más típicos que se pueden cometer en la operación deampliación son:

El dispositivo no tiene espacio disponible para ampliar el archivo. El archivo no se abrió previamente.

Si se examinan la mayoría de los lenguajes de programación, secomprobará que no existe casi ninguna instrucción en la sintaxis de loslenguajes para ampliar un archivo. Sin embargo, será preciso en aquelloscasos en que no existían instrucciones específicas el diseño de algúnprograma de utilidad que realice dicha tarea.

Cerrar archivos

El propósito de la operación de cerrar un archivo es permitir al usuariocortar el acceso o detener el uso del archivo, permitiendo a otros usuariosacceder al archivo. Para ejecutar esta función, el sistema de tratamiento dearchivos sólo necesita conocer el nombre del archivo que se debe cerrar, yque previamente debía estar abierto.

El formato de la instrucción es

cerrar nombrearchivo

Page 22: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

BORRAR ARCHIVOS

La instrucción de borrar-archivos tiene como objetivo la supresión de un archivodel soporte o dispositivo. El espacio utilizado por un archivo borrado puede serutilizado para otros archivos.

La información necesaria para eliminar un archivo es:

Nombre del dispositivo y número del canal de comunicación; Nombre del archivo.

Los errores que se pueden producir son:

El archivo no se pudo encontrar bien porque el nombre no es válido oporque nunca existió.

Otros usuarios estaban actuando sobre el archivo y estaba activo. Se detectó un problema de hardware.

5. MANTENIMIENTO DE ARCHIVO

La operación de mantenimiento de un archivo incluye todas las operaciones quesufre un archivo durante su vida y desde su creación hasta su eliminación oborrado.El mantenimiento de un archivo consta de dos operaciones diferentes:

Actualización; Consulta.

La actualización es la operación de eliminar o modificar los datos ya existentes, obien introducir nuevos datos. En esencia, es la puesta al día de los datos delarchivo.

Las operaciones de actualización son:

Altas Bajas Modificaciones

Las operaciones de consulta tienen como finalidad obtener información total oparcial de los datos almacenados en un archivo y presentarlos en dispositivos desalida: pantalla o impresora, bien como resultados o como listados.Todas las operaciones de mantenimiento de archivos suelen construir módulosindependientes del programa principal y su diseño que realiza con subprogramas(subrutinas o procedimientos específicos).Así los subprogramas de mantenimiento de un archivo constarán de:

Page 23: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

ALTAS

Una operación de alta en un archivo consiste en la adición de un nuevo registro.En un archivo de empleados, un alta consistiría en introducir los datos de unnuevo empleado. Para situar correctamente un alta se deberá conocer la posicióndonde se desea almacenar el registro correspondiente: al principio, en el interior oal final de un archivo.El algoritmo del subprograma ALTAS debe contemplar la comprobación de que elregistro a dar de ALTA no existe previamente.

BAJAS

Una baja es la acción de eliminar un registro de un archivo. La baja de un registrose puede presentar de dos formas distintas: indicación del registro específico quese desea bajar o bien visualizar los registros del archivo para que el usuario elija elregistro a borrar.La baja de un registro puede ser lógica o física. Una baja lógica supone el noborrado del registro en el archivo. Esta baja lógica se manifiesta en undeterminado campo del registro con una bandera, indicador o “flag”- carácter *, $,

Programaprincipal

Actualización Consulta

altas bajas modificaciones

Page 24: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

etc.-, o bien con la escritura o rellenado de espacios en blanco en el registroespecífico.Una baja física implica el borrado y desaparición del registro de modo que se creaun nuevo archivo que no incluye al registro dado de baja.

MODIFICACIONES

Una modificación es un archivo consiste en la operación de cambiar total oparcialmente el contenido de uno de sus registros.Esta fase es típica cuando cambia el contenido de un determinado campo de unarchivo; por ejemplo, la dirección o la edad de un empleado.La forma práctica de modificar un registro es la visualización del contenido de suscampos; para ello se debe elegir el registro o registros a modificar. El procesoconsistente en la lectura del registro, modificación de su contenido y escritura,total o parcial del número.

CONSULTA

La operación de consulta tiene como fin visualizar la información contenida en elarchivo, bien de un modo completo- bien de modo parcial-, examen de uno o másregistros.Las operaciones de consulta de archivo deben contemplar diversos aspectos quefaciliten la posibilidad de conservación de datos. Los aspectos más interesantes atener en cuenta son:

Opción de visualización en pantalla o listado en impresora Detención de la consulta a la voluntad del usuario. Listado por registros o campos individuales o bien listado total del archivo

(en este casó deberá existir la posibilidad de impresión de listados, conopciones de saltos de página correctos).

OPERACIONES SOBRE REGISTROS

Las operaciones de transferencia de datos a/o desde un dispositivo a la memoriacentral se realizan mediante las instrucciones:

leer nombre archivo, lista de entrada de datosescribir nombre archivo, lista de salida de datos

Las operaciones de acceso a un registro y de paso de un registro a otro se realizacon las acciones leer y escribir.

Page 25: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

6. ALGORITMOS PARA MANIPULAR ARCHIVOS SECUENCIALES

En un archivo secuencial los registros se insertan en el archivo en ordencronológico de llegada al soporte, es decir, un registro de datos se almacenainmediatamente a continuación del registro anterior.Los archivos secuenciales termina con una marca final de archivo (FF o EOF).Cuando se tengan que añadir registros a un archivo secuencial se añadirán en lasmarcas fin de archivos.Las operaciones básicas que se permiten en un archivo secuencial son: escribir sucontenido, añadir un registro al final del archivo y consultar sus registros. Lasdemás operaciones exigen una programación específica.Los archivos secuenciales son los que ocupan menos memoria y son útilescuando se desconoce a priori el tamaño de los datos y se requieren registros delongitud variable. También son muy empleados para el almacenamiento deinformación, cuyos contenidos sufran pocas modificaciones en el transcurso de suvida útil.

CREACION

La creación de un archivo secuencial es un proceso secuencial, ya que losregistros se almacenan consecutivamente en el mismo orden en que seintroducen en el archivo.El método de creación de un archivo consiste en la ejecución de un programaadecuado que permite la entrada de datos del archivo desde el terminal. Elsistema usual es el interactivo en el que el programa solicita los datos al usuarioque los introduce por el teclado, hasta que se introduce una marca final delarchivo (EOF o FF) que supone el final físico del archivo.En los archivos secuenciales EOF o FF es una función lógica que toma el valorcierto si se ha alcanzado el final del archivo y falso en caso contrario.

La operación de crear un archivo tiene dos variantes:

Crear el archivo original (1); Añadir datos al archivo ya creado y a continuación del ultimo registro del

mismo (2)

La creación del archivo requerirá los siguientes pasos:

Abrir el archivo; Leer datos del registro; Grabar registro; Cerrar archivo .

Page 26: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

El algoritmo de creación con inclusión del menú de opciones es el siguiente:

algoritmo creacióninicio

{menú de opciones}escribir ‘1. creación de archivo nuevo’escribir ‘2. añadir datos al archivo’leer opciónsi opción = 1

entoncesabrir archivo nuevo para creación

sinoabrir archivo para añadir datos

fin_si{grabación de datos en el archivo}mientras no se alcance el fin de archivo (EOF) hacerleer datos de un registroescribir (grabar) registrofin_mientrascerrar archivofin

Consulta

El proceso de búsqueda o consulta de una información en un archivo deorganización secuencial se debe efectuar obligatoriamente en modo secuencial.Por ejemplo, si se desea consultar la información contenida en el registro 50, sedeberán leer previamente los 49 primeros registros que le preceden en ordensecuencial. En el caso de un archivo de personal sí desean buscar un registrodeterminado correspondiente a un determinado empleado, será necesario recorrerleer todo el archivo desde el principio hasta encontrar el registro que se busca o lamarca final de archivos.Así, para el caso de un archivo de n registros, el número de lecturas de registrosefectuadas son:

Mínimo 1, si el registro buscado es el primero del archivo; Máximo n, si el registro buscado es el último o no existe dentro del archivo.

Por término medio, el número de lecturas necesarias para encontrar undeterminado registro es:

n+12

Page 27: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

El tiempo de acceso será influyente en las operaciones de lectura/escritura. Así,en el caso de una lista de vector de n elementos almacenados en memoriacentral puede suponer tiempos en microsegundos o nanosegundos; sin embargo,en el caso de una archivo n registros los tiempos de acceso son de milisegundoso fracciones/múltiples de milisegundos, lo que supone un tiempo de acceso de1000 s 100000 veces más grande una búsqueda de información en un soporteexterno que en memoria central.

La búsqueda en lugar de ser secuencial se podría realizar por el método binario, loque reducirá considerablemente en tiempo.El algoritmo de consulta de un archivo requerirá un diseño previo de lapresentación de la estructura de registros en el dispositivo de salida de acuerdo alnúmero y longitud de los campos.

algoritmo consulta-totalinicio

abrir archivo para lecturaleer registroN 1mientras registro < > FF hacer {FF, fin de archivo}escribir registroleer registroN N + 1

fin_ mientras{número de registros de archivo, N – 1}escribir 'número de registro', archivo N-1}escribir 'número de registro ', N – 1cerrar archivo

fin

En el caso de búsqueda de un determinado registro con un campo clave x, elalgoritmo de búsqueda se puede modificar en la siguiente forma con

mientras registro < > FF hacersi registro (campo X) = registro (campo leído)

entoncesescribir 'el registro buscado existe

fin {fin del programa}sino

leer registroN N+1

fin_sifin_mientrasescribir 'el registro buscado no existe en el archivo'

Page 28: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Actualización

La actualización de un archivo supone:

Añadir nuevos registros (altas) Modificar registros ya existentes (modificaciones) Borrar registros (bajas)

ALTAS

La operación de dar de alta un determinado registro es similar a la operación yadescrita anteriormente de añadir datos a un archivo.La operación de alta supone la creación nueva del archivo, ya que un archivosecuencial no admite la incorporación de nuevos registros.

algoritmo altasinicio

abrir archivo para añadirmientras no haya más registros hacer

leer datos del registroescribir (grabar) registro

fin_mientrascerrar archivofin

BAJAS

Existen dos métodos para dar de baja a un registro:

1. Se utiliza un archivo transitorio2. Almacenar en un array (vector) todos los registros del archivo,

señalando con un indicador o bandera (flag) el registro que sedesea dar de baja.

Método 1

Se crea un segundo archivo auxiliar, también secuencial, copia del que se trata deactualizar. Se lee el archivo completo registro a registro y en función de su lecturase decide si el registro se debe de dar de baja o no.Si el registro se va a dar de baja, se omite la escritura en el archivo auxiliar otransitorio. Si el registro no se va a dar de baja, este registro se escribe en elarchivo auxiliar.Tras terminar la lectura del archivo original, se tendrán dos archivos: original (omaestro) y auxiliar.

Page 29: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Archivo Actualización Archivooriginal auxiliar

El proceso de bajas del archivo concluye cambiando el nombre del archivo auxiliarpor el de maestro y borrando previamente el archivo maestro original.

Método 2

Este procedimiento consiste en señalar los registros que se desean dar de bajacon un indicador o bandera; estos registros no se graban en el nuevo archivosecuencial que se crea sin los registros dados de baja.

algoritmo bajasinicio

abrir archivo original (maestro) para lecturaabrir archivo auxiliar para creaciónleer registro del maestromientras registro <> FF hacer

escribir ‘Baja (S/N)’leer respuestasi respuesta=´N’entonces

escribir registro en archivo auxiliarfin_sileer registrofin_mientras

cerrar archivo maestrocerrar archivo auxiliarborrar archivo maestrocambiar nombre del archivo auxiliar por nombre de maestro

fin

MODIFICACIONES

El proceso de modificación de un registro consiste en localizar este registro,efectuar dicha modificación y a continuación rescribir el nuevo registro en elarchivo.

El proceso es similar al de bajas

Page 30: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

algoritmo modificacióninicio

abrir archivo maestro para lecturaabrir archivo auxiliar para creaciónleer registro del maestromientras registro del maestro <> FF hacer

escribir ‘Modificar (S/N)’leer respuestasi respuesta=´S’entoncesllamar_a subprograma de modificaciónfin_siescribir registro en archivo auxiliarfin_mientrascerrar archivo maestrocerrar archivo auxiliarborrar archivo maestro

cambiar nombre del archivo auxiliar por nombre de maestrofin

7. PROCESAMIENTO DE ARCHIVOS DE ACCESO DIRECTO (ALGORITMOS)

Los archivos aleatorios o de acceso directo tienen una gran rapidez de accesocomparados con los secuenciales; son fáciles de referenciar número de orden delregistro, y la facilidad de mantenimiento.La lectura/escritura de un registro es rápida, ya que se accede directamente alregistro y no se necesita recorrer los anteriores.El inconveniente de los archivos directos es que la dirección de almacenamientoen el soporte direccionable se obtiene por medio de un algoritmo de conversiónque transforma números de orden (clave) en direcciones de almacenamiento.

Operaciones con archivos de acceso directo

Las operaciones con archivos de acceso directo son las usuales ya vistasanteriormente.

Creación

El proceso de creación de un archivo directo o aleatorio consiste en irintroduciendo los sucesivos registros en el soporte que los va a contener y en ladetección obtenida resultante del algoritmo de conversión. Si al introducir unregistro se encuentra ocupada la dirección, el nuevo registro deberá ir a la zona desinónimos o de excedentes.

Page 31: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

algoritmo creacióninicio

abrir archivoleer registromientras <> FF hacercalcular dirección mediante algoritmos de conversiónescribir ‘dirección libre S/N’

leer respuestasi respuesta=´S’entonces

grabar registrossino

buscar espacio en área de sinónimosgrabar registro

fin_sileer registrofin_mientras

fin

ALTAS

Para dar de alta un registro, se debe introducir su número de orden y contenido

algoritmo altasinicio

repetirleer 'número de registro de alta',NRsi 1 -< NR -< ALTOentoncesleer registro NRsi SW =1

entoncesescribir 'registro ya existe'sinoSW = 1leer datos del registroescribir SW y datos en registro NR

fin_sisino

escribir érror,rango 1..ALTO'fin_si

hasta_que no se deseen más altasfin

Page 32: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

CONSULTA

El proceso de consulta de un archivo o aleatorio es rápido y debe comenzar con laentrada del número o números de registros a consultar. Las operaciones a realizarson:

Definir clave del registro buscado Aplicar algoritmo de conversión clave a dirección Lectura del registro ubicado en la dirección obtenida Comparación de las claves de los registros leído y buscado Exploración secuencial del área de excedentes, ni no se encuentra El

registro en esta área es que no existe.

mientras < > FF hacerleer registro Rir a subprograma de obtención de la direcciónleer registro Ssi R = Sentonces

llamar_a subprograma de consultasino

leer área de sinónimossi FF

entoncesescribir 'registro no existe'

sino llamar_a subprograma consultafin_si

fin_sifin_mientras

BAJAS

Para realizar una baja se toma un campo indicador en el que su valor sea 0,y cuando exista, se pone a 1. Este tipo de una baja lógica, que significaque, pese a usar un registro dado de baja, sigue ocupando el mismoespacio que si estuviera presente.

Page 33: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

algoritmo bajarepetir

leer NR {número de registro}si 1 /< NR /< TOTAL de registros

entoncesleer registro NRsi SW = 0

entoncesescribir '…..precaución/registro no existe'

sinoescribir registrosi la opción de baja es correctaentonces

SW <------- 0Escribir SW en el registro NR

fin_sifin_si

sinoescribir 'número de registro no correcto'

fin_si

MODIFICACIONES

En un archivo aleatorio se localiza el registro que se desea modificarnúmero de registro; se modifica el contenido y se reescribe:

algoritmo modificacióninicio

repetirleer 'número de registro',NRsi /< NR /< TOTAL de registrosentonces

escribir 'registro no existe'sino

escribir registroleer modificacionesescribir nuevo registro

fin_sisino

escribir 'número de registro no correcto'fin_sihasta_que no haya más modificaciones

fin_si

Page 34: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

8. TRATAMIENTO DE LAS COLISIONES

Las colisiones son inevitables, y como se ha comentado, se originancuando dos registros de claves diferentes producen la misma direcciónrelativa. En estos casos las colisiones se pueden tratar de dos formasdiferentes.

Suponer que un registro e1 produce una dirección dl que ya está ocupada.¿Dónde colocar el nuevo registro? Como se ha mencionado, existen dosmétodos básicos.

Buscar una nueva dirección libre en el mismo espacio del archivo. Asignar el registro a la primera posición libre de la zona de

excedentes.

9. PROCESAMIENTO DE ARCHIVOS SECUENCIALES INDEXADOS

Recordando que los archivos de organización secuencial indexada contienen dosáreas: un área de datos que agrupa a los registros y un área índice que contienelos niveles de índice. Pueden contener también una zona de desbordamiento oexcedentes para caso de actualizaciones.Una de las grandes ventajas de utilizar un índice con un archivo de datossecuenciales es que la adición de registros pueden realizarse mucho másrápidamente que con un archivo datos clasificados, siempre que el índice seapequeño para poder alojarse en memoriaEl almacenamiento del área de índices en memoria, mientras el programa seejecuta, permite encontrar los registros por clave más rápidamente con un archivoindexado que con uno clasificado, ya que la búsqueda binaria puede ejecutarsecompletamente en memoria.

Page 35: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

1

2. MÉTODOS DE CLASIFICACIÓN Y CONSIDERACIONES DE COMPLEJIDAD.

INTRODUCCIÓN

Ordenar significa reagrupar o reorganizar un conjunto de datos u objetos en unasecuencia específica. Los procesos de ordenación y búsqueda son algo frecuenteen nuestras vidas. Vivimos en un mundo desarrollado, automatizado, acelerado,donde la información representa un elemento de vital importancia. La sociedaddebe estar informada y por lo tanto el buscar y recuperar información es ahora unanecesidad.La operación de búsqueda para recuperar información, normalmente se efectúasobre elementos ordenados. Lo que demuestra que, en general, donde hayaobjetos que deban buscarse y recuperarse, el proceso de ordenación estarápresente.Los objetos ordenados aparecen por doquier. Directorios telefónicos, registros depacientes de un hospital, registros de huéspedes de un hotel, índices de libros deuna biblioteca, son tan sólo algunos ejemplos de objetos ordenados con los cualesel ser humano se encuentra frecuentemente. Incluso y de manera informal puedeseñalarse que desde niño se le enseña a ser ordenado, a poner sus cosas enorden.La ordenación es una actividad fundamental y relevante en la vida. Imagínese quéocurriría si deseara encontrar un libro en una biblioteca que contenga 70 000volúmenes y éstos están desordenados o registrados en los índices en el ordenen el cual ellos fueron recibidos; o por ejemplo si se quiere hablar por teléfono conuna persona y se encuentra que en el directorio los abonados están ordenadossegún su número telefónico, ascendente o descendentemente.

Formalmente se define ordenación de la siguiente manera.

Sea A una lista de N elementos:

A1, A2, A3,…………………., An

Ordenar significa permutar estos elementos de tal forma que los mismos quedende acuerdo con un orden preestablecido.

Ascendente: A1 A2 A3 ……. AN

Descendente: A1 A2 A3 ……. AN

En el procesamiento de datos, a los métodos de ordenación se les clasifica endos categorías:

Ordenación de arreglos

Page 36: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

2

Ordenación de archivos

La primera categoría recibe también el nombre de ordenación interna, ya que loselementos o componentes del arreglo se encuentran en la memoria principal de lacomputadora. La segunda categoría recibe también el nombre de ordenaciónexterna, ya que los elementos se encuentran en archivos que están almacenadosen dispositivos de almacenamiento secundario, como discos, cintas, etc.

Ejemplificando esta clasificación se puede mencionar que para la máquina, laordenación interna, representa lo que para un humano significa ordenar unconjunto de tarjetas que se encuentran visibles y extendidas todas sobre unamesa.Ahora bien, la ordenación externa, representa para la máquina lo que para unhumano significa ordenar un conjunto de tarjetas que están dispuestas unadebajo de otra y en donde sólo se visualiza la primera.

ORDENACION INTERNA

Los métodos de ordenación interna se explicarán con arreglos unidimensionales,pero su uso puede extenderse a otros tipos de arreglos. Por ejemplo:bidimensionales y tridimensionales, considerando el proceso de ordenaciónrespecto a renglones y columnas en el caso de arreglos bidimensionales yrenglones, columnas y paginas en el caso de arreglos tridimensionales.También debe señalarse que se trabajará con métodos de ordenación “in situ”, esdecir, métodos que no requieren de arreglos auxiliares para su ordenación, ya queéstos, además de ineficientes, son intrínsecamente de menor interés.Los métodos de ordenación interna a su vez pueden ser clasificados en dos tipos:

Métodos directos (n2) Métodos logarítmicos (n * log n)

Los métodos directos tienen la característica de que sus programas son cortos yde fácil elaboración y comprensión, aunque son ineficientes cuando N (el númerode elementos del arreglo) es medio o grande. Los métodos logarítmicos son máscomplejos que los métodos directos. Cierto es que requieren de menoscomparaciones y movimientos para ordenar sus elementos, pero su elaboración ycomprensión resulta más sofisticada y abstracta.Debe aclararse que una buena medida de eficiencia entre los distintos métodos esel tiempo de ejecución del algoritmo y éste depende fundamentalmente delnúmero de comparaciones y movimientos que se realicen entre elementos.Como conclusión puede decirse que cuando N es pequeño deben utilizarsemétodos directos y cuando N es medio o grande deben emplearse métodoslogarítmicos.

Los métodos directos más conocidos son:

Page 37: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

3

Ordenación por intercambio Ordenación por inserción Ordenación por selección

2.1 Ordenación por intercambio directo (burbuja)

El método de intercambio directo, conocido con el nombre de la burbuja, es elmás utilizado entre los estudiantes principiantes de computación, por su fácilcomprensión y programación. Pero es preciso señalar que es probablemente elmétodo más ineficiente.El método de intercambio directo puede trabajar de dos maneras diferentes.Llevando los elementos más pequeños hacia la parte izquierda del arreglo o bienllevando los elementos más grandes hacia la parte derecha del mismo.La idea básica de este algoritmo consiste en comparar pares de elementosadyacentes e intercambiarlos entre sí hasta que todos se encuentren ordenados.Se realizan (n-1) pasadas, transportando en cada una de las mismas el menor omayor elemento (según sea el caso) a su posición ideal. Al final de las (n – 1)pasadas los elementos del arreglo estarán ordenados.

EJEMPLO

Suponer que se desea ordenar las siguientes claves del arreglo A, transportandoen cada pasada el menor elemento hacia la parte izquierda del arreglo.

A: 15 67 08 16 44 27 12 35

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADAA[7] > A[8] (12>35) no hay intercambioA[6] > A[7] (27>12) sí hay intercambioA[5] > A[6] (44>12) sí hay intercambioA[4] > A[5] (16>12) sí hay intercambioA[3] > A[4] (08>12) no hay intercambioA[2] > A[3] (67>08) sí hay intercambioA[1] > A[2] (15>08) sí hay intercambio

Luego de la primera pasada el arreglo queda de la siguiente forma:

A: 08 15 67 12 16 44 27 35

Observe que el elemento más pequeño, en este caso 08, fue situado en la parteizquierda del arreglo.

SEGUNDA PASADA

Page 38: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

4

A[7] > A[8] (27 > 35) no hay intercambioA[6] > A[7] (44 > 27) sí hay intercambioA[5] > A[6] (16 > 27) no hay intercambioA[4] > A[5] (12 > 16) no hay intercambioA[3] > A[4] (67 > 12) sí hay intercambioA[2] > A[3] (15 > 12) sí hay intercambio

Luego de la segunda pasada el arreglo queda de la siguiente forma:

A: 08 12 15 67 16 27 44 35

y el segundo elemento más pequeño del arreglo, en este caso 12, fue situado enla segunda posición.

En la tabla siguiente se presenta el resultado de las restantes pasadas:

3era. Pasada: 08 12 15 16 67 27 35 44

4ta. Pasada: 08 12 15 16 27 67 35 44

5ta. Pasada: 08 12 15 16 27 35 67 44

6ta. Pasada: 08 12 15 16 27 35 44 67

7ma. Pasada: 08 12 15 16 27 35 44 67

El algoritmo de ordenación por el método de intercambio directo que transporta encada pasada el menor elemento hacia la parte izquierda del arreglo es elsiguiente:

Algoritmo Burbuja 1

BURBUJA1 (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de la burbuja,Transporta en cada pasada el elemento más pequeño hacia la parte izquierda delarreglo. A es un arreglo de N elementos}

{ I, J y AUX son variables de tipo entero}

Page 39: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

5

1. Repetir con I desde 2 hasta N1.1Repetir con J desde N hasta I

1.1.1 Si A [J – I] > A [J] entoncesHacer AUX A[J – I], A[J – I] A[J] y A[J] AUX

1.1.2 {Fin del condicional del paso 1.1.1}1.2{Fin del ciclo del paso 1.1}

2. {Fin del ciclo del paso 1}

EJEMPLO

Suponer que se desea ordenar las siguientes claves del arreglo A transportandoen cada pasada el mayor elemento hacia la parte derecha del arreglo.

A: 15 67 08 16 44 27 12 35

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

A[1] > A[2] (15 > 67) No hay intercambioA[2] > A[3] (67 > 08) Sí hay intercambioA[3] > A[4] (67 > 16) Sí hay intercambioA[4] > A[5] (67 > 44) Sí hay intercambioA[5] > A[6] (67 > 27) Sí hay intercambioA[6] > A[7] (67 > 12) Sí hay intercambioA[7] > A[8] (67 > 35) Sí hay intercambio

A: 15 08 16 44 27 12 35 67

Observe que el elemento más grande, en este caso 67, fue situado en la últimaposición del arreglo.

SEGUNDA PASADA

A[1] > A[2] (15 > 08) sí hay intercambioA[2] > A[3] (15 > 16) no hay intercambioA[3] > A[4] (16 > 44) no hay intercambioA[4] > A[5] (44 > 27) sí hay intercambioA[5] > A[6] (44 > 12) sí hay intercambioA[6] > A[7] (44 > 35) sí hay intercambio

A: 08 15 16 27 12 35 44 67

Page 40: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

6

y el segundo elemento más grande del arreglo, en este caso 44, fue situado en lapenúltima posición.

En la tabla siguiente se ve el resultado de las restantes pasadas:

3era. pasada: 08 15 16 12 27 35 44 67

4ta. pasada: 08 15 12 16 27 35 44 67

5ta. pasada: 08 12 15 16 27 35 44 67

6ta. pasada: 08 12 15 16 27 35 44 67

7ma. pasada: 08 12 15 16 27 35 44 67

El algoritmo de ordenación por el método de intercambio directo que transporta encada pasada el elemento mayor hacia la parte derecha del arreglo es el siguiente:

Algoritmo Burbuja2

BURBUJA2 (A, N)

{El algoritmo ordena los elementos del arreglo. Transporta en cada pasada elelemento más grande hacia la parte derecha del arreglo. A es un arreglo de Nelementos}

{ I, J y AUX son variables de tipo entero}

1. Repetir con I desde 1 hasta N – 11.1Repetir con J desde 1 hasta N – I

1.1.1 Si A [J] > A[J + 1] entoncesHacer AUX A[J], A[J] A[J + 1] y A[J + 1] AUX

1.1.2 {Fin del condicional del paso 1.1.1}1.2{Fin del ciclo del paso 1.1}

2. {Fin del ciclo del paso 1}

Page 41: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

7

2.1 ORDENACIÓN POR EL MÉTODO DE INTERCAMBIO DIRECTO CONSEÑAL

Este método es una modificación del método de intercambio directo. La ideacentral de este algoritmo consiste en utilizar una marca o señal para indicar que nose ha producido ningún intercambio en una pasada. Es decir, se comprueba si elarreglo está totalmente ordenado después de cada pasada, terminando suejecución en caso afirmativo.El algoritmo de ordenación por el método de la burbuja con señal es el siguiente:

Algoritmo Burbujaconseñal

BURBUJACONSEÑAL (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de la burbujacon señal. A es un arreglo de N elementos}

{I, J y AUX son variables de tipo entero. BAND es una variable de tipo booleano}

1. Hacer I 1 y BAND FALSO2. Repetir mientras (I N – 1) y (BAND = FALSO)

Hacer BAND VERDADERO2.1Repetir con J desde 1 hasta N – I

2.1.1 Si A [J] > A[J + 1] entoncesHacer AUX A[J], A[J] A [J + 1],

A[J + 1] AUX y BAND FALSO2.1.2 {Fin del condicional del paso 2.1.1}

2.2{Fin del ciclo del paso 2.1}Hacer I I + 1

3. {Fin del ciclo del paso 2}

2.1 ORDENACIÓN POR EL MÉTODO DE LA SACUDIDA (SHAKER SORT)

El método de shaker sort, más conocido en el mundo del habla hispana como elmétodo de la sacudida, es una optimización del método de intercambio directo. Laidea básica de este algoritmo consiste en mezclar las dos formas en que sepuede realizar el método de la burbuja.

En este logaritmo cada pasada tiene dos etapas. En la primera etapa “de derechaa izquierda” se trasladan los elementos más pequeños hacia la parte izquierda delarreglo, almacenando en una variable la posición del último elementointercambiado. En la según etapa “de izquierda a derecha” se trasladan loselementos más grandes hacia la parte derecha del arreglo, almacenando en otravariable la posición del último elemento intercambiado. Las sucesivas pasadas

Page 42: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

8

trabajan con los componentes del arreglo comprendidos entre las posicionesalmacenadas en las variables. El algoritmo termina cuando en una etapa no seproducen intercambios o bien, cuando el contenido de la variable que almacena elextremo izquierdo del arreglo es mayor que el contenido de la variable quealmacena el extremo derecho.

EJEMPLO.

Suponer que se desea ordenar las siguientes claves del arreglo A utilizando elmétodo de la sacudida.

A: 15 67 08 16 44 27 12 35

PRIMERA PASADA

Primera etapa (de derecha a izquierda)

A[7] > A[8] (12 > 35) no hay intercambioA[6] > A[7] (27 > 12) sí hay intercambioA[5] > A[6] (44 > 12) sí hay intercambioA[4] > A[5] (16 > 12) sí hay intercambioA[3] > A[4] (08 > 12) no hay intercambioA[2] > A[3] (67 > 08) sí hay intercambioA[1] > A[2] (15 > 08) sí hay intercambio

Última posición de intercambio de derecha a izquierda: 2Luego de la primera etapa de la primera pasada, el arreglo queda de la siguienteforma:

A: 08 15 67 12 16 44 27 35

Segunda etapa (de izquierda a derecha)A[2] > A[3] (15 > 67) no hay intercambioA[3] > A[4] (67 > 12) sí hay intercambioA[4] > A[5] (67 > 16) sí hay intercambioA[5] > A[6] (67 > 44) sí hay intercambioA[6] > A[7] (67 > 27) sí hay intercambioA[7] > A[8] (67 > 35) sí hay intercambio

Última posición de intercambio de izquierda a derecha: 8Luego de la segunda etapa de la primera pasada, el arreglo queda de la siguienteforma:

08 15 12 16 44 27 35 67

Page 43: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

9

SEGUNDA PASADA

Primera etapa (de derecha a izquierda)

A[6] > A[7] (27>35) no hay intercambioA[5] > A[6] (44>27) sí hay intercambioA[4] > A[5] (16>27) no hay intercambioA[3] > A[4] (12>16) no hay intercambioA[2] > A[3] (15>12) sí hay intercambio

Última posición de intercambio de derecha a izquierda: 3

A: 08 12 15 16 27 44 35 67

Segunda etapa (de izquierda a derecha)

A[3] > A[4] (15>16) no hay intercambioA[4] > A[5] (16>27) no hay intercambioA[5] > A[6] (27>44) no hay intercambioA[6] > A[7] (44>35) sí hay intercambio

Ultima posición de intercambio de izquierda a derecha: 7

A: 08 12 15 16 27 34 44 67

Al realizar la primera etapa de la tercera pasada se observa que no se realizaronintercambios, por lo tanto la ejecución de algoritmo se termina.

El algoritmo de ordenación por el método de la sacudida es el siguiente:

Algoritmo Sacudida

SACUDIDA (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de la sacudida.A es un arreglo de N elementos}

{I, IZQ, DER, K y AUX son variables de tipo entero}

1. Hacer IZQ 2, DER N y K N2. Repetir hasta que IZQ > DER2.1 Repetir con I desde DER hasta IZQ

2.1.1 Si A [I –1) > A [I] entonces

Page 44: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

10

Hacer AUX A[I –1], A [I –1] A [I]A[I] AUX y K I

2.1.2 {Fin del condicional del paso 2.1.1}2.2 {Fin del ciclo del paso 2.1}

Hacer IZQ K + 1

2.3 Repetir con I desde IZQ hasta DER2.3.1 Si A [I – 1] > A [I] entonces

Hacer AUX A [I – 1], A [I – 1 ] A[I],A [I] AUX y K I

2.3.2 {Fin condicional del paso 2.3.1}2.4 {Fin del ciclo del paso 2.3}

Hacer DER K - 13 {Fin del ciclo del paso 2}

2.2 ORDENACIÓN POR INSERCIÓN DIRECTA

El método de ordenación por inserción directa es el que generalmente utilizan losjugadores de cartas cuando ordenan éstas, de ahí que también se conozca con elnombre del método de la baraja.La idea central de este algoritmo consiste en insertar un elemento de arreglo en laparte izquierda del mismo, que ya se encuentra ordenada. Este proceso se repitedesde el segundo hasta el n-ésimo elemento.

Suponer que se desea ordenar las siguientes claves del arreglo A utilizando elmétodo de inserción directa.

A: 15 67 08 16 44 27 12 35

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

A[2] < A[1] (67<15) no hay intercambio

A: 15 67 08 16 44 27 12 35

SEGUNDA PASADA

A[3] < A[2] (08<67) sí hay intercambioA[2] < A[1] (08<15) sí hay intercambio

A: 08 15 67 16 44 27 12 35

Page 45: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

11

TERCERA PASADA

A[4] < A[3] (16<67) sí hay intercambioA[3] < A[2] (16<15) no hay intercambio

A: 08 15 16 67 44 27 12 35

Observe que una vez que se determina la posición correcta del elemento seinterrumpen las comparaciones. Por ejemplo, en el caso anterior no se realizó lacomparación A[2] < A[1]. En la tabla siguiente se presenta el resultado de lasrestantes pasadas:

4ta. pasada: 08 15 16 44 67 27 12 35

5ta. pasada: 08 15 16 27 44 67 12 35

6ta. pasada: 08 12 15 16 27 44 67 35

7ma.pasada: 08 12 15 16 27 35 44 67

El algoritmo de ordenación por el método de inserción directa es el siguiente:

INSERCCIÓN (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de insercióndirecta A es un arreglo de N elementos}

{I, AUX y K son variables de tipo entero}

1. Repetir con I desde 2 hasta NHacer AUX A[I] y K I – 1

1.1 Repetir mientras (AUX < A [K]) y (K > 1)Hacer A[K + 1] A[K] y K K - 1

1.2 {Fin del ciclo del paso 1.1}1.3 Si A [K] AUX

entoncesHacer A [K + 1] AUX

si noHacer A [K + 1] A[K] y A[K] AUX

Page 46: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

12

1.4 {Fin del condicional del paso 1.3]}2 {Fin del ciclo del paso 1}

2.2 ORDENACIÓN POR EL MÉTODO DE INSERCIÓN BINARIA

El método de ordenación por inserción directa puede mejorarse fácilmente. Paraello se recurre a una búsqueda binaria en lugar de una búsqueda secuencial parainsertar un elemento en la parte izquierda del arreglo, que ya se encuentraordenado. El proceso, al igual que en el método de inserción directa, se repitedesde el segundo hasta el n-ésimo elemento.

Ejemplo

Suponer que se desea ordenar las siguientes claves de arreglo A utilizando elmétodo de inserción binaria.

A: 15 67 08 16 44 27 12 35

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

A[2] < A[1] (67<15) no hay intercambio

A: 15 67 08 16 44 27 12 35

SEGUNDA PASADA

A[3] < A[1] (08<15) sí hay intercambio

A: 08 15 67 16 44 27 12 35

TERCERA PASADA

A[4]<A[2] (16<15) no hay intercambioA[4]<A[3] (16<67) sí hay intercambio

A: 08 15 16 67 44 27 12 35

CUARTA PASADA

Page 47: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

13

A[5]<A[2] (44<15) no hay intercambioA[5]<A[3] (44<16) no hay intercambioA[5]<A[4] (44<67) sí hay intercambio

A: 08 15 16 44 67 27 12 35

QUINTA PASADA

A[6]<A[3] (27<16) no hay intercambioA[6]<A[4] (27<44) sí hay intercambio

A: 08 15 16 27 44 67 12 35

SEXTA PASADA

A[7]<A[3] (12<16) sí hay intercambioA[7]<A[1] (12<08) no hay intercambioA[7]<A[2] (12<15) sí hay intercambio

A: 08 12 15 16 27 44 67 35

SÉPTIMA PASADA

A[8]<A[4] (35<16) no hay intercambioA[8]<A[6] (35<44) sí hay intercambioA[8]<A[5] (35<27) no hay intercambio

A: 08 12 15 16 27 35 44 67

El algoritmo por ordenación por el método de inserción binarias es el siguiente:

INSERCIÓNBINARIA (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de inserciónbinaria.A es un arreglo de N elementos}

{I, AUX, IZQ, DER, M y J son variables de tipo entero}1. Repetir con I desde 2 hasta N

Hacer AUX A[I], IZQ 1 y DER I - 1Repetir mientras IZQ DER

Page 48: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

14

Hacer M parte entera ((IZQ + DER) entre 2)1.1.1 Si AUX < A [M]

entoncesHacer DER M - 1

si noHacer IZQ M + 1

1.1.2 {Fin del ciclo del paso 1.1.1}1.2 {Fin del ciclo del paso 1.1}

Hacer J I – 11.3 Repetir mientras J IZQ

Hacer A[J + 1] A[J] y J J – 11.4 {Fin del ciclo del paso 1.3}

Hacer A[IZQ] AUX2. {Fin del ciclo del paso 1}

2.3 ORDENACIÓN POR SELECCIÓN DIRECTA

El método de ordenación por selección directa es más eficiente que los métodosanalizados anteriormente. Pero, aunque su comportamiento es mejor que el deaquellos y su programación es fácil y comprensible, no es recomendableutilizarlo cuando el número de elementos del arreglo es medio o grande. La ideabásica de este algoritmo consiste en buscar el menor elemento del arreglo ycolocarlo en la primera posición. Luego se busca el segundo elemento máspequeño del arreglo y se lo coloca en la segunda posición. El proceso continúahasta que todos los elementos del arreglo hayan sido ordenados. El método sebasa en los siguientes principios:

1. Seleccionar el menor elemento del arreglo.2. Intercambiar dicho elemento con el primero.3. Repetir los pasos anteriores con los (n-1), (n-2) elementos y así

sucesivamente hasta que sólo quede el elemento mayor.

Ejemplo:

Suponer que se desea ordenar las siguientes claves del arreglo A utilizando elmétodo de selección directa.

A: 15 67 08 16 44 27 12 35

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

Page 49: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

15

Se realiza la siguiente asignación: MENOR A [1] (15)

(MENOR < A [2]) (15< 67) sí se cumple la condición(MENOR < A [3]) (15< 08) no se cumple la condición

MENOR A [3] (08)

(MENOR < A [4]) (08<16) sí se cumple la condición(MENOR < A [5]) (08< 44) sí se cumple la condición(MENOR < A [6]) (08< 27) sí se cumple la condición(MENOR < A [7]) (08< 12) sí se cumple la condición(MENOR < A [8]) (08< 35) sí se cumple la condición

Luego de la primera pasada, el arreglo queda de la siguiente forma:

A: 08 67 15 16 44 27 12 35

Observe que el menor elemento del arreglo, A [3] (08), se intercambio con elprimer elemento, A [1] (15), realizando solamente un movimiento.

SEGUNDA PASADA

Se realiza la siguiente asignación: MENOR A [2] (67)

(MENOR < A [3]) (67<15) no se cumple la condición

MENOR A [3] (15)

(MENOR < A [4]) (15<16) sí se cumple la condición(MENOR < A [5]) (15<44) sí se cumple la condición(MENOR < A [6]) (15<27) sí se cumple la condición(MENOR < A [7]) (15<12) no se cumple la condición

MENOR A [7] (12)

(MENOR < A [8]) (12<35) sí se cumple la condición

A: 08 12 15 16 44 27 67 35

Observe que el segundo elemento más pequeño del arreglo, A [7] (12), seintercambio con el segundo elemento, A [2] (67).

Page 50: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

16

En la tabla siguiente se localiza el resultado de las restantes pasadas:

Tabla

3era pasada: 08 12 15 16 44 27 67 35

4ta pasada: 08 12 15 16 44 27 67 35

5ta pasada: 08 12 15 16 27 44 67 35

6ta pasada: 08 12 15 16 27 35 67 35

7ma pasada: 08 12 15 16 27 35 44 67

El algoritmo de ordenación por el método de selección directa es el siguiente:

SELECCIÓN (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de seleccióndirecta.A es un arreglo de N elementos}

{ I, MENOR, K y J son variables de tipo entero}

1. Repetir con I desde 1 hasta N – 1Hacer MENOR A[ I] y K I

1.1Repetir con J desde I + 1 hasta N1.1.1 Si A[ J ] < MENOR entonces

Hacer MENOR A[J ] y K J1.1.2 {Fin de ciclo del paso 1.1.1}1.2 {Fin del ciclo del paso 1.1}

Hacer A [K ] A [ I] y A [I ] MENOR2. [Fin del ciclo del paso 1]

2.4 Método Shell

Page 51: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

17

El método Shell es una versión mejorada del método de inserción directa. Recibeese nombre en honor a su autor Donald L. Shell quién lo propuso en 1959. Esemétodo también se conoce con el nombre de inserción con incrementosdecrecientes.En el método de ordenación por inserción directa cada elemento se compara parasu ubicación correcta en el arreglo, con los elementos que se encuentran en laparte izquierda del mismo. Sin el elemento a insertar es más pequeño que elgrupo de elementos que se encuentran a su izquierda, es necesario efectuarentonces varias comparaciones antes de su ubicación.

Shell propone que las comparaciones entre elementos se efectúen con saltos demayor tamaño pero con incrementos decrecientes, así los elementos quedaránordenados en el arreglo más rápidamente. Para comprender mejor este algoritmose analizará el siguiente caso.Considere un arreglo que contenga 16 elementos. En primer lugar se dividirán loselementos del arreglo con 8 grupos teniendo en cuenta los elementos que seencuentran a 8 posiciones de distancia entre sí y se ordenarán por separado.Quedará en el primer grupo los elementos (A[1], A [9]); en el segundo (A[2], A[10]);en el tercero, (A[3], A[11]), y así sucesivamente. Después de este primer paso sedividirán los elementos del arreglo en cuatro grupos, teniendo en cuenta ahora loselementos que se encuentren a cuatro posiciones de distancia entre sí y se losordenará por separado. Quedará en el primer grupo los elementos (A[1], A[5], A[9],A[13]);en el segundo (A[2], A [6], A[10], A[14]), y así sucesivamente. En el tercerpaso se dividirán los elementos del arreglo en grupos, tomando en cuenta loselementos que se encuentran ahora a dos posiciones de distancia entre sí ynuevamente se les ordenará por separado. En el primer grupo quedará (A[1], A[3],A[5], A[7], A[9], A[11], A[13], A[15] y el segundo grupo (A[2], A[4], A[6], A[8], A[10],A[12], A[14], A[16].

Finalmente se agruparán los elementos de manera normal, es decir, de uno enuno.

EJEMPLO

Suponer que se desean ordenar los elementos que se encuentra en el arreglo Autilizando el método del Shell.

A: 15 67 08 16 44 27 12 35 56 21 13 28 60 36 07 10

PRIMERA PASADA

Se dividen los elementos en 8 grupos:

Page 52: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

18

A: 15 67 08 16 44 27 12 35 56 21 13 28 60 36 07 10

La ordenación produce:

A: 15 21 08 16 44 27 07 10 56 67 13 28 60 36 12 35

SEGUNDA PASADA

Se dividen los elementos en 4 grupos:

A: 15 21 08 16 44 27 07 10 56 67 13 28 60 36 12 35

La ordenación produce:

A: 15 21 07 10 44 27 08 16 56 36 12 28 60 67 13 35

TERCERA PASADA:

Page 53: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

19

Se dividen los elementos en 2 grupos:

A: 15 21 07 10 44 27 08 16 56 36 12 28 60 67 13 35

La ordenación produce:

A: 07 10 08 16 12 21 13 27 15 28 44 35 56 36 60 67

CUARTA PASADA

Divida los elementos en un solo grupo:

A: 07 10 08 16 12 21 13 27 15 28 44 35 56 36 60 67

La ordenación produce:

A: 07 08 10 12 13 15 16 21 27 28 35 36 44 56 60 67

A continuación se presenta el algoritmo por el método de Shell.

SHELL (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método de Shell.A es un arreglo de N elementos}

{INT, I y AUX son variables de tipo entero. BAND es una variable de tipobooleano}

1. Hacer INT N + 12. Repetir mientras ( INT > 1)

Hacer INT parte entera (INT entre 2 ) y BAND VERDADERO

2.1Repetir mientras (BAND = VERDADERO)

Page 54: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

20

Hacer BAND FALSO e I 12.1.1 Repetir mientras ((I + INT) N )2.1.1.1 Si A[ I ] > A [ I + INT] entonces

Hacer AUX A [ I ], A[ I ] A [A + INT],A [ I + INT ] AUX Y BAND VERDADERO

2.1.1.2 {Fin del condicional del paso 2.1.1.1}Hacer I I + 1

2.1.2 {Fin del ciclo del paso 2.1.1}2.2 {Fin del ciclo del paso 2.1}3. {Fin del ciclo del paso 2}

2.5 Ordenación por el método quicksort

El método de ordenación quiscksort es actualmente el más eficiente y veloz delos métodos de ordenación interna. Es también conocido con el nombre de métodorápido y de ordenación por partición, en el mundo de habla hispana. Este métodoes una mejora sustancial del método de intercambio directo y recibe el nombre deQuicksort (rápido) por la velocidad con que ordena los elementos del arreglo. Suautor C. A. Hoare lo bautizo así:La idea central de este algoritmo consiste en lo siguiente:

1. Se toma un elemento X de una posición cualquiera del arreglo.2. Se trata de ubicar a X en la posición correcta del arreglo, de tal forma que

todos los elementos que se encuentren a su izquierda sean menores o igualesa X y todos los elementos que se encuentren a su derecha sean mayores oiguales a X.

3. Se repiten los pasos anteriores pero ahora para los conjuntos de datos que seencuentran a la izquierda y a la derecha de la posición correcta de X en elarreglo.

4. El proceso termina cuando todos los elementos se encuentran en su posicióncorrecta en el arreglo.

Debe seleccionarse entonces un elemento X cualquiera. En este caso seseleccionará A[1]. Se empieza a recorrer el arreglo de derecha a izquierdacomparando si los elementos son mayores o iguales a X. Si un elemento nocumple con esta condición, se intercambian los mismos y almacenamos en unavariable la posición del elemento intercambiado (acotamos el arreglo por laderecha). Se inicia nuevamente el recorrido pero ahora de izquierda a derecha,comparando si los elementos son menores o iguales a X. Si un elemento nocumple con esta condición, entonces se intercambian los mismos y se almacenanen otra variable la posición del elemento intercambiado (se acota el arreglo por laizquierda). Se repiten los pasos anteriores hasta que el elemento X encuentra suposición correcta en el arreglo.EJEMPLO

Page 55: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

21

Suponer que se desea ordenar los elementos que se encuentra en el arreglo Autilizando el método quicksort.

A: 15 67 08 16 44 27 12 35

Se selecciona A [1], por lo tanto x 15.

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

Recorrido de derecha a izquierdaA[8] X (35 15) no hay intercambioA[7] X (12 15) sí hay intercambio

A: 12 67 08 16 44 27 15 35

Recorrido de izquierda a derecha.

A[2] X (6715) sí hay intercambio

A: 12 15 08 16 44 27 67 35

SEGUNDA PASADA

Recorrido de derecha a izquierda.

A[6] X (27 15) no hay intercambioA[5] X (44 15) no hay intercambioA[4] X (16 15) no hay intercambioA[3] X (08 15) sí hay intercambio

A: 12 08 15 16 44 27 67 35

Page 56: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

22

Como el recorrido de izquierda a derecha debería iniciarse en la misma posicióndonde se encuentra el elemento X, el proceso se termina ya que el elemento X seencuentra en la posición correcta.

A: 12 08 15 16 44 27 67 35

1er. conjunto 2do. conjunto

Observe que los elementos que forman parte del primer conjunto son menores oiguales a X, y los que forman parte del segundo conjunto son mayores o iguales aX. Este proceso de particionamiento aplicado para localizar la posición correcta deun elemento X en el arreglo se repite cada vez que queden conjuntos formadospor dos o más elementos. Se puede realizar de manera iterativa o recursiva. En latabla siguiente se presenta la ubicación del resto de los elementos en el arreglo.

Tabla

A: 12 08 15 16 44 27 67 35

A: 12 08 15 16 35 27 44 67

A: 12 08 15 16 27 35 44 67

A: 08 12 15 16 2 7 35 44 67

Page 57: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

23

El algoritmo de ordenación por el método quicksort en su aplicación recursiva es elsiguiente:

RAPIDORRECURSIVO (A, N)

{El algoritmo ordena los elementos del arreglo utilizando el método rápido, demanera recursiva A es un arreglo de N elementos}

1. Llamar al algoritmo REDUCERRECURSIVO con 1 y N

El algoritmo rápidorrecursivo requiere para su funcionamiento de otro algoritmo,que se presenta a continuación.

Algoritmo Reducerrecursivo.

RAPIDORRECURSIVO (INI, FIN)

{INI y FIN representan las posiciones del extremo izquierdo y derechorespectivamente, del conjunto de elementos a ordenar}

{IZQ, DER, POS y AUX son variables de tipo entero, BAND es una variable de tipobooleano}

1. Hacer IZQ INI, DER FIN, POS INI y BAND VERDADERO2. Repetir mientras (BAND = VERDADERO)

Hacer BAND FALSO

2.1 Repetir mientras (A[POS] A[DER]) y (POS DER)Hacer DER DER – 1

2.2 {Fin del ciclo del paso 2.1}

2.3 Si POS DER entoncesHacer AUX A[POS], A[POS] A[DER],

A[DER] AUX y POS DER

2.3.1 Repetir mientras (A[POS] A[IZQ]) y (POS IZQ)Hacer IZQ IZQ + 1

2.3.2 {Fin del ciclo del paso 2.3.1}

2.3.3 Si POS IZQ entoncesHacer BAND VERDADERO, AUX, A[POS],

A[POS] A[IZQ], A[IZQ] AUX y POS IZQ2.3.4 {Fin del condicional del paso 2.3.3}

2.4 {Fin del condicional del paso 2.3}3 {Fin del ciclo del paso 2}4 Si (POS – 1) > INI entonces

Regresar a REDUCERRECURSIVO con INI y (POS - 1) {Llamada recursiva}5 {Fin del condicional del paso 4}6 Si FIN > (POS + 1) entonces

Regresar a REDUCERRECURSIVO con (POS +1) y FIN {Llamada recursiva}7 {Fin del condicional del paso 6}

Page 58: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

24

Aún cuando el algoritmo del quicksort presentando resulte claro, es posibleaumentar su velocidad de ejecución eliminando las llamadas recursivas. Larecursión es un instrumento muy poderoso, pero la eficiencia de ejecución es unfactor muy importante en un proceso de ordenamiento que es necesario cuidar yadministrar muy bien. Estas llamadas recursivas pueden sustituirse utilizandopilas, dando lugar a la iteractividad.

Considere el arreglo A del ejemplo Luego de la primera partición. A queda de lasiguiente manera:

A: 12 08 15 16 44 27 67 35

1er. conjunto 2do. conjunto

Deben almacenarse en las pilas los índice de los dos conjuntos de datos que faltatratar. Se utilizarán dos pilas, PILAMENOR y PILAMAYOR. En la primera, sealmacenará el extremo izquierdo y en la otra se almacenará el extremo derechode los conjuntos de los datos que falta tratar. En la figura se puede observar elestado de las pilas, luego de cargar los extremos de los dos conjuntos que falta detratar.

4 8

1 2

PILAMENOR PILAMAYOR

FIGURA: Pilas para sustituir la recursividad.

Los índices del primer conjunto quedaron almacenados en la primera posición dePILAMENOR y PILAMAYOR respectivamente. La posición del extremo izquierdodel primer conjunto (1) en PILAMENOR y la posición de extremo derecho delmismo conjunto (2) en PILAMAYOR. Las posiciones de los extremos izquierdo yderecho del segundo conjunto (4 y 8) fueron almacenados en la cima dePILAMENOR y PILAMAYOR, respectivamente.

RAPIDOITERATIVO (A, N)

Page 59: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

25

{El algoritmo ordena los elementos de un arreglo utilizando el método rápido, demanera iterativa. A es un arreglo de N elementos}{TOP, INI, FIN y POS son variables de tipo entero.PILAMENOR y PILAMAYOR son arreglos unidimensionales}1. Hacer TOP 1, PILAMENOR [TOP] 1 y PILAMAYOR [TOP] N2. Repetir mientras (TOP > 0)

Hacer INI PILAMENOR [TOP], FIN PILAMAYOR [TOP]y TOP TOP – 1Llamar al algoritmo REDUCEITERATIVO con INI, FIN y POS.

2.1 Si INI < (POS – 1) entoncesHacer TOP TOP + 1, PILAMENOR [TOP] INI y

PILAMAYOR (TOP) POS – 12.2 {Fin del condicional del paso 2.1}2.3 Si FIN > (POS + 1) entonces

Hacer TOP TOP + 1, PILAMENOR [TOP] POS + 1y PILAMAYOR[TOP] FIN

2.4 { Fin del condicional del paso 2.3}

3. {Fin del ciclo del paso 2}

2.7 ANÁLISIS COMPARATIVO DE LAS COMPLEJIDADES DE LOS DISTINTOSMETODOS DE ORDENAMIENTO.

METODO DE INTERCAMBIO DIRECTO

El número de comparaciones en el método de la burbuja es fácilmentecontabilizable.En la primera pasada realizamos (n–1) comparaciones, en la segunda pasada(n–2) comparaciones, en la tercera pasada (n–3) comparaciones y asísucesivamente hasta llegar a 2 y 1 comparaciones entre claves, siendo n elnúmero de elementos del arreglo.

Por lo tanto:

C = (n-1) (n-2)+ ... + 2 + 1 = n * (n-1)/2

que es igual a:

C = n2 – n/ 2

Como ya se mencionó, se hace uso del principio de inducción matemática paradesarrollar ciertas fórmulas.

Page 60: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

26

Respecto al número de movimientos, éstos dependen de sí el arreglo estáordenado, desordenado o en orden inverso. Los movimientos para cada uno deestos casos son:

Mmin= 0 Mmed= 0.75*(n2 - n) Mmáx= 1.5*(n2 - n)

Así por ejemplo si tiene que ordenarse un arreglo que contiene 500 elementos, seefectuará:

a) Si el arreglo se encuentra ordenado:

124 750 comparaciones 0 movimientos

b) Si los elementos del arreglo se encuentran dispuestos en forma aleatoria:

124750 comparaciones 187 125 elementos

c) Si los elementos del arreglo se encuentran en orden inverso:

124 750 comparaciones 324 250 elementos

Ahora bien, el tiempo necesario para ejecutar el algoritmo de la burbuja esproporcional a n2, O(n2), donde n es el número de elementos del arreglo.

ANÁLISIS DEL METODO DE LA SACUDIDA

El análisis del método de la sacudida y en general el de los métodos mejorados ylogarítmicos son muy complejos. Para el análisis de este método es necesariotener en cuenta tres factores que afectan directamente al tiempo de ejecución delalgoritmo: las comparaciones entre las claves, los intercambios entre las mismas ylas pasadas que se realizan. Encontrar fórmulas que permitan calcular cada unode estos factores es una tarea muy difícil de realizar.Los estudios que se han efectuado sobre el método de la sacudida demuestranque en el mismo, sólo pueden reducirse las dobles comparaciones entre claves;pero debe recordarse que la operación de intercambio es una tarea máscomplicada y costosa que la de comparación. Por lo tanto, es posible afirmar quelas hábiles mejoras realizadas sobre el método de intercambio directo sóloproducen resultados apreciables si el arreglo está parcialmente desordenado ( locual resulta difícil saber de antemano), pero si el arreglo está desordenado elmétodo se comporta, incluso, peor que otros métodos directos como los deinserción y selección.

Page 61: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

27

ANÁLISIS DEL MÉTODO DE INSERCIÓN DIRECTA

El número mínimo de comparaciones y movimientos entre claves se producecuando los elementos del arreglo ya están ordenados. Analícese el siguiente caso

EJEMPLO

Sea A un arreglo formado por los siguientes elementos:

A: 15 20 45 52 86

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

A[2] < A[1] (20<15) no hay intercambio

SEGUNDA PASADA

A[3] < A[2] (45<20) no hay intercambio

TERCERA PASADA

A[4] < A[3] (52<45) no hay intercambio

CUARTA PASADA

A[5] < A[4] (86<52) no hay intercambio

Luego de las comparaciones realizadas, el arreglo queda de la siguiente forma:

A: 15 20 45 52 86

Observe que para este ejemplo se efectuaron 4 comparaciones. En generalpodemos afirmar que si el arreglo se encuentra ordenado se efectúan comomáximo n-1 comparaciones y 0 movimientos entre elementos.

Cmin= n -1

El número máximo de comparaciones y movimientos entre elementos se producecuando los elementos del arreglo están en orden inverso.

Page 62: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

28

EJEMPLO

Sea A un arreglo formado por los siguientes elementos:

A: 86 52 45 20 15

Las comparaciones que se realizan son las siguientes:

PRIMERA PASADA

A[2] < A[1] (52<86) sí hay intercambio

SEGUNDA PASADA

A[3] < A[2] (45<86) sí hay intercambioA[2] < A[1] (45<52) sí hay intercambio

TERCERA PASADA

A[4] < A[3] (20<86) sí hay intercambioA[3] < A[2] (20<52) sí hay intercambioA[2] < A[1] (20<45) sí hay intercambio

CUARTA PASADA

A[5] < A[4] (15<86) sí hay intercambioA[4] < A[3] (15<52) sí hay intercambioA[3] < A[2] (15<45) sí hay intercambioA[2] < A[1] (15<20) sí hay intercambio

Observe que en la primera pasada se realizó una comparación; en la segundapasada se llevaron a cabo dos comparaciones; en la tercera pasada, trescomparaciones, y así sucesivamente hasta n – 1 comparaciones entre elementos.Por lo tanto:

Cmáx = 1 +2 +3 +...+(n-1)= n* (n -1)/2

que es igual a:

Cmáx= (n² - n)2

Ahora bien, el número de comparaciones promedio, que es cuando los elementosaparecen en el arreglo en forma aleatoria, puede ser calculado mediante la sumade las comparaciones mínimas y máximas dividida entre 2.

Page 63: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

29

Por lo tanto:

[(n – 1) + (n²- n) ]Cmed= 2

2

al hacer la operación, queda:

Cmed = (n² + n – 2)4

Respecto al número de movimientos, Knuth obtiene los siguientes:

Mmin= 0 Mmed= (n² - n) Mmáx= (n² - n)4 2

Así por ejemplo si se tiene que ordenar un arreglo que contiene 500 elementos:

a) Si el arreglo se encuentra ordenado:

499 comparaciones 0 movimientos

b) Si los elementos del arreglo se encuentran dispuestos en forma aleatoria serealizarán:

62 624 comparaciones, en promedio 62 375 movimientos, en promedio

c) Si los elementos del arreglo se encuentran en orden inverso seránnecesarias:

124 750 comparaciones. 124 750 movimientos.

Ahora bien, el tiempo necesario para ejecutar el algoritmo de inserción directa esproporcional a n², O(n²), donde n es el número de elementos del arreglo.A pesar de ser un método ineficiente y recomendable sólo cuando n es pequeño,el método de inserción directa se comporta mejor que los métodos de intercambiodirecto analizados anteriormente.

Page 64: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

30

ANÁLISIS DEL METODO DE SELECCIÓN DIRECTA

El análisis del método de selección directa es relativamente simple. Debe tenerseen cuenta que el número de comparaciones entre elementos es independiente dela disposición inicial de los mismos en el arreglo. En la primera pasada se realiza(n-1) comparaciones, en la segunda pasada (n-2) comparaciones y asísucesivamente hasta 2 y 1 comparaciones, en la penúltima y última pasadarespectivamente. Por lo tanto:

C= (n-1) + (n-2) +.... + 2+1= n* (n -1)2

que es igual a:

C = n2 – n2

Respecto al número de intercambios, siempre será n-1 a excepción de que setenga incorporado en el algoritmo alguna técnica para prevenir el intercambio deun elemento consigo mismo. Por lo tanto:

M = n -1

Así, por ejemplo, sí se tiene que ordenar un arreglo que contiene 500 elementos,se efectuarán 124 750 comparaciones y 499 movimientos.

El tiempo de ejecución del algoritmo es proporcional a n2, O(n2), aun cuando esmas rápido que los métodos presentados con anterioridad.

En la tabla pueden observarse los números de comparaciones y movimientosnecesarios para ordenar un arreglo con los tres métodos directos analizados. Lascolumnas nuevamente indican si los elementos del arreglo se encuentran en formaordenada, desordenada o en orden inverso. Observe que estas columnas seencuentran divididas a su vez en dos subcolumnas. La subcolumna izquierdarepresenta un arreglo de 500 elementos y la subcolumna derecha representa unarreglo de 1000 elementos.

Es fácil observar que el método de selección directa es mejor y sólo es superadopor el método de inserción directa cuando los elementos del arreglo ya seencuentran ordenados. El peor método sin duda es el de intercambio directo.

Page 65: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

31

Tabla

ORDENADA DESORDENADA ORDEN INVERSOINTERCAMBIO

DIRECTO

C

M

124 750 499 500

0 0

124 750 499 500

187 125 749 250

124750 499 500

374250 1489 500

INSERCIÓN

DIRECTA

C

M

499 999

0 0

62 624 250 249

62 375 249 750

124 750 499 500

124 750 499 500

SELECCIÓN

DIRECTA

C

M

124 750 499 500

499 999

124 750 499 500

999 999

124 750 499 500

499

ANÁLISIS DE EFICIENCIA DEL MÉTODO DE SHELL

El análisis de eficiencia del método del Shell es un problema muy complicado yaún no resuelto. Nadie ha sido capaz de establecer hasta el momento la mejorsecuencia de incrementos cuando n es grande. Cabe recordar que cada vez quese propone una secuencia de intervalos es necesario “correr” el algoritmo paraanalizar el tiempo de ejecución del mismo.El tiempo de ejecución del algoritmo es del orden de n* (log n)2. Unas pruebasexhaustivas realizadas para obtener la mejor secuencia de intervalos cuando elnúmero de elementos del arreglo es igual a 8 arrojaron como resultado que lamejor secuencia corresponde a un intervalo de 1, que no es más que el método deinserción directa estudiado previamente. Estas pruebas también determinaron queel menor de movimientos se registraba con la secuencia 3,2,1.Cabe aclarar que las pruebas exhaustivas corresponden el análisis de (8!)posibilidades, es decir, 40 320 casos diferentes.En la tabla siguiente se muestran los 10 mejores secuencias obtenidas al evaluarlas 40 320 posibilidades de secuencias que se presentan cuando se tiene unarreglo de 8 elementos.Tabla

POSICIÓN SECUENCIA1 12 6 13 5 14 7 15 4 16 3 1

Page 66: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

32

7 2 18 5 3 19 4 2 1

10 3 2 1

Para concluir con el análisis de eficiencia del método de Shell, se mencionará queestudios realizados muestran que las mejores secuencias para valores de Ncomprendidos entre 100 y 60 000 son las presentes en la tabla.

Tabla

1, 3, 5, 9,...,2k + 1

1, 3, 7, 15,... 2k - 1SECUENCIAS

1, 3, 5, 11,... (2k + 1)/3

1, 4, 13, 40,...( 3k - 1)/2

Donde k = 0, 1, 2, 3,...

Por último y para clasificar aún más los conceptos vertidos sobre el método deShell se incluye un segundo ejemplo.

EJEMPLO

Suponer que se desea ordenar las siguientes claves del arreglo A utilizando elmetodo de Shell. La secuencia de intervalos que se utilizara corresponde a laformula (2k – 1).

A: 15 67 08 16 44 27 12 35 56 21 13 28 60 36 07 10

Los resultados parciales de cada pasada así como el resultado final, se puedenobservar en la tabla.

Page 67: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

33

Tabla

PAS ARREGLO A INT

1

2

3

4

15 67 08 16 44 27 12 35 56 21 13 28 60 3607 10

10 67 08 16 44 27 12 35 56 21 13 28 60 3607 15

07 15 08 13 28 27 12 10 56 21 16 44 60 3635 67

07 10 08 12 15 27 13 16 35 21 28 44 60 3656 67

07 08 10 12 13 15 16 21 27 28 35 36 44 5660 67

15

07

03

01

Donde PAS representa el número de pasada e INT representa el intervalo en elcual se está trabajando.

ANÁLISIS DE EFICIENCIA DEL METODO QUICKSORT

El método rápido es el método más rápido de ordenación interna que existe en laactualidad, sorprendentemente, ya que es una optimización del método deintercambio directo. Diversos estudios realizados sobre el comportamiento delmismo demuestran que si se escoge en cada pasada el elemento que ocupa laposición central del conjunto de datos a analizar, el número de pasadasnecesarias para ordenarlo es del orden de log n. Respecto al número decomparaciones si el tamaño del arreglo es una potencia de dos, en la primerapasada realizará (n-1) comparaciones, en la segunda pasada realizará (n-1)/ 2comparaciones, pero en dos conjuntos diferentes, en la tercera pasada realizará(n-1)/4 comparaciones pero en cuatro conjuntos diferentes y así sucesivamente.Por lo tanto:

C= (n-1) +2 * (n-1)/2 + 4 * (n-1)/4 + . . . + (n-1) * (n-1)/(n-1)

Lo cual es lo mismo que:

C = (n-1) + (n-1) + (n-1) + . . . + (n-1)

Page 68: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

34

Si se considera a cada uno de los componentes de la sumatoria como un términosi el número de términos de la sumatoria es igual a m, entonces se tiene que:

C = (n-1) * log n

Sin embargo encontrar elemento que ocupe la posición central del conjunto dedatos que se van a realizar es una tarea difícil, ya que hay 1/n posibilidades delograrlo.Además, el rendimiento medio del método es aproximadamente (2*1n 2) inferior alcaso óptimo. El elemento X se selecciona arbitrariamente o bien entre unamuestra relativamente pequeña de elementos del arreglo. El peor caso que ocurrecuando los elementos del arreglo ya se encuentran ordenados o bien cuando losmismos se encuentran en orden inverso.

Por ejemplo, suponer que se tiene que ordenar el siguiente arreglo:

A: 08 12 15 16 27 35 44 67

Si se escoge arbitrariamente el primer elemento (08), entonces se particionará elarreglo en dos mitades, una de 0 y otra de (n-1) elementos.

08 12 15 16 27 35 44 67

Si se continúa con el proceso de ordenación y se escoge nuevamente el primerelemento (12) del conjunto de datos que se analizarán entonces se particionará elarreglo en dos nuevos conjuntos, nuevamente uno de 0 y otro e (n-2) elementos.Por lo tanto el numero de comparaciones que se realizan será:

Cmax = n + (n-1) + (n-2) + . . . + 2= n * (n+1)/2- 1

Que es igual a:

Cmáx= n2+n / 2 -1

Cómo conclusión podemos afirmar que el tiempo promedio de ejecución delalgoritmo es proporcional a (n* log n), O (n * log n) en el peor caso el tiempo deejecución es proporcional a n2, O (n2).

Page 69: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

3. METODOS DE BÚSQUEDA

La operación de búsqueda permite recuperar datos previamente almacenados. Elresultado que puede arrojar esta operación es éxito, si se encuentra el elementobuscado, o fracaso, en otras circunstancias.La búsqueda es una actividad relevante en la vida, el mundo en el que hoy se vivees desarrollo, automatizado; donde la información representa un elemento de vitalimportancia. Es necesario estar informado y, por lo tanto, buscar y recuperarinformación. Se hacen tareas esenciales, se buscan números telefónicos en undirectorio, ofertas laborales en un periódico, libros de una biblioteca, etc.En los ejemplos citados, la búsqueda se realiza sobre elementos que,generalmente, están ordenados. Los directorios telefónicos están ordenadosalfabéticamente, las ofertas laborales están ordenadas por el tipo de trabajo y loslibros de una biblioteca están clasificados por tema o por autor. Sin embargo,puede suceder que la búsqueda se realice sobre una colección de elementos noordenados; por ejemplo, cuando se busca la localización de una cuidad dentro deun mapa.Puede concluirse, entonces, que la operación de búsqueda puede llevarse a cabosobre elementos ordenados y sobre elementos desordenados. En el primer caso,la búsqueda se facilita, y por lo tanto se ocupará menos tiempo que si se trabajacon elementos desordenados.Todo lo mencionado anteriormente es aplicable a la búsqueda de datos enestructuras de información.Los métodos de búsqueda pueden clasificarse en internos y externos, segúndonde estén almacenados los datos sobre los cuales se hará la búsqueda. Sedenomina búsqueda interna cuando todos los elementos se encuentran enmemoria principal, por ejemplo, almacenados en arreglos o listas ligadas. Sedenomina búsqueda externa cuando todos los elementos se encuentran enmemorias secundaria ( archivo almacenados en dispositivos tales como cintasdiscos magnéticos).

3.1 BUSQUEDA SECUENCIAL

La búsqueda secuencial consiste en revisar elemento por elemento hastaencontrar el dato buscado, o hasta llegar al final de la lista de datos disponibles.Primero se tratará sobre la búsqueda secuencial en arreglos, y luego en listasenlazadas. Cuando se habla de búsqueda en arreglos debe distinguirse entrearreglos desordenados y arreglos ordenados.La búsqueda secuencial en arreglos desordenados consiste, básicamente, enrecorrer el arreglo de izquierda a derecha hasta que se encuentre el elementobuscado o se termine el arreglo, lo que ocurra primero. Normalmente cuando unafunción de búsqueda concluye con éxito, interesa conocer en qué posición fuehallado el elemento buscado.

El algoritmo de búsqueda secuencial en arreglos desordenados es el que seexplica a continuación:

Page 70: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

ALGORITMO: Secuencialdesordenado

SECUENCIALORDENADO (V, N, X)

{ Este algoritmo busca secuencialmente el elemento X en el arreglo desordenadoV, de N componentes }

{ I es una variable de tipo entero. BANDERA es una variable de tipo booleano }

1. Hacer I 1 y BANDERA FALSO2. Repetir mientras ( I N ) y (BANDERA = FALSO )

2.1 Si V [I] = Xentonces

Hacer BANDERA VERDADEROsi no

Hacer I I + 12.2 { Fin del condicional del paso 2.1 ]

3. { Fin del ciclo del paso 2}4. Si BANDERA = VERDADER0

entoncesEscribir “El elemento esta en la posición I”

Si noEscribir “El elemento no esta en el arreglo”

5. { Fin condicional del paso 4 }

Son dos los posibles resultados a obtener por este algoritmo: la posición en la queencontró al elemento, o un mensaje de fracaso si el elemento no se halla en elarreglo.Si hubiera dos o más ocurrencias del mismo valor, se encuentra la primera deellas. Sin embargo, es posible modificar el algoritmo para obtener todas lasocurrencias del dato buscado.

El algoritmo también recibe el nombre de secuencial con bandera por utilizar lavariable auxiliar booleana en la condición de parada del ciclo. El empleo de estavariable evita seguir buscando una vez que el dato ha sido encontrado, con laventaja de que disminuye el número de comparaciones a realizar y por lo tantoaumenta la eficiencia del algoritmo.

3.2 BUSQUEDA BINARIA

La búsqueda binaria consiste en dividir el intervalo de búsqueda en dos partes,comparando el elemento buscado con el central. En este caso de no ser igualesse redefinen los extremos del intervalo (según el elemento central sea mayor omenor que el buscado) disminuyendo el espacio de búsqueda. El procesoconcluye cuando el elemento es encontrado, o bien cuando el intervalo debúsqueda se anula.

Page 71: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Este método funciona únicamente para arreglos ordenados. Con cada iteración delmétodo el espacio de búsqueda se reduce a la mitad, por lo tanto el número decomparaciones a realizar disminuye notablemente. Esta disminución resultasignificativa cuanto más grande sea el tamaño del arreglo.

A continuación se presenta el algoritmo de búsqueda binaria.

ALGORITMO: Binaria

BINARIA (V, N, X)

{Este algoritmo busca al elemento X en el arreglo ordenado V de N componentes}

{ IZQ, CEN y DER son variables de tipo entero. BANDERA es una variable de tipobooleano }

1. Hacer IZQ 1, DER N y BANDERA FALSO2. Repetir mientras (IZQ DER) y (BANDERA = FALSO)

Hacer CEN (IZQ + DER) / 22.1 Si X = V [CEN]

entoncesHacer BANDERA VERDADERO

si no {Redefinir intervalo de búsqueda }2.1.1 Si X > V [CEN]

EntoncesHacer IZQ CEN + 1

si noHacer DER CEN – 1

2.1.2 { Fin del condicional del paso 2.1.1 }2.2 { Fin del condicional del paso 2.1 }3. { Fin del ciclo del paso 2 }4. Si BANDERA = VERDADERO

entoncesEscribir “El elemento esta en la posición CEN”

si noEscribir “El elemento no esta en el Arreglo”

5. { Fin del condicional del paso 4 }

Page 72: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Ejemplo:

Sea V un arreglo de números enteros, ordenado de manera creciente como semuestra en la figura:

V

101 215 325 410 502 507 600 610 612 670

1 2 3 4 5 6 7 8 9 10

En la tabla siguiente se presenta el seguimiento del algoritmo anterior para x = 325

Tabla : Búsqueda Binaria.

PASO BANDERA IZQ DER CEN V[CEN] COMPARA

1 FALSO 1 10 5 502 325 < 502 ?2 FALSO 1 4 2 215 325 < 215 ?3 FALSO 3 4 3 325 325 = 325 ?4 VERDADERO

En las columnas IZQ y DER se colocaron los valores de los extremos izquierdo yderecho, respectivamente, del intervalo de búsqueda. En el primer paso seobtienen el elemento central, V[CENT]. Al comparar el elemento central con elvalor buscado, COMPARA, puede decidirse cómo redefinir el espacio debúsqueda, en este caso se recorre el extremo derecho. En el paso 2 se procedede manera similar. La diferencia radica en que ahora se recorre el extremoizquierdo del intervalo. En el paso 3 al comparar el elemento central con x, sedetermina que se ha encontrado el valor buscado.

En la figura se representa gráficamente, para este ejemplo, cómo se vareduciendo el intervalo de búsqueda.

Page 73: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

a)

1 5 10l_________________________l____________________________ _ l

IZQ CEN DER

b)

1 2 4l_____________l__________________l

IZQ CEN DER

3 4l_____l

IZQ=CEN DER

Figura: Reducción del intervalo de búsqueda. a) Paso 1. b) Paso

La tabla siguiente muestra el seguimiento del algoritmo anterior para x = 615, valorque no se encuentra en el arreglo.

Page 74: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Tabla: Búsqueda binaria

PASO BANDERA IZQ DER CEN V(CEN) COMPARA1 FALSO 1 10 5 502 615>502 ?2 FALSO 6 10 8 610 615>610 ?3 FALSO 9 10 9 612 615>612 ?4 FALSO 10 10 10 670 615>670 ?5 FALSO 10 9

En los cuatro primeros pasos se procedió de la misma manera que en el casoanterior. Es decir, se comparó el elemento central con el valor buscado, y serecortó el espacio de búsqueda. En el paso 4, de la comparación resulta que deberedefinirse el extremo derecho, llegando de esta manera a anular el intervalo (IZQ> DER) en el paso 5.

La figura representa gráficamente cómo se va reduciendo el intervalo de búsquedahasta anularse.

a)

1 5 10l_____________________________l______________________________l

IZQ CEN DER

b)

6 8 10l______________l________________l

IZQ CEN DER

Figura: Reducción del intervalo de búsqueda a) Paso 1 b)Paso 2

Page 75: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

3.3 Búsqueda por transformación de claves

Los dos métodos analizados anteriormente permiten encontrar un elemento en unarreglo, pero en ambos el tiempo de búsqueda es proporcional al número decomponentes del mismo. Es decir, que a un mayor número de elementos se deberealizar un mayor número de comparaciones. Además se mencionó que si bien elmétodo de búsqueda binaria es más eficiente que el secuencial, tiene la restricciónde que el arreglo debe estar ordenado.El método llamado por transformación de claves (hash), permite aumentar lavelocidad de búsqueda sin necesidad de tener los elementos ordenados. Cuentatambién con la ventaja de que el tiempo de búsqueda es prácticamenteindependiente del número de componentes del arreglo.Suponer que se tiene una colección de datos, cada uno de ellos identificado poruna clave. Es claro que resulta atractivo poder tener acceso a ellos de maneradirecta (sin tener que recorrer algunos datos antes de llegar al buscado). Elmétodo por transformación de claves permite esto. Trabaja basándose en unafunción de transformación o función hash (H) que convierte una clave dada en unadirección (índice) dentro del arreglo.

dirección H (clave)

La función hash aplicada a la clave da un índice del arreglo, lo que permiteaccesar directamente sus elementos. El caso más trivial se presenta cuando lasclaves son números enteros consecutivos. Suponer que se desea almacenar lainformación relacionada a 100 alumnos cuyas matrículas son números del 1 al100. En este caso debe definirse un arreglo de 100 elementos con índicesnuméricos comprendidos entere los valores 1 y 100. Los datos de cada alumnoocuparán la posición del arreglo que se corresponda con el número de lamatrícula, de esta manera se podrá accesar directamente la información de cadaalumno. Suponer ahora que se desea almacenar la información de 100empleados. La clave de cada empleado será su número del seguro social. Si laclave está formada por 11 dígitos, resulta por completo ineficiente definir unarreglo con 99 999 999 999 elementos para almacenar solamente los datos de100 empleados. Utilizar un arreglo tan grande asegura la posibilidad de accesardirectamente sus elementos, sin embargo el costo en memoria es excesivo.Siempre debe equilibrarse el costo por espacio de memoria con el costo portiempo de búsqueda.Cuando se tienen claves que no se corresponden con índices (por ejemplo, porser alfanuméricas), o bien cuando las claves son valores numéricos muy grandes,debe utilizarse una función hash que permita transformar la clave para obteneruna dirección apropiada. Esta función hash debe ser simple de calcular y debeasignar direcciones de la manera más uniforme posible. Es decir, dadas dosclaves diferentes debe generar posiciones diferentes. Si esto no ocurre (H(K1) =d,H(K2)=d y K1 K2), hay una colisión. Se define, entonces, una colisión como laasignación de una misma dirección a dos o más claves distintas.Por todo lo mencionado, para trabajar con este método de búsqueda debe elegirsepreviamente:

Page 76: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Una función hash que sea fácil de calcular y que distribuya uniformemente lasclaves.

Un método para resolver colisiones. Si éstas se presentan se debe contar conalgún método que genere posiciones alternativas

Se tratará sobre estos dos aspectos separadamente.Busqueda por transformación de claves (hash)

El método por transformación de claves tiene básicamente las mismascaracterísticas que el método presentado anteriormente.Los archivos normalmente están organizados en áreas, llamadas cubetas. Lascubetas están formadas por cero, uno o más bloques de registros. Por lo tanto,la función hash, aplicada a una clave, dará como resultado un valor que hacereferencia a una cubeta en la cual puede estar el registro buscado.Tal como se mencionó en búsqueda interna, la elección de una adecuadafunción hash y de un método para resolver colisiones es fundamental paralograr mayor eficiencia en la búsqueda.Antes de presentar algunas funciones hash, se hará un comentario sobre lascolisiones. Los bloques contienen un número fijo de registros. Con respecto alas cubetas no se establece un límite en cuanto al número de bloques quepueden almacenar. Esta característica de las cubetas permite solucionar, almenos, parcialmente, el problema de las colisiones. Sin embargo, si el tamañode las cubetas crece considerablemente, se perderán las ventajas propias deeste método. Es decir, si el número de bloques a recorrer en una cubeta esgrande, el tiempo necesario para ello será significativo y por lo tanto ya no secontará con la ventaja del acceso directo que caracteriza al método portransformación de claves.En la figura se presenta una estructura de archivo organizado en cubetas, lasque a su vez están formadas por bloques.

Directorios de cubetas

Figura: Archivo organizador en cubetas de bloques

0

1

2

3

4

5

BLOQUE 1 BLOQUE 2

BLOQUE 1

BLOQUE 1 BLOQUE 3BLOQUE 2

Page 77: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Tal como se muestra en la figura, cada cubeta puede tener un apuntador a unbloque. Si una cubeta tiene dos o más bloques, se establecen ligas entre ellos.Dada la clave de un registro buscado, se aplicará una función hash la cualdará como resultado un número de cubeta. Una vez localizada la cubeta,habrá que recorrer los bloques de la misma hasta encontrar el registro, o bienhasta llegar a un bloque con puntero nulo, lo cual indicará que no existen otrosbloques.Debe elegirse una función hash que distribuya las claves a través de lascubetas, de tal manera que se evite la concentración de numerosas claves enuna cubeta mientras otras permanecen vacías. A continuación se presentaránalgunas de las funciones hash más comunes.

3.3.1 Funciones hash

Una función hash puede definirse como una transformación de clave adirección, ya que al aplicar una función hash a una clave resulta el número decubeta en la cual puede estar el registro con dicha clave.La función debe transformar las claves para que la dirección resultante sea unnúmero comprendido entre los posibles valores de las cubetas. Por ejemplo, sise tienen 10 000 cubetas enumeradas del 0 al 9999, las direccionesproducidas por la función deberán ser valores comprendidos entre el 0 y el9999. Si las claves fueran alfabéticas o alfanuméricas, primero deberánconvertirse a numéricas, tratando de no perder información, para luego sertransformadas a una dirección. Es importante que la función distribuyahomogéneamente las claves entre los números de cubetas disponibles.Las funciones módulo, cuadrado, plegamiento y truncamiento presentadaspara búsqueda interna son válidas también para búsqueda externa. Otrafunción que puede utilizarse para el cálculo de direcciones es la de conversiónde bases, aunque no proporciona mayor homogeneidad en la distribución. Detodas las citadas, la función módulo es de las que ofrece mayor uniformidad.

Como ya se ha mencionado, seleccionar una buena función hash esimportante pero también es difícil. No hay reglas que permitan determinar cuálserá la función más apropiada para un conjunto de claves, de tal manera queasegure la máxima uniformidad en la distribución de las mismas. Hacer unanálisis de las principales características de las claves, puede ayudar en laelección de la función hash.Algunas de las funciones hash más utilizadas se detallan abajo.

Función módulo (por división)

Co9nsiste en tomar el residuo de la división de la clave por el número decomponentes del arreglo. Suponer que se tiene un arreglo de N elementos, ya seaK la clave del dato a buscar. La función hash queda definida por la siguientefórmula:

Page 78: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

En la fórmula anterior, puede observarse que al residuo de la división se le suma1, esto es para obtener un valor entre 1 y N.Para lograr una mayor uniformidad en la distribución, N debe ser un número primoo divisible por muy pocos números. Por lo tanto dado N, si éste no es un númeroprimo se tomará el valor primo más cercano.

EJEMPLO

Sean N= 100 el tamaño del arreglo, y sean sus direcciones los números entre 1 y100. Sean K1= 7259 y K2 = 9359 dos claves a las que deban asignarse posicionesen el arreglo. Se aplica la fórmula anterior con N =100, para calcular lasdirecciones correspondientes a K1 y K2.

H(K1)= 7259 mod 100 + 1 = 60H(K2)= 9359 mod 100 + 1 = 60

Como H (K1) es igual a H(K2) y K1 es distinto de K2, se está ante una colisión.Se aplica ahora la fórmula anterior con N igual a un valor primo en vez de utilizar Nigual a 100.H(K1)= 7259 mod 97 + 1 =82H(K2)= 9359 mod 97 + 1 =48

Con N = 97 se ha eliminado la colisión.

Función cuadrado

Consiste en elevar al cuadrado la clave y tomar los dígitos centrales comodireccion. El número de dígitos a tomar queda determinado por el rango del índice.Sea K la clave del dato a buscar. La función hash queda definida por la siguientefórmula:

Formula

La suma de una unidad a los dígitos centrales es para obtener un valor entre 1 yN.

H(k) = K mod N + 1

H(k)= dígitos_centrales (K2 )+1

Page 79: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

EJEMPLO

Sean N= 100 el tamaño del arreglo, y sean sus direcciones los números entre 1 y100. Sean K1=7259 y K2=9359 dos claves a las que deban asignarse posicionesen el arreglo. Se aplica la fórmula para calcular las direcciones correspondientes aK1 y K2.

K1= 52693081K2= 87590881

H(K1)=dígitos_centrales (52693081)+1= 94

H(K2)= dígitos_centrales (87590881)+1=91

Como el rango de índices en nuestro ejemplo, varía de 1 a 100 se tomansolamente los dígitos centrales de cuadrado de las claves.

FUNCIÓN PLEGAMIENTO.

Consiste en dividir la clave en partes de igual número de dígitos (la última puedetener menos dígitos) y operar con ellas, tomando como dirección los dígitos menossignificativos. La operación entre las partes puede hacerse por medio de sumas omultiplicaciones. Sea K la clave del dato a buscar. K está formada por los dígitosd1, d2,..., dn. La función hash queda definida por la siguiente fórmula:

Fórmula

El operador que aparece en la fórmula operando las partes de la clave es el desuma.Pero como se aclaró antes, puede ser el de la multiplicación. La suma de unaunidad a los dígitos menos significativos (dígmensig) es para obtener un valorentre 1 y N.El ejemplo presenta un caso de función hash por plegamiento.

EJEMPLO:

Sean N = 100 el tamaño del arreglo, y sean sus direcciones los números entre 1 y100.Sean K1= 7259 y K2 = 9359 dos claves a las que deban asignarse posiciones en elarreglo. Se aplica la fórmula para calcular las direcciones correspondientes a K1 yK2.

H(K1)= dígmensig (72 + 59) + 1= dígmensig ( 131) + 1 = 32

H(k)= dígmensing ((d1...di) + (di+1...dj)+ ...+ (d1 ..,.dn)) + 1

Page 80: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

H(K2)= dígmensig (93 + 59 ) + 1 dígmensig (152) +1= 53.

De la suma de las partes se toman solamente dos dígitos porque los índices delarreglo varían de 1 a 100.

Función truncamiento.

Consiste en tomar algunos dígitos de la clave y formar con ellos una dirección.Este método es de los más sencillos, pero es también de los que ofrecen menosuniformidad en la distribución de las claves.

Sea K la clave del dato buscar. K está formado por los dígitos d1,d2,..., dn. Lafunción hash queda definida por la siguiente fórmula:

Fórmula

La elección de los dígitos es arbitraria. Podrían tomarse los dígitos de lasposiciones impares o de las pares. Luego podría unírseles de izquierda a derechao de derecha a izquierda. La suma de una unidad a los dígitos seleccionados espara obtener un valor entre 1 y 100.El ejemplo presenta un caso de función hash por truncamiento.

EJEMPLO

Sean N= 100 el tamaño del arreglo, y sean sus direcciones los números entre 1 y100.Sean K1= 7259 y K2 = 9359 dos claves a las que deban asignarse posiciones en elarreglo. Se aplica la fórmula anterior para calcular las direccionescorrespondientes a K1 y K2.

H(K1)= elegirdígitos ( 7 2 5 9 ) + 1 =76H(K2)= elegirdígitos ( 9 3 5 9 ) + 1 = 96

En este ejemplo se toma el primer y tercer número de la clave y se une éste deizquierda a derecha.En todos los casos anteriores se presentan ejemplos de claves numéricas. Sinembargo, en la realidad las claves pueden ser alfabéticas o alfanuméricas. Engeneral, cuando aparecen letras en las claves se suele asociar a cada una unentero a efectos de convertirlas en numéricas.

A B C D ..............Z01 02 03 04 27

H(k)= elegirdígitos (d1 d2......dn) + 1

Page 81: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Si por ejemplo la clave fuera ADA, su equivalente numérica sería 010401. Sihubiera combinación de letras y números, se procedería de la misma manera. Porejemplo, dada una clave Z4F21, su equivalente numérica sería 2740621. Otraalternativa sería, para cada carácter, tomar el valor decimal asociado según elcódigo ASCII. Una vez obtenida la clave en su forma numérica, se puede utilizarnormalmente cualquiera de las funciones antes mencionadas.

3.3.2 SOLUCION DE COLISIONES

La elección de un método adecuado para resolver colisiones es tan importantecomo la elección de una buena función hash. Cuando la función hash obtiene unamisma dirección para dos claves diferentes, se está ante una colisión.Normalmente, cualquiera que sea el método elegido, resulta costoso tratar lascolisiones. Es por ello que debe hacerse un esfuerzo por encontrar la función queofrezca mayor uniformidad en la distribución de las claves.La manera más natural de resolver el problema de las colisiones es reservar unacasilla por clave. Es decir, que aquéllas se correspondan una a una con lasposiciones del arreglo. Pero como ya se mencionó, esta solución puede tener unalto costo en memoria. Por lo tanto deben analizarse otras alternativas quepermitan equilibrar el uso de memoria con el tiempo de búsqueda.

Solución de colisiones

Como se mencionó en búsqueda interna, una de los aspectos a considerar enel método por transformación de claves es la solución de colisiones. Cuandodos o más elementos con distintas claves tienen una misma dirección, seorigina una colisión.Para evitar las colisiones se debe elegir un tamaño adecuado de cubetas y debloques. Con respecto a las cubetas, si se definen muy pequeñas el númerode colisiones aumenta, mientras que si se definen muy grandes se pierdeeficiencia en cuanto a espacio de almacenamiento. Además, si se necesitaracopiar una cubeta en memoria principal y la misma fuera muy grande,entonces se tendrían problemas por falta de espacio. Otro inconveniente quese presenta en el caso de cubetas muy grandes, es que se requiere muchotiempo para recorrerlas. Con respecto al tamaño de los bloques, se hacereferencia a capacidad de estos para almacenar registros. Un bloque puedealmacenar uno, dos o más registros. Normalmente los tamaños de las cubetasy bloques dependen de las capacidades del equipo con el que se estetrabajando.Utilizando la estructura presentada en la figura anterior no se tendríanproblemas de colisiones, debido a que a pesar de que la cubeta puede estarocupada, se pueden seguir enlazando tantos bloques como fueran necesarios.Este esquema de solución se corresponde con el presentado en búsquedainterna, bajo el nombre de encadenamiento. Sin embargo, no siempre esposible definir una estructura como esta. Considérese un archivo organizadoen cubetas como l que se muestra en la figura anterior.

Page 82: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Métodos más utilizados para resolver colisiones, los cuales pueden clasificarseen: Reasignación Arreglos anidados Encadenamiento

Resignación

Existen varios métodos que trabajan bajo el principio de comparación yreasignación de elementos. Se analizarán tres de ellos:

Prueba lineal Prueba cuadrática Doble dirección hash

a) Prueba lineal

Consiste en que un vez detectada la colisión se debe recorrer el arreglosecuencialmente a partir del punto de colisión, buscando al elemento. El procesode búsqueda concluye cuando el elemento es hallado, o bien cuando se encuentrauna posición vacía. Se trata al arreglo como a una estructura circular: el siguienteelemento después del último es el primero.

A continuación se expone el algoritmo de solución de colisiones por medio de laprueba lineal.

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 KGenera dirección2. Si VD. ClaveK

entoncesEscribir “El elemento esta en la posición D”

si noHacer DX D1

2.1Repetir mientras VDX.CLAVEKyVDXVACIOy DXD)Hacer DXDX12.1.1 Si DX N1 entoncesHacer DX1

Page 83: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

2.1.2 Final del condicional del paso 2.1.12.2Fin de ciclo del paso 2.12.3Si VDX.CLAVEK

entoncesEscribir “ El elemento está en la posición DX”

si noEscribir “El elemento no está en el arreglo”

2.4Fin del condicional del paso 2.33. Fin del condicional del paso 2

La tercera condición del ciclo del 2.1 es para evitar caer en un ciclo infinito, si elarreglo estuviera lleno y el elemento a buscar no se encontrara en él.La principal desventaja de este método es que puede haber un fuerteagrupamiento alrededor de ciertas claves, mientras que otras zonas del arreglopermanezcan vacías.Si las concentraciones de claves son muy frecuentes, la búsqueda seráprincipalmente secuencial perdiendo así las ventajas del método hash. Con elejemplo se ilustra el funcionamiento del algoritmo anterior

V

80

435425563513104

Page 84: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

a)

K H(K)

25 643 456 735 654 513 480 1

104 5

b)

EJEMPLO

Sea V un arreglo de 10 elementos. Las claves 25, 43, 56, 35, 54, 13, 80 y 104fueron asignados según la función hash:

H(K)=K mod 10 + 1

En la figura anterior se aprecia el estado del arreglo a) y la tabla con H(K)para cada clave b).

En la tabla anterior se presenta el seguimiento del algoritmo anterior parael caso del ejemplo anterior, y el dato a buscar igual a 35.

Tabla Solución de colisiones por la prueba lineal

PASO D DX COMPARA1 6 - 35=25?2 6 7 35=56?3 6 8 35=35?

Al aplicar la función hash a la clave 35, resulta una dirección (D) igual a 6,paso 1. Sin embargo, en esa posición no se encuentra el elemento buscado, por lo

Page 85: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

que se empieza a recorrer secuencialmente al arreglo a partir de la posición 7(DX), paso 2. En este caso la búsqueda concluye al encontrar el valor deseado enla posición 8, paso 3.

b) Prueba cuadrática

Este método es similar al de la prueba lineal. La diferencia consiste en que en elcuadrático las direcciones alternativas se generarán como D + 1, D + 4, D + 9,...,D + i2 en vez de D + 1, D + 2,..., D + i. Esta variación permite una mejordistribución de las claves colisionadas.

El algoritmo de solución de colisiones por medio de la prueba cuadrática seestudia enseguida.

Algoritmo Pruebacuadrática

PRUEBACUADRÁTICA (V, N, K)

(Este algoritmo busca al dato con la clave K en el arreglo V de N elementos.Resuelve el problema de las colisiones por medio de la prueba cuadrática. )

D, DX y I son variables tipo entero

1. Hacer D H (K) Genera dirección 2. Si V(D) CLAVE = K

entoncesEscribir “ El elemento está en la posición D”

si noHacer I 1 y DX D + I2

2.1 Repetir mientras (V[DX]. CLAVE K) y (V[DX] VACÍO)Hacer I I + 1 y DX D+ I2

2.1.1 Si DX > N entoncesHacer I 0, DX 1 y D 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]. CLAVE = K

entoncesEscribir “El elemento está en la posición DX”

si noEscribir “El elemento no está en el arreglo”

2.4 { Fin del condicional del paso 2.3}3. { Fin del condicional del paso 2 }

Page 86: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

La principal desventaja de este método es que pueden quedar casillas delarreglo sin visitar. Además, como los valores de las direcciones varían en I2

unidades, resulta difícil determinar una condición general para detener el ciclodel punto 2.1. Este problema podría solucionarse empleando una variableauxiliar, cuyos valores dirijan el recorrido del arreglo de tal manera quegarantice que serán visitadas todas las casillas.

A continuación se presenta un ejemplo que ilustra el funcionamiento delalgoritmo.

EJEMPLO

Sea V un arreglo de 10 elementos. Las claves 25, 43, 56, 35, 54, 13, 80 y 104fueron asignadas según la función hash:

H(K) = K mod10 + 1

En la figura se presenta el estado del arreglo a} y la tabla con H(K) para cadaclave b).La tabla contiene el seguimiento del algoritmo anterior para el caso del ejemploanterior, y el dato a buscar igual a 35.

V K H(K)

1 80 25 6

2 43 4

3 56 7

4 43 35 6

5 54 54 5

6 25 13 4

7 56 80 1

8 13 104 5

9 104

10 35b)

a)

Page 87: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Figura Solución de colisiones por la prueba cuadrática. a) Arreglos.b) Tabla con H(K)

Tabla Solución de colisiones por la prueba cuadrática.

PASO D I DX COMPARA

1 6 - - 35=25 ?

2 6 1 7 35=56?

3 6 2 10 35=35?

Aplicar la función hash a la clave 35 , resulta una dirección (D) igual a 6,paso1.

Pero en esa posición no se encuentra el elemento buscado. Se calcula DX, paso2, como la suma de D + I2. Se continúa recorriendo el arreglo, comparando lasposiciones indicadas por DX con el dato. En el paso 3, se encuentra el valordeseado en la posición 10 del arreglo.

c) Doble dirección hash

Consiste en que una vez detectada la colisión se debe generar otra direcciónaplicando la función hash a la dirección previamente obtenida. El proceso sedetiene cuando el elemento es hallado, o bien cuando se encuentra una posiciónvacía.

D H(K)D´ H(D)D” H(D´)...

La función hash que se aplique a las direcciones puede o no ser la mismaque originalmente se aplicó a la clave. No existe una regla que permita decidir cuálserá la mejor función a emplear en el cálculo de las sucesivas direcciones.

Algoritmo de solución de colisiones por medio del método de la dobledirección hash.

Page 88: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Algoritmo Dobledirección

DOBLEDIRECCIÓN (V,N,K)

{ Este algoritmo busca el dato con clave K en el arreglo V de N elementos.Resuelve el problema de las colisiones por medio de la doble dirección hash }

{D y DX son variables de tipo entero }

1. Hacer D H (K)2. Si V [D]. CLAVE = K

entoncesEscribir “El elemento esta en la posición D”.

si noHacer DX H´(D)

2.1 Repetir mientras (V[DX].CLAVE K),(V[DX] VACÍO) y (DX D)Hacer DX H´(DX)

2.2[Fin del ciclo del paso 2.1 ]2.3Si V[DX].CLAVE =K

EntoncesEscribir “El elemento está en la posición DX”

si noEscribir “El elemento no están en el arreglo”

2.4{Fin del condicional del paso 2.3}3. {Fin del condicional del paso 2 }

Page 89: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

3.4 Árboles binarios de búsqueda

Los árboles son una estructura poderosa y eficiente para almacenar yrecuperar información. Debido al dinamismo que caracteriza a los árboles, elbeneficio de utilizarlos es mayor, cuanto más variable sea el número de datosa tratar.

La estructura trie, que es una variante de la estructura tipo árbol.

Un trie es un árbol de N ramas que se caracteriza porque la información decada nodo es común a todos sucesores. Por lo tanto, para buscar una clave seprocederá carácter por carácter de manera descendiente en el árbol. Lainicial de la clave estará en la raíz del árbol, y en el nodo terminal un indicadorde final de clave. A continuación se ilustra este concepto con un ejemplo.

EJEMPLO

Sean las proposiciones del castellano las palabras claves a almacenar: A,ANTE, BAJO, CABE, CON, CONTRA, DE, DESDE, EN, ENTRE, HACIA,HASTA, PARA, POR, SEGÚN, SIN, SO, SOBRE TRAS. La figura muestra laestructura tries correspondientes a estas claves.

A

λN

T

E

λ

Page 90: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

B

A

J

O

λ

C

A O

NB

λT

A

λ

R

E

λ

Page 91: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

E

λ S

D

E

λ

E

N

R

λ

E

D

Page 92: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

I

A

SC

λ

A

T

A

λ

H

P

A O

R

A

λ

R

λ

Page 93: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

SO

SIN

SEGÚNSOBRE

TRAS

Figura: Representación de tries

Como se puede apreciar en la representación de tries de la figura anterior larelación entre esta estructura y la de árbol es inmediata. Si se definiera unadoble liga (predecesor y sucesor) por cada nodo, la búsqueda de elementos a

Page 94: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

través del trie se facilitaría notablemente. Igualmente favorecería lasoperaciones de eliminación e inserción.Es necesario aclarar que no representan la clave carácter por carácter, sinoque a los caracteres comunes a varias claves o finales los incluyen en un solonodo (figura siguiente)

ANTE

CONCABE

CONTRA

Figura: Representación de tries

Otra forma de representar los tries es por medio de árboles binarios. Paratransformar un árbol de N claves en uno binario debe aplicarse el siguientecriterio para cada nodo: la rama izquierda indica relación de descendencia y larama derecha indica relación de hermandad entre nodos. A continuación, en lafigura siguiente, se presenta uno de los tries del ejemplo anterior, utilizandouna estructura de árbol binario.

Page 95: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

ÁrbolesEn una estructura de árboles los datos están organizados donde sus elementos deinformación están relacionados por sus ramificaciones.

Definición: un árbol es un conjunto finito de uno o más nodos, tal que:

1. hay un nodo con una especial designación llamado raíz;

2. el resto de los nodos están separados dentro de n>=0 conjuntosdesordenados T1,T2,...Tn , donde cada uno de estos conjuntos es un árbol.T1,T2,..Tn son llamados subárboles de la raíz.

GRADO: es el número de subárboles de un nodo, cuando el grado= 0 se dice quees una hoja o nodo terminal.

Los subárboles de la raíz de X son llamados hijos de X

Page 96: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

La profundidad o altura de un árbol está definida por su nivel mayor.

Nodo

Para un árbol de grado 3 más del 2/3 de sus ligas apuntan a null, por lo tanto eldesperdicio aumenta.

En una estructura de árbol binario solo aprox. ½ de sus ligas apuntan a null.

Page 97: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

a) el orden los hijos no es importanteb) la relación el hijo más izquierdo, el siguiente hijo derecho es su hermano

Transformaciones para un árbol binario:

Para cualquiera de estas dos transformaciones la raíz no tendrá subárbol derecho.

Page 98: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Bosque

Page 99: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Árboles Binarios

Se utilizan en:- comparación de algoritmos- llamados a subprogramas- recursión de algoritmos- aplicación de búsqueda binaria

Definición:

Un árbol binario consiste de un nodo llamado raíz y dos subárboles denominadossubárbol izquierdo y subárbol derecho.

Trayectorias:- R I D - R D I- I R D - D R I- I D R - D I R

Preorder - R I DInorder - I R DPostorder - I D R

expresión a + b n! a - (b * c) log x (a<b) or (c<d)

preorder +a b !n -a * b c log x or < a b < c dinorder a + b n! a - (b * c) log x (a<b) or (c<d)postorder a b + n! a b c * - x log a b < c d < or

Page 100: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

3.5 Árboles de búsqueda binaria

Debe de cumplir con lo siguiente:

a) cada nodo deberá contener una llave, que no podrá tener un valor duplicadob) la llave del hijo izquierdo del nodo(si existe) deberá ser menor a la llave de supadrec) la llave del hijo derecho del nodo(siexiste) deberá ser mayor a la llave de supadre.typedef struct cuerda{

char key[4];} TreeEntry;

typedef struct treenode{

TreeEntry entry;struct treenode *left;struct treenode *right;

}TreeNode;

TreeNode *TreeSearch(TreeNode *root, TreeEntry target){

if (root)if (strcmp(root->entry.key, target.key)<0)

root= TreeSearch(root->left, target);else

if (strcmp(root->entry.key, target.key)>0)root = TreeSearch(root->right, target);

return root;

}}

Para que el algoritmo TreeSearch sea eficiente en su búsqueda es importante quela estructura del árbol sea lo más semejante a un árbol completo, en donde seríasimilar al concepto de la búsqueda binaria y su eficiencia.

Page 101: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

número de nodos en un árbol completo = 2k -1 donde k es la altura

TreeNode *InsertTree(TreeNode *root, TreeNode *newnode){

if (!root) {root=newnode;root->left=root->right=NULL;}

else if (LT(newnode->entry.key,root->entry.key))root->left=InsertTree(root->left,newnode);

elseroot->right=InsertTree(root->right,newnode);

return root;}

Eliminar un nodo en un árbol de búsqueda

Casos:a) eliminar una hojab) eliminar un padre con subárbol izq.

Page 102: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

c) eliminar un padre con subárbol izq. y subárbol der.

3.5.1 Árboles Balanceados (AVL)

Un árbol AVL es un árbol de búsqueda binaria en el cual las alturas del subárbolizquierdo y del subárbol derecho a la raíz difieren en 1. En cada nodo de un árbolAVL tiene un valor asociado que es el factor de balance.

Factor de balance = altura subder - altura subizq

Valores posibles = 0, -1, 1Símbolos:/ nodo altura izquierda\ nodo altura derecha- nodo igual altura

Page 103: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Rotaciones:

simple D D afecta solo a 2 nodosI I

compuesta D I afecta a 3 nodos

I D

D D - ramas derechaI I - ramas izquierdas

D I - por la rama derecha e izquierdaI D - por la rama izquierda y derecha

Page 104: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

rotación I I :nodo->left = nodo1->rightnodo1 ->right = nodonodo = nodo1

rotación D D :nodo->right = nodo1-> leftnodo1->left = nodonodo = nodo1

Page 105: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

rotación D I :nodo1->left = nodo2->rightnodo2 ->right = nodo1nodo->right = nodo2->leftnodo2->left = nodonodo= nodo2

rotación I D :nodo1->right = nodo2->leftnodo2->left = nodo1nodo->left = nodo2->rightnodo2->right = nodonodo=nodo2

Procedure AVL-Insert(X,Y,T) //algoritmo iterativo{/* the identifier X is inserted into the AVL tree with root T. Each node is assumed tohave an identifier field IDENT, LCHILD,RCHILD fields and balance factor BF.BF(P) = height of LCHILD(P) - height of RCHILD(P).Y is set such that IDENT(Y)=X*/

//special case: empty tree T=0//if T=0 then { call Getnode(Y); IDENT(Y)=X; T=Y;

Page 106: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

BF(T)=0;LCHILD(T)=null; RCHILD(T)=null;return;

}/*phase 1: locate insertion point for X. A keeps track of most recent node withbalance factor ±1 and F is the parent of A. Q follows P through the tree.*/F=NULL; A=T;P=T; Q=NULL;while P!= NULL do // search T for insertion point for X{if BF(P)!=0 then { A=P; F=Q;}case{

: X<IDENT(P): Q=P; P=LCHILD(P); //take left branch

:X >IDENT(P): Q=P; P=RCHILD(P); //take right branch

: else: Y=P; return //X is in T

}}/*phase 2: Insert and rebalance. X is not in T and may be inserted as appropriatechild of Q*/call Getnode(Y); IDENT(Y)=X; LCHILD(Y)=NULL;RCHILD(Y)=NULL; BF(Y)=0;if X <IDENT(Q) then LCHILD(Q) =Y; //insert as left child

else RCHILD(Q)=Y; //insert as right child

/* adjust balance factors of nodes on path from A to Q. Note that by the definition ofA, all nodes on this parth must have balance factors of 0 and so will change to ±1.d=+1 implies X is inserted in left subtree of A. d=-1 implies X is inserted in rightsubtree of A*/

if X>IDENT(A) then { P=RCHILD(A); B=P; d=-1;}else {P=LCHILD(A); B=P; d= +1;}

while P!=Y do{if X >IDENT(P)

then {BF(P) =-1; P=RCHILD(P);} //height of right increases by 1else {BF(P)=+1; P=LCHILD(P);} //height of left increases by 1

}

/* Is tree unbalanced?*/if BF(A)=0 then {BF(A)=d; return} //tree still balancedif BF(A)+d=0 then {BF(A)=0;return} //tree is balanced//tree unbalanced, determine rotation type

Page 107: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

if d=+1 then //left imbalancecase{: BF(B)=+1: //rotation type LLLCHILD(A)=RCHILD(B); RCHILD(B)=A;

BF(A)=BF(B)=0;: else:

C=RCHILD(B);CL=LCHILD(C);CR=RCHILD(C);RCHILD(B)=CL;LCHILD(A)=CR;LCHILD(C)=B;RHILD(C)=A;case{:BF(C)=+1; BF(A)=-1; BF(B)=0 //LR(b):BF(C)=-1; BF(B)=+1; BF(A)=0 //LR(c):else:

BF(B)=0;BF(A)=0; //LR(a)}BF(C)=0; B=C //B in a new root

}else

/*right imbalance; this is symmetric to left imbalance and is left as anexercise*/

/*subtree with root B has been rebalanced and is the new subtree of F. The originalsubtree of F had root A*/case{:F=NULL: T=B;:A=LCHILD(F): LCHILD(F)=B;:A=RCHILD(F): RCHILD(F)=B;

}}

TreeNode *InsertAVL(TreeNode **root, TreeNode *newnode, Boolean *taller)//algortimo recursivo{

if (!root) {root=newnode;root->left=root->right=NULL;root->bf=EH;*taller=true;

Page 108: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

}else if (EQ(newnode->entry.key,root->entry.key)) {

Error("duplicate key");}else if (LT(newnode->entry.key, root->entry.key)) {

root ->left=InsertAVL(root->left,newnode,taller);if (*taller)

switch (root->bf) {case LH:

root= LeftBalance(root,taller); break;case EH:

root->bf= LH; break;case RH:

root->bf= EH;*taller=false;break;

}else {

root ->right=InsertAVL(root->right, newnode, taller);if (*taller)

switch (root->bf) {case LH:

root->bf=EH;*taller=false; break;

case EH:root->bf= RH; break;

case RH:root=RigthBalance(root,taller);break;

}}

return root;}

TreeNode *RotateLeft(TreeNode *p){

TreeNode *rightchild=p;

if (!p)Error("it is impossible to rotate an empty tree in rotate left");

else if (!p->right)Error("it is impossible to make an empty subtree the root in rotateleft");

else {rightchild= p->right;p->right= rightchild->left;rightchild->left=p;

}

Page 109: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

return rightchild;}

TreeNode *RightBalance(TreeNode *root, Boolean *taller){TreeNode *rs=root->right;TreeNode *ls;

switch(rs->bf) {case RH:

root->bf=rs->bf=EH;root=RotateLeft(root);*taller=false;break;

case EH:Error("tree is already balanced");break;

case LH:ls=rs->left;switch(ls->bf){

case RH:root->bf=LH;rs->bf=EH;break,

case EH:root->bf=rs->bf=EH;break;

case LH:root->bf=EH;rs->bf=RH;break;

}ls->bf=EH;root->right=RotateRight(rs);root=RotateLeft(root);*taller=false;

}return root;}

Estos 2 últimos algoritmos requieren de la programación de su pareja simétrica:RotateRight y LeftBalance

Page 110: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

3.6 Búsqueda con fuerza bruta

Se alinea la primera posición del patrón con la primera posición del texto, y secomparan los caracteres uno a uno hasta que se acabe el patrón, esto es, seencontró una ocurrencia del patrón en el texto, o hasta que se encuentre unadiscrepancia.

Si se detiene la búsqueda por una discrepancia, se desliza el patrón en unaposición hacia la derecha y se intenta calzar el patrón nuevamente.

En el peor caso este algoritmo realiza comparaciones de caracteres.

3.6.1 Depth-first o Búsqueda en Profundidad (LIFO)

Depth-first siempre expande uno de los nodos a su nivel más profundo y sólocuando llega a un camino sin salida se regresa a niveles menos profundos.

En depth-first cada nodo que es explorado genera todos sus sucesores antes deque otro nodo sea explorado. Después de cada expansión el nuevo hijo es denuevo seleccionado para expansión.

Si no se puede continuar, se regresa al punto más cercano de decisión conalternativas no exploradas.

Se puede implementar añadiendo los sucesores de cada nodo al frente de laagenda (en esta caso la lista OPEN funciona como un stack)

Depth-first necesita almacenar un solo camino de la raíz a una hoja junto con los``hermanos'' no expandidos de cada nodo en el camino.

Por lo que con un factor de arborecencia de b y profundidad máxima de m, sunecesidad de almacenameitno es a los más bm.

Su complejidad en tiempo (cuanto se tarda) es O(bm) en el peor de los casos.

Page 111: I. TIPOS DE ARCHIVO DE ACUERDO A SU ORGANIZACIÓN Y ...

Para problemas con muchas soluciones depth-first puede ser más rápido quebreadth-first porque existe una buena posibilidad de encontrar una solucióndespués de explorar una pequeña parte del espacio de búsqueda

Depth-first no es ni completo ni óptimo y debe de evitarse en árboles de búsquedade profunidad muy grande o infinita.

3.6.2 Breadth-first search (búsqueda a lo ancho)

Explora progresivamente en capas del grafo de misma profundidad.

La forma de implementarlo es poner los sucesores de cada nodo al final de unacola o agenda, por lo que OPEN (lista de nodos por eplorar) se implementa comoun stack.

Breadth-first es completo (encuentra una solución si existe) y óptimo (encuentra lamás corta) si el costo del camino es una función que no decrece con laprofundidad del nodo.

Pero requiere de mucha memoria. Básicamente tiene que guardar la partecompleta de la red que está explorando.

Si se tiene un factor de arborecencia de b y la meta está a profundidad n,entonces el máximo número de nodos expandidos antes de encontrar unasolución es: 1 + b + b2 + b3 + ……….+ b n

Los requerimientos de memoria es un problema grande para breadth-first.

También el tiempo es un factor importante. Básicamente problemas de búsquedade complejidad exponencial no se pueden resolver, salvo para sus instancias máspequeñas.