You are on page 1of 12

UNIVERSIDAD NACIONAL DE COLOMBIA

FACULTAD DE INGENIERA INDUSTRIAL

PROGRAMACION ORIENTADA A OBJETOS


RBOLES Y GRAFOS

ESTUDIANTE:
LEIDY PILAR POVEDA AREVALO
DIEGO HERNANDO RAMIREZ

TUTOR:
ALEXEI GABRIEL OCHOA DUARTE

INTRODUCCIN

Este documento es muy interesante porque trata sobre la estructura de datos no


lineales. Es muy importante destacar que cuando hacemos referencia a la
programacin orientada a objetos no estamos hablando de unas cuantas
caractersticas nuevas del lenguaje de programacin. Estamos hablando de una
nueva forma de pensar acerca del proceso de descomposicin de problemas y de
desarrollo de soluciones que se presentan en esta etapa.
As como la programacin surge de un intento para dominar la complejidad se
emplea para solucionar problemas hasta llegar a acciones simples de desarrollar,
para que las personas que utilicen el programa lo entiendan de una mejor manera.
La programacin orientada a objetos desarrolla temas tan bsicos, pero tan
elementales para el aprendizaje que cada vez tenemos ms accesibilidad a
manejar estos programas como por ejemplo el tema de rboles y grafos que se
asemeja a nuestra vida o dependencia de la que venimos, clasificndonos
jerrquicamente.

MARCO CONCEPTUAL

RBOLES EN JAVA
La estructura de datos rbol al contrario que las listas es una estructura de datos
no lineal. Las listas tienen un orden impuesto en sus elementos teniendo como
mucho un predecesor y un sucesor. Los rboles pueden tener dos o ms
sucesores.
Un rbol consiste en un conjunto de nodos o vrtices y un conjunto de aristas o
arcos que satisface unos requisitos:
1. Existe una jerarqua de nodos, de forma que a cada nodo hijo le llega una arista
de otro nodo padre. De esta forma se establece la relacin padre-hijo: p es padre
de h, h es un hijo de p.
2. El nodo donde comienza la jerarqua se llama nodo raz. A este nodo no llegan
arcos de ningn otro nodo, en otras palabras, no es hijo de ningn nodo padre.
3. Existe un camino nico entre la raz y cualquiera de los nodos del rbol
4. Veremos ahora un poco de terminologa relacionada con los rboles. En primer
lugar, estudiaremos qu tipos de nodos nos podremos encontrar en un rbol.
Hemos visto que existe un nodo especial, el nodo raz que no tiene padres. El
caso de los nodos que no tienen hijos es el de los nodos externos o nodos hoja. El
resto de nodos son internos, cuando tiene descendientes. Diremos que un nodo
es descendiente de otro, si es hijo de l descendiente de sus hijos. Los
descendientes nos determinan un subrbol con raz el nodo descendiente.
Veremos ahora aquellos conceptos que nos dan una idea sobre la topologa del
rbol. Son los conceptos de camino, longitud y profundidad:
-El camino existente entre dos nodos, es la secuencia de "arcos" que nos llevan,
siguindolas de forma consecutiva del primero al segundo. La longitud es el
nmero de aristas que contiene.
-Profundidad de un nodo es la longitud del camino de la raz a ese nodo.
-Altura de un rbol es la profundidad mxima entre todos los nodos extremos del
rbol. Es decir, "la profundidad del nodo ms profundo".
PROPIEDADES DE UN RBOL En la ciencia de la computacin definimos un
rbol como un conjunto de nodos y lneas. Un nodo es un elemento de informacin

que reside en el rbol. Una lnea es un par de nodos ordenados, y a la secuencia


