Tiểu luận phân tích và thiết kế thuật toán BẢNG BĂM HASH TABLES

67 1.6K 3
Tiểu luận phân tích và thiết kế thuật toán BẢNG BĂM HASH TABLES

Đ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ẢNG BĂM (HASH TABLES) Nhóm 1: Trần Ngự Bình Tô Thanh Hải Trần Văn Long Đoàn Thị Thu Minh Vũ Đức Tuấn Mục tiêu  Hiểu được cơ sở lý thuyết về cấu trúc dữ liệu Bảng băm  Áp dụng cho các bài toán hỗ trợ các phép toán chính trên từ điển: Chèn, Xóa, Tìm kiếm Nội dung  Bảng địa chỉ trực tiếp  Bảng băm  Hàm băm  Giải quyết xung đột: Dây chuyền & Định địa chỉ mở  Kỹ thuật băm hoàn hảo Mở đầu: Một số khái niệm  Tập hợp động (dynamic sets): tập hợp thường xuyên thay đổi  Tập hợp động hỗ trợ các phép toán chèn, tìm kiếm, xóa gọi là một từ điển  Bảng băm là một cấu trúc dữ liệu phù hợp với các từ điển Từ điển StarDict Bảng địa chỉ trực tiếp (direct-address tables)  Bài toán: 9  0  7  1  4  6  2  3  5  8  U K - |U| không quá lớn - Không có 2 phần tử trùng khóa Hãy biểu diễn tập hợp động K vừa nêu? * Nhận xét: Có thể sử dụng mảng hay bảng địa chỉ trực tiếp Bảng địa chỉ trực tiếp (2) 0 1 2 3 4 5 6 7 8 9 9  0  7  1  4  6  2  3  5  8  U K T[0 9] Khe, vị trí Khe k trỏ đến phần tử trong tập hợp có khóa k T[k] = NIL khi tập hợp không có thành phần nào có khóa k Bảng địa chỉ trực tiếp (3) 0 1 2 3 4 5 6 7 8 9 9  0  7  1  4  6  2  3  5  8  U K  SEARCH(T, k) return T[k]  INSERT(T, x) T[key[x]] x ←  DELETE(T, x) T[key[x]] NIL←  Độ phức tạp của mỗi phép toán: O(1) Bảng địa chỉ trực tiếp (4) … 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 …                                                                                                                          2  3  5  8  U K - Tốt với |U| không quá lớn - |U| = 10.000.000.000?  Lãng phí bộ nhớ Nội dung  Bảng địa chỉ trực tiếp  Bảng băm  Hàm băm  Giải quyết xung đột: Dây chuyền & Định địa chỉ mở  Kỹ thuật băm hoàn hảo Giới thiệu  Những nhược điểm với địa chỉ trực tiếp  Nếu U lớn, việc tạo bảng T với kích cở |U| có thể không khả thi  Tập hợp các khóa K có thể sẻ nhỏ hơn U rất nhiều  Khi tập các khóa K được chứa trong từ điển nhỏ hơn rất nhiều so với các trường hợp có thể xảy ra U, bảng băm sẻ tiêu tốn ít không gian lưu trữ hơn bảng địa chỉ trực tiếp  Θ(|K|) không gian nhớ  O(1) thời gian trung bình để tìm kiếm 1 phần tử  Θ(1) thời gian xấu nhất để tìm kiếm một phần tử trong bảng địa chỉ trực tiếp [...]... nhiên một thiết kế tốt là phải hạn chế tối đa khả năng xung đột có thể xảy ra Θ(|K|) ≈ m m  Z ={0, 1,…, p-1} p   Z*p={1, 2,…, p-1} ha,b(k) = ((ak+b) mod p) mod m, với a ∈Z*p và b ∈Zp   Ví dụ: Với p = 17 và m = 6 Ta có H3,4(8) = 5 Lớp các hàm băm có dạng  ℋ p,m = {ha,b: a ∈Z*p và b ∈Zp}  Mỗi hàm băm ℋp,m ánh xạ Zp đến Zm Có p -1 lựa chọn a và p Nội dung     Bảng địa chỉ trực tiếp Bảng băm Hàm băm Giải quyết xung đột: Dây chuyền & Định địa chỉ mở  Kỹ thuật băm hoàn... cho đều có khả năng như nhau để băm vào bất kỳ khe nào trong số m khe, và chúng không phụ thuộc vào nơi mà bất kỳ phần tử nào khác đã được băm đến Thời gian cần thiết cho trường hợp tìm kiếm thành công và không thành công là Θ(1+ α) (Các định lý này đã được chứng minh) Nội dung     Bảng địa chỉ trực tiếp Bảng băm Hàm băm Giải quyết xung đột: Định địa chỉ mở  Kỹ thuật băm hoàn hảo Dây chuyền & Định... các phần tử được băm vào cùng khe vào trong 1 danh sách liên kết Khe j chứa con trỏ tới đầu danh sách của tất cả các phần tử được băm vào khe j Các phép toán  CHAINED -HASH- INSERT(T, x): O(1) (không kiểm tra trùng)   CHAINED -HASH- SEARCH(T, k): phụ thuộc vào chiều dài danh sách   Thêm x vào đầu danh sách T[h(key[x])] Tìm kiếm một phần tử có khóa k trong danh sách T[h(k)] CHAINED -HASH- DELETE(T, x):... danh sách liên kết gồm tất cả các khóa có giá trị băm là j Ví dụ h(k1) = h(k4), h(k5) = h(k2) = h(k7) Phân tích phép toán tìm kiếm trong kỹ thuật dây chuyền  Hệ số tải α = n/m   Trường hợp xấu nhất: Θ(n) + thời gian tính toán giá trị băm   Số trung bình của các phần tử chứa trong các danh sách Xảy ra khi tất cả n khóa đều được băm vào cùng 1 khe Tốc độ trung bình:  Giả định Kỹ thuật băm đều  ... pháp nhân Phổ băm Thế nào là hàm băm tốt    Tính đơn giản Giảm thiểu các khóa được băm cùng khe Độ phức tạp O(1) Điều gì tạo nên một hàm băm tốt  Một hàm băm tốt thỏa (xấp xỉ) giả thiết của kỹ thuật băm đều đơn giản: mỗi khóa có khả năng như nhau để băm vào bất kỳ vị trí nào trong số m khe 1 ∑)= j = m k :h ( k j = 0, 1, …, m-1 (1) Điều gì tạo nên một hàm băm tốt (t.t)    Một hàm băm tốt sẽ giảm.. .Bảng băm   Đối với địa chỉ trực tiếp: Một phần tử với khóa k  T[k] Bảng băm: một phần tử với khóa k  T[h(k)]  h(k): hàm băm; tường được tính toán với độ phức tạp O(1)      h: U  {0, 1, , m-1} Một phần tử với khóa k được băm vào khe h(k) h(k) là hàm băm của khóa k Thay vì |U| giá trị, chúng ta chỉ cần quản lý m giá trị Xung đột có thể xảy ra    Hai khóa khác nhau được băm vào cùng... nó chỉ yêu cầu 1 phép chia đơn lẻ Ví dụ, nếu bảng băm có kích cỡ m = 12 và khóa là k = 100, thì h(k) = 4 Bởi vì nó yêu cầu một phép chia đơn lẻ, kỹ thuật băm bằng phép chia chạy khá nhanh Ví dụ của phương pháp chia  Giả sử cần chèn các khóa k có giá trị như sau: 5, 28, 19, 15, 20, 33, 12, 29, 10 vào bảng băm có 9 khe Sử dụng phương pháp chia, ta có hàm băm như sau: h(k) = k mod 9 Nhận xét đối với . xung đột Nội dung  Bảng địa chỉ trực tiếp  Bảng băm  Hàm băm  Giải quyết xung đột: Dây chuyền & Định địa chỉ mở  Kỹ thuật băm hoàn hảo Hàm băm  Điều gì tạo nên một hàm băm tốt  Chuyển. tử trong bảng địa chỉ trực tiếp Bảng băm  Đối với địa chỉ trực tiếp: Một phần tử với khóa k  T[k]  Bảng băm: một phần tử với khóa k  T[ h(k) ]  h(k): hàm băm; tường được tính toán với. một thiết kế tốt là phải hạn chế tối đa khả năng xung đột có thể xảy ra Θ(|K|) ≈ m << |U| Sử dụng một hàm h để ánh xạ (map) các khóa vào các khe của bảng băm. Các khóa k2 và k5 ánh xạ vào

Ngày đăng: 11/04/2015, 22:05

Từ khóa liên quan

Mục lục

  • BẢNG BĂM (HASH TABLES)

  • Mục tiêu

  • Nội dung

  • Mở đầu: Một số khái niệm

  • Bảng địa chỉ trực tiếp (direct-address tables)

  • Bảng địa chỉ trực tiếp (2)

  • Bảng địa chỉ trực tiếp (3)

  • Bảng địa chỉ trực tiếp (4)

  • Slide 9

  • Giới thiệu

  • Bảng băm

  • Slide 12

  • Slide 13

  • Hàm băm

  • Thế nào là hàm băm tốt

  • Điều gì tạo nên một hàm băm tốt

  • Điều gì tạo nên một hàm băm tốt (t.t)

  • Chuyển các khóa dưới dạng các số tự nhiên

  • Phương pháp chia

  • Ví dụ của phương pháp chia

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

Tài liệu liên quan