✨Bảng băm

Bảng băm

nhỏ|315x315px|Một danh bạ điện thoại nhỏ được xem như một bảng băm. Trong khoa học máy tính, bảng băm là một cấu trúc dữ liệu sử dụng hàm băm để ánh xạ từ giá trị xác định, được gọi là khóa (ví dụ như tên của một người), đến giá trị tương ứng (ví dụ như số điện thoại của họ). Do đó, bảng băm là một mảng kết hợp. Hàm băm được sử dụng để chuyển đổi từ khóa thành chỉ số (giá trị băm) trong mảng lưu trữ các giá trị tìm kiếm.

Trong trường hợp lý tưởng, hàm băm luôn chuyển đổi các khóa khác nhau đến các chỉ số khác nhau. Tuy nhiên trong thực tế, điều này hiếm khi xảy ra (trừ khi các khóa không cố định: không có thêm khóa mới nào được bổ sung vào bảng sau khi tạo bảng). Thay vào đó, hầu hết các thiết kế bảng băm đều giả sử các khóa khác nhau có thể được băm vào cùng một giá trị (gọi là va chạm băm), cũng như cách giải quyết va chạm.

Trong một bảng băm có kích thước đủ lớn, thời gian trung bình cho mỗi lần tra cứu là độc lập với số lượng phần tử trong bảng. Nhiều thiết kế bảng băm cũng cho phép chèn thêm và xóa bỏ tùy ý của cặp khóa-giá trị trong thời gian trung bình (hoặc trừ dần) không đổi cho mỗi thao tác.

Việc băm là 1 ví dụ tiêu biểu của việc đánh đổi bộ nhớ lấy tốc độ xử lý. Nếu bộ nhớ là vô hạn, ta có thể truy cập vào giá trị chỉ với 1 thao tác truy cập bộ nhớ duy nhất bằng cách dùng khoá làm chỉ số. Ngược lại, nếu có vô hạn thời gian, giá trị có thể được lưu mà không cần quan tâm đến khoá, và có thể dùng tìm kiếm nhị phân hay tìm kiếm tuyến tính để lấy ra phần tử.

Trong nhiều trường hợp, bảng băm có hiệu quả hơn so với cây tìm kiếm hoặc bất kỳ cấu trúc dữ liệu tìm kiếm nào. Vì lý do này, chúng được sử dụng rộng rãi trong nhiều loại phần mềm máy tính, đặc biệt là cho mảng kết hợp, lập chỉ mục cơ sở dữ liệu, tổ chức bộ nhớ đệm, và cấu trúc dữ liệu tập hợp.

Hàm băm

Tại trung tâm của thuật toán bảng băm là một mảng thường được gọi là bảng băm. Thuật toán bảng băm tính ra một chỉ số cho mỗi khóa và dùng chỉ số này để đặt dữ liệu vào mảng. Hàm số thực hiện việc tính toán này gọi là hàm băm, f:

index = f(key,\ array\_size)

Hàm băm tính toán một chỉ số trong mảng từ khóa và kích thước của mảng. Trong hợp ngữ hoặc các ngôn ngữ lập trình bậc thấp khác, một hàm băm có thể tạo ra chỉ số chỉ với một hoặc hai lệnh máy.

Chọn một hàm băm tốt

Hàm băm tốt và thuật toán tốt là hai yếu tố cần thiết để bảng băm hoạt động hiệu quả, nhưng không dễ để đạt được.

Một yêu cầu cơ bản là hàm băm nên phân bố đều các giá trị băm trong mảng. Phân bố không đều làm tăng số lượng va chạm, và do đó tăng chi phí giải quyết chúng. Tính đồng đều đôi khi khó có thể đảm bảo trong thiết kế, nhưng có thể được đánh giá trong thực tiễn bằng cách sử dụng các bài kiểm tra thống kê, ví dụ như, kiểm tra chi-bình phương.

Trong phương pháp địa chỉ mở, các hàm băm cũng nên tránh hiện tượng phân nhóm (ánh xạ hai hay nhiều khóa đến các vị trí liên tiếp trong mảng). Phân nhóm như vậy có thể khiến chi phí tra cứu tăng vọt, ngay cả khi hệ số đầy thấp và va chạm là không thường xuyên.

