Temos um conjunto, , de listas de elementos do conjunto . Cada elemento de aparece em uma lista única em . Estou procurando uma estrutura de dados que possa executar as seguintes atualizações:N = { 1 , 2 , 3 , . . . , n } N L
y x : concatena a lista que contém no final da lista que contém
x x : divide a lista que contém diretamente após
Ele também precisa executar as seguintes consultas:
t r u e x y y x x : retorna se e são o mesmo em relação e vem depois (mas não é necessariamente adjacente a )
: retorna o primeiro elemento da lista que contém
: retorna o próximo elemento após na lista que contémx
Eu já criei uma estrutura de dados que executa essas atualizações em e consultas em . Estou mais interessado em saber se já existe ou não uma estrutura de dados que pode fazer isso (espero mais rápido?).O ( l g ( n ) )
Motivação: as florestas direcionadas enraizadas podem ser representadas com dois desses conjuntos de listas e permitem o cálculo rápido da acessibilidade nessas florestas. Quero ver para que mais eles podem ser usados e se tudo isso já é conhecido.