Abbiamo un insieme, , di elenchi di elementi dell'insieme . Ogni elemento da appare in un singolo elenco . Sto cercando una struttura di dati in grado di eseguire i seguenti aggiornamenti:N = { 1 , 2 , 3 , . . . , n } N L
: concatena l'elenco contenente alla fine dell'elenco contenentex
: divide l'elenco contenente direttamente dopox
Deve inoltre eseguire le seguenti query:
: restituisce se ed sono nella stessa lista e viene dopo (ma non è necessariamente adiacente )x y y x x
: restituisce il primo elemento dell'elenco contenente
: restituisce l'elemento successivo dopo nell'elenco contenentex
Ho già creato una struttura di dati che esegue questi aggiornamenti in e le query in . Sono principalmente interessato a sapere se esiste già una struttura di dati che può farlo (si spera più velocemente?).O ( l g ( n ) )
Motivazione: le foreste dirette radicate possono essere rappresentate con due di questi insiemi di elenchi e consentono un rapido calcolo della raggiungibilità in tali foreste. Voglio vedere per cos'altro possono essere utilizzati e se tutto questo è già noto.