Sunteți pe pagina 1din 25

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educacin Superior


Universidad Nacional Experimental de los Llanos Occidentales
Ezequiel Zamora. UNELLEZ-Barinas.

Grafos y
Arboles
Binarios

Barinas, Mayo de 2011.


ndice
Pg.
Introduccin..

Definiciones y terminologa fundamental de Grafos

Conceptos asociados a grafos 4-8


Caractersticas de los grafos
Grafos simples. 8
Grafos conexos.8-9
Grafos completos..

Grafos bipartitos

TDA Grafo.. 9-10


Representaciones para el TDA Grafo

10

Matriz de Adyacencia
Grafos dirigidos.. 10
Grafos no dirigidos 11-12
Listas de Adyacencia 12-15
Arboles Binarios

16

Tipos de Arboles Binarios

17

Caractersticas distintivas del rbol binario.

18

Propiedades de los rboles binarios.. 18


Recorridos sobre rboles Binarios
Recorridos en profundidad.

18

Recorrido en preorden.

18

Recorrido en postorden

18

Recorrido en inorden

19
19

19-21
22
23

Recorridos en amplitud (o por niveles)


El Tipo de Dato Abstracto rbol Binario...
Conclusin.
Bibliografa.

Introduccin

El origen de la palabra grafo es griego y su significado etimolgico es


"trazar". Aparece con gran frecuencia como respuesta a problemas de la
vida cotidiana, algunos ejemplos podran ser los siguientes: un grfico de
una serie de tareas a realizar indicando su secuenciacin (un
organigrama), grafos matemticos que representan las relaciones
binarias, una red de carreteras, la red de enlaces ferroviarios o areos o
la red elctrica de una ciudad. En cada caso, es conveniente representar
grficamente el problema dibujando un grafo como un conjunto de puntos
(vrtices) con lneas conectndolos (arcos).
Para facilitar el estudio de este tipo de dato, a continuacin se
realizar un estudio de la teora de grafos desde el punto de vista de las
ciencias de la informtica. Considerando que dicha teora es compleja y
amplia, aqu slo se realizar una introduccin a la misma, describindose
el grafo como un tipo de dato.
Los grafos son estructuras de datos no lineales que tienen una
naturaleza generalmente dinmica. Su estudio podra dividirse en dos
grandes bloques:
Grafos Dirigidos.
Grafos no Dirigidos.
Tambin se es necesario conocer las estructuras de los rboles
binarios, y su conducta, para as comprender los procedimientos. Los
cuales (arboles binarios) estn relacionados con los grafos. Ms adelante
se da explicacin a detalle de una serie de definiciones y procesos que
permitir percibir su gestin, y en efecto mayor alcance.

Definiciones y terminologa fundamental de Grafos.


Un grafo G es un conjunto en el que hay definida una relacin
binaria, es decir, G=(V,A) tal que V es un conjunto de objetos a los que
denominaremos vrtices o nodos y
es una relacin binaria a
cuyos elementos denominaremos arcos o aristas.
Dados
1.

, puede ocurrir que:


, en cuyo caso diremos que x e y estn unidos mediante un

arco, y
2.

, en cuyo caso diremos que no lo estn.

Si las aristas tienen asociada una direccin (las aristas (x,y) y (y,x) no
son equivalentes) diremos que el grafo es dirigido, en otro caso
((x,y)=(y,x)) diremos que el grafo es no dirigido.

Figura 1. Ejemplos de un Grafo dirigido y uno no dirigido.

Conceptos asociados a grafos:


Diremos que un grafo es completo si A=VxV, o sea, si para cualquier
pareja de vrtices existe una arista que los une (en ambos sentidos si el
grafo es no dirigido).El nmero de aristas ser:

Grafos dirigidos:

Grafos no dirigidos:

Donde n=|V|.

Un grafo dirigido es simtrico si para toda arista (x,y)


