Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
558,63 KB
Nội dung
Chương 7: Tìm kiếm Giảng viên: Ths Nguyễn Thị Khiêm Hòa Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mục tiêu Trình bày thuật toán thông dụng cho việc tìm kiếm (tìm tuần tự, tìm nhị phân) Minh họa thuật toán Đánh giá thuật toán Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Đặt vấn đề Tìm kiếm phần tử có khóa x tập hợp thao tác thường gặp đời sống hàng ngày Ví dụ: Tìm sở liệu: tài khoản ngân hàng, thông tin sinh viên, … Search Engine: Yahoo, Google, Bing… Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM TÌM KIẾM (SEARCHING) Định nghĩa Cho n ghi R1,R2,…,Rn, khóa tương ứng ki Hãy tìm ghi có giá trị khóa X Kết tìm kiếm Thành công: có ghi với giá trị khóa X Không thành công: ghi thích hợp Phân loại tìm kiếm Tìm kiếm Tìm kiếm Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Tìm kiếm (sequential searching) Ý tưởng Lần lượt tìm kiếm từ ghi tìm thấy liệu thỏa điều kiện tìm kiếm, không phần tử để tìm kiếm Thực tìm kiếm mảng / danh sách liên kết đơn Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Tìm kiếm (sequential searching) Cài đặt public int Linear_Search(int x) { int i = 0; while(i < idx) { if(A[i] != x) i++; return i; } return -1; } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Tìm kiếm (sequential searching) Độ phức tạp giải thuật Phép toán phép so sánh Trường hợp tốt nhất: phép so sánh Trường hợp xấu nhất: n phép so sánh Trường hợp trung bình: (n+1)/2 phép so sánh Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Tìm kiếm nhị phân Ý tưởng Tiến hành dãy xếp tăng dần Tìm dãy A phần tử có khóa X: Chọn phần tử có giá trị k Nếu X < k: tìm dãy phần tử đứng trước k Nếu X > k: tìm dãy phần tử đứng sau k Nếu X = k: tìm thấy Lặp lại bước tìm thấy dãy không phần tử để tìm kiếm Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Tìm kiếm nhị phân public int Bin_Search(int x) { int left =0; int right = idx - 1; while (left < right) { int k = (left + right) / 2; if (A[k] < x) left = k + 1; else if (A[k] > x) right = k - 1; else return k; } return -1; } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Bài tập Thực Cài đặt phương thức tìm nhị phân phương pháp đệ quy 20 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 10 Tìm kiếm nhị phân Phương pháp tìm nhị phân hạn chế không gian tìm kiếm Độ phức tạp giải thuật Phép toán phép so sánh Trường hợp tốt nhất: phép so sánh Trường hợp xấu nhất: log2n phép so sánh, nhỏ n/2 nhiều Trường hợp trung bình: log2n phép so sánh Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 11 Tìm kiếm nhị phân Tuy nhiên phương pháp tìm nhị phân thực dãy xếp Do cần tính chi phí xếp vào thuật toán Nếu dãy biến động liên tục chi phí không nhỏ Cây nhị phân tìm kiếm giải pháp trường hợp Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 12 Q&A Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 13 [...]... Độ phức tạp giải thuật Phép toán chính là phép so sánh Trường hợp tốt nhất: 1 phép so sánh Trường hợp xấu nhất: log2n phép so sánh, nhỏ hơn n/2 rất nhiều Trường hợp trung bình: log2n phép so sánh Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 11 Tìm kiếm nhị phân Tuy nhiên phương pháp tìm nhị phân chỉ thực hiện được trên dãy đã sắp xếp Do đó cần tính chi phí sắp xếp vào thuật toán này... nhiên phương pháp tìm nhị phân chỉ thực hiện được trên dãy đã sắp xếp Do đó cần tính chi phí sắp xếp vào thuật toán này Nếu dãy biến động liên tục thì chi phí này không hề nhỏ Cây nhị phân tìm kiếm là giải pháp trong trường hợp này Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 12 Q&A Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 13 ...Mục tiêu Trình bày thuật toán thông dụng cho việc tìm kiếm (tìm tuần tự, tìm nhị phân) Minh họa thuật toán Đánh giá thuật toán Khoa Công nghệ Thông tin - Đại học... pháp tìm nhị phân thực dãy xếp Do cần tính chi phí xếp vào thuật toán Nếu dãy biến động liên tục chi phí không nhỏ Cây nhị phân tìm kiếm giải pháp trường hợp Khoa Công nghệ Thông tin - Đại học... TP.HCM 10 Tìm kiếm nhị phân Phương pháp tìm nhị phân hạn chế không gian tìm kiếm Độ phức tạp giải thuật Phép toán phép so sánh Trường hợp tốt nhất: phép so sánh Trường hợp xấu nhất: log2n