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

24 41 0
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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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.

Cấu trúc liệu giải thuật Bài 8: Các thuật tốn tìm kiếm Giảng viên: TS Ngo Huu Phuc Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com PhD Ngo Huu Phuc, Le Quy Don Technical University Bài Các thuật tốn tìm kiếm Nội dung: 8.1 Khái niệm tìm kiếm (3) 8.2 Phương pháp tìm kiếm (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: Data structures and Algorithms Searching.htm Kyle Loudon Mastering Algorithms, Chapter 12 Sorting and Searching Lecture 19 Sequential and Binary Search.htm Sedgewick Algorithms, Elementary Searching Methods Bài giảng TS Nguyễn Nam Hồng PhD Ngo Huu Phuc, Le Quy Don Technical University 8.1 Khái niệm tìm kiếm (1/3)  Trong thực tế, việc xác định vị trí phần tử danh sách ( xếp chưa xếp) có ý nghĩa quan trọng dùng nhiều ứng dụng  Ví dụ 1: chương trình tra cứu từ điển, chương trình cần trả lời nghĩa từ  Ví dụ 2: danh sách thí sinh, chương trình cần đưa tất thơng tin thí sinh thỏa mãn số tiêu chí  Những toán gọi chung toán tìm kiếm PhD Ngo Huu Phuc, Le Quy Don Technical University 8.1 Khái niệm tìm kiếm (2/3)  Trong thực tế, với ý tưởng khác dẫn đến phương pháp tìm kiếm khác  Phương pháp tìm kiếm thơng dụng thực tế tìm kiếm Đây phương pháp đơn giản, nhiên nhiều thời gian thực liệu lớn PhD Ngo Huu Phuc, Le Quy Don Technical University 8.1 Khái niệm tìm kiếm (3/3)  Phương pháp tìm kiếm nhị phân: chia danh sách thành danh sách tìm kiếm Với liệu lớn, phương pháp cho tốc độ tìm kiếm tốt phương pháp  Phương pháp tìm kiếm nội suy: giống phương pháp tìm kiếm nhị phân, phương pháp chia danh sách thành danh sách tìm kiếm  Phương pháp tìm kiếm nội suy nhanh phương pháp nhị phân chúng dự đốn kết tìm kiếm phần để thực tìm kiếm PhD Ngo Huu Phuc, Le Quy Don Technical University 8.1 Tìm kiếm (1/7)  Đây phương pháp tìm kiếm đơn giản  Ý tưởng chung tìm kiếm tuần tự:  Sử dụng vịng lặp để duyệt danh sách, xuất phát từ phần tử danh sách  Tại bước lặp, so sánh phần tử danh sách với giá trị cần tìm ( theo khóa ) Quá trình dừng tìm thấy đối tượng cần tìm hết danh sách PhD Ngo Huu Phuc, Le Quy Don Technical University 8.1 Tìm kiếm (2/7) Sub LinearSearch(x:int, a[]: Int, loc: Int) i:=1 While (i a[m]: đặt l = m +  Nếu trình tìm kiếm chưa kết thúc, tiếp tục tìm với số l r  Quá trình tìm kiếm dừng khi: tìm thấy, xa[r] 20 PhD Ngo Huu Phuc, Le Quy Don Technical University 8.3 Tìm kiếm nội suy (4/7) Ví dụ: Tìm phần tử có khóa x = 32 danh sách 10 11 12 13 14 15 16 17 18 19 20 9 12 13 17 19 21 24 32 36 44 45 54 55 63 66 70 1: l=1, r=20 -> m=1+(32-1)*(20-1)/(70-1) = 10 a[10]=21 l=11 2: l=11, r=20 -> m=11+(30-24)*(20-11)/(70-24) = 12 a[12]=32=x -> Found at m = 12 21 PhD Ngo Huu Phuc, Le Quy Don Technical University 8.3 Tìm kiếm nội suy (5/7) Ví dụ: Tìm phần tử có khóa x = 30 danh sách 10 11 12 13 14 15 16 17 18 19 20 9 12 13 17 19 21 24 32 36 44 45 54 55 63 66 70 1: l=1, r=20 -> m=1+(30-1)*(20-1)/(70-1) = a[9]=19 l=10 2: l=10, r=20 -> m=10+(30-21)*(20-10)/(70-21) = 12 a[12]=32>30=x -> r = 11 3: l=10, r=11 -> m=10+(30-24)*(11-10)/(24-21) = 12 PhD Ngo Huu Phuc, Le Quy Don Technical University 22 m=12>11=r: Not Found 8.3 Tìm kiếm nội suy (6/7) Private Sub Interpolation(a[]: Int, x: Int, n: Int, Found: Boolean) l = 1: r = n Do While (r > l) m = l + ((x – a[l]) / (a[r] – a[l])) * (r - l) If (a[m] = x) Or (m < l) Or (m > r) Then If (a[m] = x) Then Found = True Else Found = False Exit Do ElseIf (a[m] < x) Then l=m+1 ElseIf (a[m] > x) Then r=m-1 End If Loop End Sub 23 PhD Ngo Huu Phuc, Le Quy Don Technical University 8.3 Tìm kiếm nội suy (7/7) Nhận xét:  Tìm kiếm nhị phân cho tốc độ tìm kiếm nhanh (độ phức tạp O(logn)) Tuy nhiên, tìm kiếm nội suy cho tốc độ tìm kiếm tốt (độ phức tạp O(loglogn))  Ví dụ, với n = 2^32 (4 tỉ phần tử)  Tìm kiếm nhị phân cần khoảng 32 bước  Tìm kiếm nội suy cần khoảng bước  Tìm kiếm nội suy hiệu với danh sách có số phần tử lớn  Tìm kiếm nội suy dùng tìm kiếm liệu 24 lưu trữ ổ cứng thiết bị truy cập chậm khác PhD Ngo Huu Phuc, Le Quy Don Technical University .. .Bài Các thuật tốn tìm kiếm Nội dung: 8.1 Khái niệm tìm kiếm (3) 8.2 Phương pháp tìm kiếm (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... (4 tỉ phần tử)  Tìm kiếm nhị phân cần khoảng 32 bước  Tìm kiếm nội suy cần khoảng bước  Tìm kiếm nội suy hiệu với danh sách có số phần tử lớn  Tìm kiếm nội suy dùng tìm kiếm liệu 24 lưu trữ... danh sách tìm kiếm  Phương pháp tìm kiếm nội suy nhanh phương pháp nhị phân chúng dự đốn kết tìm kiếm phần để thực tìm kiếm PhD Ngo Huu Phuc, Le Quy Don Technical University 8.1 Tìm kiếm (1/7)

Ngày đăng: 24/09/2020, 04:27

Tài liệu cùng người dùng

Tài liệu liên quan