perteneciente a A tambin aparece la arista (y,x) perteneciente a A; y
es antisimtrico si dada una arista (x,y) perteneciente a A implica
que (y,x) no pertenece a A.
Tanto a las aristas como a los vrtices les puede ser asociada
informacin. A esta informacin se le llama etiqueta. Si la etiqueta que se
asocia es un nmero se le llama peso, costo o longitud. Un grafo cuyas
aristas o vrtices tienen pesos asociados recibe el nombre de grafo
etiquetado o ponderado.
El nmero de elementos de V se denomina orden del grafo.
Un grafo nulo es un grafo de orden cero.
Se dice que un vrtice x es incidente a un vrtice y si existe un
arco que vaya de x a y ((x,y) pertenece a A), a x se le denomina origen del
arco y a y extremo del mismo. De igual forma se dir
que y es adyacente a x. En el caso de que el grafo sea no dirigido si x es
adyacente (resp. incidente) a y entonces y tambin es adyacente (resp.
incidente) a x.
5

Se dice que dos arcos son adyacentes cuando tienen un vrtice


comn que es a la vez origen de uno y extremo del otro.
Se denomina camino (algunos autores lo llaman cadena si se trata de
un grafo no dirigido) en un grafo dirigido a una sucesin de arcos
adyacentes: C={(v1,v2),(v2,v3),...,(vn-1,vn), para todo vi perteneciente a V}
La longitud del camino es el nmero de arcos que comprende y en el
caso en el que el grafo sea ponderado se calcular como la suma de los
pesos de las aristas que lo constituyen.
Ejemplo.
En el grafo dirigido de la figura 1, un camino que une los
vrtices 1 y 4 es C= {(1,3),(3,2),(2,1)},su longitud es 3.
En el grafo no dirigido de la figura 1, un camino que une los
vrtices 1 y 4 es C'= {(1,2),(2,4)}.Su longitud es 2.

Un camino se dice simple cuando todos sus arcos son distintos y se


dice elemental cuando no utiliza un mismo vrtice dos veces. Por tanto
todo camino elemental es simple y el recproco no es cierto.
Un camino se dice Euleriano si es simple y adems contiene a todos
los arcos del grafo.
Un circuito(o ciclo para grafos no dirigidos) es un camino en el que
coinciden los vrtices inicial y final. Un circuito se dice simple cuando
todos los arcos que lo forman son distintos y se dice elemental cuando
todos los vrtices por los que pasa son distintos. La longitud de un
circuito es el nmero de arcos que lo componen. Un bucle es un circuito
de longitud 1(estn permitidos los arcos de la forma (i,i) y notemos que un
grafo antisimtrico carecera de ellos).
Un circuito elemental que incluye a todos los vrtices de un grafo lo
llamaremos circuito Hamiltoniano.
Un grafo se denomina simple si no tiene bucles y no existe ms que
un camino para unir dos nodos.
Diremos que un grafo no dirigido es bipartido si el conjunto de sus
vrtices puede ser dividido en dos subconjuntos (disjuntos) de tal forma
que cualquiera de las aristas que componen el grafo tiene cada uno de
6

sus extremos en un subconjunto distinto. Un grafo no dirigido ser


bipartido si y slo si no contiene ciclos con un nmero de aristas par.
Dado un grafo G=(V,A),diremos que G'=(V,A') con
es un grafo
'
'
'
parcial de G y un subgrafo de G es todo grafo G =(V ,A ) con
y
donde A' ser el conjunto de todas aquellas aristas que unan en
el grafo G dos vrtices que estn en V'. Se podran combinar ambas
definiciones dando lugar a lo que llamaremos subgrafo parcial

Figura 2. Grafo no dirigido y un subgrafo asociado.

Se denomina grado de entrada de un vrtice x al nmero de arcos


incidentes en l. Se denota

Se denomina grado de salida de un vrtice x al nmero de arcos


adyacentes a l. Se denota

Para grafos no dirigidos tanto el grado de entrada como el de salida


coinciden y hablamos entonces de grado y lo notamos por

A todo grafo no dirigido se puede asociar


denominado dual construido de la siguiente forma:

un

grafo

.
Donde A' est construido de la siguiente forma: si e1,e2 pertenece a A son
adyacentes --> (e1,e2)pertenece a A' con e1,e2 pertenece a V'. En
7

