Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
0,95 MB
Nội dung
1 CHƯƠNG 6 CÁC THU T TOÁN TÌM KI MẬ Ế 2/37 NỘI DUNG Khái niệm tìm kiếm Các phương pháp tìm kiếm Phương pháp tìm kiếm tuần tự Phương pháp tìm kiếm nhị phân Phương pháp tìm kiếm trên cây nhị phân tìm kiếm 3/37 KHÁI NIỆM TÌM KIẾM Đặt vấn đề CHÌA KHÓA CỦA TA ĐÂU? 4/37 KHÁI NIỆM TÌM KIẾM Khái niệm Tìm kiếm là việc kiểm tra xem có hay không một đối tượng có một số thông tin cho trước (đối tượng cần tìm) trong một tập các đối tượng cho trước (không gian tìm kiếm) Ví dụ: Tìm một chùm chìa khóa trong một gian phòng Ta có hình ảnh của chùm chìa khóa Gian phòng gồm nhiều đồ đạc 5/37 BÀI TOÁN TÌM KIẾM - Dãy a, có n đối tượng, mỗi đối tượng có một “khóa tìm kiếm” - Khóa của đối tượng cần tìm (Key) - Nếu tìm thấy đối tượng có khóa ‘Key’ trong dãy a trả lại giá trị 1, ngược lại trả lại giá trị 0. Dữ liệu vào: Dữ liệu ra: Ví dụ: 5 1 6 8 2 Dữ liệu vào: a0 a1 a2 a3 a4 Số x=6 Dữ liệu ra: 1 (Tìm thấy x trong mảng a) 6/37 CÁC THUẬT TOÁN TÌM KIẾM Tìm kiếm tuần tự Tìm kiếm nhị phân Tìm kiếm trên cây nhị phân tìm kiếm 7/37 CÁC THUẬT TOÁN TÌM KIẾM Tùy theo dữ liệu vào ta có thể phân chia bài toán tìm kiếm thành hại loại Tìm kiếm trên dãy chưa sắp: dãy tìm kiếm chưa được sắp xếp theo thứ tự khóa tìm kiếm Tìm kiếm trên dãy đã sắp: dãy tìm kiếm đã sắp theo thứ tự tăng dần của khóa tìm kiếm 8/37 TÌM KIẾM TRÊN DÃY CHƯA SẮP Với một dãy chưa được sắp xếp thì cách tìm kiếm đơn giản nhất là tìm kiếm tuần tự Tìm kiếm tuần tự là một phương pháp tìm kiếm khá phổ biến và hết sức đơn giản ?? 9/37 TÌM KIẾM TUẦN TỰ Tìm kiếm tuần tự So sánh khóa của đối tượng cần tìm với khóa của đối tượng đầu tiên trong dãy. Nếu bằng nhau, kết thúc tìm kiếm (thành công) Nếu không bằng, chuyển sang đối tượng kế tiếp Lặp lại công việc trên cho đến khi gặp một đối tượng có khóa bằng với khóa cần tìm (thành công) hoặc đã hết các đối tượng trong dãy (không thành công) 10/37 TÌM KIẾM TUẦN TỰ Ví dụ 1 : 5 1 6 8 2 a0 a1 a2 a3 a4 Tìm số x=6 trong dãy Cho dãy số i=0 5 1 6 8 2 x 6 i=1 i=2 Tìm thấy x