Arboles AA. Kenneth Sanchez y Tamara Moscoso 8 de octubre del 2015



Documentos relacionados
En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

Árboles AVL. Laboratorio de Programación II

Ampliación de Estructuras de Datos

Estructuras de Datos y Algoritmos. Árboles de Expresión

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Tablas en HTML. Tipos de celdas. Ing. Tomás Urbina Programación Web y Desarrollo de la Plataforma Web

Como buscar información en Internet sin naufragar en el intento

Solución de No conformidades

Programa Presupuestos de Sevillana de Informática.

Programa en Microsoft Visual Basic 6.0 para el análisis de riesgos eléctricos en oficinas y centros de cómputo. López Rosales, Juan Carlo.

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Capitulo VII. Editor de Mapa de Tareas. Como hemos hablado en los capítulos anteriores, sabemos que parte del éxito

Preguntas Frecuentes. Plataforma ScienTI. Aplicativos CvLAC y GrupLAC

La ventana de Microsoft Excel

MATERIAL 2 EXCEL 2007

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

Figura 4.1 Clasificación de los lenguajes de bases de datos

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

Modelos y Bases de Datos

Capítulo 6: Conclusiones

CAPÍTULO III. MARCO METODOLÓGICO. del Hotel y Restaurante El Mandarín S.A. de C.V. en la ciudad de San Miguel.

UNA LECCIÓN DE ESTEREOMETRÍA ASISTIDA POR COMPUTADORA

INTRODUCCIÓN. La influencia de las Tecnologías de la Información y la Comunicación (TIC) en la

Clase 32: Árbol balanceado AVL

ARREGLOS DEFINICION GENERAL DE ARREGLO

Bienvenido al sistema de Curriculum Digital CVDigital

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

SÍNTESIS Y PERSPECTIVAS

BASE DE DATOS RELACIONALES

Instituto Tecnológico de Costa Rica

KAIZEN, CONCEPTOS, ALCANCES Y PROCESO KAIZEN

Capítulo 12: Indexación y asociación

Línea Base Juan Carlos Bajo Albarracín Qué es una línea base Cómo implantar la Ley 29783: El concepto sistema de gestión en la Ley 29783

UNIDAD EJECUTORA DE CONSERVACION VIAL MANUAL DEL USUARIO DEL SISTEMA INTEGRAL DE CONTROL DE PROYECTOS

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

EVALUACION Y CLASIFICACION DE CARGOS

Licenciatura en Computación

CAPÍTULO 1: INTRODUCCIÓN. El presente capítulo muestra una introducción al problema de Optimizar un Modelo de

32.- Manejo de Capacitación

Guía para realizar trabajos universitarios

El proceso unificado en pocas palabras

Su éxito se mide por la pertinencia y la oportunidad de la solución, su eficacia y eficiencia.

puede aumentar la innovación en la cartera de productos?

MODELOS DE CALIDAD EN EL DESARROLLO DE SOFTWARE

Gestión de Permisos. Documento de Construcción. Copyright 2014 Bizagi

Ingreso al Sistema Administrador

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE

Secuencia didáctica Adaptada. Almudena Ruiz Padilla

Para ingresar a la aplicación Microsoft Word 97, los pasos que se deben seguir pueden ser los siguientes:

Arquitectura: Clusters

Accesibilidad web GUÍA FUNCIONAL

2.1 Identificar el grado de aceptación que tendrían las grandes empresas hoteleras en la ejecución de un Sistema de PNL en acción.

UNIVERSIDAD DE ORIENTE UNIVO FACULTAD DE CIENCIAS ECONÓMICAS

4. METODOLOGÍA. 4.1 Materiales Equipo

PREGUNTAS FRECUENTES Nuevo Plan de Jubilación a Partir del 1º de Julio del 2014

La mayor parte de las empresas en el mundo utilizan sistemas de información,

INDICADORES. PROBLEMAS ASOCIADOS A SU SELECCIÓN PARA MEDIR SUSTENTABILIDAD Y EFICIENCIA AMBIENTAL

Estructurar la información dentro del ordenador:

Sistema de Provisión Centralizada CPS

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Resumen ÁREA DE FACTURACIÓN::INFORMES::Pedidos Detalle Resumen ÁREA DE

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

El Futuro de la Computación en la Industria de Generación Eléctrica

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

LA MUJER EN LA REDUCCIÓN DE DESASTRES.

FASES DEL PROCESO DE RESOLUCIÓN DE PROBLEMAS

