Chúng tôi có một tập hợp, , danh sách các phần tử từ tập N = { 1 , 2 , 3 , . . . , n } . Mỗi phần tử từ N xuất hiện trong một danh sách duy nhất trong . Tôi đang tìm kiếm một cấu trúc dữ liệu có thể thực hiện các cập nhật sau:
: nối danh sách chứa vào cuối danh sách chứax
: chia danh sách chứa trực tiếp saux
Nó cũng cần thực hiện các truy vấn sau:
: trả về nếu và nằm trong cùng một danh sách và xuất hiện sau (nhưng không nhất thiết phải liền kề với )x y y x x
: trả về phần tử đầu tiên của danh sách chứa
: trả về phần tử tiếp theo sau trong danh sách chứax
Tôi đã đưa ra một cấu trúc dữ liệu thực hiện các cập nhật này trong thời gian và truy vấn trong thời gian . Tôi chủ yếu quan tâm đến việc có hay không một cấu trúc dữ liệu có thể làm điều này (hy vọng nhanh hơn?).O ( l g ( n ) )
Động lực: các khu rừng có hướng gốc có thể được biểu diễn bằng hai trong số các bộ danh sách này và chúng cho phép tính toán nhanh khả năng tiếp cận trong các khu rừng đó. Tôi muốn xem những gì khác họ có thể được sử dụng cho và nếu tất cả điều này đã được biết đến.