¿Cuál es el estado actual de la investigación en los árboles de búsqueda binarios concurrentes?

El documento PODC 2010 compartido por Dan Fox es, de hecho, la primera implementación sin bloqueo de los árboles de búsqueda binarios. Desde entonces ha habido mucho interés en esto.
Hay muchas formas de clasificar estas obras. Algunos son:

  • 1. Garantía de progreso: basada en bloqueo (bloqueo) y sin bloqueo / sin espera (sin bloqueo)
  • 2. Equilibrado (AVL / árbol rojo-negro) y desequilibrado

Árboles equilibrados

  • Tsay y Li desarrollaron un marco en el que bloqueas una ventana de nodos. ver estructuras de árbol concurrentes sin bloqueo para sistemas multiprocesador
  • Árbol AVL relajado (PPoPP’10)
  • Árboles negros rojos rojos sin espera concurrentes (SSS’13)

Árboles desequilibrados
Las investigaciones recientes se centran más en la versión desequilibrada.
Según cómo se almacenan las claves, tenemos dos variantes de BST:

  1. Árbol externo: solo las hojas almacenan las claves
  2. Árbol interno: árbol de búsqueda binaria tradicional

Los árboles externos son relativamente más fáciles de desarrollar que los internos, ya que no existe una operación de eliminación compleja en la que un nodo interno sea reemplazado por su predecesor / sucesor.

Árboles externos sin bloqueo:
Árboles de búsqueda binaria sin bloqueo (PODC’10)
Árboles de búsqueda binaria rápidos sin bloqueo simultáneos (PPoPP’14)
Árboles internos sin bloqueo:
Un árbol de búsqueda binario interno sin bloqueo (SPAA’12)
Un árbol de búsqueda binaria interna sin bloqueo rápido (ICDCN’15)

Bloqueo de árboles internos:
CITRUS – Actualizaciones concurrentes con RCU (PODC’14)
Árboles de búsqueda binarios concurrentes prácticos mediante ordenamiento lógico (PPoPP’14)
CASTILLO: árbol de búsqueda binario interno rápido y concurrente utilizando bloqueo basado en bordes (PPoPP’15)

Para entender esto, sugeriría leer el primer documento (PODC’10) y luego saltar a leer Castle (PPoPP’15) ya que es el más simple de esta lista.
Para la implementación, creo que Castle (posiblemente el más rápido en términos de rendimiento) es el más fácil de implementar, seguido de Citrus (PODC’14).
Los dos árboles internos sin bloqueo son terriblemente difíciles de implementar.

PD: Toma mis reclamos sobre Castle con una pizca de sal, ya que soy coautor

Probablemente existen BST correctos. Este documento de 2010, Árboles de búsqueda binaria sin bloqueo, describe un conjunto sin bloqueo implementado utilizando solo primitivas de comparación e intercambio atómico.

La implementación no es trivial (fue parte de nuestro examen de 4to año) pero se ha demostrado que es correcta.

No se reequilibra a sí mismo, pero se comporta excelentemente bajo una alta contención (ya que cada hilo toca a lo sumo 3 nodos).

More Interesting

¿Qué pasa si Google toma el trabajo de investigación que estoy haciendo? ¿Qué tengo que hacer?

¿A qué conferencias / talleres de informática vale la pena asistir y tomar conocimiento?

¿Cuáles son los problemas más importantes en la visión por computadora?

Voy a ir a la universidad pronto y tengo muchas ganas de hacer una investigación de pregrado de CS, pero todos los trabajos de investigación que he intentado leer están muy por encima de mi cabeza. ¿Esto es normal?

¿Cuáles son algunos posibles temas de investigación en Computational Social Choice?

¿Cuáles son las áreas fascinantes de la informática? ¿Cuáles son algunas de las áreas más avanzadas técnicamente de la informática?

¿Cuál es el mejor lenguaje de programación para usar al escribir un compilador, por ejemplo, ML, Lisp, Java, C ++, Python, etc.

¿Qué han estado haciendo los millones de informáticos e ingenieros durante el período de 1996 a 2015? ¿Qué han logrado?

¿Cuál es el estado actual del arte en visión biomimética por computadora?

¿Cómo puedo obtener una beca para presentar mi trabajo en una conferencia internacional de renombre?

¿Cuánta potencia informática se necesitaría para simular un mundo virtual que no se puede distinguir del mundo real?

¿Cuáles son los límites en la complejidad computacional de algunos de los problemas más importantes?

¿Por qué la biología se está volviendo cada vez más relevante en TI?

¿Qué consejo me das, si realmente quiero comenzar a programar?

¿Cuáles son los temas en informática?