MANUAL DE USUARIO SECTOR PRIVADO (RESUMEN)

Capitulo V Administración de memoria

CIMA. MANUAL DE USUARIO

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Asistente Liberador de Espacio. Manual de Usuario

CAPITULO l PLANTEAMIENTO DEL PROBLEMA CAPITULO I

Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 9: CRITERIOS DE CALIDAD DE DISEÑO MODULAR

Paso 2 Una vez se ha completado la instalación y ejecutado el programa, veremos esto

Introducción a las redes de computadores

El nuevo Sistema de inventario y facturación, producirá los siguientes informes:

Tabla de contenido. Manual B1 Time Task

Una experiencia en la enseñanza de los primeros cursos del área matemática.

Los números racionales

MANUAL DE USUARIO CMS- PLONE

3. Verifique que tenga los perfiles de Equipo Desarrollo Curricular e Instructor.

CAPÍTULO IV: ANÁLISIS, INTERPRETACIÓN Y DISCUSIÓN DE RESULTADOS

ESCUELA DE ADMINISTRACIÓN

RESERVACIONES ONLINE MANUAL DE REFERENCIA

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M.

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

PROCEDIMIENTO AUDITORIA INTERNA

Metodología centrada en la Experiencia del Usuario

Manual del Profesor Campus Virtual UNIVO

Mineria de Grafos en Redes Sociales usando MapReduce

ADMINISTRACIÓN DE BASES DE DATOS DISTRIBUIDAS

TRABAJO COOPERATIVO EN ROBOTS

PARTICIPACION DE PADRES, MADRES Y APODERADOS EN EL SISTEMA EDUCATIVO Herramientas para mejorar la gestión

Los motores de búsqueda.

UNIVERSIDAD TECNOLOGICA DE HERMOSILLO SCRUM SPRINT #1. Ingenieria de Software I MAESTRO: BERNARDO PRADO DIAZ INTEGRANTES. Jorge Valdano.

Transcripción:

Arboles AA Kenneth Sanchez y Tamara Moscoso 8 de octubre del 2015 Abstract En la industria comercial, durante mucho tiempo se han pasado por alto metodos de ordenamiento con una eficiencia buena y en su lugar se ha hecho uso de metodos menos efectivos, de este problema nació la búsqueda por una manera más eficiente de organizar datos de manera jerárquica. En la siguiente investigación se tratará una de las soluciones encontradas para resolver el problema planteado, sencilla y utilizada en los últimos años ésta solución es un tema importante para el conocimiento e investigación de los estudiantes de carreras de computación: los árboles AA. 1 Introduction En este documento se realizara una investigación a profundidad sobre los arboles AA, tambien conocidos como los arboles Arne Andersson, en el presente trabajo se incluira diferentes aspectos informáticos de los arboles como estructuras de organización de datos, con el fin de obtener un mayor conocimiento de los temas relacionados con la funcionalidad de arbol AA y recopilar información obtenida con la investigación de los mismos que se ha estado realizando durante años. El lector podrá encontrarse con un análisis de los Arboles AA, en donde se comprenderá definiciones sobre estructuras de datos, indagara sobre los árboles, qué es un árbol y principales funciones de un árbol. Con el fin de tener bases sobre conceptos fundamentales y así estudiar las ventajas y desventajas presentes en los arboles AA y además se investigara sobre la variedad de usos que le se da en la actualidad. 2 Desarrollo 2.1 Estructura de datos Las estructuras de datos nacen a partir de la necesidad del programador de organizar la informacion y datos, que este posee para un problema en particular. Con lo cual la representacion de los datos es fundamental para la realizacion de dicha tareas, tanto asi que una de las funciones primordiales del programador y de la computacion no es realizar calculos, si no almacenar y recuperar datos, usualmente de la manera mas rapida posible [7]., y para ello se recurren a estructuras que se acoplen a la necesidad del problema. En la actualidad se utiliza el termino estructura de dato para referirse a un metodo de organizacion 1