definitiva, para construir un grafo dual se cambian vrtices por aristas y


viceversa.

Figura 3: Grafo no dirigido y su dual.

Dado un grafo G, diremos que dos vrtices estn conectados si


entre ambos existe un camino que los une.
Llamaremos componente conexa a un conjunto de vrtices de un
grafo tal que entre cada par de vrtices hay al menos un camino y si se
aade algn otro vrtice esta concisin deja de verificarse.
Matemticamente se puede ver como que la conexin es una relacin de
equivalencia que descompone a V en clases de equivalencia, cada uno
de los subgrafos a los que da lugar cada una de esas clases de
equivalencia constituira una componente conexa. Un grafo diremos que
es conexo si slo existe una componente conexa que coincide con todo
el grafo.

Caractersticas de los grafos.


Grafos simples
Un grafo es simple si a lo sumo slo 1 arista une dos vrtices
cualesquiera. Esto es equivalente a decir que una arista cualquiera es la
nica que une dos vrtices especficos.
Un grafo que no es simple se denomina Multigrfica o Grafo mltiple.

Grafos conexos
Un grafo es conexo si cada par de vrtices est conectado por un
camino; es decir, si para cualquier par de vrtices (a, b), existe al menos
un camino posible desde a hacia b.

Un grafo es doblemente (fuertemente) conexo si cada par de


vrtices est conectado por al menos dos caminos disjuntos; es decir, es
conexo y no existe un vrtice tal que al sacarlo el grafo resultante sea
disconexo.

Grafos completos
Un grafo es completo si existen aristas uniendo todos los pares
posibles de vrtices. Es decir, todo par de vrtices (a, b) debe tener una
arista e que los une.
El conjunto de los grafos completos es denominado usualmente
siendo
el grafo completo de n vrtices.

Un

, es decir, grafo completo de n vrtices tiene exactamente

aristas.

Grafos bipartitos
Un

grafo

es
bipartito
si
puede
expresarse
como
(es decir, sus vrtices son la unin de dos
grupos de vrtices), bajo las siguientes condiciones:

V1 y V2 son disjuntos y no vacos.

Cada arista de A une un vrtice de V1 con uno de V2.

No existen aristas uniendo dos elementos de V 1; anlogamente


para V2.

Bajo estas condiciones, el grafo se considera bipartito, y puede


describirse informalmente como el grafo que une o relaciona dos
conjuntos de elementos diferentes.

TDA Grafo.
A la hora de disear el TDA grafo hay que tener en cuenta que hay que
manejar datos correspondientes a sus vrtices y aristas, pudiendo cada
uno de ellos estar o no etiquetados. Adems hay que proporcionar
operaciones primitivas que permitan manejar el tipo de dato sin necesidad
de conocer la implementacin. As, los tipos de datos que se usarn y las
operaciones primitivas consideradas son las siguientes:
Los nuevos tipos aportados por el TDA grafo son los siguientes:
grafo.
vrtice.
arista.

Representaciones para el TDA Grafo.


Existen diversas representaciones de naturaleza muy diferente que
resultan adecuadas para manejar un grafo, y en la mayora de los casos
no se puede decir que una sea mejor que otra siempre ya que cada una
puede resultar ms adecuada dependiendo del problema concreto al que
se desea aplicar. As, si existe una representacin que es peor que otra
para todas las operaciones excepto una es posible que an as nos
decantemos por la primera porque precisamente esa operacin es la
nica en la que tenemos especial inters en que se realice de forma
eficiente. A continuacin veremos dos de las representaciones ms
usuales: Matriz de adyacencia(o booleana) y Lista de adyacencia.

10

Matriz de Adyacencia.
Grafos dirigidos.
G=(V,A) un grafo dirigido con |V|=n .Se define la matriz de
adyacencia o booleana asociada a G como Bnxn con

Como se ve, se asocia cada fila y cada columna a un vrtice y los


elementos bi,j de la matriz son 1 si existe el arco (i,j) y 0 en caso contrario.
Grafos no dirigidos.
G=(V,A) un grafo no dirigido con |V|=n .Se define la matriz de adyacencia
o booleana asociada a G como Bnxn con:

La matriz B es simtrica con 1 en las posiciones ij y ji si existe la


arista (i,j).

11

Ejemplo:

12

Si el grafo es etiquetado, entonces tanto b i,j como bi,j representan al


coste o valor asociado al arco (i,j) y se suelen denominar matrices de
coste. Si el arco (i,j) no pertenece a A entonces se asigna b i,j o bi,j un valor
que no puede ser utilizado como una etiqueta valida.
La principal ventaja de la matriz de adyacencia es que el orden de
eficiencia de las operaciones de obtencin de etiqueta de un arco o ver si
dos vrtices estn conectados son independientes del nmero de vrtices
y de arcos. Por el contrario, existen dos grandes inconvenientes:
Es una representacin orientada hacia grafos que no modifica el
nmero de sus vrtices ya que una matriz no permite que se le o
supriman filas o columnas.
Se puede producir un gran derroche de memoria en grafos poco
densos (con gran nmero de vrtices y escaso nmero de arcos).

Para evitar estos inconvenientes se introduce otra representacin: las


listas de adyacencia.

13

Listas de Adyacencia.
En esta estructura de datos la idea es asociar a cada vrtice i del
grafo una lista que contenga todos aquellos vrtices j que sean
adyacentes a l. De esta forma slo reservar memoria para los arcos
adyacentes a i y no para todos los posibles arcos que pudieran tener
como origen i. El grafo, por tanto, se representa por medio de un vector
de n componentes (si |V|=n) donde cada componente va a ser una lista de
adyacencia correspondiente a cada uno de los vrtices del grafo. Cada
elemento de la lista consta de un campo indicando el vrtice adyacente.
En caso de que el grafo sea etiquetado, habr que aadir un segundo
campo para mostrar el valor de la etiqueta.

14

Esta representacin requiere un espacio proporcional a la suma del


nmero de vrtices, ms el nmero de arcos, y se suele usar cuando el
nmero de arcos es mucho menor que el nmero de arcos de un grafo
completo. Una desventaja es que puede llevar un tiempo O(n) determinar
si existe un arco del vrtice i al vrtice j, ya que puede haber n vrtices en
la lista de adyacencia asociada al vrtice i.
Mediante el uso del vector de listas de adyacencias slo se reserva
memoria para los arcos existentes en el grafo con el consiguiente ahorro
de la misma. Sin embargo, no permite que haya vrtices que puedan ser
aadidos o suprimidos del grafo, debido a que la dimensin del grafo
debe ser predeterminada y fija. Para solucionar esto se puede usar una
lista de listas de adyacencia. Slo los vrtices del grafo que sean origen
de algn arco aparecern en la lista. De esta forma se pueden aadir y
15

suprimir arcos sin desperdicio de memoria ya que simplemente habr que


modificar la lista de listas para reflejar los cambios.

Como puede verse en el ejemplo de las figuras anteriores tanto el


vector de listas de adyacencias como en la lista de listas se ha razonado
en funcin de los vrtices que actan como orgenes de los arcos.
Anlogamente se poda haber hecho con dos vrtices destino, y
combinando ambas representaciones podra pensarse en utilizar dos
vectores de listas de adyacencia o dos listas de listas de adyacencia.

16

Arboles Binarios.
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.
Segn la teora de grafos, se usa la siguiente definicin: Un rbol
binario es un grafo conexo, a cclico y no dirigido tal que el grado de cada
vrtice no es mayor a 3. De esta forma slo existe un camino entre un par
de nodos.
Un rbol binario con enraizado es como un grafo que tiene uno de
sus vrtices, llamado raz, de grado no mayor a 2. Con la raz escogida,
cada vrtice tendr un nico padre, y nunca ms de dos hijos. Si
rehusamos el requerimiento de la conectividad, permitiendo mltiples
componentes conectados en el grafo, llamaremos a esta ltima estructura
un bosque.

rbol binario sencillo de tamao 9, 4 niveles y altura 3


(Altura = mximo nivel - 1), con un nodo raz cuyo valor es 2.

17

