Un rbol es un tipo especial de relacin que es muy til
para el estudio de una gran variedad de aplicaciones en las ciencias de la computacin e ingeniera. Un rbol se representa como un grafo dirigido o no dirigido. Los rboles son muy usados en el estudio y construccin de base de datos, modelamiento jerrquico de clases y en la teora de lenguajes y construccin de compiladores, son muy usados para describir los rboles sintcticos correspondientes a gramticas de lenguajes. RBOLES GENERALES (N-ARIOS) Definicin Un rbol A se define como un conjunto de elementos llamados nodos o vrtices, de forma que! " A es vaco, en cuyo caso se llama rbol vaco o rbol nulo, o " A contiene un nodo distinguido v # llamado ra$ de A y los nodos restantes de A forman un conjunto de rboles A % , A & , A ' , ..., A n (ada rbol A i tiene como ra$ al nodo v i Un rbol se representa mediante un grafo en donde la ra$ v # es el nodo en A en la parte superior. Una lnea )acia abajo de i$quierda a derec)a, un arco se*ala a los )ijos de v #
RBOLES GENERALES (N-ARIOS) v # v % v & v ' v n A % A & A ' A n " A % , A & , A ' , ..., A n son llamados subrboles de v # "
+i A i no es vaco, entonces su ra$ v i , es llamado )ijo de v # , y v # es llamado padre de v i
RBOLES GENERALES (N-ARIOS) RBOLES LIBRES Y RBOLES CON RAIZ Un rbol libre es un tipo especial de grafo no dirigido, cualquiera de sus nodos puede ser considerado una ra$. Un rbol con ra$ es un tipo especial de grafo dirigido. ,s un rbol con nica ra$. ,jemplos de rboles libres!
RBOLES GENERALES (N-ARIOS) ,jemplos de rboles con ra$!
RBOLES GENERALES (N-ARIOS) Definicin +ea -! conjunto de vrtices o nodos A! relacin! aristas o caminos entre los elementos de - .A, v # / es un rbol si y solo si! %. ,0iste un nico vrtice v # - tal que v # no tiene ninguna entrada. v # es llamado ra$ del rbol A. &. v - tal que v v # , v tiene solo una entrada. RBOLES GENERALES (N-ARIOS) +i .A, v # / es un rbol %. A es una relacin irrefle0iva .no e0isten ciclos/. &. A es asimtrica, si u es padre de v, v no puede ser padre de u. '. +i a 1 b y b 1 c entonces a 1 c a,b,c - 1 no es transitiva. ,s decir si a es padre de b, y b es padre de c, no es cierto que a es padre de c. RBOLES GENERALES (N-ARIOS) Definicin recursiva de r!"# Un rbol A es un conjunto de nodos -, donde +i - 2 vaco A es el rbol nulo +i - vaco ,0iste v # - llamado ra$ de A y e0isten A % , A & ,..., A n ,
con races v % , v & ,..., v n
respectivamente tal que e0iste una arista .v # , v i / i (ada A i es un subrbol del rbol A %. Un vrtice es por si mismo un rbol, este nodo es la ra$ de dic)o rbol. &. La ra$ del rbol A i es v i v i es llamado )ijo de v #
v # es llamado padre de v i RBOLES GENERALES v # v % v & v n A % A & A n RBOLES GENERALES (N-ARIOS) Nive#es $err%uic"s de un r!"# (ada nodo de un rbol A tiene asignado un nmero de nivel. La ra$ de A tiene asignado el nivel #. Los dems nodos de A tienen asignado un nmero de nivel que es mayor en % al nmero de nivel de su padre. Los nodos del mismo nivel se dicen )ermanos. &er'in"#"()a *unda'en+a# +ea n % , n & ,..., n 3 secuencia de vrtices o nodos tal que n i es el padre de n i4% , para todo i de % a 3 " 5enominamos ra), al nico nodo que no tiene padre, que corresponde al nodo de nivel #. " 5enominamos -"$a .o +er'ina#/ a los nodos que no tienen )ijos. RBOLES GENERALES (N-ARIOS) " La secuencia de nodos .n % , n & ,..., n 3 / se denomina camino del nodo n % , al nodo n 3 " La #"n(i+ud de ca'in" es el nmero de nodos de la secuencia menos uno. La longitud de camino est determinado por el nmero de aristas del camino, no por el nmero de nodos del camino. As el camino .a,b,c/ es de longitud &, el camino .a, b/ es de longitud %, el camino .a/ es de longitud #. " ,l camino de un nodo )acia si mismo es de longitud #. " +i e0iste un camino del nodo a )acia el nodo b, se dice que a es an+eces"r de b y b es suces"r o descendiente de a. RBOLES GENERALES (N-ARIOS) " Un antecesor o un descendiente de un nodo que no sea el mismo, recibe el nombre de an+eces"r .r".i" o descendien+e .r".i" respectivamente. La ra$ de un rbol es el nico nodo que no tiene antecesores propios. Un nodo sin descendientes propios se denomina )oja. " La a#+ura o .r"fundidad de un rbol, es la longitud de camino ms largo de ese nodo a una )oja. La altura del rbol es la altura de la ra$ a ese nodo. RBOLES GENERALES (N-ARIOS) O+r"s +/r'in"s " ,l '"'en+" o +a'a0" de un rbol, es el nmero de nodos que contiene el rbol. " ,l .es" es el nmero de )ojas del rbol. " Llamamos (rad" de un n"d" al nmero de )ijos del nodo. 6odemos decir entonces que las )ojas son los nodos de grado #. 7odos los nodos tiene )ijos a e0cepcin de las )ojas. 7odos los nodos tienen padre a e0cepcin de la ra$. RBOLES GENERALES (N-ARIOS) E$e'.#"1 (onsidere el rbol A siguiente! % & ' 8 9 : ; < %& %' %; %< %8 = %# %% %9 %= %: >ivel # >ivel % >ivel & >ivel ' >ivel 8 RBOLES GENERALES (N-ARIOS) 1a$! % ?omento! %= 6eso! %# Altura! 8 @rado.'/! & @rado.8/! ' 5escendientes de <! <, %', %8, %; y %< 5escendientes propios de <! %', %8, %; y %< Antecesores de <! %, ' y < Antecesores propios de <! % y '
RBOLES GENERALES (N-ARIOS) E$e'.#"1 +ea el rbol de vrtices - y altura ) 5efinimos ).u/ la altura del subrbol con ra$ u +i - 2 ) 2 "% - 2 AaB - 2 Aa, bB -2 Aa, b, c, d, eB ) 2 # ) 2 % ) 2 &
a a b a b c d e ).a/ 2 ) 2 & ).b/ 2 ).c/ 2% ).d/ 2 ).e/ 2 # ).b/ 2 # ).a/ 2 ) 2 % RBOLES GENERALES (N-ARIOS) &EORE2A +ea A un grafo con n vrtices Las siguientes afirmaciones son equivalentes %. A es un rbol &. A es cone0a y acclica '. A es cone0a y tiene n"% aristas 8. A es acclica y tiene n"% aristas &EORE2A +i a, b son vrtices distintos de un rbol A, entonces e0iste un nico camino que conecta estos vrtices. +e puede demostrar que como A es cone0o, e0iste al menos un camino de a )acia b. +i )ubiera ms caminos de este tipo, por medio de dos de ellos, algunas aristas podran tener ciclos, pero sabemos que un rbol no tiene ciclos. RBOLES GENERALES (N-ARIOS) 3RI2I&I4AS DE ACCESO a) 5I6O72AS7IZ8(n)1 devuelve el nodo )ijo ms a la i$quierda del nodo n en el rbol. 5evuelve >ulo si n es una )oja y, por tanto no tiene )ijos. !) 5ER2ANO7DER(n)1 devuelve el )ermano a la derec)a, el cual se define como el nodo m que tiene el mismo padre p que n, de forma que m esta inmediatamente a la derec)a de n en el ordenamiento de los )ijos de p. c) 4ALOR(n)1 devuelve el campo valor del nodo n en el rbol. d) RAIZ1 devuelve el nodo ra$ del rbol o >ulo si el rbol es nulo. e) INI&7ARBOL1 6ermite iniciali$ar el rbol como rbol nulo. RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES Re.resen+acin 'edian+e arre(#"s (uando se tiene los nodos etiquetados con enteros, es posible usar una representacin mediante un arreglo unidimensional A, en donde el ndice i representa el valor del nodo i, y A.i/ representa el valor del padre de i. # % % & & : : : ' ' % & ' 8 : 9 ; < = %# % & ' 8 : 9 = %# ; < A.C/ contiene el padre del nodo i A.8/ 2 & es el padre del nodo 8 RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES Re.resen+acin 'edian+e #is+a de -i$"s (uando los nodos estn etiquetados con mayor informacin, es conveniente utili$ar una estructura de listas, en donde cada nodo es una estructura de la forma 1egistro >odo Cnicio 7 -alor >odo Dsig Ein1egistro ,ste modelo presenta la restriccin que el nmero de nodos est limitado al tama*o del vector. RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES Re.resen+acin 'edian+e #is+a de -i$"s RA:Z es un arreglo de tama*o n .tama*o de -/ RA:Z(i) es la cabe$a de la lista que contiene los )ijos del nodo i.
% & ' 8 D : 9 D ; D < D = D %# D & ' D 8 : D = 9 ; < D %# D RA:Z Lis+a de -i$"s % & ' 8 : 9 = %# ; < RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES Accin Rec"rrid"(N) Cnicio 6ara C desde % )asta > p 2 1a$.C/ ?ientras p >ulo ,scribir p -alor p p sig Ein?ientras Ein6ara Ein RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES 1a$.i/ es la cabe$a de la lista de los )ijos del nodo i i 1a$.i/ Fijos del nodo i % 1a$.%/ &, ' & 1a$.&/ 8, : ' 1a$.'/ =, %# 8 1a$.8/ 2 >ulo >o tiene : 1a$.:/ 9, ;, < 9 1a$.9/ 2 >ulo >o tiene ; 1a$.;/ 2 >ulo >o tiene < 1a$.</ 2 >ulo >o tiene = 1a$.=/ 2 >ulo >o tiene %# 1a$.%#/ 2 >ulo >o tiene RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES La accin recorre todo el vector 1AGH, aunque alguna ra$ sea nula, por tanto no tiene )ijos. ,ste recorrido resulta innecesario, y se puede solucionar )aciendo que el vector 1a$ sea una lista enla$ada que contenga un nodo por cada nodo del rbol que no es )oja % & ' : & ' D 8 : D = %# D 9 ; < D RA:Z Lis+a de -i$"s RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES 3un+er" a# -i$" de 's a #a i,%uierda;-er'an" derec-" (5I-5D) Los nodos tienen dos apuntadores uno al )ijo de ms a la i$quierda y el otro al )ermano derec)o. 6untero al )ermano derec)o 6untero al )ijo ms a la i$quierda -alor del nodo RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES E$e'.#"1 ,l rbol de la figura .a/ puede representarse mediante el modelo FC"F5 mostrado en la figura .b/ .a/ .b/ RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES Re.resen+acin 'edian+e curs"res -i$" 's a #a i,%uierda- -er'an" derec-" La variable CABEZA apunta a la direccin de la ra$ del rbol .4ALOR(i)/< 5I6O(i) apunta a la posicin .>I5I.FCJI.i// donde se encuentra la direccin del )ijo de ms a la i$quierda. SIG(i) apunta a la posicin .>I5I.i// donde se encuentra la direccin del )ermano derec)o.
A K ( @ , E 5 RE3RESEN&ACI9N EN 2E2ORIA DE RBOLES GENERALES Re.resen+acin 'edian+e curs"res -i$" 's a #a i,%uierda--er'an" derec-" % E D % & & ; : ' K & ' 8 , D 8 : A 9 : 8 < 9 @ D 9 ' ; ; 5 D ; < D < ( = < % D = = 9 D : -ALI1 FCJI >I5I +C@ (AK,HA 2edian+e -i$" 's a #a i,%uierda--er'an" derec-" 1ACH variable global apunta a la ra$ del rbol -ALI1.i/ contiene el valor del nodo con direccin i FC.i/ contiene la direccin del )ijo ms a la i$quierda del nodo i F5.i/ contiene la direccin del )ermano derec)o del nodo i % # E # & ' ; K < 8 # , % : ' A # 9 # @ # ; # 5 8 < 9 ( # = : 1ACH FC -ALI1 F5 A K ( @ , E 5 RECORRIDO DE RBOLES GENERALES (onsidrese el rbol con 1a$ y los subrboles A % , A & , A ' , ..., A n ORDEN 3RE4IO 1a$ Los nodos de A % en orden previo Los nodos de A & en orden previo ............................ Los nodos de A n en orden previo ORDEN SI2=&RICO Los nodos de A % en orden simtrico 1a$ Los nodos de A & en orden simtrico Los nodos de A ' en orden simtrico ................................ Los nodos de A n en orden simtrico RECORRIDO DE RBOLES GENERALES ORDEN 3OS&ERIOR Los nodos de A % en orden posterior Los nodos de A & en orden posterior ............................ Los nodos de A n en orden posterior 1a$ ALGORI&2OS REC>RSI4OS 3ARA EL RECORRIDO DE >N ARBOL GENERAL Los algoritmos son abstractos, depender de la estructura de datos en la que se implementen Accin ORDEN73RE4IO(n) Cnicio Listar n 6ara cada )ijo ) de n de i$quierda a derec)a I15,>L61,-CI.)/ Ein6ara Ein RECORRIDO DE RBOLES GENERALES Accin ORDEN7SI2=&RICO(n) Cnicio +i n es )oja Listar n +ino ) FCJIL?A+LCHM.n/ I15,>L+C?N71C(I.)/ Listar n 6ara cada )ijo ) de n e0cepto el de ms a la i$quierda I15,>L+C?N71C(I.)/ Ein6ara Ein+i Ein RECORRIDO DE RBOLES GENERALES Accin ORDEN73OS&ERIOR(n) Cnicio 6ara cada )ijo ) de n I15,>L6I+7,1CI1.)/ Ein6ara Listar n Ein RECORRIDO DE RBOLES GENERALES A K ( 5 E , @ F C I > ? L O J Irden previo! A, K, ,, J, O, L, E, (, @, ?, 5, F, C, >, I Irden simtrico! J, ,, O, L, K, E, A, ?, @, (, F, 5, >, C, I Irden posterior! J, O, L, ,, E, K, ?, @, (, F, >, I, C, 5, A RBOL 2>L&ILENLACE r!"# de en#ace +ri.#e Los nodos tienen tres apuntadores, uno )acia el )ijo de ms a la i$quierda, el segundo apunta al nodo padre, y el tercero apunta al )ermano derec)o. ,sta representacin presenta una ventaja para volver al nivel superior. RBOL 2>L&ILENLACE r!"# c"n en#ace en ani##" 1esulta conveniente utili$ar listas circulares que cierren cadenas de rboles multienlace. (ada nodo tiene un puntero al )ijo de ms a la i$quierda, uno al )ermano derec)o y otro al padre! ,n el ltimo de los )ijos se reempla$a el puntero nulo por un puntero al primero de los )ermanos, conformando una lista circular de )ermanos, facilitando el acceso a cualquiera de ellos. RBOLES SI2ILARES RBOLES SI2ILARES +ean A % y A & dos rboles A % y A & se llaman rboles similares si tienen la misma estructura .misma forma/. A % y A & se llaman rboles copias, si son similares y tienen los mismos contenidos en sus respectivos nodos. A K ( 5 A K ( 5 , E @ F E @ F , .a/ .b/ .c/ .d/ Los rboles de las figuras .a/, .c/ y .d/ son similares. Los rboles de las figuras .a/ y .c/ son rboles copias. ,l rbol .b/ no es similar ni copia de .d/ RBOLES BALANCEADOS r!"# !a#ancead" 7odos los nodos que no son )ojas tienen el mismo nmero de ramas. Un rbol balanceado se construye desde la ra$, descendiendo )acia los niveles inferiores. (ada nivel se completa de i$quierda a derec)a, de modo que todos los niveles e0cepto el ltimo deben estar completos. ,jemplo! Los siguientes son rboles balanceados Los siguientes son rboles desbalanceados. RBOL BINARIO AB Un rbol binario es un tipo especial de rbol en el que todo nodo del rbol tiene a lo ms dos )ijos. +on muy utili$ados para reali$ar bsquedas y ordenamientos. 7ambin son utili$ados para representar e0presiones aritmticas. Definicin Un rbol binario AK se define como un conjunto de elementos llamados nodos o vrtices, de forma que! " A es vaco, en cuyo caso se llama rbol vaco o rbol nulo, o " A contiene un nodo distinguido v # llamado ra$ de A y los nodos restantes de A forman un par de conjuntos ordenados de rboles A % y A &
A % es llamado subrbol i$quierdo y A & es llamado subrbol derec)o. RBOL BINARIO AB
Definicin +e define un rbol binario como " Un rbol vaco " (ada nodo no tiene )ijos, o " tiene un )ijo i$quierdo " tiene un )ijo derec)o " tiene un )ijo i$quierdo y un )ijo derec)o
A % A & v # RBOL BINARIO AB
K
5 E @ A , ( A K ( , @ 5 E @rficamente podemos definir un conjunto como RBOL BINARIO Carac+er)s+icas de r!"#es !inari"s %. ,l nmero m0imo de nodos en un rbol binario ) es & )4% "% &. Un rbol con n nodos internos tiene n4% nodos e0ternos .)ojas/. '. La altura de un rbol binario lleno con n nodos internos es apro0imadamente log & n. RBOL BINARIO 2"de#" ?1 2edian+e a.un+ad"res a #"s -i$"s (ada nodo consiste de un registro! 1egistro >odo Cnicio 7 -alor >odo DFC PP apuntador al )ijo i$quierdo >odo DF5 PP apuntador al )ijo derec)o Ein1egistro A 5 , K ( A K ( 5 , RBOL BINARIO 2"de#" @1 2edian+e arre(#"s .ara#e#"s (curs"res) Ra),1 apunta al ndice de la entrada que contiene el valor de la ra$ del rbol. Dis.1 apunta al ndice de la primera entrada disponible en el vector. A K ( 5 , -ALI1 FC F5 1a$ , # # K ; % 5isp A & 9 ( # # 5 # # RBOLES ES&RIC&A2EN&E BINARIOS Definicin +ea .A, v # / rbol binario con ra$ v # A es un r!"# es+ric+a'en+e !inari", si cumple v - +i v no es )oja entonces v tiene subrboles i$quierdo y derec)o no vacos. Un rbol estrictamente binario con n )ojas tiene &n"% nodos. ,l rbol de la Eigura .a/ no es estrictamente binario, mientras que el rbol de la Eigura .b/ si lo es. .a/ .b/ RBOLES CO23LE&OS Y RBOLES C>ASI CO23LE&OS .a/ .b/ Definicin +ea .A, v # / rbol binario con ra$ v #
A es un r!"# c"'.#e+", si cumple +i A es de altura ) entonces, v - +i v es )oja entonces v est en el nivel ). ,s decir todas las )ojas deben estar en el nivel ).. ,l rbol de la figura .a/ no es completo, mientras que el rbol de la figura .b/ si lo es. a a RBOLES CO23LE&OS Y RBOLES C>ASI CO23LE&OS Definicin +ea .A, v # / rbol binario con ra$ v # y profundidad ) A es un r!"# cuasi c"'.#e+", si cumple %. v - +i v es )oja entonces v est en el nivel ) o nivel )"%. &. v - +i v tiene un descendiente derec)o en el nivel ), entonces todos los descendientes i$quierdos de v que sean )ojas tambin deben estar en el nivel ) b d f ,l rbol de la figura .a/ no es cuasi completo pues las )ojas estn el nivel %, & y ', por lo que no cumple la condicin %. ,l rbol de la figura .b/ no es cuasi completo pues aunque cumple la condicin %, las )ojas estn en el nivel & y '. 6ero no cumple la condicin &, ya que el nodo a tiene descendiente derec)o j en el nivel ', y un descendiente i$quierdo e en el nivel &. c e g .a/ b c d e f g ) i j 3 .b/ RBOLES CO23LE&OS Y RBOLES C>ASI CO23LE&OS ,l rbol de la figura .c/ es estrictamente binario y cumple ambas condiciones, por tanto es cuasi completo. ,l rbol de la figura .d/ aunque no es estrictamente binario, cumple ambas condiciones, por tanto es cuasi completo. a b c d e f g ) i .d/ a b c d e f g ) i .c/ j RBOLES CO23LE&OS Y RBOLES C>ASI CO23LE&OS Un rbol binario tiene en el nivel 3 a lo ms & 3 nodos. +i el rbol A es completo, A es estrictamente binario, por tanto el nivel 3 tendr e0actamente & 3 nodos. As el nivel # tendr & # 2 % nodos el nivel % tendr & % 2 & nodos el nivel & tendr & & 2 8 nodos de esto se deduce que un rbol completo de profundidad ) tiene & # 4 & % 4 ..... & ) nodos, esto equivale a ) & i 2 & )4% " % i2# ,l rbol binario tiene & ) nodos )ojas y & ) "% nodos no )ojas. RE3RESEN&ACI9N DE >N RBOL CO23LE&O O C>ASI CO23LE&O Un rbol binario es cuasi completo, si y slo si todos sus niveles e0cepto posiblemente el ltimo, tienen el m0imo nmero de nodos posible y los nodos del ltimo nivel estn lo ms a la i$quierda posible. RE3RESEN&ACI9N DE >N RBOL CO23LE&O O C>ASI CO23LE&O +i enumeramos los nodos de un rbol binario completo o cuasi completo con enteros %, &, ', ... 5e i$quierda a derec)a y por niveles de arriba )acia abajo, se puede implementar en un arreglo en donde el ndice representa la etiqueta del nodo. (on este etiquetado se puede determinar fcilmente quienes son los )ijos o el padre de cada nodo 3. RE3RESEN&ACI9N DE >N RBOL CO23LE&O O C>ASI CO23LE&O A K ( 5 , E @ F A K ( 5 , E @ F % & ' 8 : 9 ; < Advirtase que el nodo con ndice 3, 7iene como )ijo i$quierdo al nodo con ndice &D3 7iene como )ijo derec)o al nodo con ndice &D34% 7iene como padre al nodo con ndice 3P& RE3RESEN&ACI9N DE >N RBOL BINARIO CO23LE&O O C>ASI CO23LE&O Re.resen+acin secuencia# +upongamos que A es un rbol binario completo o cuasi" completo. ,l rbol A puede mantenerse en forma eficiente en un arreglo A1KIL, en donde! " La ra$ de A se guarda en A1KILQ%R " +i un nodo > esta en la posicin A1KILQ3R, entonces +u )ijo i$quierdo se encuentra en la posicin A1KILQ&D3R +u )ijo derec)o se encuentra en la posicin A1KILQ&D34%R " +i A1KILQ%R 2 >ulo el rbol esta vaco RE3RESEN&ACI9N DE >N RBOL BINARIO CO23LE&O O C>ASI CO23LE&O E$e'.#"1 %: %# &= %& 8: %: %# &= # %& # 8: % & ' 8 : 9 ; < ,l rbol de la figura .a/ no es completo. +e necesitan siete espacios para almacenar el rbol, aunque tenga cinco nodos. +i colocramos nulo para cada )ijo i$quierdo e )ijo derec)o de los nodos )ojas, el nodo ;, por ejemplo tendra a sus )ijos i$quierdo y derec)o en las posiciones catorce y quince respectivamente. >ecesitaramos quince nodos, lo que )ace que resulte ineficiente esta representacin para rboles que no son completos. .a/ RE3RESEN&ACI9N DE >N RBOL BINARIO CO23LE&O O C>ASI CO23LE&O E$e'.#"1 %: %# &= %& %: %# &= < %& %; % & ' 8 : 9 ; < ,l rbol de la figura .b/ es cuasi completo, necesita seis espacios, igual al nmero de nodos. .b/ %; < RECORRIDO DE RBOLES BINARIOS (onsidrese el rbol binario con RA:Z y los subrboles SAI y SAD subrbol i$quierdo y subrbol derec)o respectivamente. 3RE-ORDEN 1a$ +ubrbol i$quierdo en pre"orden +ubrbol derec)o en pre"orden IN-ORDEN +ubrbol i$quierdo en in"orden 1a$ +ubrbol derec)o en in"orden 3OS&-ORDEN +ubrbol i$quierdo en post"orden +ubrbol derec)o en post"orden 1a$ RA:Z SAI SAD RECORRIDO DE RBOLES BINARIOS Accin 3RE-ORDEN(n) Accin 3OS&-ORDEN(n) Cnicio Cnicio Listar n 6I+7"I15,>.FC.n// 61,"I15,>.FC.n// 6I+7"I15,>.F5.n// 61,"I15,>.F5.n/ Listar n Ein Ein Accin IN-ORDEN(n) Cnicio C>"I15,>.FC.n// Listar n C>"I15,>.F5.n// Ein , A RECORRIDO DE RBOLES BINARIOS ( E K 5 F @ 61, I15,>! A, K, 5, (, ,, @, F, E C> I15,>! 5, K, A, @, ,, F, (, E 6I+7 I15,>! 5, K, @, F, ,, E, (, A RECORRIDO DE RBOLES BINARIOS EN *OR2A NO REC>RSI4A RECORRIDO INORDEN En+rada1 1a$ .ra$ del rbol/ Sa#ida1 recorrido inorden 3rec"ndicin1 ,l rbol e0iste y es binario 1a$ apunta a la ra$ del rbol La pila 6 debe estar vaca +e recorre el rbol, avan$ando )asta su )ijo de ms a la i$quierda y en el camino se va empilando los nodos padres. (uando se encuentra la )oja ms i$quierda, se depila el padre, se lista su valor y se avan$a por la rama derec)a. ,n el subrbol derec)o se aplica el mismo proceso. RECORRIDO DE RBOLES BINARIOS EN *OR2A NO REC>RSI4A Accin Rec"rrid"7In"rden (Ra),) Cnicio 1 1a$ Cnit.6/ ?ientras.1 >ulo -acia.6// +i .1 >ulo/ ,mpilar.6, 1/ 1 1 FC +ino 5epilar.6, 1/ ,scribir 1 -alor 1 1 F5 Ein+i Ein?ientras Ein RECORRIDO DE RBOLES BINARIOS EN *OR2A NO REC>RSI4A RECORRIDO 3REORDEN En+rada1 1a$ .ra$ del rbol/ Sa#ida1 recorrido preorden 3rec"ndicin1 ,l rbol e0iste y es binario 1a$ apunta a la ra$ del rbol La pila 6 debe estar vaca +e recorre el rbol, avan$ando )asta su )ijo de ms a la i$quierda y en el camino se va listando y empilando los nodos padres. (uando se encuentra la )oja ms i$quierda, se depila el padre y se avan$a por la rama derec)a. ,n el subrbol derec)o se aplica el mismo proceso. RECORRIDO DE RBOLES BINARIOS EN *OR2A NO REC>RSI4A Accin Rec"rrid"73re"rden (Ra),) Cnicio 1 1a$ Cnit.6/ ?ientras.1 >ulo -acia.6// +i .1 >ulo/ ,scribir 1 -alor ,mpilar.6, 1/ 1 1 FC +ino 5epilar.6, 1/ 1 1 F5 Ein+i Ein?ientras Ein RECORRIDO DE RBOLES BINARIOS EN *OR2A NO REC>RSI4A RECORRIDO 3OS&ORDEN En+rada1 1a$ .ra$ del rbol/ Sa#ida1 recorrido postorden 3rec"ndicin1 ,l rbol e0iste y es binario 1a$ apunta a la ra$ del rbol La pila 6 debe estar vaca, constituido por dos campos! apuntador al nodo y un valor booleano indicando si desciende de un subrbol i$quierdo o derec)o. 2/+"d"1 +e recorre el rbol, avan$ando )asta su )ijo de ms a la i$quierda y en el camino se va empilando los nodos padres y su valor booleano. (uando se encuentra la )oja ms i$quierda, se depila el padreS si su valor booleano es derec)o se lista y se pasa al nodo siguiente sobre la pilaS si su valor booleano es i$quierdo se avan$a por la rama derec)a empilando los nodos padres junto con su valor booleano. RECORRIDO DE RBOLES BINARIOS EN *OR2A NO REC>RSI4A Accin Rec"rrid"73"s+"rden (Ra),) 1 1a$ Cnit.6/ ?ientras.1 >ulo -acia.6// +i .1 >ulo/ ,mpilar.6, .1, CHM// 1 1 FC +ino 5epilar.6, .1, C>5C(A5I1// +i .C>5C(A5I1 2 CHM/ ,mpilar.6, .1, 5,1// 1 1 F5 +ino ,scribir 1 -alor 1 >ulo Ein+i Ein+i Ein?ientras RECORRIDO 3OR NI4ELES DE >N RBOL BINARIO ,l recorrido por niveles o por anc)ura de un rbol binario consiste en visitar primero la ra$, luego los nodos del nivel %, despus los nodos del nivel &, etc., )asta visitar los nodos del ltimo nivel. (ada nivel se visita de i$quierda a derec)a. , A ( E K 5 F @ 1ecorrido! A, K, (, 5, ,, E, @, F RBOL BINARIO EA&ENDIDO Definicin Un rbol binario A se llama rbol"& o arbol binario e0tendido, si cumple que! 7odo vrtice tiene cero o dos )ijos Los nodos con dos )ijos se denominan nodos internos. Los nodos con cero )ijos se denominan nodos e0ternos u )ojas ,n un rbol"&, los nodos internos se grafican mediante crculos, y las )ojas mediante cuadrados. Definicin ,n un rbol e0tendido, el nmero de nodos e0ternos es igual al nmero de nodos internos mas uno. N E B N I C ? RBOL BINARIO EA&ENDIDO
Un rbol binario puede convertirse a rbol"& reempla$ando todo rbol vaco por un nuevo nodo. Al e0tenderse un rbol binario, sus )ojas se convierten en nodos internos, y los nodos a*adidos se convierten en )ojas. Los rboles e0tendidos se usan para representar rboles de e0presiones aritmticas. Trbol binario Trbol e0tendido RBOLES DE EA3RESIONES Un rbol ordenado puede usarse para representar una e0presin aritmtica. ,l recorrido inorden del rbol produce la e0presin en notacin infija. 5e igual forma los recorridos preorden y postorden producen la notacin prefija y postfija respectivamente. Un rbol de e0presin es un rbol binario que cumple! Los nodos )ojas estn etiquetados con operandos Los nodos no )ojas estn etiquetados con operadores La sinta0is abstracta describe una e0presin construida mediante la aplicacin de un operador binario O3 a dos sube0presiones E ? y E @ RA:Z E ? E @ RBOLES DE EA3RESIONES +ea , una e0presin aritmtica +i O3 2 4, entonces el valor de , es la suma de los valores de E ? y E @ . +i O3 2 D entonces el valor de , es el producto de los valores de E ? y E @ ,jemplo! D : 4 < a 6re"orden D : 4 < a notacin prefija Cn"orden : D < 4 a notacin infija 6ost"orden : < a 4 D notacin postfija RBOLES DE EA3RESIONES Aunque generalmente en una e0presin los operadores son binarios. Un rbol de e0presin puede representar tambin e0presiones de operadores no binarios ,jemplo! D +eno 4 a Log Irden previo D +eno 4 a Log Irden simtrico +eno D a 4 Log Irden 6osterior +eno a Log 4 D
A3LICACI9N DE RBOLES BINARIOS1 E4AL>ACI9N DE
EA3RESIONES Fasta a)ora todas las estructuras )an sido consideradas como estructuras )omogneas, ya que todos los elementos son del mismo tipo. Los rboles que contienen nodos de tipos diferentes se denominan )eterogneos y un ejemplo de ellos son los rboles de e0presin en los que los nodos contienen en su parte valor un operador si son internos, y un operando si son e0ternos. +e presenta a continuacin una aplicacin para evaluar una e0presin en notacin postfija. 1egistro >odo Kooleano 7ipo >odo PP 7ipo de >odo! operando u Union PP operador (arcter -alor(arcter 1eal -alor>umrico EinUnion >odo DFC >odo DF5 Ein1egistro >odo D1a$ PP ra$ del rbol A3LICACI9N DE RBOLES BINARIOS1 E4AL>ACI9N DE EA3RESIONES Accin Eva#Da(Ra),)1 &i." Rea# Cnicio 1eal operando%, operando& (arcter operador +i .1a$ 7ipo>odo 2 operando/ 1etornar .1a$ -alor>umrico/ Ein+i Iperando% ,vala.1a$ FC/ Iperando& ,vala.1a$ F5/ Iperador 1a$ -alor(arcter ,vala Iperacin.Iperador, Iperando%, Iperando&/ Ein RBOLES DE EA3RESIONES (onsidrese el siguiente fragmento en ( E-i#e (A FB aGIH) I B I ; ?I ,l siguiente rbol muestra la sinta0is abstracta del fragmento. ,l E-i#e para el ciclo U)ile, tiene dos )ijos, que corresponden a la verificacin de la e0presin y al cuerpo del ciclo U)ile respectivamente. Los otros operadores en el rbol son FB para verificar la desigualdad, )ndice para la indicacin de arreglos, asi(na para la asignacin y ; para la resta. U)ile V2 asigna 0 ndice C " A C C % CONS&R>CCI9N DE >N RBOL DE EA3RESI9N (onsidrese una e0presin U en notacin postfija. 6resentamos un algoritmo para construir un rbol de e0presin a partir de U En+rada1 U e0presin postfija Sa#ida1 A Trbol de e0presin 2/+"d"1 ?ientras e0istan smbolos %. Leer carcter ( leer e0presin postfija smbolo por smbolo &. +i ( es operando (rear un rbol de un nodo ,mpilar en 6, un apuntador p al nodo +ino .( es operador/ 5epilar los dos ltimos apuntadores a rboles p % y p & , (onstruimos un rbol con ra$ ( .el operador/ y sus )ijos i$quierdo y derec)o que apuntan a p % y p & respectivamente, ,mpilamos p, el apuntador al nuevo rbol '. ,n la pila quedar finalmente un apuntador al rbol de e0presin final. CONS&R>CCI9N DE >N RBOL DE EA3RESI9N Dec#aracin de un n"d" de un r!"# !inari" 1egistro >odo Cnicio 7 -alor >odo DFC PP apuntador al )ijo i$quierdo >odo DF5 PP apuntador al )ijo derec)o Ein1egistro Accin C"ns+ruJe7r!"#7de7EK.resin(3) Cnicio Leer ( ?ientras ( WXY PP WXY usado como centinela +i ( es operando p nuevo >odo p -alor ( ,mpilar.6, p/ +ino 5epilar.6, p & / 5epilar.6, p % / p nuevo >odo p -alor ( p FC p % p F5 p & ,mpilar .6, p/ Ein+i Leer ( Ein?ientras Ein RBOL BINARIO DE BLS8>EDA Un rbol binario de bsqueda AKK .binary searc) tree/, tambin llamado rbol binario ordenado, es aquel en el cual sus nodos estn etiquetados con un valor de llave tomado de un conjunto ,, estos elementos pueden ser complejos, pero por simplicidad supondremos que son enteros. ,n un rbol de bsqueda se cumple que! 6ara todo nodo >! Z 7odos los valores de los nodos del subrbol i$quierdo son menores que el valor de llave de >. Z 7odos los valores de los nodos del subrbol derec)o son mayores que el valor de la llave de >. ,jemplo! ' '< %8 :' ;# 8= %= RBOL BINARIO DE BLS8>EDA ,l rbol binario de bsqueda AKK permite buscar y encontrar un elemento, tambin permite insertar y borrar elementos fcilmente. ,sta estructura contrasta con los arreglos y las listas! Z Arre(#" unidi'ensi"na#1 aqu se puede buscar y encontrar fcilmente, pero es costoso insertar y eliminar, porque se tienen que )acer despla$amientos a la i$quierda o a la derec)a del elemento a eliminar o insertar. Z Lis+as en#a,adas1 aqu se puede insertar y eliminar fcilmente, pero es costoso buscar y encontrar un elemento, ya que se debe usar una bsqueda secuencial. La definicin de rbol binario de bsqueda dada asume que todos los valores de los nodos son distintos. ,0iste una definicin anloga de rbol binario de bsqueda que permite duplicados, esto es, en la que cada nodo > tiene la siguiente propiedad! El valor de N es mayor que cualquier valor del subrbol izquierdo de N y es menor o igual que cualquier valor del subrbol derecho de N RBOL BINARIO DE BLS8>EDA BDs%ueda de un e#e'en+" +upongamos que buscamos el valor - en un rbol AKK con ra$ 1. La accin Kuscar debe devolver la direccin p .apuntador/ al nodo que contiene -, o nulo si no se encuentra. +i el rbol esta vaco .si 1 2 >ulo/, se devuelve p 2 >ulo. +ino se compara el valor del nodo actual con -, si son iguales se devuelve en p la direccin del nodo. +i no es as )acemos una bsqueda bien en el lado i$quierdo del nodo o bien en el lado derec)o del nodo dependiendo de la relacin del valor del nodo con -. (onsideremos un rbol cuyos nodos son registros tipo >odo 1egistro >odo Cnicio 7 -alor >odo DFC PP apuntador al )ijo i$quierdo >odo DF5 PP apuntador al )ijo derec)o Ein1egistro RBOL BINARIO DE BLS8>EDA ,l siguiente algoritmo Kuscar utili$a las siguientes variables! 1a$ ! apuntador al nodo ra$ del rbol -al! -alor a buscar 6os! apuntador al nodo que contiene -al o nulo si no lo encuentra 6os6ad! apuntador al padre (uando se busca -al en el rbol AKK se presentan cuatro casos! (aso%! 6os 2 >ulo y 6os6ad 2 >ulo Trbol >ulo (aso&! 6os >ulo [ 6os6ad 2 nulo -al se encuentra en el nodo ra$ del rbol (aso'! 6os 2 >ulo y 6os6ad >ulo -al no se encuentra, pero puede a*adirse al rbol como )ijo de 6os6ad (aso8! 6os >ulo y 6os6ad >ulo -al se encuentra en un nodo que no es ra$ del rbol Accin Buscar(Ra),M 4a#M 3"sM 3"s3ad) Cnicio +i .1a$ 2 >ulo/ 6os >ulo 6os6ad >ulo +ino n 1a$ +i .n -alor 2 -al/ 6os 1a$ 6os6ad >ulo +ino +i .-al \ n -alor/ n n F5 +ino n n FC Ein+i 6adre 1a$ encontr falso ?ientras.n >ulo encontr/ +i .n -alor 2 -al/ 6os n 6os6ad 6adre encontr verdadero +ino 6adre n +i .-al ] n -alor/ n n FC +ino n n F5 Ein+i Ein+i Ein?ientras +i . encontr/ 6os >ulo 6os6ad 6adre Ein+i Ein+i Ein La bsqueda en el rbol AKK puede reali$arse en forma recursiva! *uncin BusRec(RM 4a#)1 &i." 3 Cnicio +i .1 2 >ulo/ Kuscar >ulo +ino +i.-al ] 1 -alor/ Kuscar Kus1ec.1 Fi, -al/ +ino +i .-al \ 1 -alor/ Kuscar Kus1ec.1 F5, -al/ +ino Kuscar 1 Ein+i Ein+i Ein+i 1etornar Kuscar Ein RBOL BINARIO DE BLS8>EDA INSERCI9N DE >N ELE2EN&O 6ara insertar un elemento - en un rbol AKK, se procede en forma similar a la bsqueda de un elemento. +i - se encuentra, no se )ace nada. +i no es as, se inserta - en el ltimo espacio del camino recorrido. Accin Inser+ar(Ra),M 4a#) Cnicio 6os >ulo 6os6ad >ulo Kuscar.1a$, -al, 6os, 6os6ad/ +i .6os >ulo/ ,scribir -al, ^ ya e0iste_ +ino n nuevo >odo n -alor -al n FC >ulo n F5 >ulo +i .6os6ad 2 >ulo/ 1ai$ n +ino +i .-al ] 6os6ad -alor/ 6os6ad FC n +ino 6os6ad F5 n Ein+i Ein+i Ein+i Ein ,jemplo! %& : < %< & ; +e insert = %& : < %< & ; = Accin Inser+arRec(RM 4a#) NN algoritmo recursivo de la insercin Cnicio +i .1 2 >ulo/ n nuevo nodo n -alor -al n FC >ulo n F5 >ulo 1 n +ino +i .-al ] 1 -alor/ Cnsertar1ec .1 FC, -al/ +ino +i .-al \ 1 -alor/ Cnsertar1ec.1 F5, -al/ +ino ,scribir -al, ^ ya e0iste_ Ein+i Ein+i Ein+i Ein RBOL BINARIO DE BLS8>EDA ELI2INACI9N DE >N ELE2EN&O (uando se quiere eliminar un elemento, se presentan tres casos! ` +i el nodo es )oja, se elimina de inmediato. ` +i el nodo tiene un )ijo, el nodo se puede eliminar )aciendo un ajuste en un apuntador del padre, para saltar el nodo, modificando el apuntador del padre para que apunte al nodo )ijo del nodo a eliminar. ` ,l caso complicado se da cuando el nodo a eliminar tiene dos )ijos. ,n este caso, la estrategia consiste en sustituir el nodo a eliminar por el nodo con el valor ms peque*o del subrbol derec)o, y eliminar este nodo. RBOL BINARIO DE BLS8>EDA Accin E#i'inar() Cnicio ,scribir ^Cngrese valor a eliminar _ Leer -al Buscar(Ra),M 4a#M 3"sM 3"s3ad) +i .6os 2 >ulo/ ,scribir -al, ^ no e0iste en el rbol_ +ino +i .6os FC >ulo 6os F5 >ulo/ Cas"7B(Ra),M 4a#M 3"sM 3"s3ad) +ino Cas"7A(Ra),M 4a#M 3"sM 3"s3ad) Ein+i Ein+i Ein RBOL BINARIO DE BLS8>EDA Cas"7A ,limina el nodo > de la posicin 6os, donde > no tiene dos )ijos. ,l puntero 6os6ad da la posicin del padre de > o si 6os6ad 2 >ulo, es que > es el nodo 1a$. ,l puntero Fijo da la posicin del nico )ijo de >, o si Fijo 2 >ulo es que > no tiene )ijos. Accin Cas"7A(Ra),M 4a#M 3"sM 3"s3ad) Cnicio +i .6os Fi 2 >ulo 6os F5 2>ulo/ Fijo >ulo +ino +i .6os FC >ulo/ Fijo 6os FC +ino Fijo 6os F5 Ein+i Ein+i +i .6os6ad >ulo/ +i .6os 2 6os6ad FC/ 6os6ad Fi Fijo +ino 6os6ad F5 Fijo Ein+i +ino 1ai$ Fijo Ein+i Ein ,jemplo! %& : < & ; +e elimin < %< %& : < & ; %< RBOL BINARIO DE BLS8>EDA Cas"7B ,limina el nodo > de la posicin 6os, donde > tiene dos )ijos. ,l puntero 6os6ad da la posicin del padre de > o si 6os6ad 2 >ulo, es que > es el nodo 1a$. ,l puntero +uc da la posicin del sucesor inorden de > y 6ad+uc da la posicin del padre del sucesor inorden. Accin Cas"7B(Ra),M 4a#M 3"sM 3"s3ad) Cnicio 7 6os n 6os F5 ?ientras .n FC >ulo/ 7 n n n FC Ein?ientras +uc n 6ad+uc 7 Cas"7A(Rai,M 4a#M SucM 3adSuc) +i .6os6ad >ulo/ +i .6os 2 6os6ad FC/ 6os6ad FC +uc +ino 6os6ad F5 +uc Ein+i +ino 1ai$ +uc Ein+i +uc FC 6os FC +uc F5 6os F5 Ein ,jemplo! %& : < & ; +e elimin : %< %# %& ; < & ; %< %# RBOLES EN5EBRADOS ,n un recorrido inorden, la pila contiene la direccin del siguiente elemento inorden en el recorrido. (onsideremos como alternativa que cada nodo con un subrbol derec)o nulo, tiene en el apuntador )ijo derec)o, la direccin al sucesor inorden, esto )ara que sea innecesario sacar de la pila la direccin del siguiente elemento en el recorrido. A este tipo de apuntadores se le conoce como )ebra, y al rbol que contiene )ebras se le denomina en)ebrado. ,ste tipo de rbol requiere que cada nodo contenga adems de dos punteros a los )ijos, un campo )ebra para indicar si su apuntador derec)o es o no una )ebra. Un rbol en)ebrado .7)readed tree/ se basa en la propiedad de que una representacin de rbol basada en apuntadores desaprovec)a muc)os apuntadores que no apuntan a ningn nodo. (uando un nodo no tiene )ijo derec)o, se sustituye su valor de apuntador derec)o por su sucesor inorden, y cuando no tiene )ijo i$quierdo por su predecesor inorden. RBOLES EN5EBRADOS (onsideremos un rbol representado por nodos definidos de la siguiente forma 1egistro >odo 7 -alor >odo DFC >odo DF5 Kooleano Febra Ein1egistro Febra es verdadero si F5 es nulo o una )ebra diferente de nulo, falso en otro caso. >odo D1a$ ,l booleano )ebra es utili$ado para indicar si FC o F5 es un puntero al )ijo i$quierdo o al )ijo derec)o, o si son apuntadores .)ebra/ al predecesor inorden o al sucesor inorden respectivamente. RBOLES EN5EBRADOS A K 5 , ( E C F @ ,l rbol de momento = tiene %< apuntadores, de los cuales %# son nulos .ms de la mitad/. ,stos apuntadores pueden reciclarse, utili$ndose como apuntadores al sucesor inorden RBOLES EN5EBRADOS A LA DEREC5A A K 5 , ( E C F @ Un rbol en)ebrado a la derec)a contiene )ebras que apuntan al sucesor inorden derec)o. Los nodos que no tienen )ijo derec)o, reempla$an sus punteros por un apuntador al sucesor inorden. Febras que apuntan al sucesor inorden. +e presenta la accin recorrido inorden no recursivo para el rbol en)ebrado Accin Rec"rrid"(Ra),) Cnicio 1 1a$ 1epetir q >ulo ?ientras.1 >ulo/ q 1 1 1 FC Ein?ientras +i .q >ulo/ ,scribir q -alor 1 q F5 ?ientras . 1 >ulo q Febra/ ,scribir 1 -alor q 1 1 1 F5 Ein?ientras Ein+i ?ientras.q >ulo/ Ein RBOLES EN5EBRADOS A LA IZ8>IERDA A K 5 , ( E C F @ Un rbol en)ebrado a la i$quierda contiene )ebras que apuntan al antecesor inorden i$quierdo. Los nodos que no tienen )ijo i$quierdo, reempla$an sus punteros por un apuntador al nodo antecesor inorden. Febras que apuntan al antecesor inorden. RBOLES 3RE5EBRADOS Y 3OS&5EBRADOS RBOLES 3RE5EBRADOS Un rbol pre)ebrado puede definirse de manera similar a los rboles en)ebrados. La diferencia radica en que los apuntadores derec)os e i$quierdos de nodos con valor >ulo son sustituidos respectivamente por los sucesores y antecesores preorden del nodo correspondiente, en cuyo caso se llaman pre)ebrado a la i$quierda o pre)ebrado a la derec)a respectivamente. RBOLES 3OS&5EBRADOS 5e manera similar en un rbol post)ebrado los apuntadores derec)os e i$quierdos de nodos con valor >ulo son sustituidos respectivamente por los sucesores y antecesores postorden del nodo correspondiente, en cuyo caso se llamarn post)ebrado a la i$quierda o post)ebrado a la derec)a respectivamente. RBOL EN 2ON&9N ,l rbol en montn se usa en un algoritmo de ordenacin llamado ordenacin por montn. ,ste algoritmo mejora el tiempo de ejecucin en el peor caso comparado con el mtodo de ordenacin rpida. Definicin Un rbol binario A se dice en montn si! a/ A es completo b/ ,l valor de cada nodo de A es mayor que los valores de cualquiera de sus )ijos. =; =: << 8< =8 :: 99 RBOL EN 2ON&9N Insercin en un r!"# en '"n+n En+rada1 Lista de elementos. Sa#ida1 rbol en montn. ?ientras e0istan elementos - en la entrada se proceder de la siguiente forma! %. +e adiciona - al final de ? de forma que ? sigue siendo completo, aunque no necesariamente sea un rbol en montn. &. +i al adicionar - al rbol, no resulta de montn, se )ace subir - )asta su lugar apropiado en ? )asta que ? sea finalmente de montn. =: <# 8# 9% :9 &: '# =: <# 8# 9% :9 &: '# Mueremos a*adir 8: a/ Aumentamos 8: en la posicin 3 2 < b/ (omparamos A.3/ 2 8: con su padre que se encuentra en A.3P&/ 2 A.8/ 2 '# c/ (omo '# ] 8: los cambiamos, as 8: aparece como padre de '# y como )ijo de 8#. d/ (omo 8: \ 8# los cambiamos y 8: queda como padre de 8#. 8: O P Q R S R T R @ P P U U ? O P Q R S R T R @ P P U U ? Q P =: <# 8: 9% :9 &: 8# '# O P Q P S R Q R @ P P U U ? T R Einalmente queda RBOL EN 2ON&9N Insercin en un r!"# en '"n+n ,l rbol en montn con > elementos est guardado en el vector ?. La accin CnsercinL?ontn inserta - como un nuevo elemento del rbol. > se incrementa en %. 6 da la posicin de - a medida que sube por el rbol y 6A5 indica la posicin del padre de -. Accin Insercin72"n+n(2MNM4) Cnicio > > 4 % 6 > ?ontn falso ?ientras .6 \ % ?ontn/ 6ad 6P& +i .- ?.6ad// ?.6/ - ?ontn verdad +ino ?.6/ ?.6ad/ 6 6ad Ein+i Ein?ientras Cf .?ontn/ ?.%/ - Ein+i Ein RBOL EN 2ON&9N E#i'inacin de #a ra), en un r!"# en '"n+n En+rada1 rbol en montn ? con > elementos Sa#ida1 rbol en montn ? con >"% elementos - 2 ?.%/ ra$ del rbol ? 3r"cedi'ien+"1 6ara eliminar la ra$ en un rbol en montn ?! %. Asignamos la ra$ ?.%/ a la variable - &. 1eempla$amos el nodo ra$ a eliminar con el ltimo nodo que fue adicionado en ?, de modo que ? sigue siendo completo, aunque no necesariamente un rbol en montn. '. 1eamontonamos, )aciendo que la nueva ra$ se mueva a su lugar adecuado para que ? sea finalmente un rbol en montn.
Accin E#i'ina7Ra),(2MNM4) Cnicio - ?.%/ U ?.>/ > > Z % 6 % FC & F5 ' ?ontn falso ?ientras .F5 > ?ontn/ +i .U ?.FC/ U ?.F5// ?.6/ U ?ontn verdad +ino +i .?.F5/ ?.FC// ?.6/ ?.FC/ 6 FC +ino ?.6/ ?.F5/ 6 F5 Ein+i FC &D6 F5 &D64% Ein+i Ein?ientras +i .?ontn/ +i.FC 2 > U ] ?.FC// ?.6/ ?.FC/ 6 FC Ein+i ?.6/ U Ein+i Ein RBOL EN 2ON&9N CREACI9N DE >N RBOL EN 2ON&9N +e tiene una fila E de enteros. +e quiere construir una aplicacin para crear un rbol en montn teniendo como entrada la fila E de enteros. En+rada1 E fila secuencial no vaca Sa#ida1 ? rbol en montn 3r"cedi'ien+"1 %. 6rimer.E/ abre la fila E &. 7omar.E,-/ toma el primer elemento de E y lo guarda en -. Luego asignar - a ?.%/ '. 7omar.E, -/ toma el siguiente elemento de E y lo guarda en - 8. ,l ciclo ?ientras se ejecuta mientras e0istan elementos en la fila. ,l ciclo consiste en! Cnsertar el elemento tomado de E en el rbol en ?ontn ? 7omar el siguiente elemento de E. RBOL EN 2ON&9N Accin Crea7r!"#72"n+n(*M 2) Cnicio 6rimer.E/ 7omar.E,-/ > % ?.>/ - 7omar.E,-/ ?ientras.altimo.E// Insercin72"n+n(2M NM 4) NN inserta - en el vector ? con > elementos 7omar.E, -/ Ein?ientras Ein RBOL EN 2ON&9N ORDENA2IEN&O EN 2ON&9N +ea ? un rbol en montn de > elementos, lo que quiere decir que el nodo ra$ corresponde al mayor valor del rbol. +i e0traemos la ra$ y la colocamos en una lista, y reempla$amos la ra$ por el ltimo nodo, es posible que el rbol resultante no sea un montn, en este caso lo reamontonamos para convertirlo en un rbol en montn. >uevamente eliminamos la ra$ y la adicionamos en la lista, y as proseguimos )asta que el rbol este vaco, y todos sus elementos se )ayan pasado a la lista en orden descendente. RBOL EN 2ON&9N ORDENA2IEN&O EN 2ON&9N En+rada1 rbol en montn Sa#ida1 lista de elementos en orden descendente. 3r"cedi'ien+"1 ?ientras el rbol en montn no sea vaco, repetir los pasos! % ,liminar la ra$, y colocar el elemento en la lista & 1eempla$ar la ra$ con el ltimo nodo del rbol. +i el rbol resultante no es un montn, entonces se reamontonar para convertirlo en un montn, luego se continuar en el paso %. Accin Ordena72"n+n(2M N) Cnicio (ab >ulo ?ientras .> \ #/ E#i'ina7Ra),(2M NM 4) Adiciona.(ab, -, U/ PP adiciona - en la lista Ein?ientras Ein :& ; 8< 8: &% 8: ; 8< &% ,liminamos la ra$ ! :& ,liminamos la ra$ ! 8< L! :& 8< ; 8: &% &% ; 8: L! :&, 8< 8: ; &% ,liminamos la ra$ ! 8: L! :&, 8<, 8: ; &% &% ; ,liminamos la ra$ ! &% L! :&, 8<, 8:, &% ; ,liminamos la ra$ ! ; L! :&, 8<, 8:, &%, ; RBOL EN 2ON&9N CO23LE6IDAD DE LA ORDENACION 3OR 2ON&9N ,n la construccin del rbol en montn ?, el nmero de comparaciones para encontrar el sitio adecuado para un nuevo elemento - no puede e0ceder a la profundidad del rbol. (omo ? es un rbol completo, su profundidad esta limitada por log & m, donde m es el nmero de elementos del rbol ?. 5e este modo, el nmero de comparaciones g.n/ para insertar los n elementos del rbol est limitado por! g.n/ n log & n 6ara eliminar los n elementos del rbol ?, dado que el rbol es completo con m elementos y que los subrboles i$quierdo y derec)o de ? son montones, se elimina la ra$ y para reamontonar se efectan cuatro comparaciones para mover el nuevo nodo ra$ .el ltimo del rbol/ un paso abajo en el rbol. (omo la profundidad del rbol no e0cede a log & m, al reamontonar se efectan a lo mas 8 log & m comparaciones para encontrar el lugar adecuado del nuevo nodo ra$. +i ).n/ es el nmero total de comparaciones para eliminar los n elementos de ?, lo que requiere reamontonar n veces, esta limitado por! ).n/ 8n log & n ,l tiempo de ejecucin para la ordenacin es proporcional a n log & n, o sea, f.n/ 2 I.n log & n/. ,l tiempo de ejecucin de la ordenacin por el mtodo de la burbuja es I.n & /. ,l tiempo medio de ejecucin de la ordenacin rpida es I.n log & n/ como la del montn, pero para el peor caso es proporcional a I.n & /. RBOL DE 5>**2AN 1ecordemos que un rbol binario e0tendido o rbol"& es un rbol binario en el que cada nodo tiene # o & )ijos. Los nodos con # )ijos se llaman nodos e0ternos y los nodos con & )ijos se llaman nodos internos. Los nodos internos estn representados por crculos y los nodos e0ternos estn representados por cuadrados. ,n cualquier rbol"& el nmero > , de nodos e0ternos es el nmero > C de nodos internos mas %S o sea, > , 2 > C 4 % La #"n(i+ud de ca'in" eK+ern" L E de un rbol"& es la suma de todas las longitudes de camino obtenidas sobre cada camino desde la ra$ 1 )asta un nodo e0terno. La #"n(i+ud de ca'in" in+ern" L I de un rbol"& es la suma de todas las longitudes de camino obtenidas sobre cada camino desde la ra$ 1 )asta un nodo interno. 6ara cualquier rbol"& con n nodos internos L , 2 L C 4 &n RBOL DE 5>**2AN +uponga que 7 es un rbol"& con n nodos e0ternos y suponga que cada nodo e0terno tiene asignado un peso .no negativo/. La #"n(i+ud de ca'in" c"n .es" (eK+ern") 3 del rbol 7 se define como la suma de las longitudes de camino con sus pesos 6 2 U % L % 4 U & L & 4 .... 4 U n L n donde U i y L i denotan respectivamente, el peso y la longitud del camino del nodo e0terno > i . +i consideramos la coleccin de rboles"& con n nodos e0ternos y a cada rbol"& se le dan los mismos n pesos para sus nodos e0ternos. ,ntonces no est claro que rbol tenga la mnima longitud de camino con peso. ,l problema general que queremos resolver es el siguiente! +uponga una lista de n pesos dada! b % , b & , ...., b n ,ntre todos los rboles"& con n nodos e0ternos y con los n pesos dado, encontrar un rbol 7 con una longitud de camino con peso mnimo. Fuffman dio un algoritmo para encontrar ese rbol 7. RBOL DE 5>**2AN A#("ri+'" de 5uff'an +e define recursivamente en funcin del nmero de pesos. La solucin para un solo peso es simplemente el rbol con un solo nodo. En+rada1 + secuencia de nodos Sa#ida1 A rbol Fuffman 2/+"d"1 1epetir )asta que + contenga un solo nodo %. ,legir de + dos nodos n % y n & con menor peso b % y b &
respectivamente. &. ,liminar n % y n & de +. '. Adicionar un nuevo nodo con peso b 2 b % 4 b & RBOL DE 5>**2AN Accin 5uff'an(SM n) Cnicio +i n 2 & ,legir n % con peso b % ,legir n & con peso b & 7 construye.b % , b & / 1etornar.7/ +ino ,legir nodos n i , n j con menor peso b i y b j c n i [ n j Adicionar nodo H con peso b 2 b i 4 b j ,nla$ar c como )ijo i$quierdo de H ,nla$ar [ como )ijo derec)o de H 7 Fuffman.+, n"%/ 1etornar.7/ Ein+i Ein A! && K! : (! %% 5! %= ,! & E! %% @! &: F! : A! && (! %% 5! %= E! %% @! &: F! : ; ,! & K! : A! && (! %% 5! %= E! %% @! &: F! : ; ,! & K! : %& A! && 5! %= @! &: F! : ; ,! & K! : %& E! %% (! %% && A! && 5! %= @! &: F! : ; ,! & K! : %& E! %% (! %% && '% A! && 5! %= @! &: F! : ; ,! & K! : %& E! %% (! %% && '% 88 A! && 5! %= @! &: F! : ; ,! & K! : %& E! %% (! %% && '% 88 :9 A! && 5! %= @! &: F! : ; ,! & K! : %& E! %% (! %% && '% 88 :9 %## I23LE2EN&ACI9N DEL RBOL DE 5>**2AN +e crea un bosque de rboles. (ada rbol corresponde a un nodo de una lista que contiene informacin acerca del valor del nodo, puntero al )ijo i$quierdo, puntero al )ijo derec)o, un campo para el peso .probabilidad o frecuencia/ y un puntero al siguiente rbol del bosque. 1egistro >odo carcter -alor >odo DFC PP puntero al )ijo i$quierdo >odo DF5 PP puntero al )ijo derec)o >odo DFermano PP puntero al siguiente rbol del bosque >umrico 6eso PP peso del nodo Ein1egistro >odo D1a$
I23LE2EN&ACI9N DEL RBOL DE 5>**2AN 3rec"ndicin La lista enla$ada est ordenada por peso y contiene ms de dos nodos 3"s+c"ndicin ,l bosque contiene solo un rbol .de Fuffman/ 2/+"d"1 los nodos se van agrupando de dos en dos )asta que solo un rbol es el bosque .de Fuffman/ Accin 5uff'an(R) NN en f"r'a recursiva Cnicio FC +eleccionarL?enor.1/ F5 +eleccionarL?enor.1/ 6 (onstruyeL6adre.FC, F5/ CnsertaL6adre.1, 6/ +i .1 Fermano 2 >ulo/ 1etornar 6 +ino 6 Fuffman .1/ 1etornar 6 Ein+i Ein I23LE2EN&ACI9N DEL RBOL DE 5>**2AN Accin 5uff'an(R) NN en f"r'a i+era+iva Cnicio ?ientras.1 Fermano >ulo/ FC +eleccionarL?enor.1/ F5 +eleccionarL?enor.1/ 6 (onstruyeL6adre.FC, F5/ CnsertaL6adre.1, 6/ Ein?ientras 1etornar 1 Ein Accin Se#ecci"nar72en"r(R) Cnicio 6 1 1 6 Fermano 6 Fermano >ulo 1etornar 6 Ein I23LE2EN&ACI9N DEL RBOL DE 5>**2AN La accin (onstruyeL6adre crea un nodo ficticio n y le asigna como )ijos los dos nodos seleccionados previamente. Accin C"ns+ruJe73adre(3M 8) Cnicio n nuevo nodo n 6eso 6 6eso 4 M 6eso n FC 6 n F5 M n Fermano >ulo 1etornar n Ein La accin CnsertaL6adre inserta el nuevo nodo > construido en la lista con cabecera 1 en el lugar que le corresponde segn su peso. Accin Inser+a73adre(RM N) Cnicio +i .1 2 >ulo/ 1 > +ino 6 1 +i .6 6eso \ > 6eso/ > Fermano 1 1 > +ino ?ientras.> 6eso \ 6 6eso 6 Fermano >ulo/ Ant 6 6 6 Fermano Ein?ientras +i .6 6eso d > 6eso/ > Fermano 6 Ant Fermano > +ino > Fermano 6 Fermano 6 Fermano > Ein+i Ein+i Ein+i Ein A3LICACI9N EN CODI*ICACI9N +uponga que un conjunto de n datos A % , A & , ..., A n , a ser codificados mediante cadena de r bits donde & r"% ] n & r +uponga que los elementos no se dan con la misma probabilidad. ,ntonces se puede preservar espacio de memoria usando cadenas de longitud variable, de forma que a los elementos que apare$can ms frecuentemente se les asigna cadenas de menor longitud, quedando las de mayor longitud para aquellos datos menos frecuentes. (onsidere el rbol"& 7 cuyos nodos e0ternos son los elementos U, -, U, c, [ y H de la figura siguiente. Ibserve que cada arista de un nodo interno )acia su )ijo i$quierdo esta etiquetada con un # y cada arista derec)a con un %. ,l cdigo Fuffman asigna a cada nodo e0terno la secuencia de bits desde la ra$ al nodo. ,l rbol 7 de Fuffman determina un cdigo para los nodos e0ternosS U! ## -!#% U! %## c!%#%# [!%#%% H!%% ,ste cdigo tiene la propiedad ^prefija_S esto es, el cdigo de cualquier elemento no es una subcadena inicial del cdigo de otro elemento. ,sto significa que no e0iste ambigeedad al decodificar cualquier mensaje que usa el cdigo Fuffman. A3LICACI9N EN CODI*ICACI9N
- H U U c [ U!## -!#% U!%## c!%#%# [!%#%% H!%% # % # % # % # % # % GRA*OS NO DIRIGIDOS ,n muc)os problemas derivados de la ciencia de la computacin, matemticas, ingeniera y muc)as reas se presentan relaciones entre objetos de datos. Las relaciones entre objetos de datos de un conjunto pueden presentarse en forma de grafos, los cuales a su ve$ pueden representarse mediante matrices de adyacencias. Un grafo, corresponde a una relacin matemtica o una matri$ en lgebra, por tanto las propiedades que pueden aplicarse a uno de los tres modelos puede ser aplicado a cualquiera de los otros dos. +i decimos que una relacin es simtrica, decimos que el grafo asociado a la relacin tambin es simtrica, la matri$ asociada tambin es simtrica. ,n muc)as aplicaciones de computacin e informtica se estudian relaciones simtricas correspondientes a grafos no dirigidos. GRA*OS NO DIRIGIDOS Definicin Un grafo @ es un modelo matemtico definido como el par .-, A/ donde! -! es el conjunto finito de vrtices o nodos A! es el conjunto finito de aristas o arcos - 2 Av i P v i es un vrtice o nodo, v i -B A 2 Aa i P a i es una arista o camino, a i - 0 -B 6odemos definir @ como una relacin de la siguiente forma! A 2 A.u, v/ P u, v -B ,l conjunto A corresponde a la relacin 1 definida de la siguiente forma! u 1 v si y solo si e0iste una arista a 2 .u, v/ +i el par .u, v/ es ordenado decimos que @ es grafo dirigido .dgrafo/, si no lo es decimos que es un grafo no dirigido. GRA*OS NO DIRIGIDOS Definicin +i e0iste la arista .u, v/, decimos que la arista es inciden+e sobre los vrtices u, v. 5ecimos que el vrtice v es adyacente al vrtice u. ,l vrtice u es el vrtice origen, y v es el vrtice destino o terminal. +i un vrtice no tiene aristas incidentes, decimos que es un vrtice aislado o solitario. Definicin Un grafo no dirigido corresponde a una relacin simtrica, pues u 1 v, podemos decir tambin que v 1 u. (omo 1 es simtrica, decimos que u y v son vrtices adyacentes, porque v es adyacente a u, y u es adyacente a v. GRA*OS NO DIRIGIDOS Grad" de un v/r+ice +ea @ 2 .-, A/ un grafo no dirigido. 6ara cualquier vrtice v -, el grado de v, se denota por (rad(v), es el nmero de aristas que son incidentes con v a b c d e f @rad.a/ 2 & @rad .c/ 2 8 @rad.g/ 2 8 g S>BGRA*OS ,l grafo .b/ y .c/ son dos subgrafos del grafo .a/ +ea @ 2 .-, A/ un grafo. ,l grafo @Y 2 .-Y, AY/ es un subgrafo de @, si AY A, y cada arista de AY es incidente con los vrtices de -Y a d c b e a b c e a d e .a/ .b/ .c/ S>BGRA*OS IND>CIDOS +ea @ 2 .-, A/ un grafo +ea @Y 2 .-Y, AY/ un subgrafo de @ +i AY consta de todas las aristas .u,v/ A tal que u y v -Y entonces decimos que @Y es un subgrafo inducido 6or ejemplo! ,l grafo .c/ es inducido pero el grafo .b/ no lo es porque falta la arista .b, e/. Graf"s c"'.#e+"s +ea @ 2 .-, A/ un grafo. +i f-f 2 n, el grafo completo sobre -, se denota @ n es un grafo no dirigido sin la$os tal que para todo a, b - donde a b, e0iste una arista .a, b/. ,s decir deben e0istir aristas entre todos los vrtices. 6or lo tanto tiene .nD.n"%//P& aristas. @ % @ & @ ' @ 8 @ % , @ & , @ ' y @ 8 son grafos completos GRA*O 3LANO Un grafo es plano si podemos dibujar @ en el plano de modo que sus aristas se intersecten solo en los vrtices de @. ,ste dibujo se conoce como una inmersin de @ en el plano. ,l grafo es plano (ada vrtice tiene grado ' >ingn par de aristas se Cntersectan, e0cepto en los vrtices Un mapa de carreteras y autopistas puede representarse mediante un grafo plano. @eneralmente las carreteras se intersectan en los puntos de confluencia o en poblaciones. ,0cepcionalmente, en los pasos a desnivel las carreteras se intersectan. GRA*O BI3AR&I&O Definicin +ea @ 2 .-, A/ un grafo, @ se denomina bipartito, si - se puede descomponer en dos subconjuntos - % y - & donde - 2 - % - & tal que no e0isten dos vrtices adyacentes en - %
ni tampoco en - & a b c d e a b c .a/ .b/ ,l grafo .a/ es bipartito pues - se puede dividir en {a, d}y {b, c, e}. ,l grafo .b/ no es bipartito. GRA*O BI3AR&I&O CO23LE&O Y GRA*OS ISO2OR*OS Definicin +ea @ 2 .-, A/ un grafo, @ se denomina bipartito, si - se puede descomponer en dos subconjuntos - % y - & donde - 2 - % - & y - % - & 2 . +i cada vrtice de - % est unido con los vrtices de - & , se tiene un grafo bipartito completo. +i f- % f 2 m y f- & f 2 n ,l grafo se denota como @ mn Definicin +ean los grafos no dirigidos @ % 2 .- % , A % / y @ & 2 .- & , A & /. Una funcin ! - % - & es un isomorfismo entre @ % y @ & , si a/ es inyectiva y sobreyectiva b/ a, b - % , .a, b/ A % si y solo si ..a/, .b// A & (uando e0iste la funcin , decimos que @ % y @ & son isomorfos Un isomorfismo es una correspondencia entre cada elemento de un grafo y cada elemento de otro grafo llamado isomorfo .a/ a b c d p s q r .b/ Los grafos .a/ y .b/ son isomorfos, porque e0iste una correspondencia entre los nodos .a/ 2 p, .b/ 2 r, .c/ 2 q y .d/ 2 s La correspondencia entre los vrtices de un isomorfismo mantiene las adyacencias. GRA*OS CONEAOS Definicin +ea @ 2 .-, A/ un grafo no dirigido, @ es cone0o si e0iste un camino simple entre cualquier par de vrtices de @. +i un grafo no es cone0o, decimos que es discone0o. a b c d e f .a/ .b/ ,l grafo .a/ es cone0o. ,l grafo .b/ no es cone0o, e es un nodo aislado. a b d c e GRA*OS CONEAOS C"'."nen+es c"neK"s en un (raf" n" diri(id" Un componente cone0o de un grafo @ es un subgrafo cone0o inducido ma0imal, es decir un grafo cone0o inducido que por si mismo no es un subgrafo propio de ningn otro subgrafo cone0o de @. a b d c a d b .a/ .b/ .c/ .a/ ,s un grafo cone0o que tiene solo un componente cone0o, el mismo .b/ ,s uno de los subgrafos inducidos de .a/ .c/ ,s un grafo que contiene dos componentes cone0os RE3RESEN&ACI9N DE GRA*OS NO DIRIGIDOS Un grafo no dirigido puede representarse de igual forma que un grafo dirigido, mediante una matri$ de adyacencia simtrica o una lista de adyacencia. Aunque es necesario entender que una arista no dirigida .u, v/, puede representarse como dos aristas dirigidas, una .u, v/ y otra .v, u/. Un grafo dirigido puede representarse como una relacin simtrica, )aciendo uso de estructuras de datos! Z Arreglos bidimensionales .matri$ de adyacencia simtrica/ Z Listas enla$adas .lista de adyacencia/ RE3RESEN&ACI9N 2EDIAN&E 2A&RIZ DE ADYACENCIA Un grafo no dirigido puede representarse mediante una matri$ de adyacencia, en donde se representen las aristas desde el vrtice i al vrtice j con un % en la entrada Qi, jR, y un cero cuando no e0ista una arista. La matri$ de adyacencia juega un rol muy importante, pues a partir de ella pueden encontrarse otras matrices que relacionan los caminos de longitud mayor a uno, y a partir de ella encontrar la matri$ de caminos. % & ' # % % % # % % % % 2a+ri, de AdJacencia si'/+rica @rad.%/ 2 & @rad.&/ 2 & @rad.'/ 2 8 A partir de la matri$ de adyacencia se puede obtener el grado de un vrtice. ,ntrada ! A matri$ de dimensin > 0 > +alida ! grado.u/, u el vrtice a verificar La funcin Ibtener grado.u/ suma los elementos de la fila u. (uando encuentra un % en la columna j, significa que j es adyacente a u. 5espus de sumar toda la fila correspondiente al vrtice que se esta verificando, se suma el elemento AQi, iR que significa % si es un bucle o # si no )ay un bucle. *uncin O!+ener7Grad"(AM NM u) 1 En+er" Cnicio i u grado # 6ara j desde % )asta > grado grado 4 AQi, jR Ein6ara grado grado 4 AQi, iR PP suma el bucle si lo )ubiese 1etornar grado Ein RE3RESEN&ACI9N 2EDIAN&E LIS&AS ENLAZADAS Lis+a de adJacencia Una lista de adyacencia es una lista de los vrtices. (ada uno de los vrtices apunta a su ve$ a una lista de los vrtices adyacentes. % & ' & ' D % ' D % & ' D RECORRIDO DE >N GRA*O NO DIRIGIDO Rec"rrid" en .r"fundidad RE3 en un (raf" n" diri(id" La idea general del recorrido en profundidad comen$ando en un nodo v es la siguiente! 6rimero e0aminamos el nodo inicial. Luego e0aminamos un nodo adyacente .vecino/ a v, luego un adyacente del adyacente de v y as sucesivamente )asta llegar a un punto muerto, o sea al final del camino. Al volver si )ay otro nodo adyacente a v no visitado, se toma como punto de partida este nodo y se reali$a el mismo procedimiento. (uando estn e0aminados .visitados/ todos los nodos adyacentes a v, el recorrido que se inicio con v )a finali$ado. +i queda algn nodo sin visitar, tomamos cualquiera de ellos y procedemos como con el nodo v. ,l procedimiento sigue )asta que estn e0aminados .visitados/ todos los nodos del grafo. RECORRIDO DE >N GRA*O NO DIRIGIDO Rec"rrid" en .r"fundidad RE3 en un (raf" n" diri(id" En+rada1 @ grafo, v vrtice inicial, que ser la ra$ del rbol Sa#ida1 A rbol abarcador 3rec"ndicin1 La bsqueda empie$a en el nodo v Accin Rec"rrid"() Cnicio 6ara cada v - -isita.v/ # PP iniciali$a los nodos como no visitados Ein6ara 6ara cada v - +i .-isita.v/ 2 #/ 1,6.v/ PP llama a procedimiento de bsqueda Ein+i Ein6ara Ein RECORRIDO DE >N GRA*O NO DIRIGIDO Rec"rrid" en .r"fundidad RE3 en un (raf" n" diri(id" Accin RE3(v) Cnicio -isita.v/ % PP cuando se visita el nodo v su estado cambia a % 6ara cada nodo b adyacente a v +i .-isita.b/ 2 #/ Cnserta.A, v, b/ PP inserta la arista .v, b/ en A RE3(V) PP llama a procedimiento 1,6 para b Ein+i Ein6ara Ein La recursin slo se detiene cuando la e0ploracin del grafo se ve bloqueada .en un punto muerto/ y no se puede proseguir. % & ' 9 : ; < 8 RE3 B rec"rrid" en .r"fundidad &K6.%/ llamada inicial ' K6.&/ llamada recursiva 8 K6.'/ llamada recursiva : K6.9/ llamada recursiva 9 K6.:/ llamada recursiva, no se puede continuar ; K6.8/ no se )a visitado el nodo 8 vecino de % < K6.;/ llamada recursiva = K6.</ llamada recursiva, no se puede continuar %#>o quedan nodos por visitar (ada nodo de @ se visita solo una ve$. 6or lo tanto el algoritmo recursivo se invoca n veces. ,l recorrido en profundidad de un grafo cone0o asocia un rbol abarcador .recubridor/, en donde el punto de partida elegido pasa a ser la ra$ del rbol. +i el grafo no es cone0o, entonces un recorrido en profundidad, asocia al grafo un bosque de rboles abarcadores. Uno para cada componente cone0o. ,n el ejemplo anterior se construye el rbol abarcador! % 8 ; < & ' 9 : 3un+"s de ar+icu#acin ,n un grafo cone0o, puede e0istir un vrtice que sirva de articulacin entre dos componentes cone0os. ,n el ejemplo el vrtice % es de articulacin, ya que si se elimina el vrtice % y las aristas que inciden en%, se obtendra un subgrafo que ya no es cone0o. Muedaran dos componentes cone0os. % & ' 9 : ; < 8 +i se elimina el vrtice % y las aristas que inciden en el, se obtendra un grafo que ya no es cone0o. & ' 9 : ; < 8 Un grafo se denomina bicone0o si carece de puntos de articulacin. RECORRIDO DE >N GRA*O NO DIRIGIDO Rec"rrid" en a'.#i+ud REA en un (raf" n" diri(id" ,n un recorrido en amplitud, el recorrido se inicia con un nodo de partida v. A continuacin se visitan los nodos adyacentes al nodo inicial v .nodos a una distancia % del nodo v/, luego se visitan los nodos que estn a una distancia & y as sucesivamente )asta que no quede ningn nodo por visitar. ,l algoritmo de recorrido en amplitud no es recursivo En+rada1 @ grafo, v vrtice inicial, que ser la ra$ del rbol Sa#ida1 A rbol abarcador 3rec"ndicin1 La bsqueda empie$a en el nodo v La cola ( debe estar vaca. RECORRIDO DE >N GRA*O NO DIRIGIDO Accin REA(v) Cnicio Cnit.(/ PP cola vaca -isita.v/ % PP v es visitado ,ncolar.(, v/ ?ientras .-aco.(// 5ecolar.(, v/ ?ientras e0ista b adyacente a v +i .-isita.b/ 2 #/ -isita.b/ % Cnserta.A, v, b/ PP inserta la arista .v, b/ en el rbol A ,ncolar.(,b/ Ein+i Ein?ientras Ein?ientras Ein E K A @ 5 ( , +i se comien$a con A, se visitan los nodos Irigen A primero K, (, 5 distancia % luego E, @ distancia & Einalmente , distancia ' +i se comien$a con ,, se visitan los nodos Irigen , primero E, @ distancia % luego K, 5 distancia & finalmente A, ( distancia '