Articulo de referencia

Problema del predecesor

En informática , el problema del predecesor implica mantener un conjunto de elementos para, dado un elemento, consultar eficientemente qué elemento precede o sucede a ese elemen...

En informática , el problema del predecesor implica mantener un conjunto de elementos para, dado un elemento, consultar eficientemente qué elemento precede o sucede a ese elemento en un orden determinado. Las estructuras de datos utilizadas para resolver el problema incluyen árboles de búsqueda binaria balanceados , árboles de van Emde Boas y árboles de fusión . En el problema del predecesor estático , el conjunto de elementos no cambia, pero en el problema del predecesor dinámico , se permiten inserciones y eliminaciones del conjunto. [ 1 ]

El problema del predecesor es un caso simple del problema del vecino más cercano , y las estructuras de datos que lo resuelven tienen aplicaciones en problemas como la ordenación de enteros .

Definición

El problema consiste en mantener un conjunto S , que contiene un subconjunto de U enteros. Cada uno de estos enteros se puede almacenar con un tamaño de palabra w , lo que implica queU2w{\displaystyle U\leq 2^{w}}. Las estructuras de datos que resuelven el problema admiten estas operaciones: [ 2 ]

  • predecessor(x), que devuelve el elemento más grande en S estrictamente menor que x
  • successor(x), que devuelve el elemento más pequeño en S estrictamente mayor que x

Además, las estructuras de datos que resuelven la versión dinámica del problema también admiten estas operaciones:

  • insert(x), lo que añade x al conjunto S
  • delete(x), lo que elimina x del conjunto S

El problema se analiza típicamente en un modelo de computación transdicotómico como la memoria RAM de palabras .

Estructuras de datos

Un árbol binario con 4 niveles. Los nodos en cada nivel son: 3: (), 2: (0) y (1), 1: (00) y (10), 0: (001), (100) y (101). El nodo sin etiquetar es la raíz. Hay aristas dirigidas entre los siguientes nodos: ()->(0), ()->(1), (0)->(00), (0)->(001) en azul, (1)->(10), (1)->(101) en azul, (00)->(001) dos veces, una vez en azul, (10)->(100), (10)->(101), (001)<->(100), (100)<->(101). Los nodos en cada nivel están contenidos en un recuadro, etiquetado con LSS(<nivel>).
Un trie x-rápido que contiene los enteros 1 (001 2 ), 4 (100 2 ) y 5 (101 2 ), que se puede utilizar para resolver eficientemente el problema del predecesor.

Una solución sencilla a este problema es utilizar un árbol de búsqueda binaria balanceado , que logra (en notación Big O ) un tiempo de ejecución deO(registronorte){\displaystyle O(\log n)}para consultas predecesoras. El árbol de Van Emde Boas logra un tiempo de consulta deO(registroregistroU){\displaystyle O(\log \log U)}pero requiereO(U){\displaystyle O(U)}espacio . [ 1 ] Dan Willard propuso una mejora en este uso del espacio con el trie x-rápido , que requiereO(norteregistroU){\displaystyle O(n\log U)}espacio y el mismo tiempo de consulta, y el trie y-fast más complicado , que solo requiereO(norte){\displaystyle O(n)}espacio. [ 3 ] Los árboles de fusión , introducidos por Michael Fredman y Willard, logranO(registrownorte){\displaystyle O(\log _{w}n)}tiempo de consulta yO(norte){\displaystyle O(n)}para consultas de predecesores para el problema estático. [ 4 ] El problema dinámico se ha resuelto utilizando árboles exponenciales conO(registrownorte+registroregistronorte){\displaystyle O(\log _{w}n+\log \log n)}tiempo de consulta, [ 5 ] y con tiempo esperadoO(registrownorte){\displaystyle O(\log _{w}n)}utilizando funciones hash . [ 6 ]

Propiedades matemáticas

Se han publicado varios artículos que demuestran cotas inferiores para el problema del predecesor, o que identifican cuál sería el tiempo de ejecución de las soluciones asintóticamente óptimas . Por ejemplo, Michael Beame y Faith Ellen demostraron que para todos los valores de w , existe un valor de n con tiempo de consulta (en notación Big Theta ).Ω(registrowregistroregistrow){\displaystyle \Omega \left({\tfrac {\log w}{\log \log w}}\right)}y de manera similar, para todos los valores de n , existe un valor de n tal que el tiempo de consulta esΩ(registronorteregistroregistronorte){\displaystyle \Omega \left({\sqrt {\tfrac {\log n}{\log \log n}}}\right)}. [ 1 ] Otras pruebas de cotas inferiores incluyen la noción de complejidad de la comunicación .

