Sử dụng lại các hàm băm 5 độc lập để thăm dò tuyến tính


14

Trong các bảng băm giải quyết xung đột bằng cách thăm dò tuyến tính, để đảm bảo hiệu suất mong đợi của , cả hàm băm đều thuộc nhóm 5 độc lập. (Tính hiệu quả: "Thăm dò tuyến tính với tính độc lập không đổi", Pagh và cộng sự , sự cần thiết: "Về tính độc lập k được yêu cầu bởi tính toán tuyến tính và độc lập theo chiều dọc", Pătraşcu và Thorup )Ôi(1)

Theo hiểu biết của tôi, các gia đình 5 độc lập được biết đến nhanh nhất sử dụng bảng. Chọn một chức năng từ một gia đình như vậy có thể tốn kém, vì vậy tôi muốn giảm thiểu số lần tôi làm như vậy trong khi vẫn ngăn chặn các cuộc tấn công phức tạp thuật toán như được mô tả trong "Từ chối dịch vụ" của Crosby và Wallach . Tôi ít lo lắng hơn về các cuộc tấn công thời gian (tức là đối thủ với đồng hồ bấm giờ). Hậu quả của việc tái sử dụng cùng chức năng là gì:

  1. Khi phát triển bảng băm quá đầy?
  2. Khi thu nhỏ một bảng băm không đủ đầy?
  3. Khi xây dựng lại bảng băm có quá nhiều bit "bị xóa" được đặt?
  4. Trong bảng băm khác nhau có thể chứa một số khóa chung?k
  5. Trong bảng băm khác nhau không chứa khóa chung?k

Nếu đây là một câu hỏi về thực hành ... một cách tiếp cận thực tế hợp lý là sử dụng hàm băm mật mã, với một bí mật ngẫu nhiên có trong đầu vào, thay vì sử dụng sơ đồ dựa trên bảng. Sau đó, có ít áp lực hơn để sử dụng lại hàm băm tương tự; bạn có thể sử dụng một bí mật khác nhau cho mỗi bảng băm (và thay đổi bí mật và làm lại mọi thứ, khi thu nhỏ / tăng / xây dựng lại bảng băm).
DW

Tôi nghĩ rằng ngay cả các hàm băm mật mã nhanh trên đầu vào ngắn như SipHash-2-4 cũng khá chậm so với các gia đình 5 độc lập sử dụng đa thức.
jbapple

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.