Các hàm băm mật mã học được cho là hàm băm tốt cho bất kỳ kích thước bảng nào, hoặc bằng cách tính số dư hoặc bằng mặt nạ bit. Tuy nhiên, những phẩm chất này khó có thể bù lại chi phí tính toán lớn hơn nhiều và sự phức tạp của thuật toán.

Hàm băm hoàn hảo

Nếu tất cả các khóa đều được biết trước khi tạo bảng, có thể sử dụng một hàm băm hoàn hảo để tạo ra một bảng băm hoàn hảo không có va chạm. Nếu sử dụng hàm băm hoàn hảo tối thiểu, thì mọi vị trí trong bảng băm đều được sử dụng.

Hàm băm hoàn hảo cho phép tra cứu trong thời gian hằng số trong trường hợp xấu nhất. Điều này là trái ngược với kết quả cho phương pháp kết nối và phương pháp địa chỉ mở. Hai phương pháp này có thời gian tra cứu trung bình thấp, nhưng có thể rất lớn (tỷ lệ thuận với số lượng khóa) đối với một vài khóa.

Giải quyết va chạm

Va chạm băm nói chung không thể tránh khỏi khi băm một tập hợp ngẫu nhiên của một số lượng lớn các khóa. Ví dụ, nếu băm 2500 khóa vào một triệu ô nhớ, ngay cả với một phân bố hoàn toàn ngẫu nhiên, theo vấn đề sinh nhật có 95% cơ hội ít nhất hai trong số các khóa băm cùng một ô nhớ.

Vì vậy, hầu hết các thiết kế bảng băm đều có phương pháp giải quyết va chạm. Dưới đây là một số phương pháp phổ biến. Trong tất cả các phương pháp này, các khóa (hoặc con trỏ tới chúng) được lưu trữ trong bảng, cùng với các giá trị liên quan. Một điểm quan trọng là mức độ hiệu quả của các phương pháp giải quyết va chạm không phụ thuộc trực tiếp vào số lượng khóa n, mà vào hệ số tải (hay hệ số đầy) của bảng, tỷ lệ n/s giữa n và kích thước s của bảng.

Phương pháp kết nối

Trong phương pháp kết nối (còn gọi là kết nối riêng rẽ, kết nối trực tiếp), mỗi ô của bảng là một con trỏ tới một danh sách liên kết chứa các cặp khóa-giá trị được băm tới cùng một vị trí. Để tìm kiếm, thuật toán duyệt qua danh sách để tìm khóa cho trước. Để chèn khóa mới, thuật toán chèn khóa đó vào đầu danh sách ở ô nhớ tương ứng với giá trị băm của khóa. Để xóa một khóa, thuật toán phải duyệt qua danh sách và xóa khóa đó khỏi danh sách.

  • Các nút bị băm cùng địa chỉ (các nút bị xung đột) được gom thành một danh sách liên kết.
  • Các nút bị xung đột tại địa chỉ i được nối kết trực tiếp với nhau qua danh sách liên kết i.

Phương pháp địa chỉ mở

Trong phương pháp địa chỉ mở, mọi cặp khóa - giá trị được lưu trực tiếp trong bảng. Khi một cặp khóa - giá trị mới được chèn vào bảng, thuật toán duyệt trong bảng theo một thứ tự thăm dò nhất định bắt đầu từ ô tương ứng với giá trị băm của khóa, cho tới khi tìm được một ô trống. Cặp khóa - giá trị mới được chèn vào ô trống đó. Khi tìm kiếm, thuật toán cũng duyệt theo thứ tự thăm dò bắt đầu từ ô tương ứng với giá trị băm.

Một số thứ tự thăm dò phổ biến bao gồm:

  • Thăm dò tuyến tính, trong đó khoảng cách giữa hai vị trí thăm dò liên tiếp là cố định (thường là 1)
  • Thăm dò bậc hai, trong đó khoảng cách giữa hai vị trí thăm dò liên tiếp tăng dần tuyến tính
  • Băm hai lần, trong đó khoảng cách giữa hai vị trí thăm dò liên tiếp là một hàm băm khác

Phương pháp băm Cuckoo

Phương pháp băm cuckoo (tên gọi xuất phát từ sự tương tự giữa hoạt động thuật toán với hành vi của chim Cuckoo) đảm bảo thời gian cho mỗi phép tìm kiếm là hằng số trong trường hợp xấu nhất, và thời gian trừ dần hằng số cho chèn và xóa.

