Árbol 2-3 · Árbol 2-3 (tiempo de exposición 3 hs) 27/6/2018 1 apuntes de apoyo para clases...

14
Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir a las clases teóricas y completar con lectura del material bibliográfico propuesto.

Upload: others

Post on 11-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Árbol 2-3

(Tiempo de exposición 3 hs)

27/6/2018 1

Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir a las clases teóricas y completar con lectura del material bibliográfico propuesto.

Page 2: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Bibliografía

2

1) Apuntes de la cátedra – Dr. Tomas N. Hibbard.

3) El arte de programar ordenadores. Clasificación y Búsquedas. Volúmen III – D. E. Knuth – Ed. Reverté – Reimpresión Año 2002 – (SRO: NO). El tema figura como: Árboles equilibrados (pág. 518, “árbol B de orden m”).

2) Videos de la cátedra – Dr. Tomas N. Hibbard – (SRO: SI)

27/6/2018

Page 3: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Visualización de algoritmos

27/6/2018 3

http://www.cosc.canterbury.ac.nz/mukundan/dsal/appldsal.html R. Mukundan - Associate Professor Department of Computer Science and Software Engineering, College of Engineering, University of Canterbury, New Zealand.

qmatica.com http://www.qmatica.com/DataStructures/Trees/AVL/AVLTree.html (En option deshabilitar AVL Balanced, para poder trabajar con ABB)

Universidad de San Francisco. California. EEUU. Copyright 2011 David Galles Associate Professor

Para Arboles binarios de Búsqueda:

https://www.cs.usfca.edu/~galles/visualization/BST.html

Para Arboles 2-3: https://www.cs.usfca.edu/~galles/visualization/BTree.html

Para Arboles AVL: https://www.cs.usfca.edu/~galles/visualization/AVLtree.html

Page 4: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Aplicaciones

27/6/2018 4

Los árboles 2-3, son un caso especial de los “árboles B de orden m”. Estos son muy utilizados en la construcción de los índices de las tablas de Base de Datos. Para más referencias, ver [3] Pág. 518.

Fueron introducidos con el objeto de mejorar el tiempo de acceso en estructuras de datos manejadas en memoria secundaria, en las cuales el número de consultas a un registro influye de manera determinante en el tiempo de respuesta de la operación. En las ciencias de la computación , los árboles-B o B-árboles son estructuras de datos de árbol que se encuentran comúnmente en las implementaciones de bases de datos y sistemas de archivos.

Page 5: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Introducción

Con esta estructura conseguimos búsquedas logarítmicas en función del tamaño y también en la inserción, sin el riesgo de los casos peores o malos que tienen los árboles binarios aleatorios.

27/6/2018 5

Caso peor o caso no deseable

Page 6: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Introducción … Un árbol 2-3, es un árbol que puede tener cero, dos o tres subárboles. Cuando hay dos subárboles es como un árbol binario, tiene un valor en la raíz que separa a los valores de los dos subárboles. Si tiene tres subárboles hay dos valores en la raíz, y todos los valores de los tres subárboles son menores que los dos, entre los dos o mayor que los dos respectivamente.

Definición: Un árbol 2-3 sobre un tipo de datos “T” es uno de los siguientes tres casos:

a. Vacío b. (x, I, D) donde x Є T y I y D son árboles 2-3. c. (x, y, I, C, D) donde x, y Є T, y I, C D son árboles 2-3.

27/6/2018 6

Se cumple: Si A = (x, I, D), todos los valores de izq(A) ≤ valor(A) ≤ todos los valores de der(A) Si A = (x, y, I, C, D), todos los valores de I ≤ x ≤ todos los valores C ≤ y ≤ todos los valores de D

Page 7: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Introducción … Definición: Un árbol 2-3 sobre un tipo de datos “T” es uno de los siguientes tres casos:

a. Vacío b. (x, I, D) donde x Є T y I y D son árboles 2-3. c. (x, y, I, C, D) donde x, y Є T, y I, C, D son árboles 2-3.

