You are on page 1of 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. Estructuras fundamentales de datos e introduccin a la algoritmia.

Clasificacin de los datos. Enteros Numricos Reales punto flotante Carcter Alfanumricos Simples Lgicos Puntero Constantes Variables Cadena punto fijo

Continentes Campos Contenidos Estticas Registros Arreglos Ficheros secuenciales Datos Estructurados Ficheros secuenciales Pila Densas Cola Dinmicas Listas Encadenadas O Enlazadas Simple Doble Circulares

rboles

Estructuras estticas: son aquellas cuyo tamao y estructura queda fijado en tiempo de definicin y permanecen inalterables durante la ejecucin del proceso en el que fueron declaradas. Estructuras dinmicas: son aquellas cuyo tamao u estructura puede variar en tiempo de ejecucin y su nica limitacin (tamao mximo) est dado por el tamao de la memoria que la soporta.

Pgina 1 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. Acciones estructuradas. o Simple. Es la ejecucin condicional de una accin.

SI condicin ENTONCES Accin; FIN SI. Primero se observa la certeza de la condicin, si sta conduce a una respuesta cierta, la accin es ejecutada a continuacin de la observacin, la cual finaliza la ejecucin. o Alternativa. Es la ejecucin alternativa de una entre dos acciones.

SI condicin ENTONCES Accin1; SINO Accin2; FIN SI. Primero se observa la certeza de la condicin, la cual es seguida de la accin1 si la condicin es cierta, o de la accin 2 si la condicin es falsa. o Seleccin mltiple. Es la ejecucin condicional de una entre varias acciones.

SEGN indicador HACER Valor1: accin1; Valorn: accinn; Otros: accin n+1; FIN SEGN. La ejecucin del texto provoca la bsqueda en la lista de los valores de aqul que corresponde al valor observado por el indicador. Se ejecutar una de entre todas las acciones enumeradas. La accin n+1 se asocia en todos los casos en los cuales el indicador no pertenece al conjunto de todos los n valores explcitamente enumerados. o Repetitivas. Es la ejecucin mltiple de una sola accin. 1. Repetir. (post-test) REPETIR Accin; HASTA QUE condicion. la ejecucin de este texto provoca sucesivamente la ejecucin de la accin, a continuacin la observacin de la condicin y ejecuta la accin hasta que la condicin sea falsa. La accin se ejecuta por lo menos una vez. 2. Mientras. (pre-test) MIENTRAS condicin HACER Accin; FIN MIENTRAS. La accin se ejecuta mientras la condicion sea verdadera. La accin se ejecuta como mnimo 0 (mientras) N.
Pgina 2 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

3. Manejada por contador. PARA Vc := Vi HASTA Vf , I HACER Accin; FIN PARA. Vc es una variable de tipo numrico llamada variable de control. Vi, Vf e I son variables de tipo numrico, constantes de tipo num o expresiones aritmticas. Vi recibe el nombre de valor inicial, Vf valor final e I es el incremento que se expresa cuando es distinto de 1, ste puede ppsitivo o negativo, pero no cero. Si el incremento es positivo: Vi < Vf. Si el incremento es negativo: Vi > Vf. Dentro del para no es correcto modificar el valor de la variable de control. Cuando finaliza el para, Vc queda indefinido. En el mientras y el repetir la variable condicional debe ser alterada dentro del ciclo por instruccin del algoritmo, a diferencia del para que no puede ser alterada dentro del ciclo.

Pgina 3 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Secuencias
Concepto y caractersticas Una secuencia es un conjunto de datos relacionados entre s que deben cumplir con ciertas caractersticas: o Existencia del primer elemento de la secuencia: el acceso a este elemento, permite el acceso posterior a los dems elementos de la secuencia. o Relacin de sucesin entre los elementos: todo objeto de la secuencia. salvo el ltimo, precede a uno de los dems elementos, su sucesor. o Finitud: puede ser conocida o no. Puede estar dada por la cantidad de elementos o bien por una marca de fin. Todas las secuencias deben ser finitas por lo que deben estar acotadas por una condicin de fin para evitar entrar en un ciclo infinito. o Existencia del ltimo elemento de la secuencia: debe estar definido un indicador de fin de secuencia: el elemento final, permite detener la enumeracin de la secuencia por la observacin de la caracterstica de este elemento. Declaracin
Var Sec: secuencia de caractres; V: caractr;

Sec: nombre de la secuencia. V: variable con la que recorreremos la secuencia, accediendo a sus elementos de uno en uno. Representacin grfica Una secuencia suele representarse grficamente de la siguiente forma:

Clasificacin de las secuencias Por su contenido: Puras: todos los elementos son de la misma especie o tipo. Se caracteriza porque el ltimo elemento es tratado de igual forma que los dems. Este tipo de secuencia es manejada con estructuras puras (post-test y manejada por contador) Impuras: son aquellas secuencias donde existe un elemento extrao que no es tratado y el cual indica el fin de la secuencia. En este caso, la secuencia se maneja con una estructura del tipo pre-test. Por la cantidad de elementos: Definidas: se conoce el nmero de elementos de la secuencia. Puede ser tratada con una estructura manejada por contador. Indefinidas: cuando el nmero de elementos de la secuencia no es conocido. Por lo tanto, la enumeracin de sta secuencia se detendr cuando se cumpla la condicin de haber encontrado la marca de fin. En consecuencia, se utiliza una estructura pre-test. Caracteristicas complementarias: Orden: existe un orden cuando la relacion sucesora es estroicta entre el primer elemento y el ultimo. Debe estar explicita en el planteo del problema.

Pgina 4 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Completitud: indica que entre elemento y su sucesor no existen ausencias. No se puede suponer, tiene que estar definida en el planteo del problema, ademas puede estar ordenada o no. Subsecuencias Son secuencias de menor nivel que pertenecen a una secuencia mayor de la cual heredan su caracteristicas. Se pueden presentar de dos maneras: en forma anidadas o enlazadas y en forma incluidas o jerarquizadas. Subsecuencias anidadas o enlazadas: son las palabras. - Palabra con contenido: conjunto de caractres distintos de blanco y de marca. Es una secuencia impura. - Palabra vaca: conjunto de caractres blancos. Es una secuencia impura. Subsecuencias incluidas o jerarquizadas: comparten todos los elementos. Un ejemplo es el texto. Algoritmos de secuencias puras e impuras
Accin Sec_Pura es Algoritmo Iniciar_adquisicin; Repetir Obtener_elemento; Tratar_elemento; Hasta que elemento=ltimo; FinAccin. Accin Sec_Impura es Algoritmo Iniciar_adquisicin; Obtener_elemento; Mientras elemento<>marca hacer Tratar_elemento; Obtener_elemento; FinMientras; Tratamiento_final; FinAccin.

