Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

32 55 0
Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

Đ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

Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm cung cấp cho người học các kiến thức: Giới thiệu bài toán, hàm băm, các phương pháp xử lý đụng độ. Mời các bạn cùng tham khảo nội dung chi tiết.

BẢNG BĂM Nội dung • Giới thiệu tốn • Hàm băm • Các phương pháp xử lý đụng độ ĐẶT VẤN ĐỀ • Cho S tập hợp n phần tử cấu trúc liệu đặc trưng giá trị khóa • Tìm phần tử có hay khơng S – Tìm tuyến tính (O(n)), chưa xếp – Tìm nhị phân (O(log2n)), xếp • Có hay thuật tốn tìm kiếm với O(1) – Có, song ta phải tổ chức lại liệu – Dữ liệu tổ chức lại Bảng băm Giới thiệu Bảng Băm • Là CTDL phần tử lưu trữ cho việc tìm kiếm thực cách truy xuất trực tiếp thơng qua từ khóa • Bảng băm có M vị trí đánh mục từ đến M-1, M kích thước bảng băm • Các phương pháp băm: – PP kết nối trực tiếp – PP kết nối hợp – PP dị tuyến tính – PP dò bậc – PP băm kép Hàm băm (Hash functions) • Hàm băm: biến đổi khóa thành mục bảng băm – Khóa dạng số hay dạng chuỗi – Chỉ mục tính từ M-1, với M số mục bảng băm – Hàm băm thường dùng: key % M, với M độ lớn bảng băm • Hàm băm tốt phải thoả yêu cầu – Giảm thiểu xung đột – Phân bố M địa khác bảng băm Mơ tả liệu • K: tập khố (set of keys) • M: tập địa (set of addresses) • HF(k): hàm băm dùng để ánh xạ khoá k từ tập khoá K thành địa tương ứng tập M Thông thường HF(k) = k mod M Ưu điểm bảng băm • Dung hịa tốt thời gian truy xuất dung lượng nhớ – Nếu không giới hạn nhớ: one-to-one, truy xuất tức – Nếu dung lượng nhớ có giới hạn tổ chức số khóa có địa chỉ, lúc thời gian truy xuất có bị suy giảm đơi chút • Bảng băm ứng dụng nhiều thực tế, thích hợp tổ chức liệu có kích thước lớn lưu trữ ngồi Cách xây dựng bảng băm • Dùng hàm băm để ánh xạ khóa K vào vị trí bảng băm Vị trí địa tìm kiếm • Bảng băm thường mảng, danh sách liên kết, file(danh sách đặc) Ví dụ bảng băm đơn giản • Khóa k lưu trữ vị trí k mod M (M kích thước mảng) • Ví dụ: Thêm phần tử x = 95 vào mảng M=10 95 mod 10 = 5 95 Ví dụ bảng băm đơn giản • Với giá trị: 31, 10, 14, 93, 82, 95,79,18, 27, 46 10 31 82 93 14 95 46 27 18 79 10 Sử dụng DS liên kết (nối kết trực tiếp) • Các nút bị băm địa (các nút bị xung đột) gom thành danh sách liên kết • Các nút bảng băm băm thành danh sách liên kết Các nút bị xung đột địa i nối kết trực tiếp với qua danh sach liên kết i 18 *Nhận xét PP DSLK có nhiều khuyết điểm: – Khi có q nhiều khố vào vị trí, DSLK vị trí dài => Tăng chi phí tìm kiếm – Các trống cịn dư nhiều => lãng phí thời gian tìm kiếm không gian lưu trữ 19 Sử dụng PP “nối kết hợp nhất” • Ý tưởng: “Nếu có khóa bị băm vào vị trí có phần tử chèn vào trống phía cuối mảng” (Dùng mảng có M phần tử) 20 Sử dụng PP “nối kết hợp nhất” • Bảng băm trường hợp đựợc cài đặt danh sách liên kết dùng mảng, có M nút Các nút bị xung đột địa nối kết qua danh sách liên kết • Mỗi nút bảng băm mẫu tin có trường: – Trường key: chứa khóa node – Trường next: trỏ node có xung đột • Khi khởi động bảng băm tất trường key gán NULL, tất trường next gán –1 Key next NULL -1 … … NULL -1 21 Sử dụng PP “nối kết hợp nhất” • Khi thêm nút có khóa key vào bảng băm,hàm băm f(key) xác định địa i khoảng từ đến M-1 – Nếu chưa bị xung đột thêm nút vào địa – Nếu bị xung đột nút cấp phát nút trống phía cuối mảng Cập nhật liên kết next cho nút bị xung đột hình thành danh sách liên kết • Khi tìm nút có khóa key bảng băm,hàm băm f(key) xác định địa i khoảng từ đến M-1, tìm nút khóa key danh sách liên kết xuất phát từ địa i 22 Ví dụ: nối kết hợp • Minh họa cho bảng băm có tập khóa tập số tự nhiên, tập địa có 10 địa (M=10) (từ địa đến 9), chọn hàm băm f(key) = key % 10 • Thêm Key=10, 42, 20,109 Key 10 Next -1 42 -1 … null -1 109 -1 20 23 Sử dụng PP “Dị tuyến tính” • Ý tưởng: “Nếu có khóa bị băm vào vị trí có phần tử chèn vào trống gần nhất” theo phía bên phải 24 Sử dụng PP “Dị tuyến tính” • Bảng băm trường hợp cài đặt danh sách kề có M nút, nút bảng băm mẫu tin có trường key để chứa khố nút • Khi khởi động bảng băm tất trường key gán NULL • Khi thêm nút có khố key vào bảng băm, hàm băm f(key) xác định địa i khoảng từ đến M-1: Null Null Null Null … Null M-1 Null 25 Sử dụng PP “Dị tuyến tính” • Thêm nút 32, 53, 22, 92, 17, 34, 24, 37, 56 vào bảng băm NULL NULL 32 53 NULL NULL NULL NULL NULL NULL NULL NULL 32 53 22 92 NULL NULL NULL NULL NULL NULL 32 53 22 92 34 17 NULL NULL NULL NULL 32 53 22 92 34 17 24 37 56 NULL 32 53 22 92 34 17 24 37 26 Sử dụng PP “Dị tuyến tính” • Hàm băm lại phương pháp dị tuyến tính truy xuất địa Hàm băm lại lần i biểu diên công thức sau: • f(key)=(f(key)+i) %M với f(key) hàm băm bảng băm • Lưu ý địa dị tìm địa dị đến cuối bảng Nhận xét: • Chúng ta thấy bảng băm tối ưu băm đều, tốc độ truy xuất lúc có bậc 0(1) • Trường hợp xấu băm không bảng băm đầy, lúc hình thành khối đặc có n nút tốc độ truy xuất lúc có bậc 0(n) 27 Ví dụ: • chèn dãy: 16 13 24 vào bảng băm có 11 vị trí 28 Sử dụng PP “Dị bậc hai” • Bảng băm dùng phương pháp dị tuyến tính bị hạn chế rải nút không đều,bảng băm với phương pháp dò bậc hai rải nút • Hàm băm lại phương pháp dò bậc hai truy xuất địa cách bậc • Hàm băm lại hàm fi biểu diễn công thức sau: – fi(key)=( f(key) + i2 ) % M – với f(key) hàm băm bảng băm • Nếu dị đến cuối bảng trở dị lại từ đầu bảng • Bảng băm với phương pháp dò bậc hai nên chọn số địa M số ngun tố 29 Ví dụ: • Cho hàm băm chính: F(k) = k mod 5, sử dụng PP “dị bậc hai” fi(key)=(f(key) + i2) % M • Thêm 6, 16 vào bảng băm sau: NULL NULL 16 21 21 NULL 18 18 NULL NULL 30 Thêm vào khóa 10 NULL 10, 15, 16, 20, 30, 25, ,26, 36 10 20 10 20 10 20 10 20 NULL NULL NULL NULL 36 NULL NULL NULL NULL NULL NULL NULL 30 30 30 15 15 16 16 NULL NULL 15 16 NULL 15 16 26 15 16 26 NULL NULL NULL NULL NULL NULL NULL 25 25 25 31 Sử dụng PP “Băm kép” • Ta sử dụng hàm băm: f1(key)= key % M f2(key)= (M–2) – key % (M-2) 32 ... từ khóa • Bảng băm có M vị trí đánh mục từ đến M-1, M kích thước bảng băm • Các phương pháp băm: – PP kết nối trực tiếp – PP kết nối hợp – PP dị tuyến tính – PP dị bậc – PP băm kép Hàm băm (Hash... functions) • Hàm băm: biến đổi khóa thành mục bảng băm – Khóa dạng số hay dạng chuỗi – Chỉ mục tính từ M-1, với M số mục bảng băm – Hàm băm thường dùng: key % M, với M độ lớn bảng băm • Hàm băm tốt phải... • Bảng băm ứng dụng nhiều thực tế, thích hợp tổ chức liệu có kích thước lớn lưu trữ ngồi Cách xây dựng bảng băm • Dùng hàm băm để ánh xạ khóa K vào vị trí bảng băm Vị trí địa tìm kiếm • Bảng băm