Tipos de Arboles Binarios

Un rbol binario es un rbol con raz en el que cada nodo


tiene como mximo dos hijos.

Un rbol binario lleno es un rbol en el que cada nodo tiene


cero o dos hijos.

Un rbol binario perfecto es un rbol binario lleno en el que


todas las hojas (vrtices con cero hijos) estn a la misma profundidad
(distancia desde la raz, tambin llamada altura).

A veces un rbol binario perfecto es denominado rbol binario


completo. Otros definen un rbol binario completo como un rbol
binario lleno en el que todas las hojas estn a profundidad n o n-1,
para alguna n.

Un rbol binario es un rbol en el que ningn nodo puede tener ms


de dos subrboles. En un rbol binario cada nodo puede tener cero, uno o
dos hijos (subrboles). Se conoce el nodo de la izquierda como hijo
izquierdo y el nodo de la derecha como hijo derecho.

18

Representacin de expresiones en compiladores:


Representacin aritmtica (5+3)*(1-(a++))

Caractersticas distintivas del rbol binario.


Cada nodo puede tener como mximo 2 subrboles.
Cada subrbol se identifica como el subrbol izquierdo o el
subrbol derecho de su padre.
Puede ser vaco.
Propiedades:
Dos rboles binarios son similares si tienen la misma estructura, y
son equivalentes si son similares y contienen la misma informacin.
Un rbol binario est equilibrado si el valor absoluto de las alturas
de los subrboles izquierdo y derecho se diferencian en una unidad
como mximo.

Recorridos sobre rboles Binarios.

19

Recorridos en profundidad.
El mtodo de este recorrido es tratar de encontrar de la cabecera a la raz
en nodo de unidad binaria. Ahora pasamos a ver la implementacin de los
distintos recorridos.

Recorrido en preorden.
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. Otra forma para entender el
recorrido con este mtodo seria seguir el orden: nodo raz, nodo
izquierda, nodo derecha.

Recorrido en postorden.
En este caso se trata primero el subrbol izquierdo, despus el
derecho y por ltimo el nodo actual. Otra forma para entender el recorrido
con este mtodo seria seguir el orden: nodo izquierda, nodo derecha,
nodo raz.
Recorrido en inorden.
En este caso se trata primero el subrbol izquierdo, despus el
nodo actual y por ltimo el subrbol derecho. En un ABB este recorrido
dara los valores de clave ordenados de menor a mayor. Otra forma para
entender el recorrido con este mtodo seria seguir el orden: nodo
izquierda, nodo raz, nodo derecha.

Recorridos en amplitud (o por niveles)


En este caso el recorrido se realiza en orden por los distintos
niveles del rbol. As, se comenzara tratando el nivel 1, que slo contiene
el nodo raz, seguidamente el nivel 2, el 3 y as sucesivamente.
Al contrario que en los mtodos de recorrido en profundidad, el
recorrido por niveles no es de naturaleza recursiva. Por ello, se debe
20

utilizar una cola para recordar los subrboles izquierdos y derecho de


cada nodo.

El Tipo de Dato Abstracto rbol Binario.


Para construir el TDA rbol Binario bastara con utilizar las primitivas
de los rboles generales pero dado la gran importancia y peculiaridades
que tienen este tipo de rboles, construiremos una serie de operaciones
especficas. Consideraremos las siguientes:
1. CREAR(e,Ti,Td). Devuelve un rbol cuya raz contiene la
etiqueta e asignando como hijo a la izquierda Ti y como hijo a la
derecha Td.

2. DESTRUIR(T). Libera los recursos que mantienen el rbol T de


forma que para volver a usarlo se debe asignar un nuevo valor con
la operacin de creacin.

3. PADRE(n,T). Esta funcin devuelve el padre del nodo n en el


rbol T. En caso de no existir, devuelve NODO_NULO. Como
precondicin n no es NODO_NULO.

4. HIJO_IZQDA(n,T). Devuelve el hijo a la izquierda del nodo n en el


rbol T, y devuelve NODO_NULO si n no tiene hijo a la izquierda.
Como precondicin, n no es NODO_NULO.