5

3 8

7 9

I

D

6

A

3 8 I

A

6 C

D

5 │ 7

I

A 15 │ 27

5│ 8

C

20

D

31

18 23

II

IC

ID

A = Ø

27/6/2018 7

Page 8: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Introducción … Árbol 2-3 bien formado: Decimos que el árbol está bien formado, “si es vacío” o “si todos los subárboles tienen la misma altura y están bien formados”. Esto equivale a decir que el camino hasta cualquier hoja siempre tiene el mismo largo. Cuando tengamos dos subárboles, por lo menos, podemos garantizar que tendremos una búsqueda logarítmica.

A 15 │ 27

5│ 8 20 31

18 23 3 6 12 28 43

A 15 │ 27

5│ 8 20 31

23 3 6 12 28 43

Árbol 2-3 “bien formado” Árbol 2-3 “mal formado” 27/6/2018 8

Page 9: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Algoritmo de búsqueda en un árbol 2-3

L00 buscar(t, A) = L01 Si (A = Ø) “NO”

L02 Sino L03 Si A = (x, I, D) L04 Si (t = x) L05 Sino buscar (t, I)

L06 Sino L07 Sino Sea A = (x, y, I, C, D) L08 Si (t = x │ t = y)

L09 Sino Si (t < x)

L10 Sino

L11 Sino

“SI” Si (t < x)

buscar (t, D)

“SI” buscar (t, I)

Si (t < y) buscar (t, C) buscar (t, D)

A 15 │ 27

5│ 8 20 31

18 23 3 6 12 28 43

Ej. a)

buscar(3, A) = buscar(3, (5,8,(3,Ø,Ø), (6,Ø,Ø), (12,Ø,Ø)))

= buscar(3, (3,Ø,Ø))

= “SI”

Ej. b)

buscar(21, A) = buscar(21, (20,(18,Ø,Ø), (23,Ø,Ø)))

= buscar(21, Ø)

= “NO”

27/6/2018 9

|* “A” es binario *│

|* “A” es ternario *│

= buscar(21, (23,Ø,Ø))

Page 10: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Costo de búsqueda en un árbol 2-3 bien formado para el peor caso: No existe el elemento o bien es un nodo terminal

log3 (n) ≤ a ≤ log2 (n)

Altura (a)

A 2-3 se dispone totalmente Nro de elementos que almacena (n)

Binario Ternario Binario Ternario

0 0=20-1 0=30-1

1 1=21-1 2=31-1

2 3=22-1 8=32-1

3

7=23-1

26=33-1

… …. ….. … …

a

n=2a-1

(*)

n=3a-1

(**) … … … … … … … … … … … …

Despejando a de ambas expresiones (*) y (**) se tiene:

a es la altura del arbol 2-3, o sea que también es la cantidad de comparaciones para decidir si un elemento no existe o bien es un elemento terminal:

Para almacenar 80 elementos será necesario un árbol 2-3 donde: log3 (81) ≤ a ≤ log2 (81) 4,32 ≤ a ≤ 9

Page 11: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Costo de búsqueda en un árbol 2-3 para el peor caso

27/6/2018 11

log3 (n) ≤ a ≤ log2 (n)

Árbol 3: a = log3 (n)

Árbol binario construido al azar: a = 1.386 lg(n)

Árbol 2: a = log2 (n). Coincide con la altura del árbol binario bien equilibrado: a = log2(n + 1)

log3 (n) ≤ a ≤ log2 (n)

n (nodos)

a (altura)

Page 12: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Algoritmo de inserción

27/6/2018 12

