1. Trang chủ
  2. » Công Nghệ Thông Tin

Review 2025 dsa test

116 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Review 2025 DSA Test
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài kiểm tra
Năm xuất bản 2025
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 116
Dung lượng 4,02 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

Review

Trang 2

2Hình thức: Trắc nghiệm/Điền khuyết + Tự luận

Thời gian: 90 phút

Trang 5

1) 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 6

7) 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 7

7

Trang 8

Nế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 9

Xé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 10

Thuậ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 11

11 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 12

Cá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 13

a 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 14

14

Trang 15

Cho biết kết quả duyệt cây tìm kiếm RNL, NRL

Trang 16

16Viết hàm đếm số nút có 2 con trên cây nhị phân tìm kiếm

Trang 17

Hỏ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 18

18Hỏi mức nào trên cây có tổng giá trị khóa cao nhất?

Đáp án: 2

Trang 19

Xó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 20

20Chứ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 21

21

Trang 25

Đáp án: 7

Trang 26

26

Trang 27

27 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 hH có

h(x) = h(y) không vượt quá |H|/m.

Nếu hàm băm hH 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 28

28 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 29

29 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 30

30 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 31

31

Trang 34

34 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 35

35 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 36

36 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 37

37 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 38

38 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 39

39 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 40

40 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 41

41 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 42

42 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 43

43 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 44

44 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 45

45 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 46

46 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 47

47 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 48

48 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 49

49 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 50

50

Trang 53

Hoặc ma trận trọng số

Trang 54

54

Trang 69

Cá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 70

Khi 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 71

Phươ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 72

Cá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 73

Cấ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 74

Open Addressing

< Băm địa chỉ mở>

Trang 75

Tư 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 76

Phươ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 77

H(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 78

Thê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 79

NULL 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 80

Nhì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 81

Phươ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 82

Ta 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 84

Phươ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 85

NULL NULL

NULL NULL

NULL NULL

Trang 86

Nhậ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 87

Phươ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 88

2 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 89

Cá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 90

NULL 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

Ngày đăng: 11/07/2025, 11:29

HÌNH ẢNH LIÊN QUAN

Bảng băm mới - Review 2025 dsa test
Bảng b ăm mới (Trang 101)
w