Bài giảng Cấu trúc dữ liệu và giải thuật: Tìm kiếm (tt)
Số trang: 6
Loại file: pdf
Dung lượng: 329.90 KB
Lượt xem: 13
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật trình bày một số kiến thức về tìm kiếm như: Bảng băm, một số phương pháp xây dựng hàm băm, đụng độ và khắc phục,...và một số bài tập. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Tìm kiếm (tt) 4/7/2011 Nội dung Chương 6 Tìm kiếm Bảng băm (phần 2) Một số phương pháp xây dựng hàm băm Đụng độ và khắc phục Hiepnd@it-hut.edu.vn Bài tập Băm Băm Các phương pháp tìm kiếm : Ý tưởng bảng băm: Tìm kiếm tuần tự: O(n) Dùng mảng lưu trữ các phần tử (bảng) Tìm kiếm nhị phân O(logn) Mỗi phần tử sẽ được lưu tại một ô duy nhất trong bảng căn cứ vào giá trị khóa của nó, Khi tìm kiếm thì căn cứ vào khóa cần tìm ta tìm đến ô Phương pháp tổ chức dữ liệu để tìm kiếm nào tốt hơn ? tương ứng Nếu ô đó có chứa phần tử thì tìm thấy, ngược lại là không tìm thấy Bảng băm 1 4/7/2011 Băm Băm VD. Sinhvien(1222, ‘Nguyễn văn A’, ‘Hà Nội’) Sinhvien(1101,’Trần văn C’,’Thái Bình’) Tốt hơn tìm kiếm tuần tự khi mà dữ liệu được lưu trữ không Sinhvien(0097, ‘Nguyễn văn A’, ‘Hà Nội’) có thứ tự. Sinhvien(1331,’Trần văn C’,’Thái Bình’) Không dựa trên so sánh giá trị các khóa của bản ghi mà dựa Sinhvien(1345, ‘Nguyễn văn A’, ‘Hà Nội’) trên chính bản thân giá trị các khóa. Sử dụng bảng kích thước 100 để lưu các phần tử Từ giá trị khóa ta tính ra một địa chỉ(địa chỉ tương đối) theo 1 Sinhvien(1101,’Trần văn C’,’Thái Bình’) một quy tắc nào đó. Địa chỉ này sẽ dùng để lưu trữ bản ghi … và cũng để tìm kiếm bản ghi đó. Chỉ 22 Sinhvien(1222, ‘Nguyễn văn A’, ‘Hà Nội’) số hash function: key an index … mảng 31 Sinhvien(1331,’Trần văn C’,’Thái Bình’) Địa chỉ lưu trữ … 35 Hàm băm hoàn hảo: mỗi khóa ứng với một giá trị nguyên Sinhvien(1345, ‘Nguyễn văn A’, ‘Hà Nội’) duy nhất … 97 Sinhvien(0097, ‘Nguyễn văn A’, ‘Hà Nội’) Thời gian tìm kiếm O(1) ??? Băm Băm Hàm băm: Gấp (folding): chia khóa thành nhiều phần sau đó kết hợp các phần lại (thường dùng cộng hoặc nhân) Tính toán dễ và nhanh Phân phối đều các khóa VD. 21296876 chia thành 3 phần 212, 968 và 76 kết hợp 212+968+76 = 1256, cắt bỏ được 256 Một số phương pháp thông dụng: Cắt bỏ (Truncation) : dùng một phần của khóa làm chỉ số Giá trị các thành phần trong khóa đều ảnh hưởng tới chỉ VD: khóa có 8 chữ số và bảng băm kích thước 1000 số. Cho phân phối tốt hơn phương pháp cắt bỏ lấy chữ số thứ 4, 7 và 8 làm chỉ số 21296876 976 Nhanh nhưng phân bố khóa không đều! 2 4/7/2011 Băm Băm Phương pháp chia module: lấy số dư của phép chia giá Phương pháp nhân: giá trị khóa được nhân với chính trị khóa cho kích thước của bảng băm để làm đị chỉ nó, sau đó lấy một phần kết quả để làm địa chỉ băm h(k) = k % m Giá trị khóa k k*k địa chỉ Thường chọn m là số nguyên tố nhỏ hơn, gần với kích 5402 29181604 181 thước bảng băm. 367 00134689 134 Bảng băm kích thước 1000 thì chọn m=997 1246 01552516 552 2983 08898289 898 Giá trị khóa địa chỉ 5402 417 367 367 1246 249 2983 989 Băm Phương pháp đánh địa chỉ mở ...
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Tìm kiếm (tt) 4/7/2011 Nội dung Chương 6 Tìm kiếm Bảng băm (phần 2) Một số phương pháp xây dựng hàm băm Đụng độ và khắc phục Hiepnd@it-hut.edu.vn Bài tập Băm Băm Các phương pháp tìm kiếm : Ý tưởng bảng băm: Tìm kiếm tuần tự: O(n) Dùng mảng lưu trữ các phần tử (bảng) Tìm kiếm nhị phân O(logn) Mỗi phần tử sẽ được lưu tại một ô duy nhất trong bảng căn cứ vào giá trị khóa của nó, Khi tìm kiếm thì căn cứ vào khóa cần tìm ta tìm đến ô Phương pháp tổ chức dữ liệu để tìm kiếm nào tốt hơn ? tương ứng Nếu ô đó có chứa phần tử thì tìm thấy, ngược lại là không tìm thấy Bảng băm 1 4/7/2011 Băm Băm VD. Sinhvien(1222, ‘Nguyễn văn A’, ‘Hà Nội’) Sinhvien(1101,’Trần văn C’,’Thái Bình’) Tốt hơn tìm kiếm tuần tự khi mà dữ liệu được lưu trữ không Sinhvien(0097, ‘Nguyễn văn A’, ‘Hà Nội’) có thứ tự. Sinhvien(1331,’Trần văn C’,’Thái Bình’) Không dựa trên so sánh giá trị các khóa của bản ghi mà dựa Sinhvien(1345, ‘Nguyễn văn A’, ‘Hà Nội’) trên chính bản thân giá trị các khóa. Sử dụng bảng kích thước 100 để lưu các phần tử Từ giá trị khóa ta tính ra một địa chỉ(địa chỉ tương đối) theo 1 Sinhvien(1101,’Trần văn C’,’Thái Bình’) một quy tắc nào đó. Địa chỉ này sẽ dùng để lưu trữ bản ghi … và cũng để tìm kiếm bản ghi đó. Chỉ 22 Sinhvien(1222, ‘Nguyễn văn A’, ‘Hà Nội’) số hash function: key an index … mảng 31 Sinhvien(1331,’Trần văn C’,’Thái Bình’) Địa chỉ lưu trữ … 35 Hàm băm hoàn hảo: mỗi khóa ứng với một giá trị nguyên Sinhvien(1345, ‘Nguyễn văn A’, ‘Hà Nội’) duy nhất … 97 Sinhvien(0097, ‘Nguyễn văn A’, ‘Hà Nội’) Thời gian tìm kiếm O(1) ??? Băm Băm Hàm băm: Gấp (folding): chia khóa thành nhiều phần sau đó kết hợp các phần lại (thường dùng cộng hoặc nhân) Tính toán dễ và nhanh Phân phối đều các khóa VD. 21296876 chia thành 3 phần 212, 968 và 76 kết hợp 212+968+76 = 1256, cắt bỏ được 256 Một số phương pháp thông dụng: Cắt bỏ (Truncation) : dùng một phần của khóa làm chỉ số Giá trị các thành phần trong khóa đều ảnh hưởng tới chỉ VD: khóa có 8 chữ số và bảng băm kích thước 1000 số. Cho phân phối tốt hơn phương pháp cắt bỏ lấy chữ số thứ 4, 7 và 8 làm chỉ số 21296876 976 Nhanh nhưng phân bố khóa không đều! 2 4/7/2011 Băm Băm Phương pháp chia module: lấy số dư của phép chia giá Phương pháp nhân: giá trị khóa được nhân với chính trị khóa cho kích thước của bảng băm để làm đị chỉ nó, sau đó lấy một phần kết quả để làm địa chỉ băm h(k) = k % m Giá trị khóa k k*k địa chỉ Thường chọn m là số nguyên tố nhỏ hơn, gần với kích 5402 29181604 181 thước bảng băm. 367 00134689 134 Bảng băm kích thước 1000 thì chọn m=997 1246 01552516 552 2983 08898289 898 Giá trị khóa địa chỉ 5402 417 367 367 1246 249 2983 989 Băm Phương pháp đánh địa chỉ mở ...
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Phương pháp xây dựng hàm băm Phương pháp đánh địa chỉ mở Tìm kiếm tuần tự Tìm kiếm nhị phânTài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 325 0 0 -
Giáo trình Lập trình cơ bản với C++ - Phan 2
69 trang 201 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 167 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 156 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 140 0 0 -
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 129 0 0 -
Lập trình C - Cấu trúc dữ Liệu
307 trang 78 0 0 -
Ứng dụng và cài đặt cấu trúc dữ liệu bằng C: Phần 1
338 trang 78 0 0 -
49 trang 74 0 0