เราทุกคนรู้ว่าแตกต่างองค์ประกอบในรูปแบบการเปรียบเทียบตามไม่สามารถทำได้ในเวลา อย่างไรก็ตามสำหรับ word-RAM เราสามารถทำได้ดีกว่า
แน่นอนถ้าเราสมมติว่ามีฟังก์ชันแฮชที่สมบูรณ์แบบที่สามารถคำนวณได้ในเวลาเชิงเส้นเราจะได้อัลกอริธึมเชิงเส้นเวลาสำหรับความแตกต่างขององค์ประกอบ: เพียงแค่ hashing หมายเลขหนึ่งต่อหนึ่งและส่งคืน 1 หากมีการชนกัน
อย่างไรก็ตามมีสองประเด็น: 1) สิ่งก่อสร้างส่วนใหญ่ของฟังก์ชั่นแฮชที่สมบูรณ์แบบที่ฉันสามารถหาแบบสุ่มที่ใช้แล้วและ 2) ฉันไม่สามารถหาเวลาสนทนาล่วงหน้าได้ทุกที่นั่นคือเวลาที่ต้องตัดสินใจว่าจะใช้ฟังก์ชันแฮชแบบใด ที่จะใช้ขึ้นอยู่กับชุดของตัวเลข
Fredman et al. "การจัดตาราง sparse ด้วยเวลาเข้าถึงกรณีที่เลวร้ายที่สุด " จะแก้ไขปัญหาแรกได้โดยจัดให้มีฟังก์ชันแฮชที่มีเวลาเข้าถึงในกรณีที่แย่ที่สุด แต่ไม่ได้พูดเกี่ยวกับปัญหาที่สอง .
สรุปแล้วนี่คือสิ่งที่ฉันต้องการ:
ออกแบบอัลกอริทึมที่กำหนดชุดของตัวเลข (แต่ละหมายเลขมีความยาวบิต ) บน word-RAM ที่มีความยาวคำค้นหาฟังก์ชันแฮชในเวลาที่(n) ฟังก์ชันควรมีคุณสมบัติที่สำหรับ , จำนวนองค์ประกอบของที่แม็พกับนั้นเป็นค่าคงที่และการคำนวณควรใช้O (1)n w w h : S → { 1 , … , m } O ( n ) m = O ( n ) h j ∈ { 1 , … , m } S jO ( 1 )เวลาใน "เหมาะสม" รูปแบบคำ RAM, คือตัวแบบไม่ควรอนุญาตให้มีฟังก์ชั่น "ที่แปลกใหม่" ในคำที่จะได้รับการประเมินในเวลา
ฉันยังต้องการทราบว่ามีอัลกอริทึมในการแก้ไขความแตกต่างขององค์ประกอบใน word-RAM ที่ไม่ใช้ฟังก์ชันแฮชทั้งหมดหรือไม่