La inserción en “(x, I, D)” procede como la inserción en el árbol aleatorio, excepto que preguntamos si la nueva inserción hizo crecer en altura el subárbol. Si no creció podemos aceptar el subárbol como está. Si creció, D y los nuevos subárboles resultados de la inserción en I tienen la misma altura, entonces podemos levantarlos un nivel (veremos que son dos) y formar un árbol con dos claves y tres subárboles. La inserción en “(x, y, I, C, D)” también empieza con la inserción en uno de los subárboles. Sino crece bien, si crece, tiene que tener dos subárboles, cada uno con la misma altura que los otros subárboles. Con estos cuatro subárboles y dos claves formamos el nuevo árbol con dos subárboles con altura aumentada en uno la altura inicial. “insertar1(t, A)”, devuelve un árbol 2-3 bien formado con la información que si es más alto que el árbol original o no.

Page 13: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Algoritmo de inserción en árbol 2-3

L00 Insertar1(t, A) = L01 Si (A = Ø) ((t, Ø, Ø), 1)

L02 Sino Si A = (x, I, D) L03 Si (t = x) (A, 0) L04 Sino Si (t < x) L05 Sea (B, c) = insertar1 (t, I)

L06 Si (c = 0) (x, B, D), 0))

L07 Sino Sea B = (y, B0 , B1) L08 ((y, x, B0 , B1, D), 0) L09 Sino Sea (B, c) = L10 Si (c = 0) ((x, I, B), 0)

L11 Sino L12 ((x, y, I, B0 , B1), 0)

L13 Sino Sea A = (x, y, I, C, D) L14 Si (t = x │ t = y) (A, 0)

L15 Sino Si (t < x) L16 Sea (B, c) = L17 Si (c = 0) ((x, y, B, C, D), 0)) L18 Sino ((x, B, (y, C, D), 1) L19 Sino Si (t < y) L20 Sea (B, c) = L21 Si (c = 0) L22 Sino

L23 Sea B = (z, B0, B1) L24 ((z, (x, I, B0), (y, B1, D)), 1) L25 Sino

27/6/2018 13

|* 0: NO CRECIO y 1: CRECIO *|

|* B: Nuevo árbol izquierdo *│

|* C = 1, CRECIO *│

insertar1 (t, D)

Sea B = (y, B0 , B1)

|* “t”, ya existe en el árbol “A” . C = 0, NO CRECIO *│

insertar1 (t, I)

|* C = 1, CRECIO – Árbol con 2 hijos*│

insertar1 (t, C) (x, y, I, B, D), 0)

|* C = 1, CRECIO – Árbol con 2 hijos*│ |* El caso (t > y) es simétrico al caso (t < x)*│

L26 Sea (B, c) = insertar1 (t, D) L27 Si (c = 0) L28 Sino

(x, y, I, C, B), 0) ((y, (x, I, C), B), 1) |* C = 1, CRECIO – Árbol con 2 hijos*│

|* CASO I *│

|* CASO II *│

|* CASO III *│

|* CASO IV *│

|* CASO V *│

|* “t”, ya existe en el árbol “A” *│

|* “A” es binario *│

|* “A” es ternario *│

|* L01 *│

Page 14: Árbol 2-3 · Árbol 2-3 (Tiempo de exposición 3 hs) 27/6/2018 1 Apuntes de apoyo para clases teóricas. Para una conceptualización completa de los temas, los alumnos deberán asistir

Visualización de algoritmos

27/6/2018 14

http://www.cosc.canterbury.ac.nz/mukundan/dsal/appldsal.html R. Mukundan - Associate Professor Department of Computer Science and Software Engineering, College of Engineering, University of Canterbury, New Zealand.

qmatica.com http://www.qmatica.com/DataStructures/Trees/AVL/AVLTree.html (En option deshabilitar AVL Balanced, para poder trabajar con ABB)

Universidad de San Francisco. California. EEUU. Copyright 2011 David Galles Associate Professor

Para Arboles binarios de Búsqueda:

https://www.cs.usfca.edu/~galles/visualization/BST.html

Para Arboles AVL: https://www.cs.usfca.edu/~galles/visualization/AVLtree.html

Para Arboles 2-3 (gt.jar): https://people.ksp.sk/~kuko/gnarley-trees/