Giới thiệu
- Vào mùa thu năm 2021, Andrew Krapivin, một sinh viên đại học tại Rutgers University, đã bắt gặp một bài báo có thể thay đổi cuộc đời mình.
- Bài báo này nói về những “con trỏ nhỏ” dùng để trỏ tới thông tin trong bộ nhớ máy tính.
- Krapivin đã nghĩ ra cách làm cho các con trỏ nhỏ hơn để giảm mức tiêu thụ bộ nhớ.
Phát hiện ra một bảng băm mới
- Krapivin đã tiến hành thí nghiệm bằng cách sử dụng bảng băm, một phương pháp phổ biến để lưu trữ dữ liệu.
- Trong quá trình thí nghiệm, Krapivin đã phát minh ra một loại bảng băm mới hoạt động nhanh hơn các loại hiện có.
- Phát hiện này đã dẫn đến kết quả lật đổ một giả thuyết 40 năm tuổi trong khoa học dữ liệu.
Tầm quan trọng của bảng băm
- Bảng băm là một trong những cấu trúc dữ liệu lâu đời nhất trong khoa học máy tính, mang lại hiệu quả trong việc lưu trữ dữ liệu.
- Bảng băm được thiết kế để có thể thực hiện ba chức năng: tìm kiếm, xóa và chèn phần tử.
Giả thuyết của Yao và sự bác bỏ
- Năm 1985, nhà khoa học máy tính Andrew Yao đã đưa ra một giả thuyết về cách tìm phần tử trong trường hợp xấu nhất đối với các bảng băm có những thuộc tính nhất định.
- Bảng băm mới của Krapivin đã bác bỏ giả thuyết của Yao, đồng thời chứng minh rằng thời gian cần thiết cho truy vấn và chèn trong trường hợp xấu nhất tỉ lệ với
(log x)².
Phát hiện mới về thời gian truy vấn trung bình
- Krapivin và nhóm của ông đã cho thấy rằng trong các bảng băm không tham lam, thời gian truy vấn trung bình không phụ thuộc vào
x.
- Điều này có nghĩa là có thể đạt được thời gian truy vấn trung bình hằng số bất kể mức độ lấp đầy của bảng băm.
Kết luận
- Nghiên cứu này giúp đào sâu hiểu biết về bảng băm và có thể dẫn tới các ứng dụng thực tiễn.
- Sự hiểu biết này về cấu trúc dữ liệu có thể trở thành nền tảng cho những cải tiến thực dụng trong tương lai.
1 bình luận
Ý kiến Hacker News
Krapivin đã tạo ra bước đột phá mà không biết đến phỏng đoán của Yao
Kết quả rất ấn tượng, nhưng có lẽ nên được gọi là một phỏng đoán của khoa học máy tính
Tò mò không biết có ai biết một kho lưu trữ GitHub có triển khai này không
Hay đấy, nhưng kiểu viết "tôn vinh người nổi tiếng" của bài này hơi gây khó chịu
Trong bảng băm mới, thời gian cần cho truy vấn và chèn trong trường hợp xấu nhất tỉ lệ với
(log x)²Đọc bài này giống như đọc lời giải thích về bài toán Monty-Hall
Đây là một bài kiểm tra thú vị gần đây
Tò mò không biết có ai có một triển khai đơn giản của 'Tiny pointers' không
Như phản diện trong <i>Scooby Doo</i> luôn nói:
Đọc lướt bài báo thì có vẻ khác biệt chính mà họ dùng là thuật toán chèn của bảng băm sẽ dò xa hơn thay vì tham lam lấp ngay ô trống đầu tiên
Một kết quả lý thuyết thú vị, nhưng trong thực tế có vẻ "mẹo" hiện nay là cấp phát bảng lớn hơn mức cần thiết vẫn sẽ là lời giải tốt hơn
hashbrowncủa Rust để trống 1/8 bảng (12.5%), dùng nhiều bộ nhớ hơn một chút nhưng chèn/tra cứu rất nhanh