de lneas se le denomina ruta. Adems, los rboles tienen las siguientes
propiedades: Tienen un nodo al que se le llama raz del rbol. Todos los
nodos, excepto la raz, tienen una sola lnea de entrada (el nodo raz no tiene
ninguna). Existe una ruta nica del nodo raz a todos los dems nodos del rbol.
Si hay una ruta <a,b>, entonces a b se le denomina hijo de a y es el nodo
raz de un subrbol.
Grficamente puede representarse una estructura rbol de diferentes maneras y
todas ellas equivalentes;
CARACTERISTICAS DE UN RBOL 1. NODO indica un elemento, o tem, de
informacin. 2. Todo rbol que no es vaco, tiene un nico nodo raz. 3. Un nodo X
es descendiente directo de un nodo Y, si el nodo X es apuntado por el nodo Y. X
es hijo de Y. 4. Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta
al nodo Y. X es padre de Y. 5. Se dice que todos los nodos que son descendientes
directos (hijos) de un mismo nodo (padre), son hermanos. 6. Todo nodo que no
tiene ramificaciones (hijos), se conoce con el nombre de terminal u hoja. 7. Todo
nodo que no es raz, ni terminal u hoja se conoce con el nombre de interior. 8.
Grado es el nmero de descendientes directos de un determinado nodo. Grado del
rbol es el mximo grado de todos los nodos del rbol. 9. Nivel es el nmero de
arcos que deben ser recorridos para llegar a un determinado nodo. Por definicin,
la raz tiene nivel 1. 10.Altura del rbol es el mximo nmero de niveles de todos
los nodos del rbol.
EJEMPLO DE UN RBOL A es la raz del rbol. B es hijo de A. A es padre
de B. B y C son hermanos. I, E, J, K,G,L son hojas. B, D, F, C, H son nodos
interiores. El grado de nodo A es 2. Nivel del nodo A es 1. Nivel B es 2.
Altura del rbol 4. A ED CB F G H I J K L
RBOL BINARIO Un rbol ordenado es aquel en el cual la distribucin de las
ramas sigue cierto orden. Los rboles ordenados de grado 2 son de especial
inters puesto que representan una de las estructuras de datos ms importante en
computacin, conocida como rboles binarios. En un rbol binario cada nodo
puede tener como mximo dos subrboles; y siempre es necesario distinguir entre
el subrbol izquierdo y el subrbol derecho.
1. APLICACIONES DE RBOLES BINARIOS rboles binarios de bsqueda.
Representacin de una expresin algebraica. rbol Genealgico.
- RBOLES BINARIOS DISTINTOS Dos rboles binarios son distintos cuando sus
estructuras son diferentes. Ejemplo: A A B B A B A D B D C C

- RBOLES BINARIOS SIMILARES Dos rboles binarios son similares cuando


sus estructuras son idnticas, pero la informacin que contienen sus nodos difiere
entre s. A E B C A F P S R J K T
- RBOLES BINARIOS EQUIVALENTES Los rboles binarios equivalentes se
definen como aquellos que son similares y adems los nodos contienen la misma
informacin. E F J K E F J K
- RBOLES BINARIOS COMPLETOS Se define un rbol binario completo como
un rbol en el que todos sus nodos, excepto los de ltimo nivel, tienen dos hijos; el
subrbol izquierdo y el subrbol derecho. A B D C F GE
2. RECORRIDOS EN RBOLES BINARIOS Una de las operaciones ms
importantes a realizar en un rbol binario es el recorrido de los mismos. Recorrer
significa visitar los nodos del rbol en forma sistemtica; de tal manera que todos
los nodos del mismo sean visitados una sola vez. Existen tres formas diferentes de
efectuar el recorrido y todas ellas de naturaleza recursiva, stas son:
-Preorden: (raz, izquierdo, derecho). Para recorrer un rbol binario no vaco en
Preorden, hay que realizar las siguientes operaciones recursivamente en cada
nodo, comenzando con el nodo de raz:
1. Visite la raz
2. Atraviese el sub-rbol izquierdo
3. Atraviese el sub-rbol derecho
-Inorden: (izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en
Inorden (simtrico), hay que realizar las siguientes operaciones recursivamente en
cada nodo:
1. Atraviese el sub-rbol izquierdo
2. Visite la raz
3. Atraviese el sub-rbol derecho
-Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en
postorden, hay que realizar las siguientes operaciones recursivamente en cada
nodo:
1. Atraviese el sub-rbol izquierdo
2. Atraviese el sub-rbol derecho
3. Visite la raz
En general, la diferencia entre preorden, Inorden y postorden es cundo se recorre
la raz. En los tres, se recorre primero el sub-rbol izquierdo y luego el derecho.
- En preorden, la raz se recorre antes que los recorridos de los subrboles
izquierdo y derecho

- En Inorden, la raz se recorre entre los recorridos de los rboles izquierdo y


derecho.
- En postorden, la raz se recorre despus de los recorridos por el subrbol
izquierdo y el derecho
-Preorden (antes), Inorden (en medio), postorden (despus).
rbol genrico
Para recorrer un rbol no vaco en orden de profundidad-primero, hay que realizar
las siguientes operaciones recursivamente en cada nodo:
1. Realice la operacin pre-orden
2. Para i=1 a n-1 haga
3. Visite al hijo[i], si existe
4. Realice la operacin in-orden
5. Visite al hijo[n], si existe
donde n es el nmero de nodos hijos. Dependiendo del problema actual, las
operaciones de pre-orden, in-orden o post-orden pueden ser vacas (void), o usted
puede querer visitar solamente un nodo de hijo especfico, as que estas
operaciones pueden ser consideradas opcionales. Tambin, en la prctica, ms de
una de las operaciones de pre-orden, in-orden y post-orden pueden ser
requeridas. Por ejemplo, al insertar en un rbol ternario, una operacin de preorden es realizada comparando elementos. Una operacin de post-orden puede
luego ser necesitada para rebalancear el rbol.

rboles de expansin
Definicin: un rbol T es un rbol de expansin de un grafo G si T es un subgrafo
de G que contiene a todos los vrtices de G.
Un grafo G tiene un rbol de expansin si y solo si G es conexo.
rboles de expansin mnima
Definicin: sea G un rbol con pesos. Un rbol de expansin mnimo de G es un
rbol de expansin de G con mnimo peso, es decir cuya suma de pesos sea
mnima.
Para calcular el rbol de peso mnimo existen 2 algoritmos:

Prim: Consiste en ir borrando las aristas de mayor peso posible y que no


sean aristas de separacin.

Kruskal: Se van escogiendo las aristas de menor peso hasta conseguir un


rbol de peso mnimo
Algoritmo de Prim: Este algoritmo determina un rbol de expansin mnimo en un
grafo conexo con pesos.
El algoritmo encuentra un subconjunto de aristas que forman un rbol con todos
los vrtices, donde el peso total de todas las aristas en el rbol es el mnimo
posible.
Pasos para realizar el algoritmo:

1. Se marca un nodo cualquiera, ser el nodo de partida.

2. Seleccionamos la arista de menos valor incidente en el nodo marcado


anteriormente, y marcamos el otro nodo en el que incide.

3. Repetir el paso 2 siempre que la arista elegida enlace un nodo y otro que
no lo est.

4. El proceso termina cuando tenemos todos los nodos del grafo marcados.

Al concluir el algoritmo, T es un rbol de expansin mnimo.

GRAFOS EN JAVA
Desde un punto de vista intuitivo un grafo es un conjunto de nodos unidos por un
conjunto de arcos. Un ejemplo de grafo que podemos encontrar en la vida real es
el de un plano de trenes. El plano de trenes est compuesto por varias estaciones

(nodos) y los recorridos entre las estaciones (arcos) constituyen las lneas del
trazado.
Veremos a continuacin una definicin ms formal de grafos. Un grafo G=(V,E)
consiste en un conjunto V de nodos (vrtices) y un conjunto E de aristas (arcos).
Cada arista es un par (v, w), siendo v y w un par de nodos pertenecientes al
conjunto V de nodos. Podemos distinguir entre grafos dirigidos y no dirigidos. En
un grafo dirigido los pares (v, w) estn ordenados, traducindose la arista en una
flecha que va desde el nodo v al nodo w.
En el caso de un grafo no dirigido, los nodos estn unidos mediante lneas sin
indicacin de direccin.

CARACTERISTICAS DE UN GRAFO a) Se llama bucle o lazo a toda arista de la


