arboles balanceados

33
Clase 32: Árbol balanceado AVL Estructuras de datos (Prof. Edgardo A. Franco) 1 Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom [email protected]

Upload: abigail

Post on 17-Nov-2015

22 views

Category:

Documents


3 download

DESCRIPTION

habla sobre los nodos que tiene cada arbol y que tipo de arboles hay

TRANSCRIPT

  • Clase 32: rbol balanceado AVL

    Estructuras de datos (Prof. Edgardo A. Franco)

    1Prof. Edgardo Adrin Franco Martnez http://computacion.cs.cinvestav.mx/~efranco

    @efranco_escom

    [email protected]

  • Contenido Problema de los rboles binarios de bsqueda Variantes de los rboles binarios de bsqueda rbol balanceado AVL

    Definicin Condicin de equilibrio Caractersticas Operaciones sobre un AVL

    Insertar nodos Balancear Eliminar Nodos Calcular altura

    Complejidad de la bsqueda Ordenes de complejidad Bsquedas y recorridos Ejercicios de rboles AVL

    Insercin de claves Eliminacin de claves

    Liga Web

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    2

  • Problema de los rboles binarios de bsqueda Los rboles binarios, son eficientes en las operaciones de

    bsqueda, insercin y eliminacin cuando el rbol crece odecrece descontroladamente, la eficiencia de la estructura dedatos decae.

    Una situacin critica es cuando se insertan elementosordenados.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    3

    Insertar los datos 15,18,30,60

    15

    18

    30

    60

    32

    11

    9

    4

    Insertar los datos 32,11,9,4,

    Se expanden incrementando las comparaciones, operacin de O(N)

  • Variantes de los rboles binarios de bsqueda

    Con el objetivo de mantener la eficiencia en laoperacin de bsqueda surgen modificaciones a lasreglas de operacin del rbol binario de bsqueda.

    rbol rojo-negro rbol balanceado (AVL) rbol biselado

    Estas variantes presentan ventajas en cuanto alrendimiento que ofrecen a la hora de realizarbsquedas principalmente.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    4

  • rbol balanceado AVL La principal caracterstica de estos es la de realizar

    reacomodos o balanceos, despus de inserciones oeliminaciones de elementos.

    Estos rboles tambin reciben el nombre de AVL(autores: 2 matemticos rusos G.M. Adelson-Velskii y E.M Landis en1962).

    Formalmente se define un rbol balanceado comoun rbol de bsqueda, en el cual se debe cumplir lasiguiente condicin: Para todo nodo T del rbol laaltura de los subrboles izquierdo y derecho nodeben diferir en a lo sumo una unidad.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    5

  • Definicin Bsicamente un rbol AVL es un rbol Binario de

    Bsqueda al que se le aade una condicin deequilibrio.

    Para todo nodo la altura de sus subrboles izquierdo y derecho pueden diferir a lo sumo en 1.

    Gracias a esta forma de equilibrio (o balanceo), lacomplejidad de una bsqueda en uno de estosrboles se mantiene siempre en orden decomplejidad O(log n).

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    6

  • Condicin de equilibrio

    Para todos los nodos, la altura de la ramaizquierda no difiere en mas de una unidad de la altura de la rama derecha Es

    tru

    ctu

    ras

    de

    dat

    os

    32

    rb

    ol b

    alan

    cead

    o A

    VL

    Pro

    f. Ed

    gard

    o A

    dri

    n F

    ran

    co M

    art

    nez

    7

  • Caractersticas Un AVL es un ABB.

    La diferencia entre las alturas de los subrboles. derecho eizquierdo no debe excederse en ms de 1.

    Cada nodo tiene asignado un peso de acuerdo a las alturasde sus subrboles.

    Un nodo tiene un peso de 1 si su subrbol derecho es msalto, -1 si su subrbol izquierdo es ms alto y 0 si las alturasson las mismas.

    La insercin y eliminacin en un rbol AVL es la misma queen un ABB.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    8

  • Ejemplo de AVL

    Slo el rbol de la izquierda es AVL. El de la derecha viola lacondicin de equilibrio en el nodo 6, ya que su subrbolizquierdo tiene altura 3 y su subrbol derecho tiene altura 1.

    6

    8

    741

    2

    3

    1

    0

    0-1

    0

    -1

    -16

    8

    7

    41

    2

    3

    0 0

    00

    10

    -2

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    9

  • Equilibrio Equilibrio = (altura derecha ) (altura izquierda)

    Describe relatividad entre subrbol derecho ysubrbol izquierdo.

    + (positivo) derecha mas alto (profundo) - (negativo) izquierda mas alto (profundo)

    Un rbol binario es un AVL si y slo si cada uno desus nodos tiene un equilibrio de 1, 0, + 1

    Si alguno de los pesos de los nodos se modifica enun valor no vlido (2 -2) debe seguirse unesquema de rotacin.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    10

  • Desequilibrios Desequilibrio hacia la izquierda (Equilibrio > +1)

    Desequilibrio hacia la derecha (Equilibrio < -1)

  • Operaciones sobre un AVL1. Insertar nodo

    2. Balancear

    Caso 1 Rotacin simple izquierda RSI Caso 2 Rotacin simple derecha RSD Caso 3 Rotacin doble izquierda RDI Caso 4 Rotacin doble derecha RDD

    3. Eliminar nodo

    4. Calcular altura

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    12

  • Insertar un nodo 1. Se usa la misma tcnica que para insertar un nodo

    en un ABB ordenado

    2. Trazamos una ruta desde el nodo raz hasta unnodo hoja (donde hacemos la insercin).

    3. Insertamos el nodo nuevo.

    4. Volvemos a trazar la ruta de regreso al nodo raz,ajustando el equilibrio a lo largo de ella.

    5. Si el equilibrio de un nodo llega a ser + - 2,volvemos a ajustar los subrboles de los nodospara que su equilibrio se mantenga acorde con loslineamientos AVL (que son +- 1)

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    13

  • Balancear Caso 1: Rotacin simple izquierda RSI

    Si esta desequilibrado a la izquierda (E>+1) y suhijo derecho tiene el mismo signo (+) hacemosrotacin sencilla izquierda.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    14

  • Caso 1: Rotacin simple izquierda RSI

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    15

  • Caso 2: Rotacin simple derecha RSD Si esta desequilibrado a la derecha (E
  • Caso 2: Rotacin simple derecha RSD

    D

    0

    -1

    0 Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    17

  • Caso 2: Rotacin simple derecha RSD

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    18

  • Rotacin simple izquierda o derecha. Observaciones:

    Se conserva el orden apropiado del rbol. Restablece todos los nodo a equilibrios

    apropiados AVL

    Conserva el recorrido en orden que el rbolanterior.

    Slo se necesita a lo ms modificar 3 apuntadorespara lograr el nuevo equilibrio (con la de la raz)

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    19

  • Caso 3: Rotacin doble izquierda RDI Si est desequilibrado a la derecha (E< 1), y su

    hijo izquierdo tiene distinto signo (+) hacemos rotacin doble izquierda-derecha.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    20

  • Caso 3: Rotacin doble izquierda RDI

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    21

  • Caso 3: Rotacin doble izquierda RDI

    Ejercicios de rboles AVL (Edgardo A. Franco)

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    22

  • Caso 4: Rotacin doble derecha RDD Si esta desequilibrado a la izquierda (E>+1), y su

    hijo derecho tiene distinto signo () hacemosrotacin doble derecha-izquierda.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    23

  • Caso 4: Rotacin doble derecha RDD

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    24

  • Caso 4: Rotacin doble derecha RDD

    Ejercicios de rboles AVL (Edgardo A. Franco)

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    25

  • Eliminar Al eliminar un nodo en un rbol AVL puede afectar

    el equilibrio de sus nodos. Entonces hay que hacer rotaciones simples o dobles.

    Eliminar un nodo se realiza de la misma manera que en un rbol binario ordenado. Al localizar el nodo que se desea eliminar se realiza el siguiente procedimiento: Si el nodo es un nodo hoja, simplemente lo eliminamos. Si el nodo solo tiene un hijo, lo sustituimos con su hijo. Si el nodo eliminado tiene dos hijos, lo sustituimos por el

    nodo que se encuentra mas a la derecha en el subrbol izquierdo o ms a la izquierda en el subrbol derecho.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    26

  • Una vez que se ha eliminado el nodo, se tiene queequilibrar el rbol:

    Si el equilibrio del padre del nodo eliminado cambia de 0 a+-1 el algoritmo concluye.

    Si el padre del nodo eliminado cambio de +-1 a 0, la alturadel rbol ha cambiado y se afecta el equilibrio de suabuelo.

    Si el equilibrio del padre del nodo eliminado cambia de +-1 a +- 2 hay que hacer una rotacin. Despus deconcluirla, el equilibrio del padre podra cambiar, lo que, asu vez, podra forzarnos a hacer otros cambios (yprobables rotaciones) en toda la ruta hacia arriba amedida que ascendemos hacia la raz. Si encontramos enla ruta un nodo que cambie de 0 a +- 1 entonces seconcluye.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    27

  • Calcular altura Una funcin para calcular la altura a partir de una

    posicin puede escribirse recursivamente como:

    //Calcula la altura de un rbol a partir de una posicin pint Altura (arbol *a, posicion p){

    if(NullNode (a,p))return 0;

    // Retornar la mayor altura (Izquierda o Derecha)else

    return 1 + Max(Altura (a,LeftSon (a,p)),Altura (a,RightSon (a,p)));}

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    28

  • Complejidad de bsqueda Los rboles AVL estn siempre equilibrados de tal

    modo que para todos los nodos, la altura de la ramaizquierda no difiere en mas de una unidad de laaltura de la rama derecha. Gracias a esta forma deequilibrio (o balanceo), la complejidad de unabsqueda en uno de estos arboles se mantienesiempre en orden de complejidad O(log2 n).

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    29

  • Ordenes de complejidad

    O(f(n)) N=100 N=200 En un t=2h (N=?)

    log n 1 h 1.15 h 10000

    n 1 h 2 h 200

    n log n 1 h 2.30 h 199

    n2 1 h 4 h 141

    n3 1 h 8 h 126

    2n 1 h 1030 h 101

    Ejemplo: 1 h de cmputo para un problema detamao N=100.

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    30

  • Ejercicios de insercin1. Inserte las claves 10 47 38 06 55 90 49 50 51 58

    en el rbol balanceado que se da a continuacin.

    Ejercicios de rboles AVL (Edgardo A. Franco)

    62

    80

    22

    35-1-1

    00

    00

    -1-1

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    31

  • Ejercicios de eliminacin2. Elimine las siguientes claves del rbol balanceado siguiente:

    73 66 50 47 39 94

    39

    66

    9 37

    -1-1

    0044 85

    22 50 73 90

    88 9447

    -1-1

    -1-111

    11

    11

    00

    00 000000

    00

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    32

  • Liga Web Simulacin del funcionamiento de un

    rbol AVL

    http://www.cs.jhu.edu/~goodrich/dsa/trees/avltree.html

    Estr

    uct

    ura

    s d

    e d

    ato

    s3

    2

    rbo

    l bal

    ance

    ado

    AV

    LP

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    33