You are on page 1of 33

Arboles

Algoritmos y Estructuras de Datos III

Arboles

Denicin: o Un rbol es un grafo conexo sin circuitos simples. a

Arboles
Teorema: Dado un grafo G = (V , X ) son equivalentes: 1. G es un rbol. a 2. G es un grafo sin circuitos simples, pero si se agrega una arista e a G resulta un grafo con un circuito simple que contiene a e. 3. Existe exactamente un camino simple entre todo par de nodos. 4. G es conexo, pero si se quita cualquier arista a G queda un grafo no conexo.

Arboles
Denicin: o Una hoja es un nodo de grado 1. Lema: Todo rbol no trivial tiene al menos dos hojas. a Teorema: Dado un grafo G son equivalentes: 1. G es un rbol. a 2. G es un grafo sin circuitos simples y m = n 1. 3. G es conexo y m = n 1.

Arboles
Denicin: o Una hoja es un nodo de grado 1. Lema: Todo rbol no trivial tiene al menos dos hojas. a Teorema: Dado un grafo G son equivalentes: 1. G es un rbol. a 2. G es un grafo sin circuitos simples y m = n 1. 3. G es conexo y m = n 1.

Arboles
Denicin: o Una hoja es un nodo de grado 1. Lema: Todo rbol no trivial tiene al menos dos hojas. a Teorema: Dado un grafo G son equivalentes: 1. G es un rbol. a 2. G es un grafo sin circuitos simples y m = n 1. 3. G es conexo y m = n 1.

Arboles orientados

Deniciones: Un rbol orientado es un grafo orientado G tal que: a


1. El grafo no orientado subyacente es un rbol. a 2. En G hay un nodo r tal que existe un camino orientado desde r a todos los dems nodos (cualquier nodo es alcanzable desde a r por un camino orientado).

Arboles enraizados
Deniciones: En un rbol no orientado podemos denir un nodo cualquiera a como ra z. El nivel de un nodo de un rbol es la distancia de ese nodo a a la ra z. La altura h de un rbol es la longitud desde la ra al nodo a z ms lejano. a Un rbol se dice (exactamente) m-ario si todos sus nodos, a salvo las hojas y la ra tienen grado (exactamente) a lo sumo z m + 1 y la ra tiene grado m. z Un rbol se dice balanceado si todas sus hojas estn a nivel h a a o h 1. Un rbol se dice balanceado completo si todas sus hojas a estn a nivel h. a

Arboles enraizados

Deniciones: Los nodos internos de un rbol son aquellos que no son ni a hojas ni la ra z. Cuntos nodos tiene en total un rbol exactamente m-ario que a a tiene i nodos internos?

Arboles enraizados

Deniciones: Los nodos internos de un rbol son aquellos que no son ni a hojas ni la ra z. Cuntos nodos tiene en total un rbol exactamente m-ario que a a tiene i nodos internos?

Arboles enraizados

Teorema: Un rbol m-ario de altura h tiene a lo sumo mh hojas. a Un rbol m-ario con l hojas tiene h logm l . a Si T es un rbol exactamente m-ario balanceado entonces a h = logm l .

Recorrido de rboles a

BFS (Breadth-First Search) DFS (Depth-First Search) En qu casos conviene uno u otro mtodo de recorrido? e e

Algoritmo Recorrer (para rboles no orientados) a


marcar nodo s pred(s) := 0 next := 1 order(s) := next LIST := {s} mientras LIST = hacer elegir un nodo i de LIST si existe un arco (i, j) tal que j LIST entonces / marcar nodo j pred(j) := i next := next + 1 order(j) := next LIST := LIST {j} else LIST := LIST \ {i} retornar order

Algoritmo Recorrer (para rboles no orientados) a


marcar nodo s pred(s) := 0 next := 1 order(s) := next LIST := {s} mientras LIST = hacer elegir un nodo i de LIST si existe un arco (i, j) tal que j LIST entonces / marcar nodo j pred(j) := i next := next + 1 order(j) := next LIST := LIST {j} else LIST := LIST \ {i} retornar order

Arbol generador

Deniciones: Dado un grafo G , un rbol generador de G es un subgrafo de a G que es un rbol y tiene el mismo conjunto de nodos que G . a Sea G = (V , X ) un grafo y l : X R una funcin que asigna o longitudes (o pesos) a las aristas de G . Se dene la longitud de un rbol T como l(T ) = eT l(e). a Dado un grafo G = (V , X ) un rbol generador m a nimo de G es un rbol generador de G de m a nima longitud.

Ejemplo de AGM

j 6 j C D e d e d 9 4 3 e d e d d j j j e4 12 13 A I E e d e d 6 e 5 d 8 10 e d e e d j j j H G F 1 3 8

j B

Ejemplo de AGM

j 6 j C D e d e d 9 4 3 e d e d d j j j e4 12 13 A I E e d e d 6 e 5 d 8 10 e d e e d j j j H G F 1 3 8

j B

Ejemplo de AGM

j B 4 j A

j 6 C e e 3 e e j e4 I e e

j D d d 9 d d d j E e e e e j F

j H

j G

Algoritmo de Prim
Entrada: G = (V , X ) grafo conexo con una funcin l : X R. o VT := {u} (u cualquier nodo de G ) XT := i := 0 mientras i n 1 hacer elegir e = (u, v ) X tal que l(e) sea mnima entre las aristas que tienen un extremo u VT y el otro v V \ VT XT := XT {e} VT := VT {v } i := i + 1 retornar T = (VT , XT )

Algoritmo de Prim

Proposicin: o Sea G un grafo conexo. Sea Tk = (VTk , XTk ) el rbol que el a algoritmo de Prim determina en la iteracin k, para 0 k n 1. o Tk es un subrbol de un rbol generador m a a nimo de G . Teorema: El algoritmo de Prim es correcto, es decir dado un grafo G conexo determina un rbol generador m a nimo de G . El algoritmo Prim es un algoritmo goloso.

Algoritmo de Prim

Proposicin: o Sea G un grafo conexo. Sea Tk = (VTk , XTk ) el rbol que el a algoritmo de Prim determina en la iteracin k, para 0 k n 1. o Tk es un subrbol de un rbol generador m a a nimo de G . Teorema: El algoritmo de Prim es correcto, es decir dado un grafo G conexo determina un rbol generador m a nimo de G . El algoritmo Prim es un algoritmo goloso.

Algoritmo de Kruskal

Entrada: G = (V , X ) grafo conexo con una funcin l : X R. o XT := i := 1 mientras i n 1 hacer elegir e X tal que l(e) sea mnima entre las aristas que no forman circuito con las aristas que ya estn en XT a XT := XT {e} i := i + 1 retornar T = (V , XT )

Enumeracin o

Cuntos grafos diferentes hay que tengan ciertas a caracter sticas? Cuntos grafos conexos con 8 nodos y 2 circuitos? a Cuntos subgrafos de un cierto tipo de un grafo dado hay? a Cuntos rboles generadores tiene un grafo? a a Cuntos circuitos simples? a Cuntos subgrafos completos maximales? a En general son problemas dif ciles.

Enumeracin o

Cuntos grafos diferentes hay que tengan ciertas a caracter sticas? Cuntos grafos conexos con 8 nodos y 2 circuitos? a Cuntos subgrafos de un cierto tipo de un grafo dado hay? a Cuntos rboles generadores tiene un grafo? a a Cuntos circuitos simples? a Cuntos subgrafos completos maximales? a En general son problemas dif ciles.

Enumeracin o

Cuntos grafos diferentes hay que tengan ciertas a caracter sticas? Cuntos grafos conexos con 8 nodos y 2 circuitos? a Cuntos subgrafos de un cierto tipo de un grafo dado hay? a Cuntos rboles generadores tiene un grafo? a a Cuntos circuitos simples? a Cuntos subgrafos completos maximales? a En general son problemas dif ciles.

Enumeracin o

Cuntos grafos diferentes hay que tengan ciertas a caracter sticas? Cuntos grafos conexos con 8 nodos y 2 circuitos? a Cuntos subgrafos de un cierto tipo de un grafo dado hay? a Cuntos rboles generadores tiene un grafo? a a Cuntos circuitos simples? a Cuntos subgrafos completos maximales? a En general son problemas dif ciles.

Enumeracin o

Cuntos grafos diferentes hay que tengan ciertas a caracter sticas? Cuntos grafos conexos con 8 nodos y 2 circuitos? a Cuntos subgrafos de un cierto tipo de un grafo dado hay? a Cuntos rboles generadores tiene un grafo? a a Cuntos circuitos simples? a Cuntos subgrafos completos maximales? a En general son problemas dif ciles.

Ejemplos de algunas cosas que se pueden calcular

Cuntos grafos rotulados distintos de n nodos y m aristas hay? a

Cuntos grafos rotulados distintos de n nodos hay? a

Teorema de Cayley (1875)

El nmero de rboles rotulados distintos de n nodos es nn2 , para u a n 2. Demostracin: o Por induccin en n usando los algoritmos inversos de codicacin y o o decodicacin de Prfer para establecer una biyeccin entre el o u o conjunto de rboles de n nodos y el conjunto de palabras de n 2 a s mbolos usando el alfabeto {1, . . . , n}.

Algoritmo de codicacin de Prfer o u

Dado un rbol de n nodos rotulado con los nmeros de 1 a n, a u construye una palabra de longitud n 2 usando el alfabeto {1, . . . , n}. Entrada: Un rbol T rotulado de n nodos, n 3. a para i = 1, . . . , n 2 hacer elegir v la hoja de menor rtulo de T o poner como si el rtulo del nodo adyacente a v o T := T \ {v } i := i + 1 retornar palabra s1 . . . sn2

Algoritmo de codicacin de Prfer o u

Proposicin: o Si dk es el nmero de ocurrencias del nmero k en la palabra u u retornada por el algoritmo de codicacin de Prfer, entonces el o u grado del nodo con rtulo k en el rbol T es dk + 1. o a

Algoritmo de decodicacin de Prfer o u


Dada una palabra de longitud n 2 usando el alfabeto {1, . . . , n} construye un rbol de n nodos rotulado con los nmeros de 1 a n. a u Entrada: Una palabra P = s1 . . . sn2 . L := {1, . . . , n} VT := {1, . . . , n} XT := P := s1 . . . sn2 para i = 1, . . . , n 2 hacer Sea k el menor nmero de L que no est en P u a Sea j el primer elemento de P XT := XT {(k, j)} L := L \ {k} P := si+1 . . . sn2 XT := XT {(u, v )}, con u, v L retornar T = (VT , XT )

Algoritmo de decodicacin de Prfer o u

Proposicin: o El algoritmo de decodicacin de Prufel dene una funcin del o o conjunto de palabras de longitud n 2 usando el alfabeto {1, . . . , n} sobre el conjunto de rboles rotulados de n nodos. a

You might also like