para el tratamiento y recoleccion de datos, por ejemplo una lista de numeros enteros, pila, colas, entre otros [6], son considerados estructuras de datos. En este caso en particular se dara estudio a la estructura de datos denominada arboles. Por lo que el estudio de esta estructura y el algoritmo necesario para su manipulacion, es elemental para el programador conconer su funcionalidad para la resolucion de problemas futuros. 2.2 Arboles Los arboles son un tipo de estructura de datos utilizadas para almacenar información de manera ordenada, estas estructuras permiten no solo el almacenamiento de los datos sino también proveen la funcionalidad de búsqueda y eliminación de los mismos, todo esto de manera que no se pierda equilibrio y balanceo del árbol, brindando así una buena eficiencia en tiempo de ejecución [6]. Los árboles se especializan en el almacenamiento de datos de tipo jerárquico, ya que están compuestos por padres y sus respectivos nodos, de manera que la información se ordena en un modo de jerarquía, estos juegan un papel central en el diseño y análisis de algoritmos, describen propiedades dinámicas de los algoritmos, se pueden encontrar en todo tipo de estructuras de programas actuales, además, son encontrados en la mayoría de estructuras de tipo jerárquicas que se encuentran en la vida cotidiana [7]. Como se dijo anteriormente, un árbol tiene padres y nodos, pero su estructura está compuesta por cierta cantidad de nodos, de estos uno de ellos se denomina raíz, este es el primer elemento y no tiene padre, todos los demás nodos tienen su respectivo padre, que sería el nodo situado inmediatamente superior a los mismos. El problema con los arboles es que es muy sencillo realizar uno, pero lograr optimizarlo para que pueda ser utilizado en búsquedas eficientes es un procedimiento que puede llegar a ser muy complicado, para esto se utilizan métodos de balanceo de manera que los arboles puedan quedar correctamente balanceados y a su vez estén equilibrados, de esta manera las búsquedas se aceleran y generan un tiempo más eficiente ya que cada rama toma un tiempo establecido en ser recorrida [7]. Por lo que distintas variaciones de arboles han sido desarolladas en este caso se estudiara el creado por Arne Ardensson, el arbol AA. 2.3 Arboles AA Los arboles AA fueron creados por Arne Andersson en su trabajo Balanced search trees made simple [2]. Los arboles como estructura de datos poseen grandes cualidades en tiempo de ejecución las cuales pueden ser O(log n) en el mejor de los casos, ya que el tiempo de ejecucion es proporcional a la altura del arbol por lo que entre mayor altura del arbol, mayor ineficiencia [1], Arne Andersson busco una solucion que si bien no brindara una mejora considerable en el tiempo de ejecucion, esta balanceara al arbol con mayor sencillez evitando gran altura en los arboles, ya que Arne creia que los problemas se debian al criterio con el cual el programador mantenia el balance de su arbol [1]. Los arboles son comunmente balanceados por dos metodos, el primero se realiza mediante un factor de equilibrio en cada nodo que equivale a la comparacion de las alturas en rama derecha y la rama izquierda [3], mientras que el segundo metodo utiliza pseudo-nodos los cuales son utilizados para denotar arboles de busqueda de multiples vias, tal y como lo realiza el arbol rojo-negro, 2

en donde se consideran los nodos rojos como enlaces horizontales y nodos negros como verticales, los enlaces verticales crean un unico pseudo-nodo mientras que los enlaces verticales conectan dos pseudo-nodos estos se asignan un valor de nivel siendo uno el mas bajo(hojas) [3]. Aun que el metodo utilizado en los arboles rojo-negro es eficiente este contiene una gran cantidad de casos especiales, con los cuales se aplican las rotaciones especificas, asi que Ardersson decidio utilizar la siguiente regla, asegurese que solo los bordes derechos sean horizontales, antes de revisar el tamaño del pseudo-nodo. Con esto estipulado la variedad de casos a realizar se ve reduccido a tan solo dos casos posibles: raiz nodohijoder y a raiz nodohijoder NodoHijoADer [2]. Una vez teniendo una reduccion tan relevante de casos, los algoritmos se ven simplificados por lo que, la gran cantidad de rotaciones necesarias antes utilziadas seran sustituidas por tan solo dos funciones, Skew y Split,las cuales significan torsion y division. Ademas se implementan niveles, siendo el nivel 1 las hojas y esta va en aumento segun la altura. 2.4 Arboles AA; Skew Metodo creado para equilibrar, su funcion costa en eliminar las relaciones que tenga el nodo p hacia su izquierda, ya que como estipula Andersson solo se puede trabajar sobre dos casos y ambos involucran la derecha. Para realizar esto se estudia los enlaces del nodo, en donde se realiza una rotacion a la derecha cada vez que se encuentra una relacion hacia la izquierda [2]. 2.5 Arboles AA; Split Funcion inventada para balancear, su mision es dividir o simplificar un nodo subiendo un nivel a todo nodo secundario caso que se da solo si el pseudo-nodo de este es muy grande, en este caso solo se utiliza los enlaces hacia la derecha del nodo y se realizan rotaciones hacia la izquierda [2]. 2.6 Insertar y eliminar Con el conocimietno de estas funciones Ardersson crea el siguiente pseudocodgio para el ingreso datos en un arbol, algoritmo ilustrado por la figura 1: Agrega un nodo al nivel 1 Realiza un Skew(nodo ingresado) Realiza un Split(nodo ingresado) 3

