Arboles AVL Programacion

download Arboles AVL Programacion

of 24

description

Arboles AVL programacion

Transcript of Arboles AVL Programacion

  • UNIDAD IV. ARBOLES

    Facultad de IngenieraEscuela de ComputacinProgramacin III

    Arboles Balanceados (AVL).

  • Objetivos Construir rboles binarios de bsqueda equilibrados.

    Describir los diversos tipos de movimientos que se hacen cuando se desequilibra un rbol.

    Disear rboles AVL en C#. Disear rboles AVL en C#.

  • Por qu es eficiente la bsqueda en un ABB?Si un ABB tiene distribuidos sus elementos en forma balanceada, seobtendr el mayor beneficio, pues se haran las mismas comparacionesque en una bsqueda binaria sobre un arreglo.

    El peor caso de una bsqueda en un ABB est determinado por la alturadel rbol y, por lo tanto, entre menor altura tenga el ABB, es decir, entrems balanceado est se obtendrn mejores resultados.

    Qu ventaja ofrece un ABB sobre el algoritmo de bsqueda Qu ventaja ofrece un ABB sobre el algoritmo de bsqueda binaria?

    Aunque la eficiencia de una bsqueda en un ABB es igual a la delalgoritmo de la bsqueda binaria en una estructura lineal, el ABB ofreceadicionalmente la ventaja de su representacin por medio de ligas.

    La mejor representacin para un ABB ser utilizando memoria dinmicaobteniendo as sus beneficios, pues el algoritmo de bsqueda binariapierde su eficiencia si se trata de aplicar en una lista encadenadaordenada.

  • Qu desventajas tiene un ABB?

    La principal desventaja de un ABB es la forma en que se realizan lasinserciones y eliminaciones de elementos.

    El orden de insercin y eliminacin determina la forma en que sebalancea el rbol y, por lo tanto, repercute en las bsquedas posteriores.

    En el peor de los casos, un ABB puede degenerar en una lista sobre laque se aplicar una bsqueda secuencial.que se aplicar una bsqueda secuencial.Se puede hacer la prueba insertando en el rbol vaco una secuenciaordenada de datos y comprobando que el rbol que se forma es uno enque slo se encadenan los nodos por medio de un solo apuntador y sedegenera en una lista.Obviamente, en este caso el algoritmo de bsqueda en el ABB secomportar como una bsqueda secuencial.

  • Qu aplicaciones tiene un ABB?

    Un ABB ser til en cualquier aplicacin en la que se requieraadministrar un grupo ordenado de datos en memoria principal con elobjetivo bsico de buscar de manera eficiente cualquier dato.

    Por qu es importante el balanceo en un rbol de bsqueda?La manera en que los elementos estn distribuidos en un rbol debsqueda determinar su altura y, en consecuencia, la cantidad debsqueda determinar su altura y, en consecuencia, la cantidad decomparaciones a realizar al buscar un elemento (eficiencia).

    Lo ideal sera que el rbol tuviera sus elementos distribuidos en formaequilibrada o balanceada, consiguiendo as la mayor eficiencia queofrece la bsqueda binaria.

  • Anlisis general de la eficiencia de bsqueda en un ABB?

    La cantidad mxima de comparaciones al realizar unabsqueda en un ABB est determinada por la altura del rbol.

    Si un ABB degenera en una lista, se tiene un rbol cuya alturaes igual a la cantidad de nodos en el rbol y el peor casocorresponder a realizar tantas comparaciones como nodostenga el rbol.

    Sin embargo, qu pasa si el rbol est balanceado?Si la altura de un ABB determina la cantidad mxima decomparaciones en una bsqueda, lo ideal sera tener la alturamnima que puede tener un ABB para n elementos.

    La altura mnima en un ABB con n elementos se dar en lamedida en que cada nivel del rbol est integrado a su mximacapacidad.

  • Anlisis general de la eficiencia de bsqueda en un ABB?

    Al analizar cual es la cantidad mxima de nodos que puedetener cada nivel en un ABB, en la figura se puede observar que:

    Por lo tanto, se tiene que el nmero mximo de nodos en unrbol binario de altura k es de: 2k 1.

  • Anlisis general de la eficiencia de bsqueda en un ABB?

    Ahora bien, si la altura de un ABB determina el nmero mximo decomparaciones al buscar un elemento, Cuntas comparacionesse harn al buscar un elemento en un ABB ideal que tiene nelementos?De acuerdo con el anlisis que hemos hecho, la respuesta seobtiene al encontrar el valor de k , dado el valor de n para lafrmula: n = 2k 1

    Por lo tanto, despejando k, aplicando las leyes de los logaritmos,se obtiene: k = Log2 (n+1)

    Entonces, la cantidad mxima de comparaciones a realizar en unABB ideal de n elementos es: Log2 (n+1)

    Lo anterior nos lleva a concluir que, para que el peor caso de unabsqueda en un ABB se cumpla con la mayor eficiencia posible, elABB debe estar balanceado.

  • QUE ES UN ARBOL BALANCEADO?

    Se considera que un rbol binario est balanceado cuandotodos sus niveles, excepto el ltimo, estn integrados a lamxima capacidad de nodos.

    Las investigaciones respecto a esta estructura de datos no hanlogrado encontrar una tcnica eficiente para manejar rboles debsqueda completamente balanceados; las propuestas hanbsqueda completamente balanceados; las propuestas hanllegado slo a presentar rboles parcialmente balanceados, sinrepercutir en la eficiencia de las operaciones de insercin yeliminacin de nodos.

    La ms comn y usada de las tcnicas es la de los rboles AVL.

  • QUE ES UN ARBOL AVL?

    Un rbol AVL es un rbol binario de bsqueda que trata demantenerse lo ms balanceado posible, conforme se realizanoperaciones de insercin y eliminacin.

    Fueron propuestos en 1962 por los matemticos rusos Adelson,Velskii y Landis, de donde surge su nombre.

    Su contribucin principal consisti en presentar algoritmoseficientes de insercin y eliminacin de elementosconsiderando un balanceo en el rbol que, a su vez, repercuteen la eficiencia de las bsquedas

  • QUE ES UN ARBOL AVL?Formalmente, en los rboles AVL se debe cumplir el hecho de quepara cualquier nodo del rbol, la diferencia entre las alturas de sussubrboles no exceda una unidad tal como se muestra acontinuacin:

  • QUE ES EL FACTOR DE BALANCE (FB) DE UN NODO?

    Los nodos de un rbol AVL guardan un valor entre 1 y -1, lo quese conoce como Factor de Balance (FB), y representa ladiferencia entre las alturas de sus subrboles.

    Un FB igual a cero de un nodo significa que las alturas de sussubrboles son iguales.

    un FB positivo significa que el subrbol derecho es ms grandeque el izquierdo

    un FB negativo que el subrbol izquierdo es ms grande que elderecho.

  • QUE ES EL FACTOR DE BALANCE (FB) DE UN NODO?En la imagen siguiente vemos un ejemplo de estos factores debalance:

  • Cmo se realiza el proceso de insercin de un elemento en un rbol AVL?

    Inicialmente, el proceso de insercin de un elemento en un rbol AVL esidntico al de un ABB: se busca la posicin en el rbol en que el nuevoelemento quede como un nodo hoja (puesto que el nuevo nodo es hoja,tendr un FB igual a cero).

    Una vez hecha la insercin como si fuera un ABB, se deber verificar siafecta el balanceo del rbol, segn las reglas de los AVL.El mejor de los casos ser cuando el nuevo nodo no provoque undesbalanceo, implicando slo la modificacin de los FB de los ancestros alnuevo nodo.El otro caso ser cuando ocurra un desbalanceo que obligue a hacermovimientos de apuntadores y de FB para balancearlo.

    La forma de detectar algortmicamente en qu caso se har o no unbalanceo en el AVL, se basa en la bsqueda de un nodo pivote.

    Un nodo pivote es aquel que tiene un FB diferente de cero y es el mscercano de los ancestros del nodo recin insertado.

  • Cmo se realiza el proceso de insercin de un elemento en un rbol AVL?

    Basados en este concepto, se pueden detectar los siguientes casos:1. El rbol AVL carece de nodo pivote. Esto significa que todos los

    ancestros del nuevo nodo tienen un FB igual a cero.En este caso, el nuevo nodo no desbalancea el rbol y slo se tendrnque ajustar los valores de los FB de todos los ancestros, volvindosepositivos o negativos, segn el valor del nuevo elemento.

  • Cmo se realiza el proceso de insercin de un elemento en un rbol AVL?

    2. El rbol AVL tiene nodo pivote y el nuevo se ha insertado en el subrbolms pequeo del pivote. En este caso tampoco habr desbalanceo,pues se igualan las alturas de los dos subrboles de nodo pivote, y slose tendrn que ajustar los FB de los ancestros que estn a partir delnodo pivote, volvindose positivos o negativos segn el valor del nuevoelemento.

    Existe un nodo pivote y la insercin se realiza sobre el subrbol mspequeo del nodo pivote

  • Cmo se realiza el proceso de insercin de un elemento en un rbol AVL?

    3. El rbol AVL tiene nodo pivote y en el subrbol ms grande de ste seinserta el nuevo nodo.En este caso se desbalancea el rbol a partir del nodo pivote y tendrque realizarse un balanceo.

  • Cmo se realiza un balanceo en un rbol AVL?Adelson, Velskii y Landis detectaron que, ante un problema dedesbalanceo, todos los casos podan resolverse aplicando unode los cuatro esquemas sencillos de balanceo; a estosesquemas los llamaron rotaciones (por la forma en que semueven los nodos), y consisten en modificar los apuntadoresde ciertos nodos, segn el esquema, junto con algunos FB.

    Lo ms valioso de esta propuesta es que el balanceo afectaLo ms valioso de esta propuesta es que el balanceo afectaslo los nodos que forman parte del subrbol, cuya raz es elnodo pivote, dejando intactos los nodos del resto del rbol.

  • Cmo se realiza un balanceo en un rbol AVL?El esquema de rotacin simple, que puede ser izquierda (RSI) oderecha (RSD) implica el movimiento de tres apuntadores (ver figuraa continuacin).

  • Cmo se realiza un balanceo en un rbol AVL?El esquema de la rotacin doble, que tambin puede ser izquierda(RDI) o derecha (RDD), implica el movimiento de cinco apuntadores.

  • Algoritmo para la insercin de un nodo en un rbol AVL1. Inserte el nodo como en un ABB (rutina de insercin ya conocida).

    2. Busque el nodo pivote. Coloque los apuntadores P1, P2, P3 y P4, donde:P1 = apuntador al nodo padre del nodo pivote.P2 = apuntador al nodo pivote.P3 = apuntador al nodo hijo del nodo pivote, que es la raz del subrbol msgrande.P4 = apuntador al nodo hijo del nodo apuntado por P3, que sigue en la rutade bsqueda del nuevo nodo.de bsqueda del nuevo nodo.

    3. Si no existe nodo pivote (P2 apunta a vaco), entonces modifique los FBdesde la raz hasta el nuevo nodo (rutina que modifica los FB).Si el nuevo nodo se insert en el subrbol ms pequeo del nodo pivote,entonces modifique los FB desde el nodo pivote hasta el nuevo (rutina quemodifica los FB).Si no es as, verifique el tipo de rotacin:Si es rotacin simple, entonces:-> Modificar apuntadores y FB (rutina que realiza la rotacin simple).Si no,-> Modificar apuntadores y FB (rutina que realiza la rotacin doble).

  • Algoritmo para la insercin de un nodo en un rbol AVLEjemplo: Insercin del elemento 52 sobre un rbol AVL

  • Algoritmo para la insercin de un nodo en un rbol AVLLa insercin se realiza como en un ABB

  • Algoritmo para la insercin de un nodo en un rbol AVLEl pivote es el 45 y la insercin provoca una rotacin simple a la izquierda,que genera el rbol: