fbpx
Wikipedia

Rotación de árboles

En matemáticas discretas, Rotación de árboles es una operación en un árbol binario que cambia la estructura sin interferir con el orden de los elementos. Un árbol de rotación se mueve hasta un nodo en el árbol y un nodo hacia abajo. Se utiliza para cambiar la forma del árbol, y en particular para disminuir su altura moviendo subárboles más pequeños hacia abajo y subárboles más grande, lo que resulta en un mejor rendimiento de muchas operaciones de los árboles.

Generic tree rotations.

Existe una inconsistencia en diferentes descripciones en cuanto a la definición de la dirección de las rotaciones. Algunos dicen que la dirección de la rotación depende del lado que los nodos del árbol se desplazan al mismo tiempo que otros dicen que depende de qué nodo toma el lugar de la raíz (enfrente de la primera). En este artículo se adopta el enfoque del lado a donde los nodos quedan cambiados.

Ilustración

 
 

La operación de rotación a la derecha, como se muestra en la imagen de la derecha se realiza con Q como la raíz y por lo tanto es un giro a la derecha en, o enraizado en, resultados Q. Esta operación en una rotación del árbol en el sentido horario. La operación inversa es la rotación a la izquierda, lo que resulta en un movimiento en sentido contrario a las agujas del reloj (la rotación izquierda se muestra más arriba tiene sus raíces en P). La clave para entender cómo funciona una rotación es entender sus limitaciones. En particular, el orden de las hojas del árbol (cuando se lee de izquierda a derecha, por ejemplo) no se puede cambiar (otra forma de pensar de él es que el orden en que las hojas se pueden visitar en un recorrido en el orden debe ser el mismo después de la operación como antes). Otra limitación es la característica principal de un árbol de búsqueda binaria, es decir, que el hijo derecho es mayor que el padre y el niño queda es menor que la de los padres. Observe que el hijo derecho de un hijo izquierdo de la raíz de un sub-árbol (por ejemplo nodo B en el diagrama de árbol con raíz en Q) puede convertirse en el hijo izquierdo de la raíz, que en sí mismo se convierte en el hijo derecho de la "nueva "root en el sub-árbol girado, sin violar ninguna de esas limitaciones. Como se puede ver en el diagrama, el orden de las hojas no cambia. La operación opuesta también conserva el orden y es el segundo tipo de rotación.

Asumiendo que esto es un árbol de búsqueda binaria, como se ha dicho, los elementos deben ser interpretados como variables que se pueden comparar entre sí. Los caracteres alfabéticos de la izquierda se utilizan como marcadores de posición para estas variables. En la animación a la derecha, los caracteres alfabéticos de capital se utilizan como marcadores de posición variables, mientras que las letras griegas minúsculas son marcadores de posición para todo un conjunto de variables. Los círculos representan los nodos individuales y los triángulos representan subárboles. Cada subárbol podría estar vacío, consistir en un único nodo, o consistir en cualquier número de nodos.

Ilustración detallada

 
Pictorial description of how rotations are made.

Cuando se hace girar un subárbol, el lado subárbol sobre la cual se hace girar aumenta su altura por un nodo mientras que el otro subárbol disminuye su altura. Esto hace que las rotaciones de árboles útiles para el reequilibrio de un árbol.

Utilizando la terminología de raíz para el nodo padre de los subárboles para girar, Pivot para el nodo que se convertirá en el nuevo nodo padre, RS lado rotación a girar y OS para el lado opuesto de la rotación. En el diagrama anterior para la raíz Q, el RS es C y el sistema operativo es P. El pseudo código para la rotación es:

Pivote = Root.OS Root.OS = Pivot.RS Pivot.RS = Raíz Root = Pivot

Esta es una operación constante de tiempo.

El programador también debe asegurarse de que los puntos de matrices de la raíz al pivote después de la rotación. Además, el programador debe tener en cuenta que esta operación puede dar lugar a una nueva raíz para todo el árbol y tener cuidado para actualizar los punteros en consecuencia.