Para el problema del predecesor estático, Mihai Pătrașcu y Mikkel Thorup mostraron la siguiente cota inferior para el tiempo de búsqueda óptimo, en el modelo de sonda celular : [ 7 ]O(1)min{registrownortelglgnortealgalg(algnortelga)lgalg(lga/lglgnortea){\displaystyle O(1)\min \left\{{\begin{array}{l}\log _{w}n\\\lg {\frac {\ell -\lg n}{a}}\\{\frac {\lg {\frac {\ell }{a}}}{\lg \left({\frac {a}{\lg n}}\,\cdot \,\lg {\frac {\ell }{a}}\right)}}\\{\frac {\lg {\frac {\ell }{a}}}{\lg \left(\lg {\frac {\ell }{a}}\right/\left.\lg {\frac {\lg n}{a}}\right)}}\end{array}}\right.} donde la RAM tiene longitud de palabraw{\displaystyle w}, el conjunto contienenorte{\displaystyle n}enteros de{\displaystyle \ell }bits cada uno y se representa en la RAM usandoS{\displaystyle S}palabras de espacio y definicióna=lgSnorte+lgw{\displaystyle a=\lg {\frac {S}{n}}+\lg w}.

En el caso dondew==γlgnorte{\displaystyle w=\ell =\gamma \lg n}paraγ>1{\displaystyle \gamma >1}yS=nortelgO(1)norte{\displaystyle S=n\cdot \lg ^{O(1)}n}, el tiempo de búsqueda óptimo es Θ(lg){\displaystyle \Theta (\lg \ell )}y el árbol de van Emde Boas alcanza este límite. [ 7 ]

Véase también

Referencias

  1. 1 2 3 Beame, Paul; Fich, Faith (agosto de 2002). "Límites óptimos para el problema del predecesor y problemas relacionados" . Journal of Computer and System Sciences . 65 (1): 38– 72. doi : 10.1006/jcss.2002.1822 . S2CID 1991980 . 
  2. Rahman, Naila; Cole, Richard; Raman, Rajeev (17 de agosto de 2001). Estructuras de datos predecesoras optimizadas para memoria interna (PDF) . Taller internacional sobre ingeniería de algoritmos. págs. 67–78 . 
  3. Willard, Dan (24 de agosto de 1983). "Las consultas de rango log-logarítmicas en el peor de los casos son posibles en el espacio Θ(n)". Information Processing Letters . 17 (2): 81– 84. doi : 10.1016/0020-0190(83)90075-3 .
  4. Fredman, Michael ; Willard, Dan (1990). "Rompiendo la barrera de la teoría de la información con árboles de fusión". Simposio sobre Teoría de la Computación : 1–7 .
  5. Andersson, Arne; Thorup, Mikkel (2007), "Conjuntos ordenados dinámicos con árboles de búsqueda exponenciales", Journal of the ACM , 54 (3): A13, arXiv : cs/0210006 , doi : 10.1145/1236457.1236460 , MR 2314255 , S2CID 8175703  .
  6. Raman, Rajeev (1996), "Colas de prioridad: pequeñas, monótonas y transdicotómicas", Cuarto Simposio Europeo Anual sobre Algoritmos (ESA '96), Barcelona, ​​España, 25-27 de septiembre de 1996 , Lecture Notes in Computer Science, vol. 1136, Berlín: Springer-Verlag, pp. 121-137 , doi : 10.1007/3-540-61680-2_51 , ISBN   978-3-540-61680-1, MR 1469229 .
  7. 1 2 Pătraşcu, Mihai; Thorup, Mikkel (21 de mayo de 2006). «Compromisos espacio-temporales para la búsqueda de predecesores». Actas del trigésimo octavo simposio anual de la ACM sobre Teoría de la Computación . págs. 232–240 . arXiv : cs/0603043 . doi : 10.1145/1132516.1132551 . ISBN  1595931341. S2CID 1232 .