forma (v, v) b) Se llaman aristas mltiples a las aristas que aparecen repetidas en
E c) Se dice que dos vrtices son adyacentes si estn unidos por una arista d) Se
dice que dos aristas son adyacentes si tienen un vrtice en comn, e) Se dice que
una arista y un vrtice son incidentes si el vrtice es extremo de la arista, f) Se
dice que un vrtice es aislado si no es adyacente a ningn otro vrtice. g) Se dice
que un grafo es simple si no tiene bucles ni aristas mltiples
EJEMPLO DE UN GRAFO En el grafo anterior u, v son vrtices adyacentes, (u, v)
y (v, w) son aristas adyacentes, z es un vrtice aislado.
TIPOS DE GRAFOS Un grafo regular de grado n si todos sus vrtices tienen
grado n.
-Un grafo completo si cada par de vrtices est unido por una arista. Se denota
por Kn al grafo completo de n vrtices
-Un dgrafo o grafo dirigido es un par D = (V, E) consistente en un conjunto finito
no vaco V cuyos miembros se llaman vrtices y una familia finita E de pares
ordenados de vrtices a cuyos elementos llamaremos aristas o arcos.

REPRESENTACION DE GRAFOS La matriz de adyacencia de un grafo es


simtrica. Si un vrtice es aislado entonces la correspondiente fila (columna) est
compuesta slo por ceros. Si el grafo es simple entonces la matriz de adyacencia
contiene solo ceros y unos (matriz binaria) y la diagonal est compuesta slo por
ceros.
-La matriz de incidencia slo contiene ceros y unos (matriz binaria). Como cada
arista incide exactamente en dos vrtices, cada columna tiene exactamente dos
unos. El nmero de unos que aparece en cada fila es igual al grado del vrtice
correspondiente. Una fila compuesta slo por ceros corresponde a un vrtice
aislado.
-La matriz de adyacencia de un dgrafo no es simtrica. Es una matriz binaria. El
nmero de unos que aparecen en una fila es igual al grado de salida del
correspondiente vrtice y el nmero de unos que aparecen en una determinada
columna es igual al grado de entrada del correspondiente vrtice.

EL ALGORITMO DE DIJKSTRA

tambin llamado algoritmo de caminos mnimos, es un algoritmo para la


determinacin del camino ms corto dado un vrtice origen al resto de los vrtices
en un grafo con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra,
quien lo describi por primera vez en 1959.
La idea subyacente en este algoritmo consiste en ir explorando todos los caminos
ms cortos que parten del vrtice origen y que llevan a todos los dems vrtices;
cuando se obtiene el camino ms corto desde el vrtice origen, al resto de vrtices
que componen el grafo, el algoritmo se detiene. El algoritmo es una
especializacin de la bsqueda de costo uniforme, y como tal, no funciona en
grafos con aristas de costo negativo (al elegir siempre el nodo con distancia
menor, pueden quedar excluidos de la bsqueda nodos que en prximas
iteraciones bajaran el costo general del camino al pasar por una arista con costo
negativo).
.

CONCLUCIONES

los rboles y los grafos se asemejan al desarrollo de nuestras vidas


cotidianas, pues son de gran importancia ya que vemos las diferentes

formas de desarrollar las actividades y trabajos que vamos adquiriendo da


a da.
El tema de rboles y grafos nos permite una optimizacin de cdigo
mediante tcnicas de herencia, atributos, etc. Que nos permiten que el
cdigo tenga un mejor desarrollo.
Gracias a estas estructuras de datos podemos conocer de una forma muy
sencilla los mecanismos que nos facilitan el desarrollo de programa.
Nos aporta grandes conocimientos que son necesarios a la hora de
enfrentarnos al lenguaje de java.
Es bueno hacer nfasis en estos temas que abordan relaciones conjuntas
que nos permiten profundizar en temas especficos.

BIBLIOGRAFIA

1. http://www.ciberaula.com/articulo/arboles

2.
3.
4.
5.

http://es.slideshare.net/AlexisChavez1/rboles-y-grafos
http://www.ciberaula.com/articulo/grafos
https://es.wikipedia.org/wiki/Recorrido_de_%C3%A1rboles
http://www.monografias.com/trabajos98/arboles-y-grafos/arboles-ygrafos.shtml#ixzz4N74oRTit
6. https://es.wikipedia.org/wiki/%C3%81rbol_binario