Tenemos un conjunto, , de listas de elementos del conjunto . Cada elemento de aparece en una única lista en . Estoy buscando una estructura de datos que pueda realizar las siguientes actualizaciones:N = { 1 , 2 , 3 , . . . , n } N L
: concatena la lista que contiene al final de la lista que contienex
: divide la lista que contiene directamente después dex
También debe realizar las siguientes consultas:
: devuelve si e están en la misma lista e viene después de (pero no es necesariamente adyacente a )x y y x x
: devuelve el primer elemento de la lista que contiene
: devuelve el siguiente elemento después de en la lista que contienex
Ya se me ocurrió una estructura de datos que realiza estas actualizaciones en y consultas en tiempo . Estoy interesado principalmente en si ya existe una estructura de datos que pueda hacer esto (¿ojalá más rápido?).O ( l
Motivación: los bosques dirigidos enraizados pueden representarse con dos de estos conjuntos de listas y permiten un cálculo rápido de la accesibilidad en dichos bosques. Quiero ver para qué más se pueden usar y si todo esto ya se sabe.