Bài giảng Cấu trúc dữ liệu và giải thuật: Các chiến lược tìm kiếm - Đậu Ngọc Hà Dương có nội dung trình bày giới thiệu về chiến lược tìm kiếm, tìm kiếm tuần tự, tìm kiếm nhị phân, tìm kiếm theo bảng năm,... Mời các bạn cùng tham khảo!
Giảng viên: Đậu Ngọc Hà Dương Giới thiệu Tìm kiếm Tìm kiếm nhị phân Tìm kiếm theo bảng băm Tổng kết Cấu trúc liệu giải thuật – HCMUS 2011 Thao tác tìm kiếm phổ biến sống hàng ngày Tìm kiếm hồ sơ, tập tin Tìm kiếm tên người danh sách … Cấu trúc liệu giải thuật – HCMUS 2011 Có nhiều loại: Tìm kiếm (Sequential/ Linear Search) Tìm kiếm nhị phân (Binary Search) … Mục tiêu: Tìm hiểu thuật tốn tìm kiếm Phân tích thuật tốn để lựa chọn thuật tốn phù hợp áp dụng vào thực tế Cấu trúc liệu giải thuật – HCMUS 2011 Sequential Search Linear Search Cấu trúc liệu giải thuật – HCMUS 2011 Input: n phần tử Giá trị x cần tìm Dãy A, Output: Nếu x xuất A: trả vị trí xuất x Nếu khơng: trả n -1 Thuật toán: cạn (exhaustive) Dùng lính canh (sentinel) Vét Cấu trúc liệu giải thuật – HCMUS 2011 Thuật toán: Lần lượt so sánh x với phần tử mảng A gặp phần tử cần tìm, hết mảng Ví dụ: A = {1, 25, 6, 5, 2, 37, 40}, x = x = 25 37 40 37 40 37 40 x = 25 x = 25 Dừng Thuật tốn: LinearExhaustive • Bước Khởi tạo biến số: i = • Bước Kiểm tra xem có thực hết mảng hay chưa: So sánh i n • • • Nếu chưa hết mảng (i < n), sang bước Nếu hết mảng (i >= n), thơng báo khơng tìm thấy giá trị x cần tìm Bước So sánh giá trị a[i] với giá trị x cần tìm • • Nếu a[i] x: Kết thúc chương trình thơng báo tìm thấy x Nếu a[i] khác x, tăng i thêm quay lại bước Cấu trúc liệu giải thuật – HCMUS 2011 Nhận xét: Phép so sánh phép toán sơ cấp dùng thuật toán Suy ra, số lượng phép so sánh thước đo độ phức tạp thuật tốn Mỗi vịng lặp có điều kiện cần kiểm tra: Kiểm tra cuối mảng (bước 2) Kiểm tra phần tử có x? (bước 3) Cấu trúc liệu giải thuật – HCMUS 2011 10 Trường hợp x nằm biên mảng A: xuất Ước lượng số vịng lặp trung bình hữu ích Số phép so sánh trung bình: 2(1+2+ … + n)/n = n+1 => Số phép so sánh tăng/giảm tuyến tính theo số phần tử Cấu trúc liệu giải thuật – HCMUS 2011 37 T Tập U Tập K 10 7 10 Cấu trúc liệu giải thuật – HCMUS 2011 Key 10 Data 38 k1, k2 K: k1 ≠ k2, H(k1) = H(k2) Tập U T H(3) H(4) Tập K 10 H(2) = H(8) H(10) Cấu trúc liệu giải thuật – HCMUS 2011 39 Ít xảy đụng độ Tính tốn nhanh Các khóa phân bố Cấu trúc liệu giải thuật – HCMUS 2011 40 Xét lại ví dụ danh sách sinh viên: Với kích thước bảng M = 1000, ta chọn hàm băm sau: H(k) = k mod M Khóa thỏa mãn u cầu tính tốn nhanh trải bảng Cấu trúc liệu giải thuật – HCMUS 2011 41 Phương pháp nối kết (chaining) Phương pháp địa mở (Open-addressing) Cấu trúc liệu giải thuật – HCMUS 2011 42 Ứng với địa bảng, ta có danh sách liên kết chứa phần tử có khóa khác mà có địa Ta có danh sách (bảng băm) gồm M phần tử chứa địa đầu danh sách liên kết Cấu trúc liệu giải thuật – HCMUS 2011 43 ĐNĐTiến +84.95.8345678 VCNam +84.91.2345678 ĐTMHậu +84.95.6543210 NTHNhung +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2011 44 Tên gọi khác: Phương pháp dò Phương pháp thử Ý tưởng: Khi đụng độ xảy ra, ta thử tìm đến vị trị bảng tìm thấy vị trí cịn trống Cấu trúc liệu giải thuật – HCMUS 2011 45 Phương pháp dị tuyến tính (Linear probing) Phương pháp dị bậc (Quadratic probing) Phương pháp băm kép (Double hashing) Cấu trúc liệu giải thuật – HCMUS 2011 46 Ý tưởng: H(k, i) = (h(k) + i) mod M ĐNĐTiến +84.95.8345678 406 VCNam +84.91.2345678 407 ĐTMHậu +84.95.6543210 999 NTHNhung +84.90.9345678 405 1000 Cấu trúc liệu giải thuật – HCMUS 2011 47 Phương pháp dò bậc 2: H(k, i) = (h(k) + i2) mod M Phương pháp băm kép: H(k, i) = (h1(k) + i*h2(k)) mod M Cấu trúc liệu giải thuật – HCMUS 2011 48 Đơn giản cài đặt Sử dụng cấu trúc liệu Phương pháp địa mở giải đụng độ lại gây đụng độ Phương pháp nối kết không bị ảnh hưởng tốc độ mảng gần đầy Ít tốn nhớ mảng thưa (ít phần tử) Cấu trúc liệu giải thuật – HCMUS 2011 49 Cho bảng băm có kích thước M = 11 Hàm băm: h(k) = k mod M Dùng phương pháp địa mở Cho biết kết sau thêm vào bảng băm khóa 10, 22, 31, 4, 15, 28, 17, 88, 59, với phương pháp xử lý đụng độ: a Dị tuyến tính b Dị bậc c Băm kép h2(k) = (k mod 19)+1 Cấu trúc liệu giải thuật – HCMUS 2011 50 Cho từ điển Anh – Việt có 15.000 từ, tổ chức cấu trúc liệu bảng băm cho biết hàm băm thích hợp giúp cho việc tra từ hiệu Cấu trúc liệu giải thuật – HCMUS 2011 51 Cấu trúc liệu giải thuật – HCMUS 2011 ... Giới thiệu Tìm kiếm Tìm kiếm nhị phân Tìm kiếm theo bảng băm Tổng kết Cấu trúc liệu giải thuật – HCMUS 2011 Thao tác tìm kiếm phổ biến sống hàng ngày Tìm kiếm hồ sơ, tập tin Tìm kiếm tên... phép so sánh để thu hẹp vùng tìm kiếm Hiệu suất tìm kiếm nhị phân hàm logarit theo số phần tử mảng Cấu trúc liệu giải thuật – HCMUS 2011 31 Hash Table Cấu trúc liệu giải thuật – HCMUS 2011 32 ... +84.90.9345678 Cấu trúc liệu giải thuật – HCMUS 2011 34 Chi phí tìm kiếm trung bình: O(1) Chi phí tìm kiếm trường hợp xấu nhất: O(n) (rất gặp) Cấu trúc liệu giải thuật – HCMUS 2011 35 Định nghĩa: hàm