You are on page 1of 15

INSTITUTO TECNOLOGICO DE TUXTEPEC.

Materia: estructura de Datos.

Catedrtico: Lic. Tomas Torres Ramrez. Equipo: Leonel Betanzos de la cruz.


Jos Miguel Andrade Hernndez.

Especialidad: Ingeniera sistemas computacionales

Tuxtepec, Oaxaca. 08 de Noviembre del 2011

ARBOLES
Un rbol es un tipo de dato abstracto que guarda elementos en forma de jerarqua. A excepcin del elemento superior, cada uno de los dems elementos del rbol tiene un padre y cero o ms elementos hijos. Se visualiza un rbol colocando los elementos dentro de valos o rectngulos y se trazan con lneas rectas las conexiones entre padres e hijos. El elemento superior del rbol se llama raz, pero se traza como el elemento ms alto y los dems se conectan hacia abajo (exactamente al contrario de un rbol botnico).

Terminologa y propiedades bsicas Un rbol T es un conjunto de nodos que guardan elementos en una relacin padre-hijo, que tiene las siguientes propiedades: T tiene un nodo especial r llamado raz de T. Cada nodo v de T distinto de r tiene un nodo padre u.

Si el nodo u es el padre del nodo v, se dice que v es un hijo de u.dos nodos que sean hijos del mismo padre se laman hermanos. Un nodo es externo si no tiene hijos y se considera interno si tiene uno o mas hijos. Los nodos externos externos tambin se llaman hojas. El subrbol de T enraizado en el nodo v, es el rbol formado por dos de los descendientes de v en T, incluyendo al mismo v. Ejemplo: la relacin de herencia entre clases de un programa java forma un rbol. Un rbol es ordenado cuando se presenta un ordenamiento lineal de los hijos de cada nodo; esto es, si se identifica a los hijos de un nodo como el primero . el segundo, el tercero, y asi sucesivamente.

METODOS DE ARBOL El TDA rbol guarda elementos en posiciones que, como las posiciones de una lista, se definen en relacin con las posiciones vecinas. Las posiciones en n rbol son sus nodos, y las posiciones vecinas satisfacen las relaciones padre-hijo que definen un rbol valido. En consecuencia, se usaran los trminos posicin y nodo en forma indistinta, en ralacion con los arboles. Como en el caso de la lista posicin, un objeto posicin para un rbol soporta el mtodo: element(): regresa el objeto en su posicin. Entrada: ninguna; salida: objeto. Sin embargo, el poder real de las posiciones de los nodos en un rbol se debe a los mtodos accesores del TDA rbol que regresa y acepta posiciones como las siguientes: Root(): regresa la raz del rbol Entrada: ninguna; salida: posicin. Parent(v): regresa el padre del nodo v; se produce un error si v es raz. Entrada: posicin; salida: posicin. Children(v): regresa un iterador de los hijos del nodo v. Entrada: posicin; salida: iterador de posiciones.

INTERFAZ DEL RBOL EN JAVA Se puede usar el TDA rbol para definir una interfaz java que defina los mtodos que deberan implementar cualquier rbol, mas incluir en forma directa a todos los mtodos del rbol, se distinguen los genricos y los especficos de rbol y adems se seaparan los mtodos de consulta y los asesores, de los mtodos de actualizacin. El conjunto resultante de interfaces se muestra en los fragmentos de programas en: interfaces inspectable positional Container, posiotinalContainer y Inspectable tree. Ntese que inspectable PositionalContainer hereda los mtodos size(), isEmpty y element() de InspectableContainer.

interfaz tree. Se pueden agregar otros mtodos de actualizacin, dependiendo de la aplicacin, aqu no se incluye ninguno de esos mtodos por lo que la interfaz es una mezcla sencilla de otros dos interfaces.

ARBOLES BINARIOS Un rbol binario es un rbol ordenado que representa dos hijos, cuando mucho, en cada nodo. Un rbol binario es propio si cada nodo tiene cero o dos hijos. Asi, en un rbol binario propio, todo nodo interno tiene exactamente dos hijos. Para cada nodo interno de un rbol binario, se identifica a cada hijo como hijo izquierdo a hijo derecho. Esos hijos se ordenan de modo que un hijo izquierdo quede antes de un hijo derecho. Una clase de arboles que tiene inters especial es la del rbol binario. Adems se sigue la covencion de que, a menos de que se siga otra cosa, se supones que los arboles binarios son propios. Los arboles surgen de forma natural en muchas y distintas aplicaciones. Por ejemplo un rbol con expresiones aritmticas es un rbol binario, porque cada uno del os operadores con que se define ese rbol es un operador binario.

TDA ARBOL BINARIO Como tipo de dato abstracto, un rbol binario es la especializacin de un rbol que soporta tres mtodos accesores mas: letfChild(v): Regresa el hijo izquierdo de v; se presenta una condicin de error si v esun nodo externo. Entrada: posicin; salida: posicin. rightChild(v): regresa el hijo derecho de v; se produce un condicin de error si v es un nodo externo. Entrada: posicin; salida: posicin. Sibling(v): Regresa el hermano del nodo v; se porduce una condicin de error si v es la raz.

Entrada: posicin; salida: posicin.

ESTRUCTURA PARA ARBOLES BINARIOS BASADA EN UN VECTOR Una estructura sencilla para representar un rbol binario T se basa en una forma de numerar los nodos de T. para cada nodo v de T, sea p(v) el entero definido como sigue: Si v es la raz de T, entonces p(v)=1. Si v es el hijo izquierdo del nodo u, entonces p(v)=2p(u).

Si v es el hijo derecho del nodo u, entoces p(v)=2p(u) + 1. La implementacin de un rbol binario como vector es una forma rpida y fcil de realizar el TDA rbol binario, pero muy ineficiente en cuanto a espacio, si la altura del rbol es grande.

ESTRUCTURA ENLAZADA PARA ARBOLES BINARIOS Una forma natural de ver un rbol binario es mediante una estructura enlazada. En este mtodo se representa cada nodo v en T con un objeto con referencias al elemento almacenado en v y a los objetos de posicin asociados con los hijos y el padre de v.

Padre

Derecha Izquierda

Elemento

GRAFOS.
Cuenta la mitologa griega que se construy un complicado laberinto para albergar al minotauro, un monstruo en parte hombre y en parte toro. En realidad la informacin de conectividad se puede definir mediante todo tipo de relaciones que existen entre pares de objetos. El tema que se estudia en este captulo es el de los grafos o grficas y se enfoca hacia las representaciones y los algoritmos para manejar con eficiencia esas relaciones.

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.(Vase la figura 1).En cada caso, es conveniente representar grficamente el problema dibujando un grafo como un conjunto de puntos(vrtices)con lneas conectndolos (arcos).

De aqu 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. 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 computacin. 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 y mostrndose los problemas tpicos y los algoritmos que permiten solucionarlos usando un ordenador. 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(pueden ser considerados un caso particular de los anteriores).

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. A continuacin daremos definiciones de los dos tipos de grafos y de los conceptos que llevan asociados. 2. DEFINICIONES Y TERMINOLOGA FUNDAMENTAL. 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. 2. ,puede ocurrir que: , en cuyo caso diremos que x e y estn unidos mediante un arco,y , 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.

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: o 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 anti simtrico 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. 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. o En el grafo dirigido de la figura 2,un camino que une los vrtices 1 y 4 es C= {(1,3),(3,2),(2,1)},su longitud es 3. o En el grafo no dirigido de la figura 2,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 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

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 un grafo denominado dual construido de la siguiente forma: 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 definitiva,para construir un grafo dual se cambian vrtices por aristas y viceversa.

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 concicin 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..

3. 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: NUEVOS TIPOS APORTADOS. Los nuevos tipos aportados por el TDA grafo son los siguientes:

grafo. vertice.

arista.

4. 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. 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 simetrica con 1 en las posiciones ij y ji si existe la arista (i,j). EJEMPLO:

Si el grafo es etiquetado,entonces tanto bi,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 bi,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 obtencion de etiqueta de un arco o ver si dos vertices estan 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 vertices 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.

CONCLUSION. Grafos tienen un papel importante en la fundamentacin matemtica de las Ciencias de la Computacin. Los grafos constituyen una herramienta bsica para novelizar fenmenos discretos y son fundamentales para la comprensin de las estructuras de datos y el anlisis de algoritmos. Un rbol es una estructura de datos bidimensional, lineal los nodos de un rbol contienen 2 o ms enlaces un rbol binario es un rbol cuyos nodos contienen 2 enlaces. El nodo raz es el primer nodo de un rbol. Cada enlace en el nodo raz hace referencia a un hijo. el hijo izquierdo es el primer nodo en el subrbol izquierdo, y el hijo derecho es el primer nodo en el sub rbol derecho. Los hijos de un nodo se llaman hermanos. Un nodo sin hijos se llama nodo hoja. En un rbol de bsqueda binaria sin valores de nodo duplicado, los valores, los valores en cualquier subrbol derecho son mayores que el valor en su nodo padre. En un rbol de bsqueda binaria, un nodo puede insertarse solamente como nodo hoja. El recorrido inorden de un rbol de bsqueda binaria procesa los valores de los nodos en un orden ascendente .en un recorrido pre orden, el valor en cada uno de los nodos se procesa a medida que se van visitando. Despus se procesan los valores en el subrbol izquierdo y, por ltimo, los valores en el subrbol derecho. En un recorrido postorden, el valor en cada uno de los nodos se procesa despus de los valores de sus hijos. El rbol de bsqueda binaria facilita facilita la eliminacin de valores duplicados. Al crear un rbol se reconocen los intentos de insertar un valor duplicado, ya que este sigue las mismas decisiones de ir a la izquierda o ir a la derecha en cada comparacin, al igual que el valor original. Por lo tanto, eventualmente se compara el valor duplicado con un nodo que contenga el mismo valor. El valor duplicado puede descartarse en este punto.

Bibliografa: Deitel Paul J. y Harvey M. Deitel Como programar en java. Sptima edicin PEARSON EDUCACION, Mxico 2008 ISBN: 978-970-26-1190-5 rea: Computacin

You might also like