Ngày đăng: 31/10/2020, 15:22

Hình ảnh liên quan

BẢNG BĂM - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm
BẢNG BĂM Xem tại trang 1 của tài liệu.
– Dữ liệu được tổ chức lại là Bảng băm - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

li.

ệu được tổ chức lại là Bảng băm Xem tại trang 3 của tài liệu.
• Hàm băm: biến đổi khóa thành chỉ mục trên bảng băm  - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

m.

băm: biến đổi khóa thành chỉ mục trên bảng băm Xem tại trang 5 của tài liệu.
Ví dụ một bảng băm đơn giản - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

d.

ụ một bảng băm đơn giản Xem tại trang 9 của tài liệu.
Ví dụ một bảng băm đơn giản - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

d.

ụ một bảng băm đơn giản Xem tại trang 10 của tài liệu.
Tìm kiếm trên bảng băm - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

m.

kiếm trên bảng băm Xem tại trang 11 của tài liệu.
• Giả sử thêm 55 vào bảng băm sau: - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

i.

ả sử thêm 55 vào bảng băm sau: Xem tại trang 13 của tài liệu.
Vấn đề nảy sinh - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

n.

đề nảy sinh Xem tại trang 13 của tài liệu.
– Thêm 6, 16 vào bảng băm sau: - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

