Ideas generales ´ Arboles binarios ´ Arboles generales Recorridos de ´ arboles ´ Arboles binarios de b´ usqueda Ejemplos y ejercicios Arboles R. Gonz´ alez del Campo - Yolanda Garc´ ıa Ruiz (UCM) April 14, 2010 R. Gonz´ alez del Campo - Yolanda Garc´ ıa Ruiz (UCM) Arboles
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arboles
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM)
April 14, 2010
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
IntroduccionAplicacionesTerminologıa
Arboles: Estructuras no lineales
Idea formal: Un arbol es un grafo conexo sin ciclos
Idea intuitiva: Los arboles expresan relaciones jerarquicas enlas que:
Cada elemento (excepto el primero) tiene un unico superiorinmediatoCada elemento tiene varios siguientes inmediatos
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
IntroduccionAplicacionesTerminologıa
Son una generalizacion de las listas:
Listas: cada elemento tiene un unico sucesor.Arboles: los elementos pueden tener mas de un sucesor.
Permiten representar la nocion de jerarquıa. Ejemplos:
Arboles genealogicos: familiares, linguısticos.Arboles sintacticos.Estructura de los directorios.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
IntroduccionAplicacionesTerminologıa
Representacion de estructuras anidadas
Representacion de expresiones
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
IntroduccionAplicacionesTerminologıa
A los elementos de la relacion se les llama nodos
El unico nodo sin antecesores es la raız
Los nodos sin descendientes se llaman hojas y el resto nodosinternos
Se llama rama a la secuencia de nodos que lleva de la raız acualquiera de las hojas
Llamamos padre de un nodo a su antecesor inmediato
Llamamos hijos de un nodo a sus descendientes inmediatos
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
IntroduccionAplicacionesTerminologıa
Arboles binarios: todo nodo tiene siempre dos hijos (aunquealguno pueda ser vacıo). Un arbol binario puede ser vacıo.
Arboles generales: el numero de hijos de cada nodo esvariable.
Grado del arbol: maximo numero de hijos que un nodo puedetener → Arboles n-arios.
¡Los arboles binarios no son un caso particular de arbolesn-arios con n=2!:
En un arbol binario si un nodo tiene un solo hijo (el otro esvacıo), es preciso distinguir si se trata del hijo izquierdo oderecho.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
IntroduccionAplicacionesTerminologıa
¿Como distinguir un arbol binario de un arbol n-ario cuando n=2?Si para nosotros significa lo mismo
A
∅B y
A
B∅ ,es un arbol n-ario. Si significan dos cosas distintas, se trata de unarbol binario.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Especificacion de los arboles binariosImplementacion con punterosImplementacion con tablas
Operaciones a considerar:
crear un arbol vacıo,
construir un arbol a partir de un elmento y dos arboles,
consultar la raız,
calcular el hijo izquierdo,
calcular el hijo derecho, y
determinar si un arbol es vacıo.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Especificacion de los arboles binariosImplementacion con punterosImplementacion con tablas
Para un arbol de altura n se necesita un array de longitud2n − 1Si un nodo esten la posicion i:
Su hijo izquierdo estara en la posicion 2*i+1Su hijo derecho estara en la posicion 2*i+2
Si un nodo esta en la posicion i su padre estara en la b i−12 c
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Especificacion de los arboles binariosImplementacion con punterosImplementacion con tablas
Quedan huecos. Es preferible para minimizarlos que el arbolsea completo o semicompleto
Si el arbol va a contener pocos nodos (en relacion a su altura)sera preferible utilizar la implementacion basada en punteros
La implementacion con tablas exige que todos los nodos estenconsecutivos, mientras que la de punteros puede aprovechar”trozos”pequenos de memoria.
Ventaja: en la implementacion con tablas es posible pasardirectamente de los hijos al padre, mientras que en la depunteros habrıa que incluir un puntero adicional
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Especificacion de los arboles generalesImplementacion de los arboles generales
Operaciones a considerar:
Habra tres constructoras: plantar que crea un arbol general apartir de una raız y una lista de arboles hijos.bosqueVacıo que crea una lista vacıa de arbolesanadirArbol a una lista de arboles.
consultar la raız,
calcular la sucesion de hijos,
calcular el numero de hijos,
calcular el hijo i-esimo, y
determinar si un arbol es una hoja.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Especificacion de los arboles generalesImplementacion de los arboles generales
Notas:
Los tipos bosque y arbol se definen mutuamente:
Un arbol se construye a partir de un bosque.Un bosque consta de una lista de arboles.Caso base: un bosque vacıo que da lugar a un arbol que notiene hijos (hoja) → No existe ”el arbol vacıo” para arbolesgenerales.
Como el numero de hijos es variable necesitamos un tipo pararepresentar las listas de arboles → ”bosques”.
Las constructoras (libres) del tipo bosque son bosqueVacio yaniadirArbol.
plantar es la unica constructora del tipo arbol.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Especificacion de los arboles generalesImplementacion de los arboles generales
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
El tiempo de ejecucion es:
T (n) ={
c, si n = 0;T (p) + T (q) + cn, si n > 0.
donde cn proviene de llamar a altura. Luego es Θ(n2).
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Ineficiencia: equilibrado− 1(hijo− iz(a)) calcula las alturas desus hijos aunque altura(hijo− iz(a) vuelve a hacerlo. Idea clave:Simultaneamente vemos is un arbol esta equilibrado y calculamossu altura:
Operacion
fun equilibrado− 2(a : arbolBin)dev〈eq : bool, alt : nat〉si es− arbolBBV acio(a) entonces〈eq, alt〉 ← 〈cierto, cero〉
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
El tiempo de ejecucion es:
T (n) ={
c, si n = 0;T (p) + T (q) + c, si n > 0.
Luego es Θ(n).
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Dado un arbol:
Definicion
La distancia entre dos nodos es la longitud del unico camino quelos conecta.
Definicion
El diametro del arbol es la maxima distancia sobre todos los paresde nodos.
Disena un algoritmo de coste lineal que determine el diametro deun arbol binario dado.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Consideremos el subarbol izquierdo y el derecho:
Si los nodos que estan a la maxima distancia estan en elmismo hijo, el diametro es el mismo que el diametro del hijo.
Si estan de distintos el camino debe pasar por la raız. Paraque el camino sea maximo la distancia debe coincidir con lasuma de las alturas de los dos hijos.
Como no sabemos que alternativa nos lleva a la solucionprobamos las 3:
El camino esta en el hijo izquierdo.El camino esta en el hijo derecho.El camino esta en arbol principal.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Operacion
fun diametro(a : arbolBin) : 〈diam : ent, alt : nat〉si es− arbolBBV acio(a) entonces〈diam, alt〉 ← 〈−1, 0〉
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Definicion
Un arbol binario es zurdo si se da alguna de las siguientescondiciones:
es el arbol vacıo,
es un nodo hoja, o
sus hijos izquierdo y derecho son zurdos y mas de la mitad desus descendientes estan en el hijo izquierdo.
Determina si un arbol binario es zurdo con coste lineal.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Mas de la mitad de los descendientes estan en el hijoizquierdo:
di > di+dd2 ⇔ 2di > de + dd⇔ di > dd
Idea clave: Calculamos simultaneamente si un arbol es zurdoy el numero de hijos.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Operacion
fun zurdo(a : arbolBin) : 〈zurdo : bool, num : nat〉casos
es− arbolBBV acio(a) :〈zurdo, num〉 ← 〈cierto, 0〉
es− hoja(a) :〈zurdo, num〉 ← 〈cierto, 1〉¬es− arbolBBV acio(a) ∨ ¬es− hoja(a) :〈zur − iz, des− iz〉 ← zurdo(hijo− iz(a))〈zur − de, des− de〉 ← zurdo(hijo− de(a))zurdo← zur − iz ∧ zur − de(des− iz > des− de)num← 1 + des− iz + des− de
fin casosfin fun
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
a Desarrolla un algoritmo que reconstruya un arbol binario apartir de las dos listas que definien sus recorridos en preordene inorden, suponiendo todos los elementos distintos.
b ¿Es posible reconstruir univocamente el arbol a partir de susrecorridos en inorden y postorden?
c ¿Y con las recorridos en preorden y postorden?
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Ambas listas poseen el mismo numero de elementos.
El primer elemento de lpre contiene la raız del arbol.
La raız esta en la lista lpre en la posicion k:
Los elementos anteriores a k forman el hijo izquierdo.Los elementos posteriores a k forman el hijo derecho.
¡Los elementos entre 2 y k de lpre son el recorrido en preordenpara subarbol izquierdo! por la recursividad de la definicion derecorrido en preorden.
Lo mismo ocurre con los elementos mayores que k
Idea clave: Aplicar la misma idea a cada recorrido parcial.
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Funciones auxiliares:
proc coger(n : nat, l : lista)mientras longitud(l) > n hacer
elim− der(l)fin mientras
fin proc
proc tirar(n : nat, l : lista)m← nmientras m > 0 ∧ ¬es− lista− vacia(l) hacer
elim− izq(l)m← m− 1
fin mientrasfin proc
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Apartado (a)
Operacion
fun reconstruir − 1(lpre, lin : lista) : a : arbolBinvar iz, de : arbolBin, lpre− iz, lpre− de, lin− iz, lin− de : listasi es− lista− vacia(lpre) entonces
R. Gonzalez del Campo - Yolanda Garcıa Ruiz (UCM) Arboles
Ideas generalesArboles binarios
Arboles generalesRecorridos de arboles
Arboles binarios de busquedaEjemplos y ejercicios
Arbol binario equilibrado en alturaDiametro de un arbol binarioArbol binario zurdoInferencia de un arbol binario a partir de listas
Apartado (b)
Operacion
fun reconstruir − 2(lpost, lin : lista) : a : arbolBinvar iz, de : arbolBin, lpost− iz, lpost− de, lin− iz, lin− de : listasi es− lista− vacia(lpost) entonces