Arboles binarios de búsqueda -...
Transcript of Arboles binarios de búsqueda -...
ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ
JUAN DAVID LONDOÑO CASTRO
JUAN PABLO CHACÓN PEÑA
EDUARDO GONZALES
ÁRBOL
• Un árbol es un grafo no dirigido, conexo, sin ciclos (acíclico), y que no contiene
aristas múltiples. Por tanto un árbol es necesariamente un grafo simple.
ÁRBOL NO ÁRBOL NO ÁRBOL ÁRBOL
TEOREMA UNO
• Un grafo no dirigido es un árbol, si y solo si hay un único camino entre cada
pareja de vértices.
Se puede observar en este grafo tomado del
ejemplo anterior, que para cualquier par de
vértices que se tomen, solo existirá un camino
que los unos. Si hay mas de un camino que uno
este par de vértices inmediatamente deja de
ser un árbol.
RAÍCES DE ARBOLES
• Un árbol con raíz es un árbol en que uno de sus vértices ha sido designado
como la raíz y todas la aristas están orientadas de modo que se alejan de la
raíz.
Raíz en A Raíz en B
SUBÁRBOLES
• Si a es un vértice de un árbol, el subárbol con raíz en a es el subgrafo del
árbol que contiene al vértice a , a todos sus descendientes y a rodas sus
aristas incidentes en dichos descendientes.
Obtenemos un subárbol
a partir del vértice A
EJEMPLO
1. cuales son los hijos derechos e
izquierdos de vértice C
2. Cual es el nivel del árbol
3. Cuales son los nodos hermanos de C
4. Cual es el nodo padre de J
5. Cuales son los nodos hoja
REPUESTAS
1. El hijo derecho del vértice C es el nodo A y el hijo izquierdo es el nodo D.
2. El árbol es nivel 4
3. Los nodos hermanos a C son los vértices H, I, J
4. El nodo padre del vértice J es G
5. Los nodos hoja son D, E, K, L, M.
PROPIEDADES DE LOS ARBOLES
• TEOREMA DOS : Un árbol de n vértices tiene n-1 aristas.
El árbol consta de 13 vértices o nodos,
por tanto tenemos que 𝑛 = 13
𝑎𝑟𝑖𝑠𝑡𝑎𝑠 = 𝑛 − 1
𝑎𝑟𝑖𝑠𝑡𝑎𝑠 = 13 − 1
𝑎𝑟𝑖𝑠𝑡𝑎𝑠 = 12
TEOREMA TRES
• Un árbol m-ario completo con i vértices internos tiene 𝑛 = 𝑚𝑖 + 1 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠.
Árbol 5 - ario
• 𝑚 = 𝑔𝑟𝑎𝑑𝑜 5
• 𝑖 = 3 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠 𝑖𝑛𝑡𝑒𝑟𝑛𝑜𝑠
• 𝑛 = 𝑚𝑖 + 1
• 𝑛 = 5 3 + 1
• 𝑚 = 16
Como podemos comprobar en este ejemplo
el teorema se cumple y nos da como
resultado n = 16 que son la cantidad de
nodos que hay en el árbol.
TEOREMA CUATRO
• Un árbol m – ario completo con :
1. 𝑛 vértices tiene 𝑖 =𝑛−1
𝑚 vértices y 𝑙 =
𝑚−1 𝑛+1
𝑚 hojas .
2. 𝑖 vértices internos tiene 𝑛 = 𝑚𝑖 + 1 vértices y 𝑙 = 𝑚 − 1 𝑖 + 1 .
3. 𝑙 hojas tiene 𝑛 =𝑚𝑙−1
𝑚−1 vértices e 𝑖 =
𝑙−1
𝑚−1 vértices internos.
EJEMPLO
• 𝑛 = 16
• 𝑖 = 3
• 𝑙 = 13
• 𝑚 = 5
1. 𝑖 =𝑛−1
𝑚 𝑖 =
16−1
5= 3 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠 𝑖𝑛𝑡𝑒𝑟𝑛𝑜𝑠
𝑙 =𝑚−1 𝑛+1
𝑚 𝑙 =
4 17
5 = 13.6 𝑛𝑜𝑑𝑜𝑠 ℎ𝑜𝑗𝑎
2. 𝑛 = 𝑚𝑖 + 1 𝑛 = 5 3 + 1 = 16 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠
𝑙 = 𝑚 − 1 𝑖 + 1 𝑙 = 12 + 1 = 13 ℎ𝑜𝑗𝑎𝑠
3. 𝑛 =𝑚𝑙 −1
𝑚−1 𝑛 =
64
4= 16 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠
𝑖 =𝑙−1
𝑚−1 𝑖 =
14
4= 3.5 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠 𝑖𝑛𝑡𝑒𝑟𝑛𝑜𝑠
TEOREMA CINCO
• Un árbol m – ario de altura ℎ tiene a lo sumo, 𝑚ℎ hojas.
En este caso la altura es ℎ = 3 y 𝑚 = 3 por lo
tanto el árbol tendrá como máximo 33 = 27
nodos hoja.
ARBOLES BINARIOS DE BÚSQUEDA
• Para hacer una búsqueda que encuentre elementos de manera mas eficiente cuando
los objetos están totalmente ordenados, esto se puede lograr por medio de un árbol
binario de búsqueda.
• Para hacer una inserción de un dato en un árbol binario se tiene en cuenta que hay
una raíz, después se compara si el dato a insertar es menor que la raíz, de ser así se
inserta al lado izquierdo y en caso de ser mayor se inserta al lado derecho. Y asi se
puede hacer el proceso de forma recursiva por todos los niveles del árbol.
• Para realizar una búsqueda de un elemento se procede de la misma manera, se
empieza por la raíz y se compara si es mayor o menor a esta , y así se puede
avanzar a la derecha o izquierda respectivamente, este proceso se repite
recursivamente hasta que se encuentre el elemento.
EJEMPLO
• Construya un árbol binario de
búsqueda para los id : 64 , 14
, 44 , 50 , 68 , 10 , 16 , 1.
• Construya un árbol binario de búsqueda
para las siguientes letras: M , P , G , Z ,
C , B , F , R.
ÁRBOLES DE DECISIÓN
• Los arboles con raíz pueden utilizarse para modelar problemas en los que
una serie de decisiones llevan a una solución. Por ejemplo: un árbol binario de
búsqueda que pueda emplearse para localizar elementos basándose en una
serie de comparaciones, donde cada una de ella nos dice si hemos localizado
o no el elemento o si debemos proceder al subárbol izquierdo o al subárbol
derecho
TEOREMA
• Un algoritmo de ordenación basado en comparaciones binarias requiere al
menos [log 𝑛!]. Comparaciones.
𝑛 = 8
𝑐𝑜𝑚𝑝𝑎𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 = log 𝑛!
𝑐𝑜𝑚𝑝𝑎𝑟𝑎𝑐𝑖𝑜𝑛𝑒𝑠 = 4,6
• Este resultado nos quiere decir que como
mínimo se deben hacer 5 comparaciones
para insertar todos los datos en el árbol.
CÓDIGOS INSTANTÁNEOS
Considerando el problema de codificar las letras del alfabeto
mediante cadenas de bits, podemos hacer cadenas de longitud 5,
pero para codificar datos son 5 veces el numero de caracteres por
tanto se organizaron las letras en un árbol donde la letras que mas
se usan están de primeras y tienen una cadena de bits mas corta y
por el contrario las letras que menos se utilizan queda con una
cadena mas larga
E = 0
A = 10
T = 110
N = 1110
S = 11110
Como se observa, las letras
menos usadas tienen una cadena
de bits mas larga, por el
contrario las mas usadas tienen
cadenas de bits cortas.
CÓDIGOS DE HUFFMAN
• El algoritmo consiste en la creación de un árbol binario que tiene cada uno de los
símbolos por hoja, y construido de tal forma que siguiéndolo desde la raíz a cada
una de sus hojas se obtiene el código Huffman asociado.
M A T E M A T I C A
M A T E I C
2
10
3
10
2
10
1
10
1
10
1
10
Vamos ingresando las letras al árbol de forma ascendente de acuerdo a su probabilidad
C = 0,1 I = 0,1 E = 0,1 T = 0,2 M = 0,2 A = 0,3
ÁRBOLES DE JUEGOS
Los vértices de estos arboles representan los estados o posiciones en el desarrollo del juego; las
aristas representan los movimientos permitidos entre dos estados cualesquiera
RECORRIDO DE ARBOLES
Pre orden (raíz , izquierda , derecha)
A B E J K N O P F C D G L M H I
Post orden ( izquierda, derecha, raíz)
J N O P K E F B C L M G H I D A
In orden (izquierda, raíz , derecha)
J E N K O P B F A C L G M D H I
ARBOLES GENERADORES
• Sea G un grafo simple. Un árbol generador o recubridor de G es un
subgrafo de G que es un árbol y contiene todos los vértices de G
Grafo G Sub-Grafo de G
BÚSQUEDA EN PROFUNDIDAD
En lugar de construir árboles generadores eliminando aristas, los árboles
generadores se pueden obtener añadiendo aristas.
• Elegimos un vértice arbitrario como raíz del árbol.
• Formamos un camino que comienza en este vértice añadiendo sucesivamente
vértices y aristas, siendo cada nueva arista incidente con el ultimo vértice del
camino y un vértice que no está en el camino
BÚSQUEDA EN ANCHURA (POR NIVELES)
• Elegimos un vértice arbitrario como raíz.
• Añadimos todas las aristas incidentes en ese vértice.
• Los nuevos vértices añadidos en esa fase forman los vértices del nivel 1 del árbol
generador.
• Los ordenamos con un orden cualquiera.
• Para cada vértice del nivel 1 visitados en orden, añadimos todos los vértices
incidentes con él, siempre que no formen un ciclo.
• Seguimos el mismo procedimiento hasta que se hayan añadido todos los vértices del
árbol.
BÚSQUEDA EN PROFUNDIDAD EN GRAFOS DIRIGIDOS
• Los algoritmos de búsqueda en profundidad y búsqueda en anchura se pueden
modificar para que puedan aplicarse a grafos dirigidos. Sin embargo el resultado
final no será necesariamente un árbol generador, sino un bosque generador.
• En ambos algoritmos podemos añadir una arista sólo cuando ésta se aleja del
vértice en curso hacia oro que no se ha añadido aún.
• Si en un paso de alguno de los dos algoritmos vemos que tal arista no existe, el
siguiente vértice añadido por el algoritmo pasa a ser la raíz de un nuevo árbol en el
bosque generador.
ÁRBOL GENERADOR MÍNIMO
• Un árbol generador mínimo de un grafo ponderado es un árbol generador
tal que la suma de los pesos de sus aristas es la mínima posible de entre
todos los árboles generadores.
ALGORITMOS PARA ÁRBOLES GENERADORES MÍNIMOS
• Se puede resolver una amplia variedad de problemas mediante el cálculo de
un árbol generador de un grafo ponderado tal que la suma de los pesos de
las aristas del árbol sea mínima.
ALGORITMO DE PRIM
• Para grafos ponderados, conexo y no dirigido de n vértices.
• El algoritmo encuentra un subconjunto de aristas que forman un árbol con
todos los vértices, donde el eso total de todas las aristas en el árbol es el
mínimo posible.
ALGORITMO DE KRUSKAL
• Grafo ponderado, conexo y no dirigido de n vértices.
• Se usa para encontrar un árbol recubridor mínimo en un grafo conexo y
ponderado. Es decir, busca un subconjunto de aristas que, formando un árbol,
incluyen todos los vértices y donde el valor total de todas las aristas del
árbol es el mínimo. Si el grafo no es conexo, entonces busca un bosque
expandido mínimo