การนำฟังก์ชันแฮช 5 อิสระมาใช้ใหม่สำหรับการตรวจสอบเชิงเส้น


14

ในตารางแฮชที่แก้ไขการชนกันโดยการตรวจเชิงเส้นเพื่อให้แน่ใจว่าประสิทธิภาพคาดหวังมีความจำเป็นและเพียงพอที่ฟังก์ชันแฮชจะมาจากตระกูลอิสระ 5 ตัว (ความพอเพียง: "การตรวจสอบเชิงเส้นด้วยความเป็นอิสระอย่างต่อเนื่อง", Pagh et al. , ความจำเป็น: "ใน k-Independence ที่กำหนดโดยการตรวจสอบเชิงเส้นและความเป็นอิสระต่ำสุด", Pătraşcuและ Thorup )O(1)

ฉันเข้าใจว่าครอบครัวที่เป็นอิสระ 5 คนที่รู้จักกันเร็วที่สุดใช้ตาราง การเลือกฟังก์ชั่นจากครอบครัวที่ดังกล่าวอาจจะมีราคาแพงดังนั้นฉันต้องการที่จะลดจำนวนครั้งที่ฉันทำดังนั้นในขณะที่ยังคงมีการป้องกันการโจมตีซับซ้อนอัลกอริทึมที่อธิบายไว้ในครอสบีและวัลลักของ"Denial of Service ผ่านการโจมตีขั้นตอนซับซ้อน" ฉันกังวลน้อยเกี่ยวกับการโจมตีเวลา (เช่นศัตรูที่มีนาฬิกาจับเวลา) อะไรคือผลของการใช้ฟังก์ชันเดียวกันซ้ำ:

  1. เมื่อเพิ่มตารางแฮชที่เต็มเกินไป
  2. เมื่อลดขนาดตารางแฮชที่ไม่เต็มเพียงพอหรือไม่
  3. เมื่อสร้างตารางแฮชที่มีบิต "ลบ" ที่ตั้งค่าไว้มากเกินไปหรือไม่
  4. ในตารางแฮชที่แตกต่างกันที่อาจมีบางคีย์เหมือนกัน?k
  5. kที่แตกต่างกันตารางแฮชที่มีปุ่มในการร่วมกันไม่ได้หรือไม่

หากนี่เป็นคำถามเกี่ยวกับการฝึกฝน ... วิธีปฏิบัติที่เป็นไปได้คือการใช้ฟังก์ชั่นแฮ็คเข้ารหัสด้วยความลับแบบสุ่มที่รวมอยู่ในอินพุตแทนที่จะใช้โครงร่างตามตาราง จากนั้นมีความกดดันน้อยลงเพื่อใช้ฟังก์ชันแฮชเดียวกันซ้ำ คุณสามารถใช้ความลับที่แตกต่างกันสำหรับแต่ละตารางแฮช (และเปลี่ยนความลับและทำใหม่ทุกอย่างเมื่อลดขนาด / เพิ่ม / สร้างใหม่ตารางแฮช)
DW

ฉันคิดว่าแม้ฟังก์ชั่นแฮ็คเข้ารหัสข้อมูลที่รวดเร็วในการป้อนข้อมูลระยะสั้นอย่าง SipHash-2-4 นั้นค่อนข้างช้าเมื่อเทียบกับครอบครัว 5 ตระกูลที่ใช้พหุนาม
jbapple

คำตอบ:


1

ปัญหาหนึ่งที่อาจเกิดขึ้นคือเมื่ออ่านจากตารางแฮชไม่ควรอ่านองค์ประกอบตามลำดับของช่องหากตารางแฮชทั้งหมดใช้ฟังก์ชันแฮชเดียวกัน นี่เป็นเพราะองค์ประกอบเหล่านั้นตามลำดับสามารถทำให้ขั้นตอนการแทรกบนตารางแฮชขนาดเล็กที่มีฟังก์ชั่นแฮชเดียวกันเพื่อหากำลังสองได้โดยสมมติว่าปัจจัยการเติมสูงสุดสิ้นสุดลง1/2. ดู:

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