Những lợi thế của băm cuckoo so với băm hoàn hảo năng động là gì?


12

Các bảng băm hoàn hảo độngcác bảng băm cuckoo là hai cấu trúc dữ liệu khác nhau hỗ trợ tra cứu trường hợp xấu nhất O (1) và các lần chèn và xóa thời gian O (1) dự kiến. Cả hai đều yêu cầu không gian phụ trợ O (n) và truy cập vào các họ hàm băm cho các hoạt động của chúng.

Tôi nghĩ rằng cả hai cấu trúc dữ liệu này đều đẹp và rực rỡ theo cách riêng của chúng, nhưng tôi không chắc chắn tôi thấy cách thức và thời điểm một trong những cấu trúc này sẽ thích hợp hơn các cấu trúc kia.

Có bối cảnh cụ thể trong đó một trong các cấu trúc dữ liệu này có lợi thế rõ ràng so với các cấu trúc khác không? Hay chúng chủ yếu thay thế cho nhau?


Tôi không chắc liệu một trong hai kỹ thuật này có thực sự được sử dụng trong thực tế hay không. Thông thường các loại cấu trúc dữ liệu cung cấp các giới hạn tiệm cận tốt nhất là chủ yếu quan tâm nghiên cứu, vì họ thường có một hằng số lớn ẩn trong -notation. Trong thực tế, bạn có thể thích một kỹ thuật O ( log n ) đơn giản hơn, dễ thực hiện hơn với hằng số thực sự nhỏ so với hằng số O ( 1 ) phức tạp hơn với hằng số thực sự lớn. ÔiÔi(đăng nhậpn)Ôi(1)
Tom van der Zanden

@TomvanderZanden Điều đó hoàn toàn đúng. Tôi cũng quan tâm đến những lợi thế về mặt lý thuyết của một phương pháp này so với phương pháp khác - có bất kỳ tính chất lý thuyết tốt đẹp nào mà mỗi phương pháp phải cung cấp so với phương pháp khác không?
templatetypedef

@templatetypedef, tôi khuyến khích bạn thêm nó vào câu hỏi. Mọi người không cần phải đọc các bình luận để hiểu câu hỏi của bạn - các bình luận là nhất thời và có thể biến mất bất cứ lúc nào.
DW

Vâng, những kỹ thuật này thực sự được sử dụng trong thực tế, thường là trong các lĩnh vực thích hợp.
Bút danh

1
Một lợi thế của băm cuckoo là nó dễ hiểu và dễ thực hiện. Ngoài ra, imho, nó dễ dàng hơn để phân tích hơn so với băm hoàn hảo năng động.
A.Schulz

Câu trả lời:


3

Băm hoàn hảo năng động theo nghĩa của Dietzfelbinger et al. chỉ cần băm 2 độc lập . Mặc dù có một số kết quả về băm đơn giản đối với các bảng băm cuckoo, chẳng hạn như băm bảng lập bảng xoắn và "Gia đình Hash rõ ràng và hiệu quả Suffice cho Cuckoo Hashing với Stash", theo cách nào đó, băm hoàn hảo động mạnh mẽ hơn.


Xem nhận xét làm rõ từ OP: "Tôi cũng quan tâm đến lợi thế lý thuyết của một phương pháp này so với phương pháp khác - có bất kỳ tính chất lý thuyết tốt đẹp nào mà mỗi phương pháp phải cung cấp so với phương pháp khác không?"
jbapple

3

Trong băm cuckoo, việc tra cứu có thể được thực hiện song song, trong khi trong sơ đồ băm hoàn hảo động ban đầu của Dietzfelbinger và cộng sự, việc tra cứu đòi hỏi hai lần truy cập bộ nhớ, trong đó lần truy cập thứ hai sử dụng thông tin được truy xuất từ ​​lần đầu tiên.


1

Nó tương đối dễ dàng để tăng hiệu quả không gian của băm cuckoo bằng cách cho phép mỗi khe chứa nhiều hơn một mục. Đối với các khe có kích thước 4, hiệu suất không gian là khoảng 95%. Điều đó có nghĩa là, các mục có thể được chèn cho đến khi 95% không gian trong bảng được sử dụng để giữ các mục, không chỉ là nơi các mục có thể đi.

Mặt khác, giới hạn trong Dietzfelbinger et al. giấy về băm hoàn hảo động chỉ chứng minh rằng các hoạt động chèn có thể tiến hành miễn là bảng không quá 3%.


Bạn có thể muốn kết hợp hai câu trả lời của bạn với nhau. :-)
templatetypedef

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.