5. HIJO_DRCHA(n,T). Devuelve el hijo a la derecha del nodo n en el


rbol T, y devuelve NODO_NULO si n no tiene hijo a la derecha.
Como precondicin, n no es NODO_NULO.

6. ETIQUETA(n,T). Devuelve la etiqueta del nodo n en el rbol T.


Como precondicin, n no es NODO_NULO.
21

7. REETIQUETA(e,n,T). Asigna una nueva etiqueta e al nodo n en el


rbol T. Como precondicin n no es NODO_NULO.

8. RAIZ(T). Devuelve el nodo que est en la raz del rbol T o


NODO_NULO si T es el rbol vaco.

9. INSERTAR_HIJO_IZQDA(n,Ti,T). Inserta el rbol Ti como hijo a la


izquierda del nodo n que pertenece al rbol T. En el caso de que
existiese ya el hijo a la izquierda, la primitiva se encarga de que
sea destruido junto con sus descendientes. Como precondiciones,
Ti no es ARBOL_VACIO y n no es NODO_NULO.

10. INSERTAR_HIJO_DRCHA(n,Td,T). Inserta el rbol Td como hijo a


la derecha del nodo n que pertenece al rbol T. En el caso de que
existiese ya el hijo a la derecha, la primitiva se encarga de que sea
destruido junto con sus descendientes. Como precondiciones,
Td no es ARBOL_VACIO y n no es NODO_NULO.

11. PODAR_HIJO_IZQDA(n,T). Devuelve el subrbol con raz hijo a la


izquierda de n del rbol T el cual se ve privado de estos nodos.
Como precondicin, n no es NODO_NULO.

12. PODAR_HIJO_DRCHA(n,T). Devuelve el subrbol con raz hijo a


la derecha de n del rbol T el cual se ve privado de estos nodos.
Como precondicin, n no es NODO_NULO.

22

Conclusin

De lo planteado, se podra deducir que un grafo es bsicamente un


objeto geomtrico aunque en realidad sea un objeto combinatorio, es
decir, un conjunto de puntos y un conjunto de lneas tomado de entre el
conjunto de lneas que une cada par de vrtices. Por otro lado, y debido a
su generalidad y a la gran diversidad de formas que pueden usarse,
resulta complejo tratar con todas las ideas relacionadas con un grafo.
Un ejemplo de grafo dirigido lo constituye la red de aguas de una
ciudad ya que cada tubera slo admite que el agua la recorra en un nico
sentido. Por el contrario, la red de carreteras de un pas representa en
general un grafo no dirigido, puesto que una misma carretera puede ser
recorrida en ambos sentidos. No obstante, podemos dar unas definiciones
generales para ambos tipos.
23

Los rboles son estructura de datos no lineal con la que se puede


representar relaciones jerrquicas entre los elementos que la componen.
En un rbol binario ningn nodo puede tener ms de dos subrboles.
Pero si puede tener cero, uno o dos hijos (subrboles). En donde se
conoce el nodo de la izquierda como hijo izquierdo y el nodo de la
derecha como hijo derecho.
Se espera profundizar estos contenidos en clase, para poder as,
adquirir mayor conocimiento, y de esta manera solidificar bases
concernientes al tema, lo cual es de gran importancia en nuestra carrera.

Bibliografa

FERNNDEZ, Joaqun. Grafos, Universidad de Granada, edicin de


Internet, URL: http://decsai.ugr.es/~jfv/ed1/tedi/cdrom/docs/grafos.htm,
consultada el 5 de Noviembre de 2011.

FERNNDEZ, Joaqun. Arboles binarios, Universidad de Granada,


edicin de Internet, URL:
http://decsai.ugr.es/~jfv/ed1/tedi/cdrom/docs/arb_bin.htm, consultada el 5
de Noviembre de 2011.

24

MORENO & JIMENEZ, Francisco Javier & Jovani Alberti. Estructuras de


Datos, Universidad de Colombia, Medellin, edicin de Internet, URL:
http://pisis.unalmed.edu.co/cursos/material/3004597/1/Clase%208.pdf

25

S-ar putea să vă placă și