Figure 1: Muestra el comportamiento de la funcion insertar [1]. Como se puede apreciar en la figura 1, al insertar el 6 dispara un skew, el cual rota hacia la derecha al 6, ya que el nivel del 5 aumenta se procede a dividirlo con un split, sin embargo no es hasta un skew final que el arbol finalmente queda balanceado Mientras que el eliminado de datos contemplara los siguientes procedimientos; Remueve nodo del nivel 1 Revisa los enlaces que poseia el nodo Realiza un Skew(padre del nodo eliminado) Realiza un Split(padre del padre) Figure 2: Muestra el comportamiento de la funcion eliminacion [1]. 4

Al observar la imagen comprendemos el comportamiento de la eliminacion de un nodo en un arbol AA, al eliminar el 1, se pierde el balance con los niveles, a lo que se procede a realizar un split para reducir el nivel tanto del padre del nodo eliminado, como el padre del padre. Se detecta la anomalia en la cantidad de nodos por nivel a lo que realiza un skew y un split, volviendo asi a su estado de 3 niveles y balanceado. De esta manera Andersson fue capaz de crear un algoritmo capaz de competir con los algoritmos postulados, siendo este una alternativa fiable para la creacion de soluciones usando arboles auto balanceables. 2.7 Usos de los arboles AA Actualmente se dice que estamos rodeados por árboles de datos, estructuras tan comúnmente vistas como HTML son elementos contenidos en otros elementos hasta llegar a la raíz, es decir, un árbol, incluso los discos duros de las computadoras están compuestos por arboles de datos [4]. En el mundo actual casi todas las expresiones de relaciones jerárquicas son demostradas por medio de árboles de datos. Los arboles AA son mayoritariamente utilizados para programación funcional y se encuentran implementados en arrays asociativos. Además son muy útiles en la elaboración de estructuras de datos implementadas en geometría computacional. Debido a su gran eficiencia en el tiempo de borrado, inserción y búsqueda, estos son mayoritariamente utilizados en programas que trabajan en tiempo real, los arboles AA siempre se empeñan en garantizar un peor caso con un tiempo eficiente, razón por la cual han sido tan comúnmente usados. En general estas estructuras de datos son utilizadas en el mercado en grandes cantidades para programas que necesitan de un alto rendimiento en tiempo de ejecución y almacenan grandes cantidades de datos [5].Por lo que el desarollo brindado por los arboles AA es vital para el crecimiento tanto de las aplicaciones del codigo, como la evolucion de su codigo y algoritmo. 3 Conclusion Los arboles AA son una manera más eficiente y funcional de almacenar datos ordenados jerarquicamente, estas estructuras de datos son vitales para la organizacion de grandes cantidades de información que se necesitan insertar, buscar e incluso eliminar. Creados por Arne Andersson y basados en los arboles Rojo- Negros, los arboles AA mantienen un buen balanceo por medio de metodos sencillos, reemplaza los metodos usados en otros arboles por los simples Split y Skew, logrando un balanceado tan solo utilizando dos pasos. Debido a todas sus mejorias conforme a los arboles usados anteriormente, los Arboles AA podrían seguir siendo utilizados ampliamente en la industria. 5

References [1] Andersson, A. Balanced search trees made simple. 60 71. [2] Andersson, A. General balanced trees. Journal of algorithms 30 (1999), 1 18. [3] Andjelkovic, S. Formalizing arne andersson trees and left-leaning redblack trees in agda. 2 23. [4] Garcia, C., de Rezende, J., and Calheiros, C. Astral: Um ambiente para ensino de estruturas de dados através de animações de algoritmos. Universidade Estadual de Campinas (S.F). [5] Ottman,. T., and Widmayer, P. algorithmen und datenstrukturen. Springer Verlag 1 (2011). [6] Shaffler, A. Data structures and algorithms analysis. Virginia tech (2012). [7] Wirth, N. Algorithms and data structures. Oberon 1 (2004), 120 179. 6