👁️ 15 | ⌚2025-09-03 20:58:28.584
Mua hàng tại Shopee giảm thêm 30%

Các bảng băm phân tán **Bảng băm phân tán** (tiếng Anh: _distributed hash table_, viết tắt **DHT**) là một lớp các hệ thống phân tán không tập trung, cung cấp một dịch vụ tra cứu
nhỏ|315x315px|Một danh bạ điện thoại nhỏ được xem như một bảng băm. Trong khoa học máy tính, **bảng băm** là một cấu trúc dữ liệu sử dụng hàm băm để ánh xạ từ giá trị
Chữa lành cơ thể bằng bấm huyệt Công ty phát hành: Thái Hà Tác giả: Laurent Turlin, Alix Lefief-Delcourt Dịch giả: Nguyễn Tiến Hòa NXB: Thế Giới Năm xuất bản: 2022 [ThaiHaBooks] Dùng chính đôi
- Băng Bấm Giá Trắng (10 Cuộn / Lốc) khả năng bám dính tốt, dẻo dai, không chứa các hóa chất độc hại, an toàn cho sức khỏe người sử dụng. Bề mặt băng dính
Chữa Lành Cơ Thể Bằng Bấm Huyệt
Mã hàng 8935280910294 Tên Nhà Cung Cấp Thái Hà Tác giả Laurent Turlin, Alix Lefief-Delcourt Người Dịch Nguyễn Tiến Hòa NXB NXB Thế Giới Năm XB 2022 Trọng lượng gr 230 Kích Thước Bao Bì
**Hàm băm ổn định** (tiếng Anh: _consistent hash function_) là hàm băm mà việc thêm hoặc bớt một khối dữ liệu (_slot_) không làm thay đổi đáng kể ánh xạ từ khóa tới các khối
THÔNG TIN CƠ BẢN Xuất xứ: HongKong. CHI TIẾT SẢN PHẨM Máy dập xù mini kuteThông số kỹ thuật:- Nhiệt độ: 140*C~200*C- Kích cỡ máy: 25 x 5 x 3.5 cm- Xuất xứ: Trung Quốc-
**Chi Ngưu bàng** hay còn gọi **chi Ngưu bảng**, **chi Ngưu báng** (danh pháp khoa học: **_Arctium_**) là một chi thực vật thuộc họ Cúc (Asteraceae). Là bản địa Cựu Thế giới, nhưng một vài
Băng dán có gạc Urgosterile 150mm 100mm x 90mm combo 10 miếngMột miếng băng cá nhân thông thường không thể giúp bạn bảo vệ các vết thương lớn nhưng nếu sử dụng băng gạc thì
Băng dán có gạc Urgosterile 150mm 100mm x 90mm combo 10 miếngMột miếng băng cá nhân thông thường không thể giúp bạn bảo vệ các vết thương lớn nhưng nếu sử dụng băng gạc thì
Băng dán có gạc Urgosterile 150mm 100mm x 90mm combo 10 miếngMột miếng băng cá nhân thông thường không thể giúp bạn bảo vệ các vết thương lớn nhưng nếu sử dụng băng gạc thì
Băng dán có gạc Urgosterile 150mm 100mm x 90mm combo 10 miếngMột miếng băng cá nhân thông thường không thể giúp bạn bảo vệ các vết thương lớn nhưng nếu sử dụng băng gạc thì
phải|Một hàm băm tiêu biểu đang hoạt động **Hàm băm** (tiếng Anh: _hash function_) là giải thuật nhằm sinh ra các **giá trị băm** tương ứng với mỗi **khối dữ liệu** (có thể là một
Trong ngành mật mã học, một **Hàm băm mật mã học** (tiếng Anh: _Cryptographic hash function_) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng
-Nước súc miệng Propolinse Dental Whitening chứa gấp đôi bột làm trắng răng Na hydrogen carbonate giúp làm bong mảng bám trên răng đồng thời giúp làm trắng sáng bóng vượt trội. Những bạn cần
Bệnh **suy giáp trạng bẩm sinh** là bệnh nội tiết khi tuyến giáp trạng của trẻ sơ sinh không sản xuất đủ hormone để đáp ứng nhu cầu chuyển hoá và quá trình sinh trưởng
Bút Bi Bấm 0.7 mm - Pentel BX417_B - Mực Đỏ Chất liệu vỏ Bút Bi Bấm Pentel BX417 được làm bằng nhựa, bền đẹp và thân thiện với môi trường. Đầu bi được làm
Chì Bấm G-Star Mp 07 - Xám Chì Bấm G-Star Mp 07 có thiết kế dạng vặn bấm ngòi tiện lợi, giúp bạn thay đối ngoì, sử dụng trong thời gian dài. Sản phẩm có thiết
Bút Bi Bấm Stabilo Đỏ 328 - 0.5mm - BP328XF-RD Bút Bi Bấm Stabilo Đỏ 328 - 0.5mm - BP328XF-RD có dung lượng mực đảm bảo viết trên 5.000m, rất tiết kiệm và tiện lợi
Bút Chì Kim Bấm Pentel 0.5mm - A255A-10 Bút Chì Kim Bấm Pentel 0.5mm - A255A-10 - Nếu bạn đang tìm kiếm một cây bút chì bấm hoàn hảo nhằm hỗ trợ cho công việc
Pentel VietNam - Văn phòng phẩm số 1 Nhật Bản Thông tin sản phẩm Bút Chì Kim Kỹ Thuật Pentel 120 A3 | Ngòi Bút Bằng Thép Chắc Chắn | Hạn chế gãy ngòi |
Bút Chì Kim Bấm Giữa Thân Trong Pentel 0.5mm - PD105C Bút Chì Kim Bấm Giữa Thân Trong Pentel 0.5mm - PD105C sở hữu bốn sắc màu trẻ trung, cá tính rất bắt mắt. Với
Bút Chì Kim Bấm Giữa 0.5Mm Pd105T - Đen Với thiết kế thân nhựa trong tinh tế tạo nên một kiểu dáng vô cùng đẹp mắt, cộng với chất lượng hoàn hảo. Bút Chì Kim Bấm
Bút Chì Kim Bấm Giữa 0.5mm Pentel PD105T-D - Xanh Lá Với thiết kế thân nhựa trong tinh tế tạo nên một kiểu dáng vô cùng đẹp mắt, cộng với chất lượng hoàn hảo, bút
**Dị tật tim bẩm sinh** (**CHD**), còn được gọi là **bất thường tim bẩm sinh** hay **bệnh tim bẩm sinh**, là một sự cố về cấu trúc của tim tồn tại từ khi sinh. Các
Bút Chì Bấm QTM QM220 Xanh Dương Sở hữu bốn sắc màu trẻ trung, cá tính rất bắt mắt. Với thiết kế thân tinh tế, chất lượng hoàn hảo, sản phẩm không những là công cụ
Bút Chì Bấm QTM Qm220 Cam Sở hữu bốn sắc màu trẻ trung, cá tính rất bắt mắt. Với thiết kế thân tinh tế, chất lượng hoàn hảo, sản phẩm không những là công cụ hỗ
Bộ Chì Bấm 0.7mm Ezgrip - Faster MPS-F-076 Bút Chì Bấm Faster là dòng sản phẩm bút sở hữu thiết kế vô cùng đẹp mắt với màu sắc tươi sáng và kiểu dáng trẻ trung,
Bút Dạ Viết Bảng Đầu Bấm MWL5M - Xanh là một công cụ hỗ trợ tuyệt vời cho công việc và học tập. Với chất lượng vượt trội nhờ vào chất liệu mực tốt và
Dụng cụ chăm sóc móng cho béHoạt động bằng trục xoay 360 độ với các nút nhám để mài móng cho bé vừa dễ dàng, vừa sạch sẽ.QUAN TRỌNG LÀ AN TOÀN không gây đau,
Làm sạch các mảng bám trên lưỡi.Tay cầm bằng nhựa dẻo tiện lợi.Giúp vệ sinh răng miệng hiệu quảSử dụng hàng ngày, nhanh chóng, an toànTHÔNG TIN SẢN PHẨMBộ sản phẩm bao gồm1 dụng cụ
Bút Chì Bấm Masterart 2.0mm 2B   Được làm bằng chất liệu nhựa cao cấp, bền chắc, cho thời gian sử dụng lâu dài. Bút bấm chắc, êm, cho ra lượng ngòi vừa phải, hạn
Bút Chì Bấm Sakura Mechanical 0.5mm Bút Chì Bấm Sakura Mechanical chuyên được sử dụng để vẽ và thiết kế Thiết kế chắc chắn chịu được lực viết lớn Đầu viết bằng kim loại dài
Viết Chì Bấm Pilot HCR-197-G Viết chì bấm Pilot chất lượng cao. Ở đầu bút có gắn 1 cục tẩy cùng với vỏ bút bằng nhựa cao cấp giúp bạn thoải mái sử dụng và
Bút Chì Bấm Sakura Mechanical 0.5mm Bút Chì Bấm Sakura Mechanical chuyên được sử dụng để vẽ và thiết kế Thiết kế chắc chắn chịu được lực viết lớn Đầu viết bằng kim loại dài
Bút Chì Bấm Sắc Màu BAOKE Mã Sản Phẩm : ZD110 . Bút Chì Bấm HB 0.5 Với Nhiều Màu Sắc Lựa Chọn . Được Trang Bị Cục Tẩy Phía Trên Tiện Cho Việc Tẩy
- Bút Chì Bấm Nataraj 402465 - Ngòi 0.5mm được làm bằng chất liệu nhựa cao cấp, bền chắc, cho thời gian sử dụng lâu dài. Bút bấm chắc, êm, cho ra lượng ngòi vừa
Bút Chì Bấm Sakura Mechanical 0.5mm Bút Chì Bấm Sakura Mechanical chuyên được sử dụng để vẽ và thiết kế Thiết kế chắc chắn chịu được lực viết lớn Đầu viết bằng kim loại dài
Bút Chì Bấm Campus Premium 1.3mm 2B PC-PREN-1.3-G  Được làm bằng chất liệu nhựa cao cấp, bền chắc, cho thời gian sử dụng lâu dài. Bút bấm chắc, êm, cho ra lượng ngòi vừa phải,
Bút Chì Bấm Sakura Mechanical 0.5mm Bút Chì Bấm Sakura Mechanical chuyên được sử dụng để vẽ và thiết kế Thiết kế chắc chắn chịu được lực viết lớn Đầu viết bằng kim loại dài
Viết Chì Bấm Pilot HCR-197-V Viết chì bấm Pilot chất lượng cao. Ở đầu bút có gắn 1 cục tẩy cùng với vỏ bút bằng nhựa cao cấp giúp bạn thoải mái sử dụng và
Bút Bi Nước Bấm 0.7mm Pentel BL77-D - Xanh Lá Là sản phẩm bút viết cao cấp với đầu bi chất lượng được làm bằng hợp kim bền, đảm bảo khắc phục tối đa được
Bút Bi 0.5mm Đầu Bấm ,Thân Có Hình M&G 82776 - Xanh Đen Có thiết kế đẹp mắt, rất phù hợp cho học sinh, sinh viên hoặc nhân viên văn phòng. Đầu bi của bút được
Bút Bi 0.5mm Đầu Bấm ,Thân Có Hình M&G 82776 - Xanh Đen Có thiết kế đẹp mắt, rất phù hợp cho học sinh, sinh viên hoặc nhân viên văn phòng. Đầu bi của bút được
Bút Chì Bấm Nắp Đậy - Pentel A155T-P 0.5  - Màu Hồng nếu bạn đang tìm kiếm một cây bút chì bấm hoàn hảo nhằm hỗ trợ cho công việc và học tập thì sản phẩm
Chì Bấm M&G AMPV9901 0.5mm - Xanh Nhạt Sản phẩm có thiết kế tinh tế và được làm từ chất liệu nhựa cao cấp. Cơ chế bấm được thiết kế ở đuôi bút rất tiện
Chì Bấm MB710600 Aplus 0.5 nếu bạn đang tìm kiếm một cây bút chì bấm hoàn hảo nhằm hỗ trợ cho công việc và học tập thì sản phẩm này chính là sự lựa chọn tuyệt
Bút Chì Bấm Nắp Đậy - Pentel A155T-D 0.5 - Màu Xanh Lá nếu bạn đang tìm kiếm một cây bút chì bấm hoàn hảo nhằm hỗ trợ cho công việc và học tập thì sản
Bút Bi Bấm M&G 0.7mm ABP82775 Có thiết kế đẹp mắt, rất phù hợp cho học sinh, sinh viên hoặc nhân viên văn phòng. Đầu bi của bút được làm bằng hợp kim bền, giúp nét