Có tương đương với cây van Emde Boas cho dây thừng không?


23

Một người mà tôi biết đang có kế hoạch triển khai trình soạn thảo văn bản trong tương lai gần, điều đó khiến tôi suy nghĩ về loại cấu trúc dữ liệu nào nhanh cho trình soạn thảo văn bản. Các cấu trúc được sử dụng nhiều nhất rõ ràng là dây thừng hoặc bộ đệm khoảng cách .

Cây Van Emde Boas chỉ là hàng đợi ưu tiên nhanh nhất xung quanh, nếu bạn không quan tâm đến giới hạn trên về số lượng vật phẩm bạn có thể đặt vào đó và chi phí khởi tạo lớn. Câu hỏi của tôi là liệu có tồn tại một số cấu trúc dữ liệu nhanh như cây van Emde Boas hay không, nhưng hỗ trợ các hoạt động soạn thảo văn bản.

Chúng tôi chỉ cần hỗ trợ tối đa ký tự trong cấu trúc dữ liệu của mình (vì vậy nếu , thì chúng tôi hỗ trợ tối đa 4GB ký tự ASCII). Chúng tôi được phép thời gian để khởi tạo cấu trúc dữ liệu mới. Chúng tôi muốn hỗ trợ các hoạt động sau:mlogm=32m

  • Chèn một ký tự ở vị trí trong (và do đó tăng vị trí của mỗi ký tự tiếp theo thêm 1).iO(loglogm)
  • Xóa một ký tự ở vị trí trong .iO(loglogm)
  • Trả về ký tự ở vị trí trong .iO(loglogm)

Vì vậy, chèn (0, 'a') theo sau là chèn (0, 'b') dẫn đến "ba".

Thậm chí tốt hơn sẽ là thế này:

  • Trả về một 'con trỏ' cho một số chỉ mục trong .iO(loglogm)
  • Đưa ra một 'con trỏ', trả về ký tự ở vị trí này trong .O(1)
  • Đưa ra một 'con trỏ', xóa ký tự ở vị trí này trong .O(1)
  • Cho một 'con trỏ', thêm một ký tự ở vị trí này trong và trả về một con trỏ đến vị trí sau.O(1)
  • (tùy chọn) Đưa ra một 'con trỏ', trả về một 'con trỏ' cho ký tự tiếp theo / trước trong .O(1)

Câu trả lời:


14

Fredman và Saks thể hiện trong "Độ phức tạp của đầu dò tế bào của cấu trúc dữ liệu động" mà bạn không thể làm tốt hơn thời gian khấu hao cho các hoạt động bạn đang thực hiện tìm kiếm. Họ gọi vấn đề này là "danh sách đại diện".Θ(lgmlglgm)

Dietz đã trình bày một cấu trúc dữ liệu trong "Thuật toán tối ưu để lập chỉ mục danh sách và xếp hạng tập hợp con" đạt được ràng buộc này.


Bạn có thể cho một liên kết cho bài viết đầu tiên?
Raphael

Không có phiên bản miễn phí mà tôi biết.
jbapple
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.