У нас є набір, , списків елементів із множини . Кожен елемент з з'являється в одному списку в . Я шукаю структуру даних, яка може виконувати такі оновлення:
: об'єднує список, що містить на кінець списку, що містить
: розбиває список, що містить безпосередньо після
Він також повинен виконувати такі запити:
: повертає якщо і знаходяться в одному списку, а поступає після (але не обов'язково примикає до )
: повертає перший елемент списку, що містить
: повертає наступний елемент після у списку, що містить
Я вже придумав структуру даних, яка виконує ці оновлення за та запити в час. Мене найбільше цікавить, чи існує структура даних, яка може це зробити (чи сподіваємось швидше?).
Мотивація: укорінені ліси можуть бути представлені двома з цих списків, і вони дозволяють швидко розрахувати доступність таких лісів. Я хочу побачити, для чого ще вони можуть бути використані і чи все це вже відомо.