มีเชือกของ Van Emde Boas ที่เทียบเท่ากับเชือกไหม?


23

บางคนที่ฉันรู้จักกำลังวางแผนที่จะใช้ตัวแก้ไขข้อความในอนาคตอันใกล้นี้ซึ่งทำให้ฉันคิดว่าโครงสร้างข้อมูลชนิดใดที่รวดเร็วสำหรับตัวแก้ไขข้อความ โครงสร้างที่ใช้มากที่สุดจะเห็นได้ชัดเชือกหรือบัฟเฟอร์ช่องว่าง

ต้น Van Emde Boasเป็นคิวลำดับความสำคัญที่เร็วที่สุดรอบ ๆ หากคุณไม่คำนึงถึงขอบเขตบนจำนวนรายการที่คุณสามารถใส่ลงไปและค่าใช้จ่ายในการเริ่มต้นจำนวนมาก คำถามของฉันคือว่ามีโครงสร้างข้อมูลบางส่วนที่เร็วเท่ากับทรี Emde Boas หรือไม่ แต่รองรับการทำงานของโปรแกรมแก้ไขข้อความ

เราต้องรองรับอักขระได้ไม่เกินในโครงสร้างข้อมูลของเรา (ดังนั้นหากเราจะสนับสนุนอักขระ ASCII ได้สูงสุด 4GB) เราได้รับอนุญาตเวลาในการเริ่มต้นโครงสร้างข้อมูลใหม่ เราต้องการสนับสนุนการดำเนินงานต่อไปนี้:mlogm=32m

  • แทรกอักขระที่ตำแหน่งใน (และเพิ่มตำแหน่งของอักขระที่ตามมาทุก ๆ 1)iO(loglogm)
  • ลบตัวอักษรที่ตำแหน่งในบันทึกเมตร)iO(loglogm)
  • กลับตัวอักษรที่ตำแหน่งในบันทึกเมตร)iO(loglogm)

ดังนั้นการแทรก (0, 'a') ตามด้วยการแทรก (0, 'b') ให้ผลลัพธ์เป็น "ba"

จะดีกว่านี้:

  • กลับมาเป็น 'ชี้' เพื่อดัชนีบางในบันทึกเมตร)iO(loglogm)
  • ได้รับ 'ชี้' กลับตัวอักษรที่ตำแหน่งนี้ใน(1)O(1)
  • ได้รับ 'ชี้' เอาตัวละครในตำแหน่งนี้ใน(1)O(1)
  • ได้รับ 'ตัวชี้' เพิ่มตัวละครที่ตำแหน่งนี้ในและส่งกลับตัวชี้ไปยังตำแหน่งต่อไปนี้O(1)
  • (อุปกรณ์เสริม) กำหนด 'ชี้' กลับ 'ชี้' ตัวอักษรถัดไป / ก่อนหน้านี้ใน(1)O(1)

คำตอบ:


14

Fredman และ Saks แสดงใน"ความซับซ้อนของโพรบเซลล์ของโครงสร้างข้อมูลแบบไดนามิก"ที่คุณไม่สามารถทำได้ดีกว่าตัดเวลาสำหรับการดำเนินการที่คุณเป็น กำลังมองหา. พวกเขาเรียกปัญหานี้ว่า "การแสดงรายการ"Θ(lgmlglgm)

ดิเอทซ์นำเสนอโครงสร้างข้อมูลใน"อัลกอริธึมที่เหมาะสมที่สุดสำหรับการจัดทำดัชนีรายชื่อและการจัดอันดับชุดย่อย"ซึ่งบรรลุข้อผูกพันนี้


คุณสามารถให้ลิงค์สำหรับบทความแรกได้หรือไม่
Raphael

ไม่มีรุ่นฟรีที่ฉันรู้
jbapple
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.