h.

êm 6, 16 vào bảng băm sau: Xem tại trang 17 của tài liệu.
• Các nút trên bảng băm được băm thành các danh sách liên kết. Các nút bị xung đột tại địa chỉ i được nối kết  trực tiếp với nhau qua danh sach liên kết i - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

c.

nút trên bảng băm được băm thành các danh sách liên kết. Các nút bị xung đột tại địa chỉ i được nối kết trực tiếp với nhau qua danh sach liên kết i Xem tại trang 18 của tài liệu.
• Minh họa cho bảng băm có tập khóa là tập số tự nhiên,  tập địa chỉ có 10 địa chỉ  - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

inh.

họa cho bảng băm có tập khóa là tập số tự nhiên, tập địa chỉ có 10 địa chỉ Xem tại trang 23 của tài liệu.
• Bảng băm trong trường hợp này được cài  đặt  bằng  danh  sách  kề  có  M  nút,  mỗi 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  nút - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

Bảng b.

ăm trong trường hợp này được cài đặt bằng danh sách kề có M nút, mỗi 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 nút Xem tại trang 25 của tài liệu.
• Thêm 6, 16 vào bảng băm sau: - Bài giảng Phân tích thiết kế và giải thuật - Chương 4: Bảng băm

h.

êm 6, 16 vào bảng băm sau: Xem tại trang 30 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan