Está en la página 1de 10

Unidad 4 Estructuras no Lineales

4.1 Arboles Definicin

Un rbol es una estructura de datos ampliamente usada que emula la forma de un


rbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se
construye el rbol y puede tener cero o mas nodos hijos conectados a l. Se dice
que un nodo a es padre de un nodo b, si existe un enlace desde a hasta b (en ese
caso, tambin decimos que b es hijo de a). Slo puede haber un nico nodo sin
padres, que llamaremos raz. Un nodo que no tiene hijos se conoce como hoja.
El rbol Tambin se define como una estructura de datos no lineal. Esta estructura
se usa principalmente para representar datos con una relacin jerrquica entre sus
elementos, como por ejemplo registros, rboles genealgicos y tablas de
contenidos. Entre otros tenemos un tipo especial de de rbol que es, llamado rbol
binario, que puede ser implementado fcilmente en la computadora.

4.1.2 Representacin en Memoria de Arboles

Las operaciones comunes en rboles son:


Enumerar todos los elementos.
Buscar un elemento.

Dado un nodo, listar los hijos (si los hay).


Borrar un elemento.
Eliminar un subrbol (algunas veces llamada podar).
Aadir un subrbol (algunas veces llamada injertar).
Encontrar la raz de cualquier nodo.
A_1, A_2 \dots
n_1, n_2, \dots, n_k
N_1, N_2, \dots,N_k
N = 1 + N_1 + \dots + N_k
n_1, n_2, \dots, n_k
A_1, A_2 \dots A_k
A_2 \dots A_k
A_1, A_2 \dots A_k
Por su parte, la representacin puede realizarse de diferentes formas. Las ms
utilizadas son:
Representar cada nodo como una variable en el heap, con punteros a sus
hijos y a su padre.
Representar el rbol con un array donde cada elemento es un nodo y las
relaciones padre-hijo vienen dadas por la posicin del nodo en el array.

4.1.2.1 Arboles Generales

Formalmente, podemos definir un rbol de la siguiente forma:

Caso base: un rbol con slo un nodo (es a la vez raz del rbol y hoja).
Un nuevo rbol a partir de un nodo nr y k rboles
de races
n1, n2,..nk conN1, N2,.Nk elementos cada uno, puede
construirse estableciendo una relacin padre-hijo entre nr y cada una de las
races de los k rboles. El rbol resultante N=1+N1+.Nk de nodos
tiene como raz el nodo nr, los nodos son los hijos de nr y el conjunto de
nodos hoja est formado por la unin de los k conjuntos hojas inciales. A
cada uno de los rboles Ai se les denota ahora subrboles de la raz.

Una sucesin de nodos del rbol, de forma que entre cada dos nodos
consecutivos de la sucesin haya una relacin de parentesco, decimos que es un
recorrido rbol. Existen dos recorridos tpicos para listar los nodos de un rbol:
primero en profundidad y primero en anchura. En el primer caso, se listan los
nodos expandiendo el hijo actual de cada nodo hasta llegar a una hoja, donde se
vuelve al nodo anterior probando por el siguiente hijo y as sucesivamente. En el
segundo, por su parte, antes de listar los nodos de nivel n + 1 (a distancia n + 1
aristas de la raz), se deben haber listado todos los de nivel n. Otros recorridos
tpicos del rbol son preorden, postorden e inorden:
El recorrido en preorden, tambin llamado orden previo consiste en
recorrer en primer lugar la raz y luego cada uno de los hijos en orden
previo.
El recorrido en inorden, tambin llamado orden simtrico (aunque este
nombre slo cobra significado en los rboles binarios) consiste en recorrer
en primer lugar A1, luego la raz y luego cada uno de los hijos en orden
simtrico.
El recorrido en postorden, tambin llamado orden posterior consiste en
recorrer en primer lugar cada uno de los hijos en orden posterior y por
ltimo la raz.
Finalmente, puede decirse que esta estructura es una representacin del concepto
de rbol en teora de grafos. Un rbol es un grafo conexo y acclico 180pxBinary_tree_%28oriented_digraph%29.png

4.1.2.2 Arboles Binarios

En ciencias de la computacin, un rbol binario es una estructura de datos en la


cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener
ms de dos hijos (de ah el nombre "binario"). Si algn hijo tiene como referencia a
null, es decir que no almacena ningn dato, entonces este es llamado un nodo
externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de
los rboles binarios son los rboles binarios de bsqueda, los montculos binarios
y Codificacin de Huffman.

4.1.3

Recorridos en rbol Binario Pre orden

4.1.3.2 Recorridos en rbol Binario pre orden

En este tipo de recorrido se realiza cierta accin (quizs simplemente imprimir por
pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se
trata el subrbol izquierdo y cuando se haya concluido, el subrbol derecho. En el
rbol de la figura el recorrido en preorden sera: 2, 7, 2, 6, 5, 11, 5, 9 y 4.
Void pre orden (t rbol *a)
{
If (a! = NULL) {
Tratar (a); //Realiza una operacin
preorden(a->hDerecho);

en nodo

preorden(a->hIzquierdo);

}
}
Implementacin en pseudocdigo de forma iterativa:
Push(s, NULL); //insertamos en una pila (stack) el valor NULL, para asegurarnos
de que est vaca push(s, raz); //insertamos el nodo raz
MIENTRAS (s <> NULL) HACER
p = pop(s); //sacamos un elemento de la pila
Tratar (p); //realizamos operaciones sobre el nodo p
SI (I (p) <> NULL) //preguntamos si p tiene rbol derecho
ENTONCES push(s,D (p));
FIN-SI
180px-Binary_tree_%28oriented_digraph%29.png
SI (D (p) <> NULL) //preguntamos si p tiene rbol izquierdo
ENTONCES push(s,I(p));

FIN-SI
FIN-MIENTRAS

4.1.3.3 Recorridos en rbol Binario Pos orden

En este caso se trata primero el subrbol izquierdo, despus el derecho y por


ltimo el nodo actual. En el rbol de la figura el recorrido en post orden sera: 2, 5,
11, 6, 7, 4, 9, 5 y 2.
Void post orden (t Arbor *a)
{
if (a != NULL) {
Post orden (a->hIzquiedo);
Post orden (a->hDerecho);
Tratar (a); //Realiza una operacin en nodo
}
}

4.1.4 Balanceo Arboles Binarios

rbol AVL es un tipo especial de rbol binario ideado por los matemticos rusos
Adelson-Velskii y Landis. Fue el primer rbol de bsqueda binario autobalanceable que se ide. El rbol AVL toma su nombre de las iniciales de los
apellidos de sus inventores, Adelson-Velskii y Landis. Lo dieron a conocer en la
publicacin de un artculo en 1962: "An algorithm for the organization of
information" ("Un algoritmo para la organizacin de la informacin").
Los rboles AVL estn siempre equilibrados de tal modo que para todos los
nodos, la altura de la rama izquierda no difiere en ms de una unidad de la altura
de la rama derecha. Gracias a esta forma de equilibrio (o balanceo), la
complejidad de una bsqueda en uno de estos rboles se mantiene siempre en
orden de complejidad O (log n). El factor de equilibrio puede ser almacenado
directamente en cada nodo o ser computado a partir de las alturas de los
subrboles.

Para conseguir esta propiedad de equilibrio, la insercin y el borrado de los nodos


se ha de realizar de una forma especial. Si al realizar una operacin de insercin o
borrado se rompe la condicin de equilibrio, hay que realizar una serie de
rotaciones de los nodos.
Los rboles AVL ms profundos son los rboles de Fibonacci.

4.1.5 Clases para Implementacin Arboles

Los rboles binarios pueden ser construidos a partir de lenguajes de programacin


de varias formas. En un lenguaje con registros y referencias, los rboles binarios
son construidos tpicamente con una estructura de nodos y punteros en la cual se
almacenan datos, cada uno de estos nodos tiene una referencia o puntero a un
nodo izquierdo y a un nodo derecho denominados hijos. En ocasiones, tambin
contiene un puntero a un nico nodo. Si un nodo tiene menos de dos hijos,
algunos de los punteros de los hijos pueden ser definidos como nulos para indicar
que no dispone de dicho nodo. En la figura adjunta se puede observar la
estructura de dicha implementacin.

Los rboles binarios tambin pueden ser almacenados como una estructura de
datos implcita en arreglos, y si el rbol es un rbol binario completo, este mtodo
no desaprovecha el espacio en memoria. Tomaremos como notacin la siguiente:
si un nodo tiene un ndice i, sus hijos seencuentran en ndices 2i + 1 y 2i + 2,
mientras que sus padres (si los tiene) se encuentra en el ndice(partiendo de que
la raz tenga ndice cero). Este mtodo tiene como ventajas el tener almacenados
los datos de forma ms compacta y por tener una forma ms rpida y eficiente de
localizar los datos en particular durante un preoden transversal. Sin embargo,
desperdicia mucho espacio en memoria.

4.2 Grafos Definicin

Los grafos son artefactos matemticos que permiten expresar de una forma
visualmente muy sencilla y efectiva las relaciones que se dan entre elementos de
muy diversa ndole. Un grafo simple est formado por dos conjuntos:
stella.gif
Un conjunto V de puntos llamados vrtices o nodos.
Un conjunto de pares de vrtices que se llaman aristas o arcos y que indican qu
nodos estn relacionados. De una manera ms informal podemos decir que un
grafo es un conjunto de nodos con enlaces entre ellos, denominados aristas o
arcos.

Las aplicaciones ms importantes de los grafos son las siguientes:


Rutas entre ciudades.
Determinar tiempos mximos y mnimos en un proceso.

Flujo y control en un programa.


Operaciones Sobre Grafos:
Las operaciones sobre grafos, como:
Creacin.
Insercin.
Bsqueda.
Eliminacin.

4.2.2 Tipos de Grafos

Existen dos tipos de grafos los no dirigidos y los dirigidos.


No dirigidos: son aquellos en los cuales los lados no estn orientados (No son
flechas). Cada lado se representa entre parntesis, separando sus vrtices por
comas, y teniendo en cuenta (Vi,Vj)=(Vj,Vi).

Dirigidos: son aquellos en los cuales los lados estn orientados (flechas). Cada
lado se representa entre ngulos, separando sus vrtices por comas y teniendo en
cuenta <Vi,Vj>!=<Vj ,Vi>. En grafos dirigidos, para cada lado <A, B>, A, el cual es
el vrtice origen, se conoce como la cola del lado y B, el cual es el vrtice destino,
se conoce como cabeza del lado.

4.2.3 Representacin de Grafos en Memoria

Recorrido de un grafo: Recorrer un grafo significa tratar de alcanzar todos


los nodos que estn relacionados con uno que llamaremos nodo de salida.
Existen bsicamente dos tcnicas para recorrer un grafo: el recorrido en
anchura; y el recorrido en profundidad.
Recorrido en anchura: El recorrido en anchura supone recorrer el grafo, a partir de
un nodo dado, en niveles, es decir, primero los que estn a una distancia de un
arco del nodo de salida, despus los que estn a dos arcos de distancia, y as
sucesivamente hasta alcanzar todos los nodos a los que se pudiese llegar desde
el nodo salida.
Recorrido en profundidad: el recorrido en profundidad trata de buscar los caminos
que parten desde el nodo de salida hasta que ya no es posible avanzar ms.
Cuando ya no puede avanzarse ms sobre el camino elegido, se vuelve atrs en
busca de caminos alternativos, que no se estudiaron previamente.

4.2.4 Clases para Implementacin de Grafos

CIRCUITO DE HAMILTON

En un grafo se tiene un circuito de Hamilton cuando se inicie en un nodo y termina


en el mismo pasando exactamente una vez por cada nodo.

CIRCUITO DE VENN EULER

Este circuito se da en grafos donde se realiza un camino donde se puede pasar


solo una vez por cada arco.

El factor de peso o Ponderacin se da en un grafo en el cual hay datos asociados


con un arco.

También podría gustarte