Apakah ada yang setara dengan pohon van Emde Boas untuk tali?


23

Seseorang yang saya kenal berencana mengimplementasikan editor teks dalam waktu dekat, yang mendorong saya untuk berpikir tentang jenis struktur data apa yang cepat untuk editor teks. Struktur yang paling sering digunakan adalah tali atau penyangga celah .

Pohon Van Emde Boas hanya tentang antrian prioritas tercepat di sekitar, jika Anda tidak keberatan dengan batas atas jumlah item yang dapat Anda masukkan ke dalamnya dan biaya inisialisasi yang besar. Pertanyaan saya adalah apakah ada beberapa struktur data yang secepat pohon van Emde Boas, tetapi mendukung operasi editor teks.

Kami hanya perlu mendukung hingga karakter dalam struktur data kami (jadi jika , maka kami mendukung karakter ASCII hingga 4GB). Kami diizinkan waktu untuk menginisialisasi struktur data baru. Kami ingin mendukung operasi berikut:mlogm=32m

  • Masukkan karakter pada posisi di (dan dengan demikian meningkatkan posisi setiap karakter selanjutnya sebesar 1).iO(loglogm)
  • Hapus karakter pada posisi di .iO(loglogm)
  • Kembalikan karakter pada posisi di .iO(loglogm)

Jadi, masukkan (0, 'a') diikuti dengan memasukkan (0, 'b') menghasilkan "ba".

Yang lebih baik adalah ini:

  • Kembalikan 'penunjuk' ke beberapa indeks di .iO(loglogm)
  • Diberi 'penunjuk', kembalikan karakter pada posisi ini dalam .O(1)
  • Diberi 'penunjuk', hapus karakter di posisi ini di .O(1)
  • Diberi 'penunjuk', tambahkan karakter pada posisi ini di dan kembalikan penunjuk ke posisi berikut.O(1)
  • (opsional) Diberikan 'penunjuk', kembalikan 'penunjuk' ke karakter berikutnya / sebelumnya di .O(1)

Jawaban:


14

Fredman dan Saks menunjukkan dalam "Kompleksitas sel pemeriksaan struktur data dinamis" yang tidak dapat Anda lakukan lebih baik daripada waktu diamortisasi untuk operasi Anda mencari. Mereka menyebut masalah ini "representasi daftar".Θ(lgmlglgm)

Dietz menyajikan struktur data dalam "Algoritma Optimal untuk Pengindeksan Daftar dan Subset Peringkat" yang mencapai batas ini.


Bisakah Anda memberikan tautan untuk artikel pertama?
Raphael

Tidak ada versi gratis yang saya ketahui.
jbapple
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.