Invarianza en orden

La rotación del árbol hace que el recorrido en orden de la invariante árbol binario. Esto implica el orden de los elementos no se ve afectada cuando se realiza una rotación en cualquier parte del árbol. Aquí están los recorridos finde de los árboles que se muestran arriba:

Left tree: ((A, P, B), Q, C) Right tree: (A, P, (B, Q, C)) 

Computar uno a partir del otro es muy simple. Lo siguiente es ejemplo de código Python que realiza ese cálculo:

def right_rotation(treenode): left, Q, C = treenode A, P, B = left return (A, P, (B, Q, C)) 

Otra forma de verlo es:

Giro a derechas del nodo Q:

Let P be Q's left child. Set Q's left child to be P's right child. Set P's right child to be Q. 

Rotación izquierda del nodo P:

Let Q be P's right child. Set P's right child to be Q's left child. Set Q's left child to be P. 

Todas las demás conexiones se dejan tal cual.

También hay rotaciones dobles, que son combinaciones de rotaciones de izquierda y derecha. Un doble rotación a la izquierda en X puede ser definido como una rotación a la derecha en el hijo derecho de X seguida de una rotación a la izquierda en X; Del mismo modo, una doble rotación a la derecha en X puede ser definido como una rotación a la izquierda en el hijo izquierdo de X seguida de una rotación a la derecha en X.

Rotaciones de reequilibrio

 
Pictorial description of how rotations cause rebalancing in an AVL tree.

Un árbol puede reequilibrarse mediante rotaciones. Después de una rotación, el lado de la rotación aumenta su altura por 1, mientras que el lado opuesto a la rotación disminuye su altura de manera similar. Por lo tanto, se puede aplicar estratégicamente rotaciones para nodos cuyos izquierda infantil y derecho difieren en altura por más de 1. auto-equilibrio árboles binarios de búsqueda aplicar esta operación automáticamente. Un tipo de árbol que utiliza esta técnica reequilibrio es el árbol AVL.

Distancia de rotación

La distancia de rotación entre dos árboles binarios con el mismo número de nodos es el número mínimo de rotaciones necesarias para transformar una en la otra. Con esta distancia, el conjunto de los árboles binarios de n-nodo se convierte en un espacio métrico: la distancia es simétrica y positiva cuando se les da dos árboles diferentes, y satisface la desigualdad triangular.

Es un problema abierto si existe un algoritmo de tiempo polinómico para el cálculo de la distancia de rotación.

Daniel Sleator, Robert Tarjan y William Thurston mostraron que la distancia de rotación entre dos árboles n-nodo (para n = 11) es a lo sumo 2n - 6, y que un número infinito de pares de árboles son tan separados. [1]

Véase

  •   Portal:Ciencias de la Computación. Contenido relacionado con Ciencias de la Computación.
  • árbol AVL, árbol rojo-negro, y árbol ensanchamiento, tipos de estructuras de datos árbol binario de búsqueda que utilizan rotaciones para mantener el equilibrio.
  • Asociatividad de una operación binaria significa que la realización de una rotación de árbol en él no cambia el resultado final.
  • El algoritmo Day-Stout-Warren equilibra un BST desequilibrada.
  • Látice de Tamari, un conjunto parcialmente ordenado en el que los elementos pueden ser definidos como árboles binarios y el orden entre los elementos se definen por la rotación del árbol.

Referencias

  1. Sleator, Daniel D.; Tarjan, Robert E.; Thurston, William P. (1988), «Rotation distance, triangulations, and hyperbolic geometry», Journal of the American Mathematical Society (American Mathematical Society) 1 (3): 647-681, JSTOR 1990951, MR 928904, doi:10.2307/1990951 ..

Enlaces externos

  • Java applets demonstrating tree rotations
  • The AVL Tree Rotations Tutorial (RTF) by John Hargrove
  •   Datos: Q541347

rotación, árboles, matemáticas, discretas, operación, árbol, binario, cambia, estructura, interferir, orden, elementos, árbol, rotación, mueve, hasta, nodo, árbol, nodo, hacia, abajo, utiliza, para, cambiar, forma, árbol, particular, para, disminuir, altura, m. En matematicas discretas Rotacion de arboles es una operacion en un arbol binario que cambia la estructura sin interferir con el orden de los elementos Un arbol de rotacion se mueve hasta un nodo en el arbol y un nodo hacia abajo Se utiliza para cambiar la forma del arbol y en particular para disminuir su altura moviendo subarboles mas pequenos hacia abajo y subarboles mas grande lo que resulta en un mejor rendimiento de muchas operaciones de los arboles Generic tree rotations Existe una inconsistencia en diferentes descripciones en cuanto a la definicion de la direccion de las rotaciones Algunos dicen que la direccion de la rotacion depende del lado que los nodos del arbol se desplazan al mismo tiempo que otros dicen que depende de que nodo toma el lugar de la raiz enfrente de la primera En este articulo se adopta el enfoque del lado a donde los nodos quedan cambiados Indice 1 Ilustracion 2 Ilustracion detallada 3 Invarianza en orden 4 Rotaciones de reequilibrio 5 Distancia de rotacion 6 Vease 7 Referencias 8 Enlaces externosIlustracion Editar La operacion de rotacion a la derecha como se muestra en la imagen de la derecha se realiza con Q como la raiz y por lo tanto es un giro a la derecha en o enraizado en resultados Q Esta operacion en una rotacion del arbol en el sentido horario La operacion inversa es la rotacion a la izquierda lo que resulta en un movimiento en sentido contrario a las agujas del reloj la rotacion izquierda se muestra mas arriba tiene sus raices en P La clave para entender como funciona una rotacion es entender sus limitaciones En particular el orden de las hojas del arbol cuando se lee de izquierda a derecha por ejemplo no se puede cambiar otra forma de pensar de el es que el orden en que las hojas se pueden visitar en un recorrido en el orden debe ser el mismo despues de la operacion como antes Otra limitacion es la caracteristica principal de un arbol de busqueda binaria es decir que el hijo derecho es mayor que el padre y el nino queda es menor que la de los padres Observe que el hijo derecho de un hijo izquierdo de la raiz de un sub arbol por ejemplo nodo B en el diagrama de arbol con raiz en Q puede convertirse en el hijo izquierdo de la raiz que en si mismo se convierte en el hijo derecho de la nueva root en el sub arbol girado sin violar ninguna de esas limitaciones Como se puede ver en el diagrama el orden de las hojas no cambia La operacion opuesta tambien conserva el orden y es el segundo tipo de rotacion Asumiendo que esto es un arbol de busqueda binaria como se ha dicho los elementos deben ser interpretados como variables que se pueden comparar entre si Los caracteres alfabeticos de la izquierda se utilizan como marcadores de posicion para estas variables En la animacion a la derecha los caracteres alfabeticos de capital se utilizan como marcadores de posicion variables mientras que las letras griegas minusculas son marcadores de posicion para todo un conjunto de variables Los circulos representan los nodos individuales y los triangulos representan subarboles Cada subarbol podria estar vacio consistir en un unico nodo o consistir en cualquier numero de nodos Ilustracion detallada Editar Pictorial description of how rotations are made Cuando se hace girar un subarbol el lado subarbol sobre la cual se hace girar aumenta su altura por un nodo mientras que el otro subarbol disminuye su altura Esto hace que las rotaciones de arboles utiles para el reequilibrio de un arbol Utilizando la terminologia de raiz para el nodo padre de los subarboles para girar Pivot para el nodo que se convertira en el nuevo nodo padre RS lado rotacion a girar y OS para el lado opuesto de la rotacion En el diagrama anterior para la raiz Q el RS es C y el sistema operativo es P El pseudo codigo para la rotacion es Pivote Root OS Root OS Pivot RS Pivot RS Raiz Root PivotEsta es una operacion constante de tiempo El programador tambien debe asegurarse de que los puntos de matrices de la raiz al pivote despues de la rotacion Ademas el programador debe tener en cuenta que esta operacion puede dar lugar a una nueva raiz para todo el arbol y tener cuidado para actualizar los punteros en consecuencia Invarianza en orden EditarLa rotacion del arbol hace que el recorrido en orden de la invariante arbol binario Esto implica el orden de los elementos no se ve afectada cuando se realiza una rotacion en cualquier parte del arbol Aqui estan los recorridos finde de los arboles que se muestran arriba Left tree A P B Q C Right tree A P B Q C Computar uno a partir del otro es muy simple Lo siguiente es ejemplo de codigo Python que realiza ese calculo def right rotation treenode left Q C treenode A P B left return A P B Q C Otra forma de verlo es Giro a derechas del nodo Q Let P be Q s left child Set Q s left child to be P s right child Set P s right child to be Q Rotacion izquierda del nodo P Let Q be P s right child Set P s right child to be Q s left child Set Q s left child to be P Todas las demas conexiones se dejan tal cual Tambien hay rotaciones dobles que son combinaciones de rotaciones de izquierda y derecha Un doble rotacion a la izquierda en X puede ser definido como una rotacion a la derecha en el hijo derecho de X seguida de una rotacion a la izquierda en X Del mismo modo una doble rotacion a la derecha en X puede ser definido como una rotacion a la izquierda en el hijo izquierdo de X seguida de una rotacion a la derecha en X Rotaciones de reequilibrio Editar Pictorial description of how rotations cause rebalancing in an AVL tree Un arbol puede reequilibrarse mediante rotaciones Despues de una rotacion el lado de la rotacion aumenta su altura por 1 mientras que el lado opuesto a la rotacion disminuye su altura de manera similar Por lo tanto se puede aplicar estrategicamente rotaciones para nodos cuyos izquierda infantil y derecho difieren en altura por mas de 1 auto equilibrio arboles binarios de busqueda aplicar esta operacion automaticamente Un tipo de arbol que utiliza esta tecnica reequilibrio es el arbol AVL Distancia de rotacion EditarLa distancia de rotacion entre dos arboles binarios con el mismo numero de nodos es el numero minimo de rotaciones necesarias para transformar una en la otra Con esta distancia el conjunto de los arboles binarios de n nodo se convierte en un espacio metrico la distancia es simetrica y positiva cuando se les da dos arboles diferentes y satisface la desigualdad triangular Es un problema abierto si existe un algoritmo de tiempo polinomico para el calculo de la distancia de rotacion Daniel Sleator Robert Tarjan y William Thurston mostraron que la distancia de rotacion entre dos arboles n nodo para n 11 es a lo sumo 2n 6 y que un numero infinito de pares de arboles son tan separados 1 Vease Editar Portal Ciencias de la Computacion Contenido relacionado con Ciencias de la Computacion arbol AVL arbol rojo negro y arbol ensanchamiento tipos de estructuras de datos arbol binario de busqueda que utilizan rotaciones para mantener el equilibrio Asociatividad de una operacion binaria significa que la realizacion de una rotacion de arbol en el no cambia el resultado final El algoritmo Day Stout Warren equilibra un BST desequilibrada Latice de Tamari un conjunto parcialmente ordenado en el que los elementos pueden ser definidos como arboles binarios y el orden entre los elementos se definen por la rotacion del arbol Referencias Editar Sleator Daniel D Tarjan Robert E Thurston William P 1988 Rotation distance triangulations and hyperbolic geometry Journal of the American Mathematical Society American Mathematical Society 1 3 647 681 JSTOR 1990951 MR 928904 doi 10 2307 1990951 Enlaces externos EditarJava applets demonstrating tree rotations The AVL Tree Rotations Tutorial RTF by John Hargrove Datos Q541347 Obtenido de https es wikipedia org w index php title Rotacion de arboles amp oldid 126155768, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos