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