Nous avons un ensemble, , de listes d'éléments de l'ensemble . Chaque élément de apparaît dans une liste unique en . Je recherche une structure de données pouvant effectuer les mises à jour suivantes:N = { 1 , 2 , 3 , . . . , n }
: concatène la liste contenant à la fin de la liste contenant
: divise la liste contenant directement après
Il doit également effectuer les requêtes suivantes:
: retourne si et sont dans la même liste et vient après (mais n'est pas nécessairement adjacent à )
: retourne le premier élément de la liste contenant
: renvoie l'élément suivant après dans la liste contenant
J'ai déjà trouvé une structure de données qui effectue ces mises à jour en et les requêtes en O (lg (n)) . Je suis surtout intéressé à savoir s'il existe déjà une structure de données qui peut le faire (je l'espère plus rapide?)
Motivation: les forêts dirigées enracinées peuvent être représentées avec deux de ces ensembles de listes et elles permettent un calcul rapide de l'accessibilité dans ces forêts. Je veux voir à quoi d'autre ils peuvent servir et si tout cela est déjà connu.