Secuencia de caractres Conjunto de caractres dispuestos en forma aleatoria y secuencial. La mquina de caractres La mquina de caractres es una mquina abstracta capaz de procesar las secuencias de caractres. Est compuesta por los siguientes elementos: 1. Una ventana: a travs de la ventana se podrn observar los objetos que componen la secuencia de caractres, permitiendo el acceso de a uno por vez. 2. Un botn arrancar: la funcin de ste es colocar la cinta en la mquina para ser tratada. 3. Un botn avanzar: mediante ste botn se podr recorrer la secuencia, elemento a elemento, siempre en la misma direccin (de izquierda a derecha), accediendo a ellos de a uno por medio de la ventana. Luego de arrancar la secuencia, se la debe avanzar una vez para que el primer elemento de la secuencia aparezca en la ventana.

Pgina 5 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Acciones con secuencias Arrancar la secuencia: Arr (Sec); Avanzar la secuencia: Avz (Sec, V); Entonces las acciones Iniciar_adquisicin corresponde a arrancar la secuencia, y Obtener_elemento sera avanzar la secuencia. Para crear una secuencia se utiliza la misma accin que para arrancar una existente, pero hay que tener en cuenta que la secuencia creada se debe cerrar para agregar al final de la misma la marca de fin, de lo contrario el proceso de creacin no concluir perdindose as la totalidad de los datos ingresados. Arr (Sal); Crea una secuencia de nombre Sal, definida previamente en el ambiente. Cerrar (Sal); Agrega la marca de fin a Sal y la almacena definitivamente. Existen dos formas de controlar la finalizacin de una secuencia impura en la estructura pretest: 1. preguntando por la marca de fin, que podra ser *
Mientras (V<>*) hacer

2. utilizando el condicional No FDS (Nombre de Secuencia) - No Fin De Secuencia


Mientras No FDS (Sec) hacer

Tratamiento de secuencias de registros. Campo: es una agrupacin de datos simples con un objetivo (aportar mayor informacin), cada campo tiene que recibir un nombre y tendr su tipo y tamao propio. Campo continente: es un campo formado por contenido. Hay que dar el contenido.

Campo contenido: requiere que se le de tamao y tipo. Depende de un campo mayor.

Registro: es un agrupamiento de campos continentes y contenidos. Estructura compuesta de un nmero fijo de componentes llamados campos, donde cada uno de ellos viene definidos por su nombre y su tipo (no necesariamente deben ser todos de un mismo tipo). La menor unidad de informacin de un registro se denomina campo. Representacin de un registro.

Pgina 6 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. o o Lineal, grfica o esquemtica: consiste en la continuidad de celdas, donde cada dato tiene su rectngulo. La continuidad determina la relacin lgica que existe entre los campos. Jerrquica o arbrea: es puramente grfica, se utiliza en diseos globales y viene por traslado de la representacin de los sistemas. Trabaja con nodos de informacin. Nodos: son rectngulos que representan una entidad fsica lgica. o Por nivel o literario: es la representacin jerrquica de los datos donde cada nodo o cada elemento ocupa un rengln de escritura y las relaciones de dependencia y subordinacin se nota mediante el uso de sangra. Describimos a continuacin el ambiente. Alumno = registro Legajo 6N; Ape_nbre AN40; Fe_nac fecha; FIN REGISTRO. De esta forma vamos a definir un registro en el ambiente. Para poder acceder a las componentes de una variable registro, utilizamos una expresin llamada selector de campo. Esta expresin est formada por el nombre de la variable registro y el nombre del campo al cual queremos acceder, separado por un punto.

Arreglos
Concepto Un arreglo es una estructura de datos en la que se almacena una coleccin de datos del mismo tipo. Se caracteriza por: o Los elementos del arreglo se colocan en posiciones contiguas, tienen continuidad fsica y se almacenan en memoria interna. o Es esttica, es decir, tiene un tamao definido y fijo. o Tiene un nico nombre que representa a todos los elementos y estos se diferencian por un ndice. o Acceso directo a los elementos individuales del arreglo. Declaracin
Tipo Alumnos: arreglo [1..100] de enteros;

Alumnos: nombre del arreglo. [1..100]: longitud del arreglo. En este caso se tiene un arreglo de 100 elementos. El intervalo de longitud del arreglo suele ser de tipo simple, como entero o caractr, pero nunca real.
Planes: arreglo [A..F] de enteros;

Un elemento del arreglo se identifica por el nombre del arreglo y el ndice adecuado contenido entre corchetes.
Alumnos[1]; Alumnos[2];; Alumnos[100];
Pgina 7 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. Planes[A]; Planes[B];; Planes[F];

Los elementos componentes de un arreglo pueden ser tanto datos simples como datos estructurados.
Tipo Alu=registro Leg: entero (5); Nomb: an (30); DNI: entero (8); Finregistro; A: arreglo [1..100] de Alu;

Operaciones con arreglos Los arreglos no se pueden leer/escribir en una sola operacin o sentencia. La lectura o escritura de un arreglo se debe hacer elemento a elemento, para lo cual se utilizan las estructuras repetitivas. Lectura: c) Bucle Repetir I:=1; a) Bucle Para
Para i:=1 hasta 100 hacer Esc (Alumnos[i]); FinPara; Repetir Esc (Alumnos[i]); i:=i+1; Hasta que i>100;

b) Bucle Mientras
I:=1; Mientras i<=100 hacer Esc (Alumnos[i]); i:=i+1; FinMientras;

Escritura: Bucle Para


Para i:=1 hasta 100 hacer Alumnos[i]:=0; FinPara;

