พิมพ์ลายนิ้วมือสำหรับชุดแบบไดนามิก


10

มีโครงสร้างข้อมูล word-RAM ของ W-bit ที่มีเวลา O (1) ต่อการดำเนินการสำหรับปัญหาต่อไปนี้หรือไม่: รักษาชุดของจำนวนเต็มที่ไม่ใช่ลบ W-bit ที่รองรับการดำเนินการ

  • เพิ่ม (x): เพิ่ม x ในชุด
  • ลบ (x): ลบ x จากชุด
  • ลายนิ้วมือ (): คืนลายนิ้วมือของชุด ลายนิ้วมือ w-bit นี้มีคุณสมบัติที่สองชุดที่เหมือนกันมีลายนิ้วมือเดียวกันในขณะที่สองชุดที่แตกต่างกันอาจมีลายนิ้วมือที่แตกต่างกัน

การดำเนินการทั้งหมดควรทำงานในเวลาคงที่

แผนการพิมพ์ลายนิ้วมือ Rabin-Karp โดยที่โดยที่ p เป็นการสุ่ม w-bit prime เกือบจะใช้งานได้ ปัญหาเกิดขึ้นกับเวลาอัปเดตเนื่องจากการคำนวณ2 x mod pใช้เวลามากกว่าเวลาคงที่ การใช้กำลังสองซ้ำนี้สามารถทำได้ในเวลา O (log w) อัลกอริทึมการยกกำลังแบบแยกส่วนที่เร็วที่สุดที่ฉันสามารถหาได้คือการดำเนินการทางคณิตศาสตร์ (log w) / (loglog w)

f(S)=(xS2x)modp
2xmodp

3
ฉันเห็นว่ามีคำถามที่คล้ายกันถูกโพสต์ที่นี่แล้วแต่ไม่มีการแก้ปัญหาเวลาคงที่
Pat Morin

คำตอบ:


1

คำตอบนี้เป็นคลื่นมือเล็กน้อย

h

  1. ชุดเปล่ามีลายนิ้วมือ 0
  2. ffh(x)

STSTST2w


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