En ciencias de la computación , la estructura del conjunto de trabajo de Iacono [ 1 ] es un diccionario basado en comparaciones . Admite operaciones de inserción, eliminación y acceso para mantener un conjunto dinámico deelementos. El conjunto de trabajo de un elementoes el conjunto de elementos a los que se ha accedido en la estructura desde la última vez queSe accedió a él (o se insertó si nunca se había accedido). Insertar y eliminar en la estructura del conjunto de trabajo llevatiempo mientras se accede a un elementoacepta. Aquí,representa el tamaño del conjunto de trabajo de.
Estructura

Para almacenar un conjunto dinámico deelementos, esta estructura consiste en una serie de árboles rojo-negro u otros árboles de búsqueda binaria autoequilibradosy una serie de deques (colas de doble extremo), dónde. Por cada, árboly dequecomparten el mismo contenido y se mantienen punteros entre sus elementos correspondientes. Para cada, el tamaño deyes. Árboly dequeconsta de los elementos restantes, es decir, su tamaño esPor lo tanto, el número de elementos en todos los árboles y el número de elementos en todas las deques suman ambosCada elemento que se ha insertado en la estructura de datos se almacena en exactamente uno de los árboles y su correspondiente deque.
Invariante del conjunto de trabajo
En las deques de esta estructura, los elementos se mantienen ordenados según el tamaño de su conjunto de trabajo . Formalmente, el elementomentiras despuésen dequesi y solo si. Además, por cada, los elementos en dequetienen conjuntos de trabajo más pequeños que los elementos en dequeEsta propiedad se conoce como invariante del conjunto de trabajo. Cada operación en la estructura de datos mantiene la invariante del conjunto de trabajo.
Operaciones
La operación básica en esta estructura se llama desplazamiento dea, dóndeyson índices de algunos árboles en la estructura. Se consideran dos casos en un cambio dea: Si, entonces para cada, tomados en orden ascendente, se extrae un elemento de la cola.y puesto en cola enEl elemento correspondiente se elimina dey se insertó enEl tiempo de ejecución de esta operación es. De forma análoga, si, entonces para cada, tomados en orden descendente, se extrae un elemento de la cola.y puesto en cola enEl elemento correspondiente se elimina dey se insertó enEl tiempo de ejecución de esta operación es. Independientemente del caso, después de una operación de turno, el tamaño dedisminuye en uno mientras que el tamaño deaumenta en uno. Dado que los elementos en las deques están ordenados con respecto a los tamaños de sus conjuntos de trabajo, una operación de desplazamiento mantiene el conjunto de trabajo invariante.
Buscar
Para buscar un elemento, buscaren, en orden creciente, hasta encontrar un árbolque contieneSi no se encuentra ningún árbol, la búsqueda no ha tenido éxito.Se encuentra, se elimina dey luego insertado en, es decir, se mueve al frente de la estructura. La búsqueda finaliza realizando un cambio desdeaque restaura el tamaño de cada árbol y cada cola doble a su tamaño anterior a la operación de búsqueda. El tiempo de ejecución de esta búsqueda essi la búsqueda fue exitosa, ode lo contrario. Por la propiedad Conjunto de trabajo, cada elemento en los árbolespertenece al conjunto de trabajo de. En particular, cada elemento enpertenece al conjunto de trabajo dey por lo tanto,Por lo tanto, el tiempo de ejecución de una búsqueda exitosa es.
Insertar
Insertar un elementoLa inserción en la estructura se realiza mediante la insercióneny poniéndolo en cola en. La inserción se completa realizando un cambio desdeaPara evitar desbordamientos, siantes del cambio, es decir, si el último árbol está lleno, entoncesse incrementa y un nuevo vacíoyse crea. El tiempo de ejecución de esta operación está dominado por el cambio deacuyo tiempo de ejecución es. Dado que el elemento, cuyo conjunto de trabajo es el más pequeño, se encola en, el invariante del conjunto de trabajo se conserva después del desplazamiento.
Borrar
Eliminar un elementose hace buscandoen cada árbol de la estructura, en orden ascendente, hasta encontrar un árbolque lo contiene (si no se encuentra ninguno, la eliminación no se realiza correctamente). Elementose elimina dey. Finalmente, un cambio deamantiene el tamaño deigual aEl tiempo de ejecución de esta operación es. La invariante del conjunto de trabajo se conserva ya que la eliminación de un elemento no cambia el orden del conjunto de trabajo de los elementos.
Discusión
Los árboles splay son árboles de búsqueda autoajustables introducidos por Sleator y Tarjan [ 2 ] en 1985. Utilizando la heurística de reestructuración, los árboles splay pueden realizar operaciones de inserción y eliminación entiempo amortizado , sin almacenar ninguna información de saldo en los nodos. Además, el Teorema del Conjunto de Trabajo para árboles splay establece que el costo de acceder a un elemento en un árbol splay esAmortizado . La estructura del conjunto de trabajo de Iacono obtiene el mismo tiempo de ejecución para búsqueda, inserción y eliminación en el peor de los casos. Por lo tanto, ofrece una alternativa a los árboles splay.
Referencias
- ↑ Iacono, John (2001). "Alternativas a los árboles splay con tiempos de acceso en el peor de los casos de O(log n)" (PDF) . Actas del Duodécimo Simposio Anual ACM-SIAM sobre Algoritmos Discretos : 516–522 . Archivado del original (PDF) el 24 de febrero de 2015. Consultado el 24 de febrero de 2015 .
- ↑ Sleator, Daniel D.; Tarjan, Robert E. (1985), "Árboles de búsqueda binaria autoajustables" (PDF) , Journal of the ACM , 32 (3): 652– 686, doi : 10.1145/3828.3835
- Árboles (estructuras de datos)