Clasificacin de arreglos: Los arreglos de clasifican en: Unidimensionales: Tambin llamados vectores, son aquellos que poseen una sola dimensin, lo que implica un solo ndice. Bidimensionales: Un arreglo bidimensional es un arreglo con dos ndices y son conocidos como tablas o matrices. Para localizar o almacenar un valor en el arreglo se deben especificar dos posiciones, uno para la fila y otro para la columna. Multidimensionales: Tienen dos o ms ndices o dimensiones y se clasifican segn estos en bidimensionales (dos ndices o dimensiones), tridimensionales (tres ndices o dimensiones), etc. Declaracin Se deben indicar: 1) Nombre del arreglo 2) Tipo del arreglo (todos los elementos sern del mismo tipo) 3) Intervalo permitido por cada ndice
Tipo Mat: arreglo [1..15, 1..50] de Alu;

Los diferentes tipos de ndices no necesitan ser intervalos del mismo tipo
Tipo Mat: arreglo [1..10, A..F] de enteros;

Pgina 8 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Los elementos se referencian con el formato: Mat[2,5]; elemento de la fila 2 y columna 5. Si el arreglo es de tipo registro, se tendr que usar el selector de campo.
Mat[2,5].leg;

Representacin grfica

Manipulacin de tablas Los recorridos se realizan mediante bucles anidados, uno por cada dimensin o ndice.
Para i:=1 hasta 15 hacer Para j:=1 hasta 50 hacer Esc (Mat[i,j].Nomb); FinPara; FinPara;

Bsqueda en un arreglo Para realizar la bsqueda de un elemento o varios en un arreglo, se pueden utilizar los siguientes mtodos: Bsqueda lineal Pura o Simple: consiste en recorrer todo el arreglo, comparando cada elemento con el buscado. Ventajas: se aplica tanto en arreglos ordenados como desordenados. Es til para bsquedas mltiples. Desventajas: recorre todo el arreglo aunque e elemento se haya encontrado en el primer lugar. Algoritmo Leer(X); Para i:=1 hasta n hacer Si A[i]=X entonces Esc (Se encontr en posicin,i); FSi; FPara; FAccion

Pgina 9 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Bsqueda lineal por centinela: es similar a la bsqueda lineal pero con la mejora de que en el momento en que se encuentra el elemento, se finaliza la bsqueda. Ventajas: se aplica tanto en arreglos ordenados como desordenados. Cuando encuentra el elemento, termina la bsqueda. Desventajas: es lenta cuando el arreglo es grande. No admite bsqueda mltiple, es decir, de varios elementos. Algoritmo Leer(Cent); i:=; Mientras (A[i] <> Cent) ^ ( i<=N ) hacer
I:= i+a; FMientras; Si A[i]= Cent entonces Esc (Se encontr en posicin,i); Sino Esc (No se encontr elemento); FSi; FAccion

Bsqueda binaria o dicotmica: consiste en comparar el elemento central del arreglo con el valor buscado, si este no es igual, se reduce el intervalo de bsqueda a la mitad derecha o izquierda, segn el valor sea mayor o menor que el elemento central del arreglo. Y as se ir reduciendo el intervalo de bsqueda en mitades mediante dicha comparacin, hasta que este reduzca al mismo elemento de bsqueda, si es que existe. O sea que, la bsqueda termina cuando se encuentra el elemento o bien cuando se anula el intervalo. Ventajas: es muy rpida Desventajas: no se puede usar en arreglos desordenados. No es til para bsquedas mltiples. Algoritmo Izq:=1; Der:=N; Med:=(Izq+Der) Div 2; Leer(X); Mientras (A[Med]<>X) ^ (Izq <>Der) hacer
Si (X<A[Med]) entonces Der:= Med-1; Sino Izq:= Med+a; FSi; Med:=(Izq+Der) Div 2; FMientras; Si (X= A[Med]) entonces Esc (se encontr en posicin, Med); Sino Esc (No se encontr); FSi; FAccin.

Ordenamiento de un arreglo

Pgina 10 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Insercion Simples, Directos o Eltales.

Directa Binaria

Seleccin directa Directo o burbuja Intercambio Directo con test de comprob. Mtodo de la sacudida

Mtodos de ordenacin Indirectos, Avanzados o Logartmicos Insercin (con incrementos decrecientes) Seleccin (orden segn rbol o mtodo de la criba o del montculo, heapsort) Intercambio (orden por partes met. Rp) (quick sort)

Mtodo de insercin directa: en el proceso de encontrar el sitio adecuado conviene alternar comparaciones y movimientos, es decir, dejar caer x, comparndolo con el item anterior aj, como consecuencia se inserta x o se mueve aj a su derecha y se continua con el item izquierdo repitiendo el proceso. Se observa que hay dos condiciones distintas de terminacin de ste proceso de caida: - Se encuentra un item aj cuya clave es menor que la de x. - Se alcanza el extremo izquierdo del arreglo. Este caso tpico de una repeticin con dos condiciones de terminacin permite utilizar un centinela, al que llamaremos a0 := x. Suponiendo que tuvimos en cuenta el uso del centinela, nuestro arreglo tendr un rango de 0 a n. Caso contrario a0 sera una variable del mismo tipo que el contenido del arreglo, o sea, la variable centinela deber declararse en el ambiente. Cabe recordar que para ordenar un arreglo no es conveniente usar otro arreglo, esto se considera ineficiente por el uso adicional de memoria interna. Algoritmo Cargar; Para i:=2 hasta n hacer x:=a[i]; a[0]:=; j:=(i-1); Mientras (x<a[j]) hacer a[j+1]:=a[j]; j:=j-1; FMientras; a[j+a]:=x; FPara; FAccin; Mtodo de seleccin directa: se basa en los siguientes principios: - Seleccionar el artculo con clave mnima. - Enviarlo a su posicin definitiva ai a la izquierda. Para eso se intercambian los item de ai y aj. A continuacin se repiten estas operaciones con los tems restantes a la derecha de ai. Este mtodo, es en cierta forma opuesto al de insercin directa, considera todos los tems del arreglo origen para encontrar el que tiene menor clave y depositarlo como item siguiente de la secuencia destino. Recordamos que se entiende por arreglo origen a la parte desordenada y como secuencia destino a la parte del arreglo ya ordenada.
Pgina 11 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Algoritmo Carga; Para i:=1 hasta (n-1) hacer x:= a[i]; min:=i; Para j:=(i+a) hasta n hacer Si (x>a[j]) entonces min:=j; x:=a[j]; FSi; FPara; a[min]:= a[i]; a[i]:=x; FPara; FAccin.

Mtodo de intercambio directo (burbuja): el algoritmo de intercambio directo se basa en el principio de comparar e intercambiar pares de tems adyacentes hasta que todos estn ordenados. Como en los mtodos anteriores de seleccin directa, se hacen repetidas pasadas sobre el arreglo, moviendo en cada una el elemento de clave mnima hasta el extremo izquierdo del arreglo. En cambio, si se mira el arreglo como si estuviera en posicin vertical en vez de horizontal y se considera los tems como burbujas en un depsito de agua con pesos acordes con sus claves, de cada pasada sobre el arreglo resulta la ascensin de una burbuja hasta el nivel de peso que le corresponde, de all la denominacin burbuja. Algoritmo Carga; Bandera:= Falso; Mientras (Bandera =Falso) hacer Bandera:= Verdadero; Para j:=1 a (n-1) hacer Si ( a[j] > a[j+1] entonces x:= a[j]; a[j]:= a[j+1]; a[j+1]:= x; Bandera:= Falso; FSi; FPara; FMientras; FAccin.

ARCHIVOS O FICHEROS

Un archivo es una coleccin de datos, es decir, un conjunto de registros, que se almacenan en memoria externa y de forma permanente. Un archivo puede ser de longitud infinita, solo est condicionado por la capacidad de la memoria, por ello no hace falta conocer su longitud. A todo archivo se le debe asignar un nombre y un tipo. Organizacin
Pgina 12 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Es como se almacenaran los datos. La organizacin es permanente, una vez definida no se puede modificar. Es la principal caracterstica de un archivo. Organizacin secuencial: implica continuidad fsica entre los registros, se almacenan en posiciones fsicamente contiguas. Se graba registro por registro, en el mismo orden en que se ingresan. Si un archivo secuencial es abierto solo para lectura, no se lo puede usar para escribir, y si es abierto solo para escritura, no se lo puede usar para leer. Una vez almacenado el archivo es inalterable. Para actualizar un archivo secuencial, se lo debe abrir para lectura y crear un archivo de salida, en el cual se copiarn los registros del archivo maestro (archivo a actualizar), introduciendo al mismo tiempo las novedades. Organizacin directa relativa: antes de empezar se debe definir su longitud o tamao, quedando de antemano reservado su espacio, lo cual es una desventaja. Los registros se graban ordenados por una clave determinada, generndose una tabla con las posiciones de los mismos. La continuidad de los registros en estos archivos es lgica. Se puede acceder de forma directa, conociendo el valor posicional del registro, o de forma secuencial. Organizacin directa indexada: el archivo posee dos reas: una de datos y otra de ndice. El ndice puede ser una clave simple o compleja, y permitir el acceso de forma directa a cualquier registro. Los registros de un archivo indexado poseen continuidad lgica. Un registro puede ser agregado fcilmente al archivo en una posicin cualquiera de memoria, manteniendo la correlatividad de las claves, ya que el carcter sucesor de los registros est dado por una cuestin lgica, y no fsica. Acceso Es la forma en la que se van a recuperar o leer los registros de un archivo. El tipo de acceso a un archivo depende de la organizacin del mismo. El acceso se clasifica en secuencial y directo, y este a su vez se divide en al azar o puntual y en dinmico o mixto. Acceso secuencial: para acceder a un registro n cualquiera, hay que leer los n-1 registros anteriores a l. Todo archivo, sin importar su organizacin, puede ser accedido secuencialmente. Acceso directo: el acceso directo slo es posible si el archivo tiene una organizacin directa. Al azar o puntual: se necesita conocer la posicin o la clave del registro al que se quiere acceder. Dinmico o mixto: es una combinacin del acceso directo y del secuencial. Se accede primero de manera directa y luego secuencial, para lo cual se debe tener la posicin, la clave o una aproximacin de la clave del primer elemento que se busca, y a partir de all, se recorre el resto del archivo secuencialmente.

Organizacin Secuencial

Acceso Secuencial
Pgina 13 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Directa

Secuencial Puntual Mixta(Puntual y luego Secuencial)

Tipos de claves Simple: un solo dato, campo. Compleja: formada por un campo continente. Principal: identifica al elemento dentro del subsistema al que pertenece. Secundaria: campo relevante, pero su funcin es relacionar al elemento con otros sistemas.

Procesos con archivos


genrico Individual Corte de control Procesos Actualizacin Mltiple Mezcla Indirecta directa Apareo

Unitarios o individuales Interviene un solo archivo de entrada, pudindose obtener uno o ms archivos de salida o un listado. La caracterstica fundamental es que el control de finalizacin de este tipo de proceso est dado por el fin del fichero de entrada. Genricos: es el proceso que se encarga de la creacin y carga de los archivos. Estadstico: Recorrido del archivo para contabilizar elementos, utilizando una tabla (memoria interna) y al finalizar emitir un cuadro de resumen. Emisin: Listados totales(padrones) o parciales.

Corte de control: es el proceso por el cual se producen paradas momentneas para emitir totalizadores parciales o alguna otra accin. Implica la emisin de un listado o padrn. Para realizar un corte de control es necesario que el archivo de entrada este ordenado por clave compleja. Existen tantos niveles de corte como campos tenga la clave. Los cortes se producen por cambio de contenido en los distintos niveles de la clave. Cada nivel posee un contador que se emite cuando se efecta el corte de ese nivel. Los contadores se inicializan en dos momentos: 1) al comienzo del proceso (comn para
Pgina 14 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

todos); y 2) en forma individual cuando se produce el corte correspondiente a ese contador. Se utiliza una variable auxiliar por cada campo de la clave compleja, la que se denomina variable de resguardo, y del mismo tipo. Se produce una comparacin entre la variable de resguardo y el campo actual del registro, si son distintos, se realiza el corte correspondiente a ese nivel. Como el corte trabaja con si anidados para cada nivel de corte (del mayor al menor), esto obliga a efectuar el proceso de emisin de los totales de los niveles de corte menor, hasta llegar al nivel que desencaden el corte al variar el contenido del campo clave.
2Algoritmo: Ejemplo para una clave de 3 niveles, clave=

PROVINC DEPARTAMEN CIUDA IA TO D


Clave 3 Clave 2 Clave 1

