Kami memiliki satu set, , dari daftar elemen dari set N = { 1 , 2 , 3 , . . . , n } . Setiap elemen dari N muncul dalam satu daftar di L . Saya mencari struktur data yang dapat melakukan pembaruan berikut:
: menyatukan daftar yang berisi y ke akhir daftar yang berisi x
: membagi daftar yang berisi x langsung setelah x
Itu juga perlu melakukan pertanyaan berikut:
: mengembalikan t r u e jika x dan y ada dalam daftar yang sama dan y datang setelah x (tetapi tidak selalu berbatasan dengan x )
: mengembalikan elemen pertama dari daftar yang berisi x
: mengembalikan elemen berikutnya setelah x dalam daftar yang berisi x
Saya sudah datang dengan struktur data yang melakukan update ini di dan pertanyaan di O ( l g ( n ) ) waktu. Saya sebagian besar tertarik pada apakah sudah ada struktur data yang dapat melakukan ini (mudah-mudahan lebih cepat?).
Motivasi: hutan terarah yang berakar dapat diwakili dengan dua set daftar ini dan memungkinkan perhitungan yang cepat dari jangkauan di hutan tersebut. Saya ingin melihat apa lagi yang dapat mereka gunakan dan jika semua ini sudah diketahui.
Masalah leluhur yang paling umum dapat digunakan untuk memecahkan masalah jangkauan pada pohon berakar dinamis, jadi saya bayangkan Anda juga akan tertarik pada yang berikut: Algoritma Optimal untuk Menemukan Leluhur Umum Terdekat di Pohon Dinamis , oleh Alstrup dan Thorup. Makalah ini memberikan batas waktu untuk n tautan dan m nca kueri pada mesin penunjuk.O(n+mloglogn) n m
sumber