Chương 6. Tìm kiếm nâng cao - CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT | Trường Đại học Bách khoa Hà Nội

Giả sử chúng ta cần quản lý các bản ghi là thông tin về các khách hàng của một nhà mạng. Để cho dễ quản lý thì người phụ trách muốn tên các khách hàng này được sắp theo thứ tự ABC. Tuy nhiên để đánh
giá hiệu quả của một chiến dịch marketing. Tài liệu được sưu tầm, giúp bạn ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Chương 6. Tìm kiếm nâng cao
Bài 1. Inverted table
Gi s chúng ta cn qun lý các bn ghi là thông tin v các khách hàng ca mt nhà mng. Đ cho d
qun lý thì ngưi ph trách mun tên các khách hàng này đưc sp theo th t ABC. Tuy nhiên đ đánh
giá hiu qu ca mt chiến dch marketing, lúc này ta li cn sp xếp các khách hàng theo th t thi
gian đăng ký (index). Bên phòng hu mãi cũng mun sp xếp khách hàng theo th t tăng dn s đin
thoi đ tin cho vic liên lc vi các khách hàng.
Chúng ta s t chc các thông tin này như thế nào đ cho tin, và cũng đ tiết kim b nh, chúng ta
không mun phi lưu tr li các bn ghi này.
Index Name Address Phone
Bài 2. Chng minh rng trong phương pháp khc phc đng đ bng đánh đa ch m dùng dò toàn phương
vi hàm băm là = 𝑘%𝑚 trong đó 𝑚 là s nguyên t thì ch ½ phn t trong bng băm đưc dò.
Bài 3. Viết hàm thêm phn t vào bng băm khc phc đng đ bng đánh đa ch m dùng dò toàn phương
Bài 4. Viết hàm tìm kiếm phn t trong bng băm khc phc đng đ bng đánh đa ch m dùng dò toàn
phương
Bài 5. Trong trưng hp khóa là các giá tr nguyên, nếu chúng ta s dng hàm băm sau thì có vn đ gì?
a. =
(
𝑖𝑛𝑡
)
sin (𝑘)
b. =
(
𝑖𝑛𝑡
)
exp (𝑘)
Bài 6. Cho các khóa là các xâu gm 3 k í t sau
PAL LAP PAM MAP PAT PET SET SAT TAT BAT
Hãy xây dng mt hàm băm đơn gin đ ánh x chúng vào mt bng băm kích thưc 𝑛 trong các
trưng hp giá tr ca 𝑛 là: 11, 13, 17, 19
Hãy xây dng hàm băm sao cho s đụng đ ít nht có th.
Bài 7. Cho bng băm kích thưc 13, và các khóa là
10 100 32 45 58 126 3 29 200 400 0
Hill, Thomas M.
High Towers #317
2829478
Baker, John S.
17 King Street
2884285
Roberts, L. B.
53 Ash Street
4372296
King, Barbara
High Towers #802
2863386
Hill, Thomas M.
39 King Street
2495723
Byers, Carolyn
118 Maple Street
4394231
Moody, C. L.
High Towers #210
2822214
a. Trong trưng hp dùng hàm băm = 𝑘%13 hãy xác đnh s ng đng đ vi dãy khóa trên
b. Tc khi chia modulo cho 13 ta cng giá tr các ch s ca khóa li thì s ng đng đ là bao
nhiêu? Ví d vi khóa có 3 chu s abc thì hàm băm là =
(
𝑎 + 𝑏 + 𝑐
)
%13
c. Tìm mt hàm băm hoàn ho cho dãy khóa trên. Hàm băm hoàn ho là hàm băm mà không xy ra
đụng đ trên dãy khóa.
d. Hãy tìm mt hàm băm hoàn ho trong trưng hp kích thưc bng băm là 11
Bài 8. Mt phương pháp khác phc đng đ khác là dùng mt bng ph để cha các khóa mà b đụng đ.
Các khóa trong bng ph có th đưc lưu tr theo kiu 1 bng băm ph, hoc đơn gin là lưu tr tun
t. Hãy mô t ưu nhưc đim ca phương pháp này.
Bài 9. Hãy cài đt các hàm thêm, xóa, và tìm kiếm phn t trong trưng hp bng băm đánh đa ch đóng
dùng xích ngăn cách.
Bài 10. Viết hàm xóa trong trưng hp bng băm đánh đa ch m dùng dò tuyến tính. Ta phi dùng mt du
hiu đc bit đ đánh du phn t đã b a (phương pháp xóa tr - lazy deletion).
Bài 11. Trong trưng hp hp bng băm đánh đa ch m dùng dò tuyến tính, có cách nào khác đ xóa phn
t mà không phi dùng mt giá tr đặc bit đ đánh du phn t đó b a hay không? Nếu trong trưng
hp xây dng đưc thì hàm thêm và tìm kiếm phn t có phi sa đi gì không?
| 1/2

