ARBOL y CADENA POLACAS Semestre 2017-1 Prof. Daniel Quinto Pazce
ARBOL Definicion Un Árbol T(V, A) es un grafo conexo acíclico de estructura jerárquica 2-tuple. Donde: A V = {conjunto de nodos} A = {conjunto de aristas} aristas } B C D Para cualquier árbol
Si |V|=n .¨. |A|=n-1
E
F
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ARBOL ENRAIZADO Un árbol T(V,A) es enraizado cuando los nodos tienen al menos un nodo hijo descendiente. Nodo: raíz A --------------------------T: 0 B E
F
C G
K L M
D H
----------------
1
----------
2
------------
3
I
J N
INI = 14 , IAI I AI = 13 los arc. siempre es uno menos que los nodos Nodo Interno [A,B,D,F,J] Nodos Terminales (Hojas) [C,E,G,H,I,K,L,M,N] En todos los nodos, su peso (W=1).
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ARBOL BINARIO
Un árbol T(V,A) es binario cuando todos los nodos tienen a lo más dos descendientes. Todo árbol binario tiene una estructura bien definida, con los V, A N
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
L
SubIzq
R
SubDer
ARBOL BINARIO Raíz
T:
Niveles A
0
B D
C E
H
F I
1
G
2 3
INI = numero de nodos= 9 IAI= numero de arcos = 8 Nodo A = Nodo Padre raíz.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ARBOL BINARIO
1. 2.
árbol binario, con puntero raíz. Puntero “Raíz” F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
Puntero “Nodo Cabecera” Raíz
A B D
E H
.
C F I
G
Árbol binario con nodo cabecera “ Llamado Árbol Enhebrado” A B D
C E
H
F I
G
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Árbol binario ponderado Todos los nodos tiene Peso, denotado w 20
T:
2
45
T:
70
Wi: peso
50
10
15
ARBOL (MASCARA)
25
35
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ELEMENTOS DE UN ARBOL
RAIZ: Es el puntero que apunta al nodo padre raíz NODO PADRE RAÍZ: Es el nodo del cual descienden todos los hijos. NODO HIJO: Es el nodo que tiene el mismo padre. NODO HERMANO: Es el nodo que esta al mismo nivel y desciende del mismo padre. HOJA (Nodos Terminales): Es el nodo que ya no tiene más descendientes. DESCENDIENTES: Cualquier nodo que tiene el mismo antecesor. ANTECESOR: Es el nodo padre. ANTEPASADO: Son todos los antecesores. ANCESTRO: Es el nodo padre raíz.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
GRADO - NODO
GRADO O VALENCIA DE UN NODO Es el numero de descendientes directos de cada nodo. CAMINO Es una secuencia finita de arcos continuos LONGITUD DE CAMINO Es el numero de arcos que contiene ese camino; coincide con el Nº de nivel del árbol ALTURA Es la longitud de ese nodo hasta las hojas PROFUNDIDAD Es la longitud desde la raíz hasta ese nodo
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ALTURA Y PROFUNDIDAD Ejemplo: A
RAIZ B
Profundidad
ESE NODO
0
C
D
E
F
Altura
HOJA
H
I
J
1
G
2
3 4
Altura(A) = 4 Prof(A) = 0 Prof(H) = 3
ARBOL EXTENDIDO
Un árbol es extendido si en cualquier nodo se enlaza nodos cuadrados de valencia par. 0
T: 1 2
3
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
LONGITUDES 1.Longitud Interna = 0
1
2 1
2
2
2
3
4
2 3
Long. Interna =1*0+2*1+3*2 = 8 Longitud Extendida 2. =1*2 + 6*3 = 20 Longitud Extendida 3. Ponderada long. Ext. Pond = 2*2+3(1+2+2+2+3+4) =46
TRANSFORMACION DE UN ARBOL ENRAIZADO EN ARBOL BINARIO A B E
F
A
C G
D H
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
B
I
J
K
L
E M
C F
D G
H I
.
J K L M
TIPO DE ARBOLES 1.
ARBOL LLENO Cuando todas las hojas están al mismo nivel. N(n) = 2n+1 – 1 , n= nº de nivel Ejemplo:
Crear un árbol lleno de nivel 3 n = 3 , N(3) = 2 4 – 1 = 15 0 1 2 3
ARBOL COMPLETO
Cuando todos los nodos internos están llenos hasta el siguiente, al ultimo nivel, y con las hojas del ultimo nivel toma mas a la izquierda como sea posible.
N(n) = 2n + 1 n = nº de nivel Ejemplo:
Crear un árbol de nivel 3. Si n = 3 entonces N(3) = 9 0
1
2
3
ARBOL EQUILIBRADO Cuando cada nodo interno se diferencia a lo mas en uno; por definición de su altura. 1) Ialtura(subIZQ) - altura(subDER)I <=1 ó Ialtura(subDER) - altura(subIZQ)I <=1 2) Formula de Recursividad para n(nodos) Kn = Kn-1 + 1 + Kn-2 , K1 =1 , K0 = 0 Donde: n = nº de nivel, n = n+1
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ARBOL EQUILIBRADO
Ejemplo: Crear un árbol equilibrado de nivel 5, n= 5+1 K6 = K5 + 1 + K4 = 20 12
7
K5 = K4 + 1 + K3 = 12 7
4
K4 = K3 + 1 + K2 = 7 4
2
K3 = K2 + 1 + K1 = 4 1
2
K2 = K1 + 1 + K0 = 2 1
0
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Árbol equilibrado de nivel 5 0
1
2 3 4 5
ARBOL DE BUSQUEDA BINARIA
Ni ≥ Nsubizq y Ni ≤ Nsubder
Dado C A R
M
E
C
Ni A N
N
R
N M
SUBIZQ
SUBDER
E
N
ARBOL DE BUSQUEDA BINARIA, CUANDO CADA NODO ES MAYOR QUE CUALQUIER SUB ARBOL IZQUIERDO Y MENOR QUE CUALQUIER SUB ARBOL DERECHO.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Árbol de búsqueda Binaria Un árbol T(V,A) es un árbol de búsqueda binaria (ABB) si cumple: SubIzq (Hi 1) <= Hi SubDer (Hi + 1) >= Hi Crear un árbol de búsqueda binaria de nivel 2. Defino A B C D E F G H I –
E
Arbol alfabetico
A
.
H
B
D
F
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
I
Árbol de búsqueda Binaria
Dado: 70 30 45 10 100 50 80 2 35 200, CREAR ABB
70
Árbol Ponderado 30
10
100
45
80
200
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
2
35
50
EN ESTE EJEMPLO, EL DATO ES DADO; ENTONCES SE EMPIEZA A GENERAR EL ARBOL DESDE EL INICIO, ES DECIR TOMANDO 70 COMO PADRE RAIZ.
22
Árbol de búsqueda Binaria
Dado una mascara Crear un ABB de tipo alfabetico
I D
0 R
ABCDEFGHIJKLMNOPQRSWXYZ
S
N L J
O M
1
2 3
4
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
ÁRBOL DE HUFFMANN Es útil para codificar la información y se obtiene operando los dos pesos menores cada vez, y abarcando triangularmente hacia la izquierda. Los datos pueden ser numérico, o tipo probabilístico. Veamos algunos ejemplos:
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Árbol de Huffman EJEMPLO numérico Info W
G R A F F 22 5 11 19 2
O 6
65
0
22 22 22 22 41 65
5 7 13 24 24
11 19 2 11 19 6 11 19 19
6
24
A
41
0
1
0
1
11
13
19
22
F
G
0 O
Info. De las Hojas:
1
1
6
7
0
AO FRFG
2 F
1 5 R
Árbol de Huffman- Representa. Memoria •
Grafo:
Lista:
11 G
NDISP
0111 R
00 A
Info 1 2 3 4 5 6 7 8 9 10 11 12 13 14
10 F
W Info G R A F F O
0110 F
SubIzq W 22 5 11 19 2 6 7 13 24 41 65
SubIzq 0 0 0 0 0 0 5 6 3 4 9 13 0 12
010 O
SubDer SubDer 0 0 0 0 0 0 2 7 8 1 10 0 0 0
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Árbol de Huffman - Probabilístico M 0.05
A 0.09
T 0.12
D 0.45
I 0.16
0.05
0.09
0.12
0.45
0.16
0.14
0.12
0.45
0.16
0.13
0.14
0.25
0.45
0.16
0.30
0.25
0.45
0.55
0.45
1.00
S 0.13 1.00
0.13 0.45
0.55
D 0.25
0.12 T
0.13
0.30 0.14 0.16
S
I 0.05 M
0.09 A
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Representación en Memoria
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Árbol del montículo A la secuencia de nodos se le llama: Hi , Hi+1, Hi+2…, HDdiv2 , HDdiv2+1… , HD
árbol de montículo y cumpla propiedad: Hi <= H2i i, i i...D div 2 Hi <= H2i+1
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
En esta definición de Montículos no se exige relación Alguna entre los elementos HDdiv2+ HDdiv2+1 … + HD
.
32
Árbol del montículo E 4
M 5
I 6
i = 4, 5, 6 Para i = 4:
L 7
I 8
O 9
S 10
M 11
I T 12 13 E
No tiene relación L H4 = E <= I = H8 H4 = E <= O = H9
4 I
O
8 M
Para i = 5:
H5 = M <= S = H10
H5 = M <= M = H11
S
M
H6 = I <= I = H12 H6 = I <= T = H13
L
5
10
Para i = 6:
9
I
11
6 I 12
T 13
7
Arbol : Algoritmo de Filtracion E
M
I
L
I
O
S
M
I
T
1
2
3
4
5
6
7
8
9
10
Para i = 1 …5
i = 1,2, 3, 4, 5 Para i = 1:
H1 = E ≤ M = H2 H1 = E ≤ I = H3
Para i = 2:
H2 = M ≤ L = H4 H2 = M ≤ I = H5
Para i = 3:
H3 = I ≤ O = H6 H3 = I ≤ S = H7
Para i = 4:
Para i = 5:
v
E I 3
2
v
L
H4 = L ≤ M = H8 v H4 = L ≤ I = H9 x H5 = I ≤ T = H10 v H5 = I ≤
1
M
x
I 5
4
M 8
O
I 9
T 10
LA DIRECCION DEL ARBOL, SE MANTIENE DESPUES DEL FILTRADO. ARBOL DE MONTICULO
6
S 7
Arbol : Algoritmo de Filtracion ALGORITMO DE FILTRACION: R1: Inicializar el nodo padre raíz.: R2 Almacenar el nodo padre en un buffer R3: Seleccionar el sub árbol del menor nodo hijo. R4: Mientras nodo hijo seleccionado < buffer Reemplazar nodo padre con el nodo hijo seleccionado. Actualizar nodo hijo seleccionado R5: Repetir el procedimiento desde el paso R3.
M
H:
E M
E I
I
I
L L M
I I
T
O
I
S M
M L
T
O
S
Representación en Memoria De un árbol binario cualesquiera IZQ INFO DER Inicio F B
H
A
D C
G E
I
NDISP 12
1 2 3 4 15 6 7 8 9 10 11 12
Info H E A F C I B G D
Izq 9 0 0 7 0 0 3 10 0 0 5 8
Der 6 0 0 1 0 0 11 0 0 0 2 0
Representación en Memoria de un Árbol
Representación Enlazada De un arbol Binario F B
A
H
D
C
G
E
I
Representación Enlazada
Operación en un Árbol de BB PRIMER CASO 1) Elimina de una Hoja F
F B A
B
H A
D
H D
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
C
E
C
Eliminación de un Nodo SEGUNDO CASO 2) Eliminación con 1 solo descendiente El puntero padre salta al nodo suprimido y apunta al hijo del nodo que queremos suprimir F B A
F H
A I
I
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Eliminación de un Nodo (3er caso)
3) Eliminación de 1 nodo con 2 descendientes SubIzq { el nodo es aquel que es el más próximo y que precede inmediatamente al que se esta suprimiendo. SubDer { el valor es aquel que sigue inmediatamente al que esta suprimiendo F
F
B
H
A
D C
G E
C I
A
H D
G E
I
Eliminación de un nodo con 2 descendientes Sub Izq El valor es aquel que es el mas próximo y que precede inmediatamente al que le esta suprimiendo. Sub Derecho El valor es aquel que sigue inmediatamente al que se esta suprimiendo.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Recorridos en un Árbol
A.- Inorden
B.-Preorden
C.-Postorden
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Ejemplo:
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Recorridos de un árbol
Inorden: Preorden: Postorden:
A B C D EF G H I FBADCEHGI ACEDBGIHF
F B
H
F B
A
H
A
D C
G
C
F
I B
E
D
H
A
D C
G E
I
G E
I
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
CADENA POLACA
Polaco Lukasiewice implantó el árbol de una expresión aritmética para obtener la cadena infija, prefija y posfija.
Hacemos evaluaciones utilizando el concepto de pila.
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
CADENA POLACA
EXPRESION ARITMÉTICA: tenemos dos: operandos: letras minúsculas operadores :
( ) / * div mod + -
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
CADENA POLACA
Generación de un árbol Expresión aritmética 1.
a
b
c
/
d
Operadores Nodos internos
+
-
a
info
a 1
b 2
b
c 3
d 4
c
d
Expresión Aritmética 2 ( d ( g f ))
b)
( ab c )
-
-
* a
b
+
d c
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
2
gg
.
f 55
Expresión Aritmética b)
ab
c
2
3
-
3
*
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
a
b
c
2
CADENA POLACA Ejemplo : + /
+
*
a
*
* b
c
/
a
f
a
c
d
d
(a* b+c*d)/a*f + (a c)/ d 1/2
/
1
2
CADENA POLACA Obtener la cadena infija, prefija y posfija de la siguiente expresión: b b 2 4ac x ax+bx+c=0 2a b
x Queda como ejercicio
b2 2a
b
1* b s * b
4ac
Recorridos de un Árbol -
INFIJA Ejemplo:
*
/
a ( b + c ) – ) – d d / e a
Recorrido Infijo: a*b+c-d/e
+
b
d
c
e
Recorridos de un Árbol -
PREFIJA Ejemplo:
*
/
a ( b + c ) – ) – d d / e a
Recorrido prefijo: -*a+bc/de
+
b
d
c
e
Recorridos de un Árbol -
POSTFIJA Ejemplo:
*
/
a ( b + c ) – d / e a
Recorrido posfijo: abc+*de/-
+
b
d
c
e
RECORRIDOS Ejemplo:
+
b
/
c
d
a
e
CADENA INFIJA: b c /a +d e CADENA PREFIJA: + b/ca de CADENA POSFIJA: bca/ de +
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
PILAS
Es una estructura dinámica en donde las inserciones y eliminaciones se hacen a través de la cima, utilizando el principio: “Ultimo en llegar primero en salir”
LIFO “Last In First Out”
Push ( )
Pop ( )
cima
Empilar
Depilar
Pilas Cadena (vacía)
Empila de menor a mayor : Depilar
Empilar -
cima
* / +
Pila vacía
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
Evaluación Manual Cadena
5(6+2)-8/4
-
- * 5 + 6 2 / 8 4 8
*
/
2 5
+
8
40 38
6
2
4
USANDO EL MÉTODO DE PILA 5 6 2 + * 8 4 / Cadena Postfija
Símbolo 5 6 2 + * 8 4 / -
Pila 5 5 6 5 6 2 5 8 40 40 8 40 8 4 40 2 38
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
TRANSFORMACION DE INFIJA A POSFIJA a * ( b + c ) – d / e
Cadena de forma original infija
Se debe tener la expresión aritmética como cadena en forma original de infija; los operadores se manejan de acuerdo a sus prioridades, como se muestra en el ejemplo siguiente:
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.
TRANSFORMACION DE INFIJA A POSFIJA Símbolos
Pilas
Cadena postfija
( a * ( b + C ) d / e )
( ( (* (*( (*( (*(+ (*(+ (* (((-/ (-/ E
a a a a a a a a a a a a
b b b b b b b b b
c c+ c+* c+*d c+*d c+*d e c+*d e / -
F I S I D a n i e l Q u i n t o P a z c e L o g i c a M
.