Arboles binarios de búsqueda -...

41
ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

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.

ÁRBOLES COMO MODELOS

Butano Representación de organizaciones

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.

COMPLETADO DE ÁRBOLES

• Los vértices sin etiquetar están rodeados por un circulo.

Á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

EJEMPLO

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

SISTEMA DE ETIQUETADO UNIVERSAL

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

NOTACION INFIJA, PREFIJA Y POSTFIJA

Representacion mediante árbol binario de ( 𝑥 + 𝑦 2 + (𝑥−4

3)

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

TEOREMA UNO

• Un grafo simple es conexo si, y sólo si, admite un árbol generador

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

EJEMPLO

Grafo G

(a) (b) (c) (d) (e)

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.

EJEMPLO

(a) (b) (c) (d)

Grafo G

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.

EJEMPLO

(a) (b) (c) (d)

Á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

EJEMPLO

Calcular mediante el algoritmo de Kruskal o Prim un Árbol generador mínimo del grafo.

ACTIVIDAD

• Realizar el algoritmo de Huffman para las siguientes palabras :

INGENIERIA , SISTEMAS

GRACIAS