Preview text:

Chương 6. Tìm kiếm nâng cao Bài 1. Inverted table
Giả sử chúng ta cần quản lý các bản ghi là thông tin về các khách hàng của một nhà mạng. Để cho dễ
quản lý thì người phụ trách muốn tên các khách hàng này được sắp theo thứ tự ABC. Tuy nhiên để đánh
giá hiệu quả của một chiến dịch marketing, lúc này ta lại cần sắp xếp các khách hàng theo thứ tự thời
gian đăng ký (index). Bên phòng hậu mãi cũng muốn sắp xếp khách hàng theo thứ tự tăng dần số điện
thoại để tiện cho việc liên lạc với các khách hàng.
Chúng ta sẽ tổ chức các thông tin này như thế nào để cho tiện, và cũng để tiết kiệm bộ nhớ, chúng ta
không muốn phải lưu trữ lại các bản ghi này.
Index Name Address Phone
Hill, Thomas M. High Towers #317 2829478 Baker, John S. 17 King Street 2884285 Roberts, L. B. 53 Ash Street 4372296 King, Barbara High Towers #802 2863386
Hill, Thomas M. 39 King Street 2495723 Byers, Carolyn 118 Maple Street 4394231 Moody, C. L. High Towers #210 2822214
Bài 2. Chứng minh rằng trong phương pháp khắc phục đụng độ bằng đánh địa chỉ mở dùng dò toàn phương
với hàm băm là ℎ = 𝑘%𝑚 trong đó 𝑚 là số nguyên tố thì chỉ có ½ phần tử trong bảng băm được dò.
Bài 3. Viết hàm thêm phần tử vào bảng băm khắc phục đụng độ bằng đánh địa chỉ mở dùng dò toàn phương
Bài 4. Viết hàm tìm kiếm phần tử trong bảng băm khắc phục đụng độ bằng đánh địa chỉ mở dùng dò toàn phương
Bài 5. Trong trường hợp khóa là các giá trị nguyên, nếu chúng ta sử dụng hàm băm sau thì có vấn đề gì?
a. ℎ = (𝑖𝑛𝑡)sin (𝑘)
b. ℎ = (𝑖𝑛𝑡)exp (𝑘)
Bài 6. Cho các khóa là các xâu gồm 3 k í tự sau PAL LAP PAM MAP PAT PET SET SAT TAT BAT
Hãy xây dựng một hàm băm đơn giản để ánh xạ chúng vào một bảng băm kích thước 𝑛 trong các
trường hợp giá trị của 𝑛 là: 11, 13, 17, 19
Hãy xây dựng hàm băm sao cho số đụng độ ít nhất có thể.
Bài 7. Cho bảng băm kích thước 13, và các khóa là 10 100 32 45 58 126 3 29 200 400 0
a. Trong trường hợp dùng hàm băm ℎ = 𝑘%13 hãy xác định số lượng đụng độ với dãy khóa trên
b. Trước khi chia modulo cho 13 ta cộng giá trị các chữ số của khóa lại thì số lượng đụng độ là bao
nhiêu? Ví dụ với khóa có 3 chữu số abc thì hàm băm là ℎ = (𝑎 + 𝑏 + 𝑐)%13
c. Tìm một hàm băm hoàn hảo cho dãy khóa trên. Hàm băm hoàn hảo là hàm băm mà không xảy ra
đụng độ trên dãy khóa.
d. Hãy tìm một hàm băm hoàn hảo trong trường hợp kích thước bảng băm là 11
Bài 8. Một phương pháp khác phục đụng độ khác là dùng một bảng phụ để chứa các khóa mà bị đụng độ.
Các khóa trong bảng phụ có thể được lưu trữ theo kiểu 1 bảng băm phụ, hoặc đơn giản là lưu trữ tuần
tự. Hãy mô tả ưu nhược điểm của phương pháp này.
Bài 9. Hãy cài đặt các hàm thêm, xóa, và tìm kiếm phần tử trong trường hợp bảng băm đánh địa chỉ đóng dùng xích ngăn cách.
Bài 10. Viết hàm xóa trong trường hợp bảng băm đánh địa chỉ mở dùng dò tuyến tính. Ta phải dùng một dấu
hiệu đặc biệt để đánh dấu phần tử đã bị xóa (phương pháp xóa trễ - lazy deletion).
Bài 11. Trong trường hợp hợp bảng băm đánh địa chỉ mở dùng dò tuyến tính, có cách nào khác để xóa phần
tử mà không phải dùng một giá trị đặc biệt để đánh dấu phần tử đó bị xóa hay không? Nếu trong trường
hợp xây dựng được thì hàm thêm và tìm kiếm phần tử có phải sửa đổi gì không?