Existe una estructura de datos persistente multimapa bidireccional?

n otras palabras, ¿podemos modelar de manera eficiente muchas relaciones en una estructura de datos persistente?

Se sugirió un par de multimapas unidireccionales. Sin embargo, no estoy seguro de cómo funcionaría esto para la eliminación en una estructura de datos persistente. Tomemos el caso donde tenemos las teclas 1..4 a los valores "1" .. "4" y digamos que cada uno se refiere a todos los demás, por lo que tenemos dos mapas que se parecen mucho para ambas direcciones:

{1 => ["2", "3", "4"], 2 => ["1", "3", "4"], ...} {"1" => [2,3 , 4], "2" => [1,3,4], ...}

Ahora queremos eliminar completamente el elemento 1 del sistema. Eso requiere cambiar un nodo en el primer mapa, pero requiere cambiar n-1 nodos en el segundo. Para n en los miles (que es probable en el caso para el que estoy considerando esto), ¿no sería eso bastante costoso? ¿O está optimizado un multimapa para manejar ese tipo de cambio? Es un caso patológico, pero aún así ...

Quadtrees parece una idea fascinante. Voy a pensarlo un poco más.

Respuestas a la pregunta(2)

Su respuesta a la pregunta