ACCION Corte ES Inicializar_totalizadores; Inicializar_adquisicin; Leer_registro; Reg1 := Clave1; Reg2 := Clave2; Reg2 := Clave3 MIENTRAS NO FDA(Arch) HACER VER_CORTE TRATAR_REGISTRO Leer_registro; FMientras; Corte_3; * corte de mayor nivel * Emitir_totales; FACCIN. Accin Ver_corte es SI Clave3 <> Reg3 ENTONCES Corte3 SINO SI Clave2 <> Reg2 ENTONCES Corte2 SINO SI Clave1 <> Reg1 ENTONCES Corte1 Fsi; Fsi; FSI; Faccin.

* Resguardar claves *

Accin Corte_n es Corte n-1 * llama al corte de nivel inmediato inferior * Emitir totales n Acumular totales al nivel inmediato superior * tot n+1 : = tot n+1 + tot n * Reinicializar totales de este nivel * tot n : = 0 * Reg n : = Clave n FAccin.

Complejos o mltiples
Pgina 15 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Existen por lo menos dos ficheros de entrada, pudiendo existir uno o mas archivos de salida. La finalizacin del proceso se maneja con la tcnica del apareo. Las estructuras de los ficheros
deben tener un elemento comun: la clave de apareo o campo clave.Los ficheros deben estar ordenados por el campo clave.

Mezcla o apareo: se realiza mezcla de archivos cuando se renen varios archivos en uno solo, intercalando sus registros de acuerdo a un determinado criterio. Los archivos de entrada deben estar ordenados por clave de apareo. La mezcla puede ser directa o indirecta. Mezcla directa: los archivos de entrada tienen el mismo formato de registro. El nmero de registros del archivo de salida es la sumatoria de los registros de los archivos de entrada.

Mezcla indirecta: los archivos de entrada tienen formatos diferentes, se debe definir el formato del archivo de salida. El nmero de registros en el archivo de salida es indeterminado.
A1 A2 An

MEZCLA

As

Listado de errores

Tipos de Mezcla: DIRECTA INDIRECTA

Formato de los registros igual distinto de los Ficheros de Entrada Formato de los registros igual al de los ficheros de igual a alguno de los ficheros del Fichero de Salida entrada de entrada o una combinacin de estos Cantidad de registros es igual a la sumatoria de las no es posible predecir del Fichero de Salida cantidades de los registros de los ficheros de entrada: n # As =

Ciclos de Apareo: - Incluyente MIENTRAS NO FDA (Arch 1) o NO FDA(Arch 2) o .... NO FDA(Arch n) HACER

Pgina 16 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. PROCESO FMientras. - Excluyente MIENTRAS NO FDA (Arch 1) y NO FDA(Arch 2) HACER PROCESO de registros comunes FMientras. MIENTRAS NO FDA (Arch 1) HACER ** Uno de estos ciclos por cada fichero PROCESO de Registros del Arch 1 interviniente **

Fmientras. MIENTRAS NO FDA (Arch 2) HACER PROCESO de Registros del Arch 2 FMientras. Si hay ms de 2 ficheros se necesitarn ms ciclos, adems del ciclo principal. Por ej: para 3 ficheros se necesitarn 7 ciclos: 1 - Condicin: NO FDA (Arch 1) y NO FDA (Arch 2) y NO FDA (Arch 3) - Ciclo principal que procesa registros comunes. 2 - Condicin: NO FDA (Arch 1) y NO FDA (Arch 2) 3 - Condicin: NO FDA (Arch 1) y NO FDA (Arch 3) 4 - Condicin: NO FDA (Arch 2) y NO FDA (Arch 3) 5 - Condicin: NO FDA (Arch 1) 6 - Condicin: NO FDA (Arch 2) 7 - Condicin: NO FDA (Arch 3)

Actualizacin: en ella se puede incorporar, modificar o eliminar informacin de un archivo mayor (maestro) y se utiliza como mnimo, dos archivos de entrada y uno de salida. La actualizacin de archivos supone: La incorporacin de nuevos registros altas La modificacin de registros existentes modificaciones La eliminacin de registros bajas

Archivo maestro: es el de mayor estructura, al cual se le aplica la actualizacin. Archivo de movimientos: es el archivo de estructura menor o igual al de maestro, debe contener como mnimo el campo clave de apareo para poder realizar la actualizacin. Contiene las modificaciones que se necesitan hacer sobre el maestro. Movimientos Altas: incorporacin de un nuevo registro al archivo maestro manteniendo la unicidad de las claves.

Pgina 17 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Modificaciones: corresponde a la existencia de un registro del maestro en el cual se desea modificar parte o todo su contenido, exceptuando el campo clave. Bajas: es la eliminacin fsica o lgica de un registro. o Fsica: consiste en eliminar totalmente el contenido y la clave de archivo maestro. La eliminacin es permanente. o Lgica: consiste en marcar o sealar el registro como eliminado. Este tipo de baja requiere un campo de estado, es un campo que debe estar contenido en el registro.

Tipos de actualizacin Actualizacin individual: el archivo de movimientos posee movimientos de un solo tipo (alta, baja o modificacin). Actualizacin general o combinada: el archivo movimientos contiene movimientos de los tres tipos (alta, baja y modificacin). Esta se clasifica en: por lotes y unitaria. Por lotes: existen cero o mltiples registros en el archivo movimientos para cada registro del maestro. Utilizando ciclo incluyente, se considera un archivo de
movimientos consistente y se realizan bajas lgicas.

Unitaria: existen cero o un registro en el archivo movimientos para cada registro del maestro.

Clasificacin de actualizacin Actualizacin secuencial: esta actualizacin es posible tanto para archivos secuenciales como para i ndexados. Como su nombre lo indica, esta actualizacin recorre secuencialmente el archivo maestro y a la vez el archivo movimientos mediante el uso de un ciclo excluyente o de un ciclo incluyente. Se comparan las claves de los registros de ambos archivos: si la clave del registro maestro es menor a la del registro movimiento, significa que ese registro maestro no tiene movimiento alguno, entonces se deber copiar el registro maestro al archivo de salida (maestro actualizado), en caso de que el maestro sea secuencial, o, si el archivo es indexado, dejar el registro como esta. Si la clave del registro maestro es igual a la del registro movimiento implica que posee movimientos, para lo cual se tendr que actualizar los campos correspondientes al registro movimiento, y luego agregar el registro al archivo de salida, si el archivo es secuencial, o re-escribir el registro en el archivo maestro, si es indexado. Por ltimo, si la clave del registro maestro es mayor a la del registro movimiento, corresponde a una alta, por lo que se debe incorporar el registro movimiento al archivo maestro actualizado o maestro. Este es un proceso seguro, puede ser cuantificado, se puede determinar si fue un xito o un fracaso y en qu momento se produjo el error. Actualizacin indexada: el archivo maestro est indexado, por lo tanto puede ser ledo y sobrescrito. El archivo movimientos es el que determina el fin del proceso de actualizacin (ciclo unitario). Este archivo es accedido en forma secuencial y con la clave de cada registro
Pgina 18 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

se accede directamente al registro maestro: si existe un registro en el archivo maestro con la misma clave que la del registro movimiento, puede tratarse entonces de una modificacin o una baja. En el primer caso, modificacin, de realizarn los cambios pertinentes en el registro maestro indicados en el registro movimiento y luego se rescribir el registro actualizado. Para el segundo caso, se dar de baja, fsica o lgicamente, el registro maestro. Si no existe un registro en el archivo maestro con la misma clave, se trata de un alta, para lo que se debe copiar el registro movimiento y escribirlo en el archivo maestro. Actualizacin interactiva (in situ): la actualizacin se produce al instante en el que ocurre el cambio. No existe un archivo de movimientos, sino que se cuenta con una Terminal. Este proceso termina cuando el usuario deja de ingresar actualizaciones.

ACTUALIZACIN (Secuencial) Ficheros de entrada: por lo menos dos: MAESTRO Y MOVIMIENTOS. Ficheros de salida: como mnimo uno.
MAESTRO MOVIMIENTO

ACTUALIZACIN

NUEVO MAESTRO

Listado de errores

Tipos de Actualizacin: POR LOTES UNITARIA varios registros de un registro movimiento para movimiento para un registro un registro maestro. maestro.

Tipos de Ficheros Maestros: - Histrico - Comn o Normal Tipos de Ficheros de Movimientos: - Actualizacin General o Combinado. - Actualizacin Parcial o Individual. Tipos de Movimientos:

Pgina 19 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. - Alta - Baja - Modificacin Algoritmos:

- Actualizacin por lotes


Utilizando ciclo incluyente, se considera un archivo de movimientos consistente y se realizan bajas lgicas. Consideraciones sobre el ambiente: formato1= registro Clave = registro campo1: .... campo2: .... freg; campo3:..... .... campoN:.... Marca_baja:..... freg; Reg_mae, Reg_sal, Aux: formato1; Reg_Mov: formato2; ACCION ACT_POR_L ES Algoritmo Abrir_Archivos Leer_Maestro Leer_Movimiento MIENTRAS (Clave_Mae <> High Value) o (Clave_Mov <> High Value) HACER SI Clave_Mae < Clave_Mov * Maestro sin Movimiento * ENTONCES Reg_sal : = Reg_mae ESCRIBIR(Arch_sal, Reg_sal) Leer_Maestro SINO SI Clave_Mae = Clave_Mov * Maestro con Movimiento * ENTONCES Aux : = Reg_mae MIENTRAS Clave_Mae = Clave_Mov HACER Proceso_Movim Leer_Movimiento FMientras Reg_sal : = Aux ESCRIBIR(Arch_sal, Reg_sal) Leer_Maestro SINO * Movimiento sin Maestro ~ 1 Alta y 0-1 Modific. y/o Bajas * * Asigna campo por campo, porque Aux y Reg_mov tienen distinto formato * Aux.clave : = Reg_mov.clave Aux.campo1 : = Reg_mov.campo1 Aux.campo2 : = Reg_mov.campo2 ........ Aux.campoN : = Reg_mov.campoN
Pgina 20 de 31

formato2= registro Clave = registro campo1: .... campo2: .... freg; campo3:..... .... campoN:.... cod_mov: (A,B,M) freg;

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. Aux.Marca_baja := Leer_Movimiento MIENTRAS Clave_Aux = Clave_Mov HACER Proceso_Movim Leer_Movimiento FMientras Reg_sal : = Aux ESCRIBIR(Arch_sal, Reg_sal) FSI; FSI; Fmientras; Cerrar(Arch_sal) FACCIN. Accin Leer_Movimiento es LEER(Arch_mov, Reg_mov) SI FDA(Arch_mov) ENTONCES Clave_mov : = High_value FSI; FAccin. Accin Leer_Maestro es LEER(Arch_mae, Reg_mae) SI FDA(Arch_mae) ENTONCES Clave_mae : = High_value FSI; FAccin. Accin Proceso_Movim es * Comparar la informacin del Registro de Movimientos y, de acuerdo a los valores que traigan, y alterar los contenidos del Registro Auxiliar (Aux). * SI Cod_Mov = M * Modificacin * ENTONCES Proceso_modif_maestro SINO SI Cod_Mov = B * eliminacin lgica * ENTONCES Marcar_registro Fsi; Fsi; FAccin. Accin Proceso_ modif_maestro es Si Reg_Mov.campo1 <> entonces Aux.campo1 := Reg_mov.campo1 fsi; Si Reg_Mov.campo2 <> entonces Aux.campo2 := Reg_mov.campo2 fsi; Si Reg_Mov.campo1 <> entonces Aux.campo3 := Reg_mov.campo3 fsi; * ... y as sucesivamente para todos los campos del registro...* FAccin. Accin Marcar_registro es Aux.Marca_baja:= * * en vez de asterisco, se puede asignar la fecha del da,
Pgina 21 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. o cualquier otro dato, segn el problema * FAccin.

Pgina 22 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

- Actualizacin unitaria
Utilizando ciclo incluyente ACCION ACT_UNIT ES Algoritmo Abrir_Archivos Leer_Maestro Leer_Movimiento MIENTRAS (Clave_Mae <> High Value) o (Clave_Mov <> High Value) HACER SI Clave_Mae = Clave_Mov ENTONCES Proceso_iguales SINO SI Clave_Mae < Clave_Mov ENTONCES Reg_sal : = Reg_mae ESCRIBIR(Arch_sal, Reg_sal) Leer_Maestro SINO Proceso_distintos Fsi; FSi; Fmientras; Cerrar Archivos FACCIN. Accin Leer_Movimiento es LEER(Arch_mov, Reg_mov) SI FDA(Arch_mov) ENTONCES Clave_mov : = High_value FSI; FAccin. Accin Leer_Maestro es LEER(Arch_mae, Reg_mae) SI FDA(Arch_mae) ENTONCES Clave_mae : = High_value FSI; FAccin. Accin Proceso_iguales es SI Cod_Mov = ALTA ENTONCES ESCRIBIR(Error alta no existe) Reg_sal : = Reg_mae ESCRIBIR(Arch_sal, Reg_sal) SINO SI Cod_Mov = MODIF ENTONCES Proceso_modif_maestro Reg_sal : = Reg_mae ESCRIBIR(Arch_sal, Reg_sal) SINO * eliminacin lgica * Marcar_registro Reg_sal : = Reg_mae ESCRIBIR(Arch_sal, Reg_sal) Fsi;
Pgina 23 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. Fsi; Leer_Maestro Leer_Movimiento FAccin. Accin Proceso_distintos es SI Cod_Mov = BAJA ENTONCES ESCRIBIR(Error baja no existe) SINO SI Cod_Mov = MODIF ENTONCES ESCRIBIR(Error mofificacin no existe) SINO * Asigna campo por campo, porque Reg_sal y Reg_mov tienen distinto formato * Reg_sal.clave : = Reg_mov.clave Reg_sal.campo1 : = Reg_mov.campo1 Reg_sal.campo2 : = Reg_mov.campo2 ........ Reg_sal.campoN : = Reg_mov.campoN Reg_sal.Marca_baja := ESCRIBIR(Arch_sal, Reg_sal) Fsi; Fsi; Leer_Movimiento FAccin. Accin Proceso_ modif_maestro es Si Reg_Mov.campo1 <> entonces Reg_mae.campo1 := Reg_mov.campo1 fsi; Si Reg_Mov.campo2 <> entonces Reg_mae.campo2 := Reg_mov.campo2 fsi; Si Reg_Mov.campo1 <> entonces Reg_mae.campo3 := Reg_mov.campo3 fsi; * ... y as sucesivamente para todos los campos del registro...* FAccin. Accin Marcar_registro es Reg_mae.Marca_baja:= * FAccin. * en vez de asterisco, se puede asignar la fecha del da, o cualquier otro dato, segn el problema *

Pgina 24 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. ACTUALIZACIN (Indexados) Ficheros de entrada: por lo menos dos: MAESTRO Y MOVIMIENTOS. Ficheros de salida: el mismo MAESTRO, actualizado.

MAESTRO Backup

MAESTRO

MOVIMIENTO

ACTUALIZACIN INDEXADOS

Listado de errores

Tipos de Actualizacin:

POR LOTES UNITARIA varios registros de los movimientos se ingresan movimiento para un registro por pantalla, sin orden. maestro. Procesos interactivos. Algoritmo: - Actualizacin unitaria Archivo Maestro indexado por clave Archivo Movimiento ordenado por clave y cod_mov. ACCION ACT_UNIT_INDEX ES Algoritmo Abrir (arch_mov) Abrir I/O (arch_mae) Leer (arch_mov, Reg_mov ) MIENTRAS NO FDA(arch_mov) HACER clave_mae : = clave_mov Leer (arch_mae, Reg_mae )

SI No existe ENTONCES SI cod_mov = B ENTONCES ESCRIBIR(Error baja no existe) SINO SI cod_mov = M 2 ENTONCES ESCRIBIR(Error modificacin no existe) SINO * Asigna campo por campo, porque Reg_mae y Reg_mov tienen distinto formato *
Pgina 25 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos. Reg_mae.campo1 : = Reg_mov.campo1 Reg_mae.campo2 : = Reg_mov.campo2 ........ Reg_mae campoN : = Reg_mov.campoN Reg_mae.Marca_baja := ESCRIBIR(arch_mae, Reg_mae) FSI; FSI; SINO SI cod_mov = A ENTONCES ESCRIBIR(Error clave existe, alta no es posible) SINO SI cod_mov = M ENTONCES Modificar Registro Maestro RE-ESCRIBIR(arch_mae, Reg_mae) SINO **{baja lgica}** Marcar Registro Maestro RE-ESCRIBIR(arch_mae, Reg_mae) ** o {baja fsica}** BORRAR(arch_mae, Reg_mae) FSI; FSI; FSI; Leer (arch_mov, Reg_mov ) Fmientras; Cerrar(Arch_mov) Cerrar(Arch_mae) FACCIN.

Pgina 26 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Listas

Las listas son estructuras dinmicas, compuestas por nodos linealmente ordenados con adyacencia lgica, las cuales pueden crecer o reducirse. Se recorren secuencialmente y solo estn limitadas por la cantidad de memoria. Nodo: es un registro que posee como mnimo dos campos: uno para datos y otro es un puntero interno, el cual provee la direccin del prximo nodo. Un nodo es una variable dinmica. Variable dinmica: es una variable simple o una estructura de datos creada en tiempo de ejecucin y accedida mediante un puntero. Puntero: es una variable simple y esttica que almacena la direccin de memoria de una variable dinmica. Listas particularizadas: son las pilas y las colas. En realidad son una restriccin de acceso. Pilas: todas las inserciones, eliminaciones y lectura de nodos se realizan desde el mismo extremo. A esta estructura se la denomina LIFO (Last In First Out ltimo en entrar, primero en salir). Colas: los puntos de entrada y salida estn separados, es decir que, las inserciones de nodos se realizarn por un extremo y las eliminaciones o lectura por el otro. A es estructura se la denomina FIFO (First In First Out primero en entrar, primero en salir). Clasificacin de las listas Listas simples o simplemente encadenadas: es una secuencia de nodos que se encuentran enlazados uno con el siguiente mediante un puntero interno. La lista posee un puntero externo (PRIM) que indica cual es su primer elemento. sta, termina en el nodo cuyo puntero interno apunte al elemento nulo (NIL). La lista simple solo puede ser recorrida en un sentido, comenzando por el nodo indicado por PRIM.

