Presentacion Analisis y diseño orientado a objetosgalvez.milibreta.com.mx/UAS/Estructura de...
Transcript of Presentacion Analisis y diseño orientado a objetosgalvez.milibreta.com.mx/UAS/Estructura de...
05/06/2018
1
Facultad de Informática Culiacán
Tema: ARBOLES
Instructor: MC. Gerardo Gálvez Gámez
Junio de 2018
UNIVERSIDAD AUTÓNOMA DE SINALOA
Árboles • FIC-UAS
INTRODUCCIÓN:
Hasta el momento solo se han estudiado estructuras lineales y
dinámicas de datos:
A UN ELEMENTO LE SIGUE OTRO ELEMENTO.
Los árboles representan las estructuras no-lineales y dinámicasde datos mas importantes en computación:
•Dinámicas: La estructura árbol puede cambiar durante la
ejecución de un programa.
•No Lineales: A cada elemento del árbol pueden seguirle varios
elementos.
05/06/2018
2
Árboles • FIC-UAS
Estructuras de datos mas importantes
clasificadas de acuerdo a su estaticidad y
dinamismo.
Estructuras estáticas Estructuras dinámicas
Arreglos
Registros
Conjuntos (Colecciones)
Listas
Árboles
Árboles • FIC-UAS
Estructuras de datos mas importantes de
acuerdo a su linealidad y no-linealidad
Estructuras lineales Estructuras no-lineales
Arreglos
Registros
Conjuntos
Pilas
Colas
Listas
Árboles
05/06/2018
3
Árboles • FIC-UAS
Árbol
•Es una estructura jerárquica aplicada sobre una colección de
elementos u objetos llamados nodos;
• Uno de los cuales es conocido como raíz.
•Además se crea una relación o parentesco entre los nodos
dando lugar a términos como:
• padre,
• hijo,
•hermano,
•antecesor,
•sucesor,
•ancestro, etc.
ÁRBOLES EN GENERAL
Árboles • FIC-UAS
Una forma particular de árbol es la estructura vacía.
Se utiliza la recursión para definir un árbol porque
representa la forma mas apropiada y porque además es una
característica inherente a los mismos.
Los árboles tienen un gran variedad de aplicaciones. Por
ejemplo:
•Se pueden utilizar para representar:
• formulas matemáticas,
•organizar información, etc.
ÁRBOLES EN GENERAL
05/06/2018
4
Árboles • FIC-UAS
Gráficamente una estructura árbol puede representarse de
diferentes formas y todas ellas equivalentes.
Árboles • FIC-UAS
(A(B(D(I),E,F(J,K)),C(G,h(L))))
I KJ
G
L
E
AC
H
B
D F
a) Diagrama de Venn.
b) Anidación de paréntesis.
1.A,1.1.B,1.1.1.D,1.1.1.1.I,1.1.2.E,1.1.3.F,1.1.3.1.J,1.1.3.2.K,1.2.
C,1.2.1.G,1.2.2.H,1.2.2.1.L
c) Notación decimal de Dewey.
Representación Grafica
05/06/2018
5
Árboles • FIC-UAS
AB
D
I
E
FJ
KC
GH
Ld) Notación Indentada.
A
B C
HGD E F
K LI J
e) Grafo
Representación Grafica
Árboles • FIC-UAS
Características de los árboles
a) Todo árbol que no es vació, tiene un único nodo
raíz.
b) Un nodo X es descendiente directo de un nodo Y,
si el nodo X es apuntado por el nodo Y. En este
caso es común utilizar la expresión X es hijo de Y.
c) Un nodo X es antecesor directo de un nodo Y, si
el nodo X apunta al nodo Y. En este caso
utilizamos la expresión X es padre de Y.
d) Se dice que todos los nodos que son
descendientes directos (hijos) de un mismo nodo
(padre), son hermanos.
e) Todo nodo que no tiene ramificaciones (hijos), se
conoce con el nombre de terminal u hoja.
I
D
B
A
C
H
L
E F
J K
G
05/06/2018
6
Árboles • FIC-UAS
Características de los árboles
a) Todo nodo que no es raíz, ni Terminal u hoja se conoce
con el nombre de Nodo interior.
b) Grado del Nodo, es el número de descendientes
directos de un determinado nodo.
c) Grado del árbol, es el máximo grado de todos los
nodos del árbol.
d) Nivel es el número de arcos que deben ser recorridos
para llegar a un determinado nodo. Por definición la
raíz tiene nivel 1.
e) Altura del árbol es el máximo número de niveles de
todos los nodos del árbol.
I
D
B
A
C
H
L
E F
J K
G
Árboles • FIC-UAS
Ejemplo: ÁRBOL GENERAL.
Dado el árbol general de la figura de abajo, se hacen sobre él las siguientes
consideraciones.
I
D
B
A
C
H
L
E F
J K
G
1.- A es la raíz del árbol.
2.- B es hijo de A. C es hijo de A. D es hijo de B. E es hijo de B. L es hijo de H.
3.- A es padre de B. B es padre de D. D es padre de I. C es padre de G. H es padre de L.
4.- B y C son hermanos. D,E y F son hermanos. G y H son hermanos. J y K son hermanos.
5.- I, E, J, K, G y L son nodos terminales u hojas.
6.- B, D, F, C y H son nodos interiores.
7.- El grado del nodo A es 2. B es 3. C es 2. D es 1. E es 0. El grado del árbol es 3.
8.- El nivel del nodo A es 1. B es 2. D es 3. C es 2. L es 4.
9.- La altura del´árbol es 4.
05/06/2018
7
Árboles • FIC-UAS
Se define la longitud del camino X como el
número de arcos que deben ser recorridos para
llegar desde la raíz hasta el nodo X.
Por definición la raíz tiene longitud de camino 1,
sus descendientes directos longitud de camino 2 y
así sucesivamente.
LONGITUD DE CAMINO INTERNO Y EXTERNO
Árboles • FIC-UAS
La longitud de camino interno es la suma de las
longitudes de camino de todos los nodos del árbol. Se
calcula con la siguiente formula:
Donde:
i=representa el nivel del árbol,
h= su altura y
n¡= el numero de nodos en el nivel.
LONGITUD DE CAMINO INTERNO
=
=h
i
i inLCI1
*
05/06/2018
8
Árboles • FIC-UAS
A
B C
HGD E F
K LI J
Ejemplo: LCI = 1*1+2*2+3*5+4*4 = 36
Ahora la media de la longitud de camino interno (LCIM) se calcula dividiendo la LCI entre
el número de nodos del árbol (n), se expresa:
LCIM = LCI/n
Significa que el número de arcos que deben ser recorridos en promedio para llegar,
partiendo desde la raíz, a un nodo cualquiera del árbol es:
LCIM = 36/12 = 3
1
2
3
4
Nivel
Árboles • FIC-UAS
Para definir la longitud de camino externo es necesario primero
definir los conceptos árbol extendido y nodo especial.
Un árbol extendido es aquel en el que el número de hijos de
cada nodo es igual al grado del árbol. Si no cumple con esta
condición entonces deben incorporarse al mismo nodos
especiales.
Los nodos especiales tienen como objetivo remplazar las
ramas vacías o nulas, no pueden tener descendientes y
normalmente se representan con la forma de un cuadrado.
LONGITUD DE CAMINO EXTERNO
05/06/2018
9
Árboles • FIC-UAS
A
B C
D E F G H
I J LK
ARBOL GENERAL
ARBOL
EXTENDIDO
A
B C
D E F G H
I J LK NODO ESPECIAL
Árboles • FIC-UAS
Definición de LCE
• Es la sumatoria de las longitudes de camino de todos los nodos especiales del árbol.
05/06/2018
10
Árboles • FIC-UAS
La formula utilizada es la siguiente:
Donde:
i= representa el nivel del árbol,
h su altura y
ne¡= el numero de nodos especiales en el nivel i.
Observe que: i comienza desde 2, puesto que la raíz se
encuentra en el nivel 1 y no puede ser un nodo especial.
+
=
=1
2
*h
i
i ineLCE
Árboles • FIC-UAS
El numero de nodos especiales en este árbol es de 25, y la
LCE se calcula de la siguiente manera:
LCE= 1*2 + 1*3+11*4+12*5=109
Ejemplo:A
B C
D E F G H
I J LK
Número de Nodos Especiales Nivel
05/06/2018
11
Árboles • FIC-UAS
Ahora la media de la longitud de camino externo
(LCME) se calcula dividiendo la LCE entre el número de
nodos especiales del árbol (ne).
LCEM = LCE / ne
Y significa el número de arcos que deben ser
recorridos en promedio para llegar, partiendo desde la raíz,
a un nodo especial cualquiera en el árbol.
LCEM = 109/25=4.36
Árboles • FIC-UAS
Un árbol ordenado es aquel en el cual las ramas de los nodos
están ordenadas. Los árboles ordenados de grado 2 son de
especial interés puesto que representan una de las estructuras de
datos más importantes en computación, conocidas como árboles
binarios.
En un árbol binario cada nodo puede tener como máximo dos
subárboles y siempre es necesario distinguir entre el subárbol
izquierdo y el subárbol derecho.
ÁRBOLES BINARIOS
05/06/2018
12
Árboles • FIC-UAS
Aplicaciones
1. Se pueden utilizar para representar unaestructura en la cual es posible tomardecisiones con dos opciones en distintospuntos de un proceso,
2. Para representar un árbol genealógico,
3. Para representar expresiones algebraicasconstruidas con operadores binarios.
Árboles • FIC-UAS
DISTINTAS APLICACIONES DE ÁRBOLES
BINARIOS
27
14
7
47
59
77
32
5011
Árbol binario de búsqueda
+
AB
^
3.5/
C D
*
Representación de una
expresión algebraica
05/06/2018
13
Árboles • FIC-UAS
Árboles • FIC-UAS
05/06/2018
14
Árboles • FIC-UAS
Dos árboles son similares cuando sus estructuras son
idénticas, pero la información que contienen sus
nodos difieren entre sí.
A
B C
D
P
R T
S
Árboles • FIC-UAS
ÁRBOLES BINARIOS DISTINTOS
A
B C
D
A
B
C D
05/06/2018
15
Árboles • FIC-UAS
Los árboles binarios equivalentes se definen como
aquellos que son similares y edemas los nodos
contienen la misma información
A
B C
D
A
B C
D
Árboles • FIC-UAS
ÁRBOLES BINARIOS COMPLETOS
Se define un árbol binario completo como un árbol en el que
todos sus nodos, excepto los del ultimo nivel, tienen dos hijos: un
subárbol izquierdo y uno derecho.
Se puede calcular el número de nodos de un árbol binario
completo de altura h, aplicando esta formula:
Donde:
ABC significa árbol binario completo, y
h la altura del árbol
05/06/2018
16
Árboles • FIC-UAS
ÁRBOL BINARIO COMPLETO NIVEL 3
A
B C
D E F G
Árboles • FIC-UAS
No son árboles binarios
05/06/2018
17
Árboles • FIC-UAS
Existen dos formas tradicionales de representar un árbol binario
en memoria:
1. Por medio de datos tipo puntero, también conocidos como
variables dinámicas. (Objetos en C#, Java)
2. Por medio de arreglos.
Sin embargo se utilizara y explicara la primera forma, ya que
es la más natural para tratar este tipo de estructuras.
Los nodos del árbol binario serán representados como
registros, que contendrán como mínimo tres campos. En un
campo se almacenara la información del nodo. Los dos
restantes se utilizaran para apuntar los subárboles izquierdo y
derecho, respectivamente, del nodo en cuestión.
REPRESENTACIÓN DE ÁRBOLES BINARIOS EN MEMORIA
Árboles • FIC-UAS
Dado el siguiente Nodo T:
IZQUIERDO INFOMACIÓN DERECHO
IZQUIERDO: Campo donde se almacena la dirección del subárbol
izquierdo del nodo T
INFORMACIÓN: Campo donde se almacena la información de interés
del nodo. Normalmente en este campo se almacenará un valor simple: número o
carácter. Sin embargo, en la práctica es común almacenar en este campo
registros, arreglos y conjuntos.
DERECHO: Campo donde se almacena la dirección del subárbol derecho
del nodo T.
05/06/2018
18
Árboles • FIC-UAS
Diseño de la clase NodoT
Árboles • FIC-UAS
Actividad:
• El alumno elaborara unproyecto para Windows en C#o Java, y codificara el diseñode la clase NodoT,correspondiente a la propuestadada anterior.
• Tiempo: 15min.
05/06/2018
19
Árboles • FIC-UAS
Ejemplo de Definición de la clase en
Lenguaje C#class NodoT
{//Atributosprivate int informacion;private NodoT izquierdo;private NodoT derecho;
//constructorespublic NodoT(){
this.informacion=0;this.izquierdo=null;this.derecho = null;
}//propiedadespublic int Informacion{
get { return this.informacion; }set { this.informacion = value; }
}
public NodoT Izquierdo{
get { return this.izquierdo; }set { this.izquierdo = value; }
}public NodoT Derecho{
get { return this.derecho; }set { this.derecho = value; }
}}
Árboles • FIC-UAS
Operaciones en Árboles Binarios de
búsqueda
• Insertar un nodo
• Buscar un nodo
• Eliminar un nodo
• Recorrido:▫ Postorden
▫ Inorden
▫ Preorden
05/06/2018
20
Árboles • FIC-UAS
Diseño de la clase Árbol
Árboles • FIC-UAS
Actividad:
• El alumno programara la claseÁrbol, correspondiente aldiseño anterior, utilizando ellenguaje C# ó Java.
• Tiempo: 15min.
05/06/2018
21
Árboles • FIC-UAS
El árbol binario de búsqueda es una estructura sobre la cual se
pueden realizar eficientemente las operaciones de búsqueda,
inserción y eliminación.
Comparando esta estructura con otras, pueden observarse ciertas
ventajas. Por ejemplo, en un arreglo es posible localizar datos
eficientemente si estos se encuentran ordenados, pero las
operaciones de inserción y eliminación resultan costosas.
En las listas, dichas operaciones se pueden llevar acabo con
facilidad, sin embargo, la búsqueda es una operación bastante
costosa, que incluso nos puede llevar a recorrer todos los
elementos de ella para localizar uno en particular.
ÁRBOLES BINARIOS DE BÚSQUEDA
Árboles • FIC-UAS
Formalmente se define de la siguiente manera:
“Para todo nodo T del árbol debe cumplirse que
todos los valores de los nodos del subarbol
izquierdo de T serán menores o iguales al valor
del nodo T. De forma similar, todos los valores
de los nodos del subarbol derecho de T deben
ser mayores o iguales al valor del nodo T.”
ÁRBOLES BINARIOS DE BÚSQUEDA
05/06/2018
22
Árboles • FIC-UAS
ÁRBOL BINARIO DE BÚSQUEDA
120
87 140
99 13043
22 65
56
93 135
Árboles • FIC-UAS
INSERCIÓN
05/06/2018
23
Árboles • FIC-UAS
La inserción es un operación que se puede realizar eficientemente en un
árbol binario de búsqueda. La estructura crece conforme se inserten
elementos al árbol.
Los pasos que deben realizarse para la inserción de elementos a un árbol
binario de búsqueda son:
1. Debe compararse la clave a insertar con la raíz del árbol. Si es mayor
debe avanzarse al subárbol derecho. Si es menor, debe avanzarse al
subárbol izquierdo.
2. Repetir el paso 1 hasta que se cumpla alguna de las siguientes
condiciones:
a) El subárbol derecho es igual a vacío, o el subárbol izquierdo es
igual a vacío, en cuyo caso se procederá a insertar el elemento en el
lugar que le corresponde.
b) La clave que quiere insertarse es igual a la raíz del árbol, en cuyo
caso no se realiza la inserción.
INSERCIÓN EN UN ÁRBOL BINARIO DE BÚSQUEDA
Árboles • FIC-UAS
Actividad:
• El instructor ejemplificara lasinserciones de nodos en un árbolbinario de búsqueda, para que elalumno diseñe y programe elmétodo insertar para la claseárbol.
• Tiempo de explicación: 15min.
• Tiempo de diseño, codificación yprueba del método: 40 minutos
05/06/2018
24
Árboles • FIC-UAS
Actividad: Referencia Cairo pág.#206
• Dada la siguiente lista de datos, forme unárbol binario de búsqueda, respetandosu principio.
• Datos:▫ 120, 87, 40, 43, 99, 130, 22, 65, 93, 135,
56, 40
▫ Representación grafica▫ Representación en memoria
Árboles • FIC-UAS
Actividad: Tarea
• Diseña un modelo gráfico del árbolbinario, reflejando las siguientesinserciones de valores para losnodos, supón este mismo orden dellegada.
• Valores:30,20,60,15,25,20,22,70,40,65,80,28 y 50. Traza la línea deenlace que representa al apuntadordel nodo.
05/06/2018
25
Árboles • FIC-UAS
Propuesta del algoritmo de Inserción 1/2
public void Insertar(NodoT Raiz, int Dato){
if(Dato<Raiz.Informacion){
if(Raiz.NodoIzquierda==null){
NodoT NuevoNodo=new NodoT();NuevoNodo.Informacion=Dato;Raiz.NodoIzquierda=NuevoNodo;
}else{
//llamada recursiva por lado izquierdoInsertar(Raiz.NodoIzquierda,Dato);
}}else //buscar por el lado derecho
Árboles • FIC-UAS
Propuesta del algoritmo de Inserción 2/2
{if(Dato>Raiz.Informacion){
if (Raiz.NodoDerecha==null){
NodoT NuevoNodo=new NodoT();NuevoNodo.Informacion=Dato;Raiz.NodoDerecha=NuevoNodo;
}else{
//llamada recursiva por el lado derechoInsertar(Raiz.NodoDerecha,Dato);
}}else{
//el nodo existe en el árbolConsole.Write("Nodo Existente, Imposible insertar,...");Console.ReadLine();
}}
}//fin del método
05/06/2018
26
Árboles • FIC-UAS
RECORRIDO EN ÁRBOL BINARIO
Una de las operaciones más importantes a realizar en un
árbol binario es el recorrido de los mismos. Recorrer
significa visitar los nodos del árbol en forma
sistemática, de tal manera que todos los nodos sean
visitados una sola vez.
Existen tres formas diferentes de recorrido y todas ellas
de naturaleza recursiva, estas son:
1. Recorrido en preorden2. Recorrido en inorden3. Recorrido en postorden
Árboles • FIC-UAS
Recorrido en Preorden
Algoritmo:
1. Visitar la raíz (tomar ó imprimir el valor del campoinformación)
2. Recorrer el subárbol izquierdo3. Recorrer el subárbol derecho
A
B C
ED GF
PREORDEN: A B D E C F G
05/06/2018
27
Árboles • FIC-UAS
Recorrido en Inorden
Algoritmo:
1. Recorrer el subárbol izquierdo
2. Visitar la raíz (tomar ó imprimir el valor del campo información)
3. Recorrer el subárbol derecho
INORDEN: D B E A F C G
A
B C
ED GF
Árboles • FIC-UAS
A
B C
ED GF
POSTORDEN: D E B F G C A
Recorrido en Postorden
1. Recorrer el subárbol izquierdo2. Recorrer el subárbol derecho3. Visitar la raíz (tomar ó imprimir el valor del campo
información)
05/06/2018
28
Árboles • FIC-UAS
Actividad:
• El instructor ejemplificara losalgoritmos de recorridos de losnodos en un árbol binario debúsqueda, para que el alumnodiseñe y programe los métodocorrespondientes a cada tipo derecorrido para la clase árbol.
• Tiempo de explicación: 20 min.
• Tiempo de diseño, codificación yprueba del método: 30 minutos
Árboles • FIC-UAS
Actividad: Referencia Cairo pág.#206
Datos: 120, 87, 140, 43, 99, 130, 22, 65, 93,
135, 56, 140
05/06/2018
29
Árboles • FIC-UAS
Recorridos, referencia: Cairo pág.#192-
• Del Árbol obtenido en el inciso anterior obtenga los recorridos:
▫ Preorden:_______________________
▫ Inorden:________________________
▫ Postorden: ______________________
Árboles • FIC-UAS
1 Punto para 3re examen parcial.
05/06/2018
30
Árboles • FIC-UAS
Actividad: Evaluación
• Dada la siguiente lista de datos, forme unárbol binario de búsqueda, respetandosu principio.
• Datos:▫ 400,250,500,300,100,550,250,50,150,280,
▫ 320,420,480,510,560
▫ Representación grafica
Árboles • FIC-UAS
Actividad -Recorridos
• Del Árbol obtenido en el inciso anterior obtenga los recorridos:
▫ Preorden:_______________________
▫ Inorden:________________________
▫ Postorden: ______________________
05/06/2018
31
Árboles • FIC-UAS
Actividad: Revisión del Proyecto
• Dado el ejemplo anterior, alimentar alproyecto desarrollado en C#, revisar el
listado obtenido:
▫ Preorden:_______________________
▫ Inorden:________________________
▫ Postorden: ______________________
Árboles • FIC-UAS
Algoritmos que efectúan los
diferentes tipos de recorrido
en un árbol binario.
05/06/2018
32
Árboles • FIC-UAS
Árboles • FIC-UAS
05/06/2018
33
Árboles • FIC-UAS
Árboles • FIC-UAS
05/06/2018
34
Árboles • FIC-UAS
Árboles • FIC-UAS
La operación de borrado es un poco mas complicada que la
inserción. Esta consiste en borrar un nodo sin violar los principios que definen
un árbol binario de búsqueda. Se deben distinguir los siguientes pasos:
1. Si el elemento a borrar es terminal u hoja, simplemente se
suprime.
2. Si el elemento a borrar tiene un solo descendiente, entonces tiene
que sustituirse por ese descendente.
3. si el elemento a borrar tiene los dos descendientes, entonces se
tiene que sustituir por el nodo que se encuentre más a la izquierda en el
subárbol derecho o por el nodo que se encuentra más a la derecha en el
subárbol izquierdo.
Además antes de eliminar un nodo debe localizársele en el árbol.
Para esto, se utiliza el algoritmo de búsqueda.
BORRADO EN UN ÁRBOL BINARIO DE BÚSQUEDA
05/06/2018
35
Árboles • FIC-UAS
Árboles • FIC-UAS
05/06/2018
36
Árboles • FIC-UAS
Actividad: Referencia Cairo pág.#206
• Dada la siguiente lista de datos, forme unárbol binario de búsqueda, respetandosu principio.
• Datos:▫ 120, 87, 40, 43, 99, 130, 22, 65, 93, 135,
56, 40
▫ Representación grafica▫ Representación en memoria
Árboles • FIC-UAS
Recorridos, referencia: Cairo pág.#192-
• Del Árbol obtenido en el inciso anterior obtenga los recorridos:
▫ Preorden:_______________________
▫ Inorden:________________________
▫ Postorden: ______________________
05/06/2018
37
Árboles • FIC-UAS
Búsqueda Binaria referencia: Cairo Pág.#206
• Dato el árbol binario de búsqueda obtenido en el inciso #1, determine si los siguientes nodo existen y en que dirección de encuentran:
• Dato:
▫ 43:___________________
▫ 80:___________________
Árboles • FIC-UAS
Eliminación referencia Cairo pág.#211
• Dado el árbol obtenido en el inciso #1, elimine los siguientes nodos, representando gráficamente el árbol en después de cada eliminación.
▫ 22, 99, 87, 120, 140, 135, 56
05/06/2018
38
Árboles • FIC-UAS
Actividad: Proyecto Final
• Entregar un proyecto en el lenguajeC# o Java, que represente lasdiversas operaciones de un árbolbinario de búsqueda.
▫ Retos.
1. El alumno codificara el método deeliminación.
2. Operaciones en arboles AVL(opcional 1 punto).
Árboles • FIC-UAS
Preguntas?
FIN de Unidad