Danh mục

Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 8: Các thuật toán tìm kiếm

Số trang: 24      Loại file: pdf      Dung lượng: 740.36 KB      Lượt xem: 16      Lượt tải: 0    
Hoai.2512

Hỗ trợ phí lưu trữ khi tải xuống: 7,000 VND Tải xuống file đầy đủ (24 trang) 0
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mời các bạn cùng tham khảo bài giảng "Cấu trúc dữ liệu và giải thuật – Bài 8: Các thuật toán tìm kiếm" để nắm chắc kiến thức về khái niệm về 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 nội suy.
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 – Bài 8: Các thuật toán tìm kiếm Cấu trúc dữ liệu và giải thuật Bài 8: Các thuật toán tìm kiếm Giảng viên: TS. Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com1 PhD. Ngo Huu Phuc, Le Quy Don Technical University Bài 8. Các thuật toán tìm kiếm Nội dung: 8.1. Khái niệm về tìm kiếm (3) 8.2. Phương pháp tìm kiếm tuần tự (7) 8.3. Phương pháp tìm kiếm nhị phân (8) 8.4. Phương pháp tìm kiếm nội suy (7) Tham khảo: 1. Data structures and Algorithms Searching.htm 2. Kyle Loudon Mastering Algorithms, Chapter 12 Sorting and Searching 3. Lecture 19 Sequential and Binary Search.htm 4. Sedgewick Algorithms, Elementary Searching Methods 5. Bài giảng của TS Nguyễn Nam Hồng2 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Khái niệm về tìm kiếm (1/3)  Trong thực tế, việc xác định vị trí của một phần tử nào đó trong một danh sách ( đã sắp xếp hoặc chưa sắp xếp) có ý nghĩa quan trọng và được dùng trong nhiều ứng dụng.  Ví dụ 1: một chương trình tra cứu từ điển, chương trình cần trả lời ngay nghĩa của một từ nào đó.  Ví dụ 2: trong một danh sách thí sinh, chương trình cần đưa ra tất cả thông tin của thí sinh thỏa mãn một số tiêu chí nào đó.  Những bài toán như vậy được gọi chung là bài toán tìm kiếm.3 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Khái niệm về tìm kiếm (2/3)  Trong thực tế, với các ý tưởng khác nhau dẫn đến các phương pháp tìm kiếm khác nhau.  Phương pháp tìm kiếm thông dụng nhất trong thực tế là tìm kiếm tuần tự. Đây là phương pháp đơn giản, tuy nhiên mất nhiều thời gian thực hiện đối với dữ liệu lớn.4 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Khái niệm về tìm kiếm (3/3)  Phương pháp tìm kiếm nhị phân: chia danh sách thành các danh sách con và tìm kiếm trên đó. Với bộ dữ liệu lớn, phương pháp này cho tốc độ tìm kiếm tốt hơn phương pháp tuần tự.  Phương pháp tìm kiếm nội suy: cũng giống như phương pháp tìm kiếm nhị phân, phương pháp này cũng chia danh sách thành các danh sách con và tìm kiếm trên đó.  Phương pháp tìm kiếm nội suy nhanh hơn phương pháp nhị phân vì chúng dự đoán kết quả tìm kiếm trên phần nào để thực hiện tìm kiếm.5 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Tìm kiếm tuần tự (1/7)  Đây là phương pháp tìm kiếm đơn giản nhất.  Ý tưởng chung của tìm kiếm tuần tự:  Sử dụng vòng lặp để có thể duyệt cả danh sách, xuất phát từ phần tử đầu tiên trong danh sách.  Tại mỗi bước lặp, so sánh phần tử trong danh sách với giá trị cần tìm ( theo khóa nào đó ). Quá trình sẽ dừng nếu tìm thấy đối tượng cần tìm hoặc đã đi hết danh sách.6 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Tìm kiếm tuần tự (2/7) Sub LinearSearch(x:int, a[]: Int, loc: Int) i:=1 While (i 8.1. Tìm kiếm tuần tự (3/7)  Giả sử cho danh sách số nguyên gồm: 17 23 5 11 2 29 3  Ví dụ: tìm vị trí phần tử có giá trị bằng 11, việc tìm kiếm bắt đầu từ phần tử có giá trị 17, đến 23, đến 5, đến 11: đưa ra thông báo đã tìm thấy, trả về vị trí thứ 4 trong danh sách.  Ví dụ: tìm vị trí phần tử có giá trị bằng 7, việc tìm kiếm bắt đầu từ phần tử có giá trị 17, qua cả danh sách, nhưng không tìm thấy, trả về thông tin: không tìm thấy.8 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Tìm kiếm tuần tự (4/7)  Một số ưu điểm của thuật toán tìm kiếm tuần tự: Rất đơn giản để nắm bắt. Đơn giản trong việc thực hiện. Danh sách ban đầu không cần thiết phải được sắp theo một thứ tự nào đó.  Nhược điểm của phương pháp tìm kiếm tuần tự: Hiệu quả của phương pháp rất kém. Ví dụ: Giả sử có một danh sách có 10 000 phần tử. Phần tử cần tìm ở vị trí 10 000. Như vậy phải đi qua cả danh sách mới tìm được phần tử đó!!!9 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.1. Tìm kiếm tuần tự (6/7) Use a Sentinel to Improve the Performance Sub LinearSearch2(x:int, a[]: Int, loc: Int) a[n+1] = x: n = n + 1: i = 1 While (xa[i]) i = i+1 End While If i 8.1. Tìm kiếm tuần tự (7/7) Apply Linear Search to Sorted Lists Sub LinearSearch3(x:int, a[]: Int, loc: Int) i=1 While (x > a[i]) i = i+1 End While If a[i] = x Then loc = i Else loc = 0 End Sub11 PhD. Ngo Huu Phuc, Le Quy Don Technical University 8.2. Tìm kiếm nhị phân (1/8) Với phương pháp tìm ...

Tài liệu được xem nhiều:

Tài liệu liên quan: