Review dạng đề thi cuối kỳ môn Cấu trúc Dữ liệu & Giải thuật Nội dung nổi bật trong tài liệu: Tổng quan cấu trúc đề thi DSA: Trắc nghiệm, điền khuyết, lập trình, câu khó dành cho học sinh giỏi. Phân tích & phân bổ điểm chi tiết theo từng chủ đề: Tìm kiếm & Sắp xếp (Binary Search, Quick/Insertion/Merge Sort) Cây nhị phân & BST: Duyệt cây, đếm lá, tính độ cao, xóa nút,... Cây B-Tree: Thêm/xóa khóa, vẽ cây sau thao tác Hash Table: Các phương pháp xử lý xung đột (Linear/Quadratic probing, Double Hashing, Separate chaining) Đồ thị: BFS, DFS, tìm đường đi, code minh họa chi tiết Stack & Queue: Cài đặt & ứng dụng duyệt cây/đồ thị Code mẫu: Cài đặt các thuật toán tìm kiếm, sắp xếp, thao tác trên cây, bảng băm, đồ thị Câu hỏi luyện tập nâng cao: Giảm độ phức tạp thuật toán, tối ưu lựa chọn chiến lược Phù hợp với: Sinh viên đang học/ôn thi CTDL & GT Định dạng: File PDF | Dung lượng ~2MB | Ngôn ngữ: Tiếng Việt
Trang 1Review
Trang 22Hình thức: Trắc nghiệm/Điền khuyết + Tự luận
Thời gian: 90 phút
Trang 51) Cho đoạn code, hỏi BigO?
2) Thứ tự độ phức tạp của vài thuật toán trong một điều kiện
nhất định?
3) Chọn thuật toán (sắp xếp/ tìm kiếm) nào để cài đặt, cho
biết vì sao?
4) Cài đặt Selection, Insertion, Quick sort,
5) Các bài toán liên quan đến duyệt cây nhị phân và cây nhị
phân tìm kiếm, chẳng hạn, độ cao cây, các nút ở mức i, tính
tổng khóa thỏa điều kiện, đếm lá, v.v…
6) Thêm, xóa khóa trên BST.
Trang 67) Thêm, xóa, khóa trên B-tree.
8) Thêm, xóa, tìm khóa trên bảng băm.
9) Cho các điều kiện, hỏi hàm băm
10) Cho đồ thị, hỏi quá trình thực hiện để tìm đường đi từ A
đến B theo BFS, DFS.
11) Cài đặt code để giải một bài toán sử dụng BFS hoặc DFS.
12) Dùng stack và queue để cài đặt hàm giải quyết các bài
toán có dạng duyệt cây nhị phân, cây nhị phân tìm kiếm, đồ
thị, ….
Trang 77
Trang 8Nếu dùng thuật toán Insertion Sort (Chèn trực tiếp) để sắp xếp một dãy sốtăng dần, thì khi hoàn thành việc sắp xếp mảng A={3,2,4,5,1,5}, số lầndịch chuyển phần tử sang phải một vị trí là bao nhiêu?
Đáp án: 5
Trang 9Xét độ phức tạp theo BigO, thuật toán tìm nhị phân tốt hơn thuật toán tìm
tuyến tính, vì sao?
Vì thuật toán tìm nhị phân có độ phức tạp O(logn), thấp hơn
độ phức tạp của thuật toán tìm tuyến tính O(n)
Trang 10Thuật toán tìm nhị phân với thứ tự tăng dần sẽ có kết quả tìm khóa 4 trong
mảng gồm các khóa 1, 2, 3, 4, 5, 6, 7, 8, 9 sau bao nhiêu lần so sánh giá
trị khóa?
Đáp án: 4
Trang 1111 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 12Các thuật toán sắp xếp nào, trong số các thuật toán insertion sort, heap
sort, merge sort và quick sort, được thiết kế theo chiến lược chia để trị?
Merge Sort, Quick Sort
Trang 13a Heap Sort, Quick Sort
b Heap sort vì đã có sẵn heap min
Quick sort vì luôn chọn được phần tử trung vị hoặc gần
trung vị khi lấy pivot là phần tử giữa mảng
Trang 1414
Trang 15Cho biết kết quả duyệt cây tìm kiếm RNL, NRL
Trang 1616Viết hàm đếm số nút có 2 con trên cây nhị phân tìm kiếm
Trang 17Hỏi khóa 7 xuất hiện ở vị trí thứ mấy (vị trí
đầu tiên là 0) trong kết quả duyệt LNR?
Đáp án: 5
Trang 1818Hỏi mức nào trên cây có tổng giá trị khóa cao nhất?
Đáp án: 2
Trang 19Xóa khỏi cây lần lượt các nút 8, 11, 43, 6 (vẽ hình
từng trường hợp) sao cho cây vẫn là cây nhị phân
tìm kiếm sau khi xoá nút
Trang 2020Chức năng của Hàm dùng để?
In các nút trên cây có duy nhất 1 con
Trang 2121
Trang 25Đáp án: 7
Trang 2626
Trang 2727 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
CÁC DẠNG HÀM BĂM
Một họ các hàm băm H được gọi là phổ quát nếu với
hai khóa x ≠ y bất kỳ thì số lượng hàm băm hH có
h(x) = h(y) không vượt quá |H|/m.
Nếu hàm băm hH thì xác suất xảy ra đụng độ khi sử
dụng hàm băm h không vượt quá 1/m.
Trang 2828 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
- a, b là hai số tự nhiên tùy ý, 1 ≤ a ≤ p-1, 0 ≤ b ≤ p-1
- p là số nguyên tố lớn hơn tất cả các giá trị khóa
Trang 2929 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 3030 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 3131
Trang 3434 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
- Vị trí của phần tử được tìm hoặc -1 nếu gặp lỗi.
Ký hiệu DELETED và NIL được dùng để đánh dấu vị
trí đã được xóa và vị trí trống
Trang 3535 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 3636 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 3737 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 3838 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 3939 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4040 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4141 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4242 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4343 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4444 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4545 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 4646 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Code tham khảo theo cách Tìm nhị phân
Trang 4747 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Code tham khảo theo cách kiểm tra 2 phần tử liên tiếp
Trang 4848 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Code tham khảo theo cách kiểm tra phần tử cuối của r
Trang 4949 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN, KHU PHỐ 6, PHƯỜNG LINH TRUNG, QUẬN THỦ ĐỨC, TP HỒ CHÍ MINH
[T] 08 3725 2002 101 | [F] 08 3725 2148 | [W] www.uit.edu.vn | [E] info@uit.edu.vn
Trang 5050
Trang 53Hoặc ma trận trọng số
Trang 5454
Trang 69Các phương pháp giải quyết xung đột
Các phương pháp giải quyết xung đột chủ yếu:
Kết nốitrực tiếp
Kết nốihợp nhất
Trang 70Khi xảy ra xung đột, khóa mới được thêm vào danh sách
tương ứng theo quy tắc tăng dần
Trang 71Phương pháp Băm Kết nối hợp nhất ( coalesced Chaining )
Băm kết nối hợp nhất là một kỹ thuật tránh va chạm khi có dữ liệu có kích
thước cố định Nó là sự kết hợp của cả chuỗi riêng biệt ( separate chaining )
và địa chỉ mở ( open addressing ) :
+ Sử dụng khái niệm địa chỉ mở dò tuyến tính ( linear probing )để tìm vị trí trống
đầu tiên cho phần tử va chạm từ cuối bảng băm
+ Chuỗi riêng biệt để liên kết các phần tử va chạm với nhau thông qua các con trỏ
Trang 72Các hoạt động cơ bản của băm kết hợp là:
3 TÌM KIẾM(key): Tìm khoá key theo giá trị băm của key đó Dò theo trường
next của node nếu vẫn chưa tìm thấy khoá key Nếu trường next của node không
lưu địa chỉ của node nào khác ( node cuối cùng ), ta dừng việc tìm kiếm.
2 DELETE(Key): Key nếu có sẽ bị xóa Ngoài ra, nếu nút bị xóa chứa địa chỉ của nút
khác trong bảng băm thì địa chỉ này được ánh xạ trong trường NEXT của nút trỏ đến
nút sẽ bị xóa Nếu nút nằm ở đầu danh sách thì dịch danh sách lên 1 bậc
1 INSERT(key): chèn key theo giá trị băm của key đó nếu giá trị băm đó trong bảng
trống , ngược lại, key được chèn vào vị trí trống đầu tiên từ cuối bảng băm và địa chỉ
của ô trống này được ánh xạ trong trường NEXT của nút trỏ trước đó của chuỗi.
Trang 73Cấu trúc bảng băm trong Phương pháp kết nối hợp nhất :
Bảng băm trong trường hợp này đựợc cài đặt bằng mảng có M nút
Khởi động bảng băm: tất cả trường key được gán NULL, tất cả trường next được gán -1
Trường next : con trỏ chỉ node kế tiếp nếu có xung đột Trường key : chứa các khóa node
Mỗi nút của bảng băm là một mẫu tin có 2 trường :
Trang 74Open Addressing
< Băm địa chỉ mở>
Trang 75Tư tưởng : Nếu xảy ra xung đột, kĩ thuật này sẽ dùng hàm băm lại
𝐻𝑖(𝑘𝑒𝑦) để dò tìm vị trí lưu mới, với i là lần băm lại thứ i
Hàm băm lại có dạng tổng quát : 𝐻𝑖 𝑘𝑒𝑦 = 𝐻 𝑘𝑒𝑦 + 𝑃 𝑥 % 𝑀
Trong đó:
H(key) : là hàm băm chính
i : là lần băm lại thứ i
P(x) : là hàm bất kì để xác định vị trí mới khi kết hợp với hàm H(key)
M : là kích thước của bảng băm
Chú ý: Việc tìm hàm P(x) phù hợp rất quan trọng, vì nếu không, giá trị
của 𝐻𝑖 𝑘𝑒𝑦 có thể bị rơi vào vòng lặp ( Infinity Loop ) Ta sẽ nói rõ hơn trong
từng phương pháp
Trang 76Phương pháp Thăm dò tuyến tính ( Linear Probing)
Thăm dò tuyến tính là 1 trong các cách giải quyết xung đột của Kĩ thuật Open Addressing
… M-1
NULL
NULL
Cấu trúc dữ liệu: Bảng băm trong trường hợp này được cài đặt bằng mảng có M phần tử, mỗi phần tử của bảng băm là một mẫu tin có một trường key để chứa khoá của phần tử
Trang 77H(key) = [ H(key) + (ai + b) ] % M
với H(key) là hàm băm chính của bảng băm.
Phương pháp Thăm dò tuyến tính ( Linear Probing)
Hàm băm lại của phương pháp dò tuyến tính là truy xuất địa chỉ kế tiếp Hàm băm
lại lần i được biểu diễn bằng công thức sau:
P(x) = P(i) = ai + b Chú ý: Ta có điều kiện để sử dụng hàm băm lại là UCLN( a, M ) = 1 để tránh rơi vào trường hợp
lặp vô hạn như đã nói Giải quyết vấn đề này, ta có thể chọn a = 1 hoặc M là số nguyên tố
Trang 78Thêm phần tử có khoá key vào bảng băm, hàm băm H(key) sẽ xác định địa chỉ i
trong khoảng từ 0 đến M-1:
Tìm kiếm một phần tử có khoá key trong bảng băm, hàm băm H(key) sẽ xác định địa
chỉ i trong khoảng từ 0 đến M-1, tìm phần tử khoá key xuất phát từ địa chỉ i đến các
phần tử kế tiếp
Phương pháp Thăm dò tuyến tính ( Linear Probing)
- Nếu bị xung đột thì hàm băm lại lần 1, hàm H1 sẽ xét địa chỉ kế tiếp, nếu lại bị xung đột thì hàm băm thì hàm băm lại lần 2, hàm H2 sẽ xét địa chỉ kế tiếp nữa, …, và quá trình cứ thế cho đến khi nào tìm được địa chỉ trống và thêm phần tử mới vào địa chỉ này
- Nếu chưa bị xung đột thì thêm phần tử mới vào địa chỉ này
Trang 79NULL NULL NULL
NULL NULL NULL NULL
Hash Table 20
Lưu ý : việc thăm dò sẽ quay lại đầu bảng nếu
đã dò đến cuối bảng Nếu địa chỉ băm bị
lặp lại, ta dừng thuật toán
Trang 80Nhìn chung, thăm dò tuyến tính là một phương pháp đơn giản
và hiệu quả để xử lý xung đột trong bảng băm và nó có thể được
sử dụng trong nhiều ứng dụng yêu cầu lưu trữ và truy xuất dữ
liệu hiệu quả
Những thách thức trong thăm dò tuyến tính:
• Phân cụm chính: Một trong những vấn đề với thăm dò tuyến
tính là phân cụm chính, nhiều phần tử liên tiếp tạo thành các nhóm
và bắt đầu mất thời gian để tìm một vị trí trống hoặc tìm kiếm một
phần tử.
• Phân cụm thứ cấp : Phân cụm thứ cấp ít nghiêm trọng hơn, hai
bản ghi chỉ có cùng một chuỗi va chạm (Trình tự thăm dò) nếu vị trí
ban đầu của chúng giống nhau
Trang 81Phương pháp Dò bậc 2 (Quadratic Probing)
Như đã nói ở trên, Bảng băm dùng phương pháp dò tuyến tính bị hạn chế do rải
các phần tử không đều Thay vào đó, sử dụng phương pháp dò bậc hai rải các
phần tử đều hơn.
Với phương pháp Dò Bậc 2 , Bảng băm trong trường hợp này cũng được cài đặt bằng mảng có M phần tử, mỗi phần tử của bảng băm là một mẫu tin có một trường key để chứa khóa các phần tử.
Khi khởi động bảng băm thì tất cả trường key bị gán NULL
Trang 82Ta thường sử dụng 3 loại hàm P(x) để tạo hàm
băm lại cho phương pháp dò bậc 2 :
P(x) = 𝑥2 ĐK: M là SNT > 3 và 𝛼 ≤ 0.5
P(x) = 𝑥
2 +𝑥
2 ĐK: M = 2𝑦 (∀ y ϵ 𝑁∗)P(x) = (−1)𝑥 𝑥2 ĐK: M là SNT và M % 4= 3
Trang 84Phương pháp Dò bậc 2 (Quadratic Probing)
Thao tác insert : Khi thêm nút có khóa key vào bảng băm, hàm băm H(key) sẽ xácđịnh địa chỉ i trong khoảng từ 0 đến M-1
◼ Nếu chưa bị xung đột thì thêm nút mới vào địa chỉ i này
◼ Nếu bị xung đột thì hàm băm lại lần 1, f1 sẽ xét địa chỉ cách i 12 đơn vị,
nếu lại bị xung đột thì hàm băm lại lần 2, f2 sẽ xét địa chỉ cách i 22 ,…, quá trình cứ thế cho đến khi nào tìm được trống và thêm nút vào địachỉ này
Thao tác search :Khi tìm môt nút có khóa key trong bảng băm thì xét nút tại địa chỉi=H(key), nếu chưa tìm thấy thì xét nút cách i 12,22,…,quá trình cứ thế cho đến khi
tìm được khóa (trường hợp tìm thấy) hoặc rơi vào địa chỉ trống(trường hợp không
tìm thấy)
Trang 85NULL NULL
NULL NULL
NULL NULL
Trang 86Nhận xét:
Nên chọn số địa chỉ M sao cho phù hợp với từng công thức.
Bảng băm đầy khi N=M-1 và nên dành ra ít nhất 1 chỗ trống
Phương pháp Dò bậc 2 tối ưu hơn phương pháp dò tuyến tính do rải rác các phần tử đều hơn.
Trường hợp tốt nhất khi truy xuất là O(1) -> không có xung đột
Trường hợp xấu nhất khi truy xuất là O(N) -> khi bảng băm đầy
Trang 87Phương pháp Băm kép ( Double hashing )
Mục đích của phương pháp này cũng để phân rải các phần tử đều hơn trong bảng băm
Phương pháp Băm kép cũng là 1 phương pháp giải quyết xung đột trong kĩ thuật
Trang 882 hàm băm 𝐻1(𝑥) và 𝐻2(𝑥) thường được sử dụng là:
𝐻1(𝑥) = key % M
𝐻2(𝑥) = P – ( key % P ) với P là số nguyên tố nhỏ hơn M
Hàm 1 vẫn là 1 hàm băm quen thuộc
Hàm 2 tốt khi : - Nó không được trả về giá trị 0
- Chỉ cần đảm bảo rằng tất cả các ô có thể thăm dò
Băm kép giải quyết xung đột bằng cách sử dụng hàm băm lại:
𝐻_𝑣𝑎𝑙𝑢𝑒𝑖 = [ 𝐻1 𝑥 + i* 𝐻2(𝑥) ] % M
Trang 89Cách hoạt động của phương pháp Băm kép :
Bảng Băm của Băm kép cũng là mảng có M phần tử, mỗi phần tử là 1 node
gồm trường key ( M là số nguyên tố )
Khởi tạo ban đầu, các trường key của từng phần tử có giá trị NULL
Khi thêm phần tử có khoá k vào bảng băm, ta tính lần lượt các giá trị băm a = 𝐻1(𝑘)
và b = 𝐻2 𝑘 ( a,b = [0,M-1] )
+ Nếu tại a không xảy ra xung đột, ta thêm khoá mới vào vị trí này
+ Nếu xảy ra xung đột, ta dò tìm vị trí mới bằng hàm băm lại
𝐻_𝑣𝑎𝑙𝑢𝑒𝑖 = [ 𝑎+ i* 𝑏] % M
Trang 90NULL NULL
NULL NULL
NULL NULL
6 7 1
2 10
NULL 44
3
8
60 NULL
Trang 91Ưu điểm :
- Đây là một trong những hình thức thăm dò tốt nhất, tạo ra
sự phân phối đồng đều của các khoá trong bảng băm
- Phương pháp này không mang lại bất kì cụm khoá nào, tỉ lệ
xung đột thấp
→ Một trong những phương pháp giải quyết xung đột hiệu quả
1 số lưu ý :
- Băm kép yêu cầu sử dụng 2 hàm băm, điều này có thể làm
tăng độ phức tạp tính toán của thao tác chèn và tìm kiếm
- Việc lựa chọn hàm băm phải tốt để đạt được hiệu suất cao
Nếu hàm băm không tốt, tỉ lệ va chạm vẫn có thể cao
- Tốn bộ nhớ hơn
Nhận xét