You are on page 1of 2

Student Name: Student’s ID:

CSD201 - Hashing
Câu 1. Chọn thuật ngữ tiếng Việt và tiếng Anh tương ứng: (3 phút)
Thuật ngữ tiếng Việt English Terminologies Trả lời
1. Băm A. Key
2. Hàm băm B. Hashing Function
3. Bảng băm C. Hashing
4. Khóa D. Collision
5. Đụng độ E. Probe
6. Thăm dò F. Coalesced chain
7. Chuỗi kết hợp G. Hashing Table
Câu 2. Xây dựng bảng băm và giải quyết đụng độ: (60 phút)
Có các khóa sau:24562 ,137456 , 214562 ,140145 , 214576 , 162145 ,144467 , 199645 ,234534 . Bảng để lưu các
khóa băm có 19 phần tử.
1. Dùng kỹ thuật chia lấy dư để xây dựng hàm băm:
a. Vẽ bảng băm kết quả nếu sử dụng kỹ thuật thăm dò tuyến tính 1 đơn vị để xử lý đụng độ.
b. Vẽ bảng băm kết quả nếu sử dụng danh sách liên kết để lưu trữ các khóa đụng độ.
c. So sánh số lần đụng độ câu a và câu b, bạn có nhận xét gì về cách giải quyết đụng độ?
2. Dùng kỹ thuật tách ký số thứ nhất, thứ ba và thứ năm trong dãy số để xây dựng hàm băm và:
a. Dùng kỹ thuật thăm dò bậc hai để giải quyết đụng độ.
b. Dùng danh sách liên kết để lưu các khóa đụng độ.
c. So sánh kết quả đạt được với kết quả của câu a và b.
3. Dùng kỹ thuật tính bình phương và chọn 2 ký số chính giữa dãy số để xây dựng hàm băm và:
a. Băm lần thứ hai dùng phương pháp sinh khóa ngẫu nhiên khi có đụng độ nhờ công thức:
f (h(key))=(h(key)∗a+c )MOD 19+1, với a=3 , c=−1.
b. Dùng kỹ thuật độ dời dựa trên khóa (key-offset) để giải quyết đụng độ nhờ công thức:
Offset =key /listSize
newAddress=(CollisionAddress+ Offset) MOD listSize
c. So sánh kết quả đạt được với kết quả của câu a và b.
Câu 3. Giả sử ta có dãy khóa sau: 12 ,24 , 36 , 48 , 60 ,72 , 84. Bảng băm có 3 buckets. Mỗi buckets có thể chứa
được 2 khóa băm và có thêm một danh sách liên kết chứa được 3 khóa đụng độ. Vấn đề gì xảy ra khi tiến
hành băm các khóa trên. Việc này có làm cho thuật toán băm “gặp sự cố” gì không? Giải thích? Bạn có đề
xuất gì trong trường hợp này?
Câu 4. Các đoạn mã giả trong bảng sau làm thao tác gì?
Algorithm VinhVo1 (T <array>, k <key>) Algorithm VinhVo2 (T <array>, k <key>)
1 i = 0 1. i = 0
2 loop(i < m) # m là kích thước bảng băm 2. loop (i < m) # m là kích thước bảng băm
1. j = hp(k, i) 1. j = hp(k, i)
2. if (T[j] = nil) 2. if (T[j] = k)
1. T[j] = k 1. return j
2. return j 3. else if (T[j] = nil)
3. else 1. return nil
1. i = i + 1 4. else
3 return error: “hash table overflow” 1. i = i + 1
End VinhVo1 3. return nil
End VinhVo2
Câu 5. Bảng băm có kích thước là 7. Lần lượt băm các giá trị sau từ trái sang phải: 24, 34, 39, 31, 22, 40, 77
theo hàm h(k )=k mod 7 (mod: chia lấy dư).
1. Vẽ bảng băm kết quả nếu lưu trữ con trỏ đến danh sách liên kết chứa giá trị đụng độ.
2. Vẽ bảng băm kết quả nếu dùng kỹ thuật thăm dò tuyến tính (linear probing) bằng cách tăng 1 đơn vị
đến khi tìm được vị trí thích hợp để giải quyết đụng độ.
Câu 6. *Thuật toán băm được đề xuất bởi Bell and Kaman 1970:
Gọi Q và R là phần nguyên và phần dư khi chia giá trị khóa K cho TSize (kích thước bảng băm). Kỹ thuật thăm
dò tuyến tính dùng để giải quyết đụng độ được cho bởi hệ thức hồi quy sau:
hi (K )=
{ R , nếu i=0
( hi−1 ( K ) +Q ) mod TSize , ngược lại
a. TSize nên là một số có tính chất gì?
b. Q nên thỏa mãn điều kiện gì?

Câu 7. Bạn có biết?


1. Các tập tin của được máy tính lưu trữ trên các thiết bị lưu trữ bền vững như thế nào?
2. Mối quan hệ giữa Hashing và Indexing (đánh chỉ mục).
3. Các cấu trúc dữ liệu liên quan đến hiệu suất lưu trữ và truy xuất file như cây B+?
4. Kỹ thuật lưu trữ và truy cập đĩa làm tăng hiệu suất chương trình khi thao tác trên thiết bị lưu trữ thứ cấp
gọi là RAID (Redundant Arrays of Inexpensive Disks) được sử dụng rộng rãi.

Những chủ đề này bạn có thể tìm đọc trong:


1. Chương 13 và chương 14: Database Systems: The Complete Book, bản số 2, của nhóm tác giả Hector
Garcia-Molina, Jeffrey D. Ullman, và Jennifer Wisdom - Khoa Khoa học máy tính - Đại học Stanford.
Nhóm này là “trùm” trên thế giới về Database Systems hiện nay. Thông tin thêm: ít ai dám đặt tên sách
về chủ đề nào đó là “The Complete Book” trừ khi họ cực kỳ xuất sắc và toàn giác về lĩnh vực đó. Ngoài
ra, cô Jennifer Wisdom còn có khóa dạy online miễn phí về Database Systems trên
http://www.coursera.org. Tuy khóa học là miễn phí nhưng tác giả đầu tư rất nghiêm túc. Ai muốn đạt
chuẩn quốc tế và muốn học các khóa của đại học Stanford tại Việt Nam thì tìm lên đó mà học. Rất nhiều
course thuộc nhiều ngành đang chờ đợi các bạn đăng ký tham gia.
2. Chương 17 và chương 18: Fundamentals of Database Systems, bản số 6, của tác giả Elmasri Navathe.
Hai quyển này rất nổi tiếng và gần như đầy đủ những chủ đề quan trọng nhất về Cơ Sở Dữ Liệu. Cả hai
quyển đều được tác cung cấp miễn phí trên Internet. Sách có thể giúp rất nhiều môn mà cụ thể nhất là Cơ Sở
Dữ Liệu, cao hơn nữa là Hệ Quản Trị Cơ Sở Dữ Liệu, Bảo Mật Cơ Sở Dữ Liệu, Cơ Sở Dữ Liệu Phân Tán -
Hướng Đối Tượng, vân vân. Rất nhiều trường lớn trên thế giới sử dụng hai quyển này làm giáo trình chính
trong dạy và học.

You might also like