JavaScript is required

Để việc tìm kiếm thông tin mặt hàng được nhanh chóng, người ta dùng một bảng băm theo phương pháp thăm dò, làm việc trên mã quản lý của mặt hàng. Mã quản lý này là một con số nguyên. Bảng băm có:

- Hàm băm: h(key) = (key % M)

- Hàm băm lại (hàm thăm dò): prob(key, i) = (h(key) + i*i + i) % M

Trong đó:

- key là giá trị khóa.

- i là một số nguyên cho biết lần băm lại (thăm dò) thứ i.

- M là kích thước bảng băm.

Giả sử M = 7, cho trường hợp T của bảng băm đã chứa dữ liệu như bên dưới. Biết “-” là ký hiệu vị trí trống trong bảng băm.

a. Trình bày từng bước việc tìm mã quản lý 23 trong bảng băm T.

b. Trình bày từng bước việc thêm các mã quản lý sau vào bảng băm T theo đúng thứ tự liệt kê là 11, 20, 27.

Trả lời:

Đáp án đúng:


Câu hỏi này kiểm tra kiến thức về cấu trúc dữ liệu bảng băm (hash table) với phương pháp giải quyết xung đột bằng thăm dò bậc hai (quadratic probing). Cụ thể, câu hỏi yêu cầu thực hiện hai tác vụ chính: tìm kiếm một mã quản lý đã có trong bảng băm và thêm mới một số mã quản lý vào bảng băm. **Phần a: Tìm kiếm mã quản lý 23** Để tìm mã quản lý 23, chúng ta sẽ sử dụng hàm băm và hàm thăm dò đã cho. Kích thước bảng băm là M = 7. 1. **Tính toán vị trí ban đầu bằng hàm băm chính:** h(key) = key % M h(23) = 23 % 7 = 2 Vị trí đầu tiên cần kiểm tra là chỉ số 2. 2. **Kiểm tra vị trí 2 trong bảng băm T:** Quan sát hình ảnh bảng băm, ta thấy tại chỉ số 2 có giá trị là 16. Vì 16 != 23, nên mã 23 chưa được tìm thấy tại đây. 3. **Tiến hành thăm dò lần thứ nhất (i=1) nếu vị trí ban đầu không khớp:** Hàm thăm dò: prob(key, i) = (h(key) + i*i + i) % M prob(23, 1) = (h(23) + 1*1 + 1) % 7 prob(23, 1) = (2 + 1 + 1) % 7 = 4 % 7 = 4 Vị trí tiếp theo cần kiểm tra là chỉ số 4. 4. **Kiểm tra vị trí 4 trong bảng băm T:** Tại chỉ số 4 có giá trị là 23. Mã quản lý 23 đã được tìm thấy. **Kết luận phần a:** Mã quản lý 23 được tìm thấy tại chỉ số 4 sau 1 lần thăm dò. **Phần b: Thêm các mã quản lý 11, 20, 27** Chúng ta sẽ thêm lần lượt từng mã vào bảng băm T có kích thước M=7 và trạng thái ban đầu được cho. **1. Thêm mã 11:** - Tính vị trí ban đầu: h(11) = 11 % 7 = 4. - Kiểm tra vị trí 4: Vị trí 4 đang chứa giá trị 23. Xung đột xảy ra. - Thăm dò lần 1 (i=1): prob(11, 1) = (h(11) + 1*1 + 1) % 7 = (4 + 1 + 1) % 7 = 6 % 7 = 6. - Kiểm tra vị trí 6: Vị trí 6 trống ('-'). - Thêm 11 vào vị trí 6. Bảng băm sau khi thêm 11: [2, 9, 16, -, 23, -, 11] **2. Thêm mã 20:** - Tính vị trí ban đầu: h(20) = 20 % 7 = 6. - Kiểm tra vị trí 6: Vị trí 6 đang chứa giá trị 11. Xung đột xảy ra. - Thăm dò lần 1 (i=1): prob(20, 1) = (h(20) + 1*1 + 1) % 7 = (6 + 1 + 1) % 7 = 8 % 7 = 1. - Kiểm tra vị trí 1: Vị trí 1 trống ('-'). - Thêm 20 vào vị trí 1. Bảng băm sau khi thêm 20: [2, 20, 16, -, 23, -, 11] **3. Thêm mã 27:** - Tính vị trí ban đầu: h(27) = 27 % 7 = 6. - Kiểm tra vị trí 6: Vị trí 6 đang chứa giá trị 11. Xung đột xảy ra. - Thăm dò lần 1 (i=1): prob(27, 1) = (h(27) + 1*1 + 1) % 7 = (6 + 1 + 1) % 7 = 8 % 7 = 1. - Kiểm tra vị trí 1: Vị trí 1 đang chứa giá trị 20. Xung đột xảy ra. - Thăm dò lần 2 (i=2): prob(27, 2) = (h(27) + 2*2 + 2) % 7 = (6 + 4 + 2) % 7 = 12 % 7 = 5. - Kiểm tra vị trí 5: Vị trí 5 trống ('-'). - Thêm 27 vào vị trí 5. Bảng băm sau khi thêm 27: [2, 20, 16, -, 23, 27, 11] **Kết luận phần b:** Các mã 11, 20, 27 được thêm vào các vị trí tương ứng là 6, 1, 5.

Đề thi cuối kỳ môn Cấu trúc dữ liệu và giải thuật của Trường Đại học Công nghệ Thông tin, Học kỳ 2, năm học 2021-2022. Nội dung bao gồm các câu hỏi về thuật toán Insertion Sort, cây nhị phân tìm kiếm, cây B-Tree, kỹ thuật băm và biểu diễn đồ thị cho bài toán đường đi ngắn nhất.


5 câu hỏi 90 phút

Câu hỏi liên quan