Listas dobles o doblemente encadenadas: es una lista en la que cada nodo se encuentra enlazado al nodo anterior y al siguiente mediante punteros internos (ANT y SIG), a excepcin del primero, cuyo puntero ANT apunta a NIL, y del ltimo, cuyo puntero SIG tambin apunta a NIL. Por esto, la estructura de cada nodo ser: - El/los campos correspondientes a los datos; - Dos punteros internos que indican la posicin del elemento anterior y del siguiente. La lista doble posee dos punteros externos (PRIM y ULT), de manera que uno apunte al primer nodo y el otro al ltimo. sta lista puede ser recorrida en ambos sentidos comenzando por cualquiera de los dos punteros externos.
Pgina 27 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Listas circulares: en estas listas no existe el elemento nulo. Pueden ser simples o dobles: Listas circulares simples: es una lista simple en la cual el ltimo nodo no apunta a NIL, sino al primer nodo, quedando as formado un crculo de nodos, el cual lgicamente no tiene fin. Listas circulares dobles: es una lista doble en la que el puntero interno SIG del ltimo nodo, apunta al primer nodo y el puntero interno ANT del primer nodo apunta al ltimo nodo.

Pgina 28 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Recursividad Es la propiedad por la cual un proceso puede llamarse a s mismo para resolver un problema. Caractersticas de un proceso recursivo: o Secuencia de pocos pasos. o Una llamada a s mismo. o Una condicin de fin. o Tiende a reemplazar las estructuras repetitivas. o Menor nmero de variables locales que en las estructuras iterativas. o Se requiere mucha memoria para almacenar los datos en una pila. Cundo usar la recursividad: No debe usarse si los datos o el problema no estn planteados en forma recursiva, en ese caso es conveniente usar la iteracin. No utilizar recursividad a menos que se tenga un medio para terminar la llamada recursiva. No utilizar recursividad cuando no hay una ventaja clara. Es conveniente cuando el problema o los datos estn definidos en forma recursiva. El nico fin de la recursividad es manejar rboles, ya que son estructuras recursivas. Un caso recursivo puede plantearse de forma iterativa, pero no siempre al revs. Niveles de recursividad: La recursividad se presenta en dos niveles: 1. A nivel de dato Definicin recursiva. 2. A nivel de accin Proceso recursivo. 1. A nivel de dato: es cuando un objeto se define en funcin de s mismo. Se define un conjunto infinito de objetos mediante un enunciado finito. Ejemplo: listas, rboles. 2. A nivel de accin: implica una funcin o procedimiento que se invoca a s mismo, condicionado mediante un tope o condicin de fin. Las acciones se definen en versiones ms pequeas de s mismas. Tipos de recursividad Directa: un subprograma se llama a s mismo una o ms veces. Indirecta: un subprograma A llama a un subprograma B y ste a su vez llama a A. Caso base: es el caso para el que la solucin puede establecerse de forma no recursiva.

Pgina 29 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Caso general o recursivo: caso para el cual la solucin se expresa en trminos de una versin ms pequea de s misma. Pasos para aplicar recursividad: I. Comprender el problema. II. Determinar el o los casos bases. III. Determinar el caso recursivo.

rboles

Un rbol es un tipo de datos estructurado, de carcter dinmico, que dispone de la informacin de manera jerrquica. Est compuesto por nodos. Cada nodo va a estar enlazado con el prximo, ya no por orden lineal sino de acuerdo a una jerarqua. Fundamentalmente, la relacin clave es la de padre-hijo entre los nodos de un rbol. Si existe una arista o rama dirigida del nodo a al nodo b, entonces a es padre de b y b es un hijo de a. El rbol se almacena en memoria interna. La nica manera de manejarlo es con la recursividad ya que es una estructura totalmente recursiva (se define y se ejecuta recursivamente). Los rboles pueden tener cualquier cantidad de punteros internos. El rbol ms chico es el binario, pero existen rboles n-arios. Nodo raz: es el nodo superior, representa la entidad mayor dentro de un rbol. Ningn nodo puede apuntar a l. Nodo descendiente: se encuentra debajo de otro nodo, es decir, depende de otro de nivel superior. Nodos hermanos: dos nodos son hermanos si tienen el mismo padre. Se llamarn hermano izquierdo y derecho respectivamente. Nodo interior: todo nodo no terminal, con descendientes. Nodo terminal u hoja: es el que no tiene hijos o descendientes. Camino: es una secuencia de nodos conectados dentro de un rbol. Longitud de un camino: es el nmero de nodos que componen el camino menos uno, o bien el nmero de aristas o ramas que los une. Nivel de un nodo El nivel o profundidad de un nodo se define como una cantidad mayor en uno al nmero de sus ascendentes. Altura de un rbol La altura de un rbol es el nmero de nodos en el camino ms largo desde la raz a una hoja, es decir, el nmero de niveles distintos. Grado de un rbol El grado de un rbol es el nmero de descendientes que puede tener cualquier nodo e incluso la raz, es el nmero de punteros internos. rboles binarios
Pgina 30 de 31

Universidad Tecnolgica Nacional. FRRe. Algoritmos y Estructuras de Datos.

Un rbol binario es aquel en el que cada nodo no puede tener ms de dos hojas o descendientes. Es un conjunto vaco o un conjunto que consta de un nodo raz enlazado a dos rboles binarios disjuntos denominados subrboles de izquierda y de derecha. Cada uno de estos de estos subrboles son, a su vez, un rbol binario, y deben ser subconjuntos disjuntos de nodos, es decir, ningn nodo puede estar en ambos subrboles. Diagrama de un rbol binario rboles binarios equilibrados Un rbol binario se dice que est equilibrado si cada nodo tiene exactamente dos hojas o ninguna, y si cada una est al mismo nivel. Tambin se dice que est completo. Diagrama Recorrido de un rbol binario Es el proceso de acceder a todos los nodos de un rbol. El rbol puede ser recorrido en varios rdenes. Los tres recorridos tpicos se clasifican de acuerdo al momento en que se visita la raz en relacin con la visita de sus subrboles: 1) recorrido en pre-orden: primero se accede a la raz, luego al subrbol izquierdo y por ltimo al derecho; 2) recorrido en orden: se accede primero al subrbol izquierdo, despus a la raz y luego al subrbol derecho; 3) recorrido en post-orden: se visitan primero los subrboles izquierdo y derecho respectivamente y despus la raz. Algoritmos Diagrama ejemplo Al recorrer el rbol y escribir los caracteres de los nodos en la secuencia en que estos se van encontrando, se obtienen las siguientes ordenaciones: 1. Pre-orden: 2. Orden: 3. Post-orden: Se pueden ver las tres formas de expresiones: el recorrido en pre-orden produce la notacin prefija; el recorrido en post-orden genera la notacin post-fija o inversa y el recorrido en orden produce la notacin convencional.

Pgina 31 de 31

You might also like