1. Trang chủ
  2. » Công Nghệ Thông Tin

Tiểu luận Tìm Kiếm Nhị Phân BINARY SEARCH

27 1,3K 6

Đ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

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 270 KB

Nội dung

Tiểu luận về Thuật toán và ứng dụng của Tìmm kiếm nhị phân (Binary Search) trong lập trình. Tài liệu có chứa thuật toán Duyệt bằng cách chia đôi tập hợp. Tiểu luận do nhóm Học sinh chuyên Tin Khóa K26 trường THPT chuyên Thái Nguyên thực hiện

SỞ GD&ĐT THÁI NGUYÊN TRƯỜNG THPT CHUYÊN THÁI NGUYÊN BÀI TIỂU LUẬN MÔN TIN HỌC Tên đề tài: TÌM KIẾM NHỊ PHÂN Nhóm thực hiện: Phạm Thị Lan Anh Đồng Thị Thương Vũ Thu Phương Học sinh lớp: Tin 11 - K26 Thái Nguyên, tháng 12/2015 Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU NỘI DUNG CHƯƠNG I: ĐẶT VẤN ĐỀ CHƯƠNG II: CƠ SỞ LÍ THUYẾT VÀ BÀI TẬP MINH HỌA A - CƠ SỞ LÍ THUYẾT B - BÀI TẬP MINH HỌA CHƯƠNG III: ỨNG DỤNG VÀ PHÁT TRIỂN 12 KẾT LUẬN CHUNG 26 DANH MỤC TÀI LIỆU THAM KHẢO .27 Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) LỜI NÓI ĐẦU Thế kỷ 21 coi kỷ nguyên Công nghệ thông tin Các nhà khoa học khẳng định chưa có ngành khoa học - công nghệ lại có nhiều ứng dụng công nghệ thông tin Nổi bật ngành khoa học máy tính - ngành nghiên cứu sở lý thuyết thông tin tính toán thực ứng dụng chúng hệ thống máy tính Khi tìm hiểu ngành này, dễ dàng bắt gắp toán yêu cầu tìm kiếm (tìm phần tử danh sách), ví dụ danh bạ điện thoại tìm kiếm số điện thoại người theo tên người Để giải toán vậy, có nhiều cách khác Hiểu đơn giản, cách phương pháp tìm kiếm Ở đề cập đến phương pháp tìm kiếm ngôn ngữ lập trình Pascal thuật toán tìm kiếm Có nhiều thuật toán tìm kiếm, đơn giản thuật toán Tìm kiếm tuyến tính Thuật toán kiểm tra phần tử danh sách theo thứ tự danh sách Có thể sử dụng thẳng cho danh sách mà không cần tiền xử lý Đối với danh sách lớn, đòi hỏi thuật toán tốt với độ phức tạp nhỏ Trong tiêu biểu Thuật toán Tìm kiếm nhị phân (hay gọi chặt nhị phân) Qua hiểu biết chúng em thuật toán cao cấp hẳn tìm kiếm tuyến tính đòi hỏi danh sách phải xếp từ trước, lại có ứng dụng nhiều Vì vậy, nhóm em muốn tìm hiểu sâu thuật toán làm rõ vấn đề liên quan đến qua kiến thức mình, qua sách tài liệu liên quan Những kiến thức trình bày tiểu luận gồm chương với nội dung tìm hiểu vấn đề thực trạng, sở lí thuyết, tập minh họa, ứng dụng phát triển Bài tiểu luận không tránh khỏi sai sót, mong thầy bạn nhiệt tình đóng góp ý kiến để giúp chúng em hiểu biết thêm lĩnh vực Em xin trân thành cảm ơn! Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) NỘI DUNG CHƯƠNG I: ĐẶT VẤN ĐỀ Trong ngành khoa học máy tính, giải thuật tìm kiếm thuật toán lấy đầu vào toán trả kết lời giải cho toán đó, thường sau cân nhắc loạt lời giải Hầu hết thuật toán nghiên cứu nhà khoa học máy tính để giải toán thuật toán tìm kiếm Tập hợp tất lời giải toán gọi không gian tìm kiếm Như biết, có nhiều toán yêu cầu tìm kiếm thuật toán tìm kiếm Tuy nhiên, thuật toán đơn giản, dễ cài đặt đáp ứng yêu cầu toán với liệu nhỏ có thời gian thực thi cao (như tìm kiếm tuyến tính) Còn thuật toán tốt hẳn lại có mặt hạn chế khó cài đặt đặc biệt gây nhiều khó khăn cho người nhập môn (như thuật toán Tìm kiếm nội suy hay Giải thuật Grover) Chính vậy, vấn đề đặt phải có thuật toán có đặc tính hẳn nhiều thuật toán khác mà đặc biệt phải không khó hiểu hay khó sử dụng Thuật toán Tìm kiếm nhị phân (Binary search) hay gọi đơn giản chặt nhị phân thích hợp cho yêu cầu nói Tuy nhiên, thuật toán có vài nhược điểm nhỏ sử dụng thuật toán lợi, tìm hiểu kĩ “ Thuật toán tìm kiếm nhị phân” Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) CHƯƠNG II: CƠ SỞ LÍ THUYẾT VÀ BÀI TẬP MINH HỌA A - CƠ SỞ LÍ THUYẾT Định nghĩa khái niệm tìm kiếm Tìm kiếm đòi hỏi thường xuyên ứng dụng tin học Bài toán tìm kiếm phát biểu sau:  Cho dãy gồm n ghi r[1 n] Mỗi ghi r[i] (1 ≤ i ≤ n) tương ứng với khoá k[i] Hãy tìm ghi có giá trị khoá X cho trước X gọi khoá tìm kiếm hay đối trị tìm kiếm (argument)  Công việc tìm kiếm hoàn thành có hai tình sau xảy ra: • Tìm ghi có khoá tương ứng X, lúc phép tìm kiếm thành công • Không tìm ghi có khoá tìm kiếm  X cả, phép tìm kiếm thất bại Sử dụng thuật toán tìm kiếm nhị phân để giải toán tìm kiếm Phép áp dụng dãy khoá có thứ tự: k[1] ≤ k[2] ≤ … ≤ k[n].Giả sử ta cần tìm đoạn k[left right] với khoá tìm kiếm X, trước hết ta xét khoá nằm dãy k[mid] với mid = (left + right) div 2; • Nếu k[mid] < X có nghĩa đoạn từ k[left] tới k[right] chứa toàn khoá < X, ta tiến hành tìm kiếm tiếp với đoạn từ k[mid+1] tới k[right] • Nếu k[mid] > X có nghĩa đoạn từ k[mid] tới k[right] chứa toàn khoá > X, ta tiến hành tìm kiếm tiếp với đoạn từ k[left] tới k[mid-1] • Nếu k[mid] = X việc tìm kiếm thành công (kết thúc trình tìm kiếm)  Quá trình tìm kiếm thất bại đến bước đó, đoạn tìm kiếm rỗng (left>right) Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search)  Sơ đồ bước thực thuật toán tìm kiếm nhị phân (Binary search): Nhập N, a1, a2, …, aN k Đầu  1; Cuối  N Giữa[(Đầu + Cuối)/2] Đ a[giữa]=k S Đ a[giữa]>k Cuối  Giữa - S Đầu  Giữa +1 Đầu > Cuối Đưa Giữa; KT Thông báo dãy A số gạng có giá trị k; KT S Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) {Tìm kiếm nhị phân dãy khoá k[1] ≤ k[2] ≤ … ≤ k[n]; hàm thử tìm xem dãy có khoá = X không, thấy trả số khoá ấy, không thấy trả 0} Function BinarySearch(X: TKey): Integer; Var left, right, mid: Integer; begin left := 1; right := n; while left ≤ right begin mid := (left + right) div 2; If k[mid] = X then Begin BinarySearch := mid; Exit; end; if k[mid] < X then left := mid + else right:= mid - 1; end; BinarySearch := 0; end; Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) 2.1 Phân tích đánh giá  Người ta chứng minh độ phức tạp tính toán thuật toán trường hợp tốt O(1), trường hợp xấu O(lg n) trường hợp trung bình O(lgn) Tuy nhiên, ta không nên quên trước sử dụng, dãy khoá phải xếp rồi, tức thời gian chi phí cho việc xếp phải tính đến Nếu dãy khoá luôn biến động phép bổ sung hay loại bớt lúc chi phí cho xếp lại lên rõ làm bộc lộ nhược điểm phương pháp  Đánh giá giải thuật, ta có bảng so sánh sau: Trường hợp Số lần so sánh Giải thích Tốt Phần tử mảng có giá trị x Xấu Log2n Không có x mảng Trung bình Log2 Giả sử xác suất phần tử mảng nhận giá trị x Bảng 1: Đánh giá giải thuật thuật toán tìm kiếm nhị phân Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) B - BÀI TẬP MINH HỌA Bài toán 1: Cho dãy gồm n phần tử: A1, A2, An-1, An Các phần tử xếp theo thứ tự tăng dần Cần kiểm tra xem khoá x=key cho trước có tồn dãy không Dữ liệu: • Dòng 1: Ghi số nguyên n, m • N dòng tiếp theo: Mỗi dòng ghi số nguyên Ai • M dòng tiếp theo: Mỗi dòng ghi khoá key Kết quả: Gồm m dòng • Nếu tìm thấy ghi vị trí tương ứng khóa key dãy A • Nếu không tìm thấy ghi -1 Giới hạn: [...]... l[d]:=i; 20 Tìm hiểu về thuật toán tìm kiếm nhị phân( Binary search) end else begin dau:=1; cuoi:=d; while dau ... k[mid] = X việc tìm kiếm thành công (kết thúc trình tìm kiếm)  Quá trình tìm kiếm thất bại đến bước đó, đoạn tìm kiếm rỗng (left>right) Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search)  Sơ... writeln(res); END 25 Close(OUTPUT); Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) KẾT LUẬN CHUNG Hiện nay, có nhiều thuật toán xếp hiệu Tìm kiếm nhị phân (Binary search) thuật toán ứng dụng rộng... lớn o Nếu A>S tìm kiếm đoạn [Ctg+1, Cmax] o Nếu A Cmax 12 Tìm hiểu thuật toán tìm kiếm nhị phân( Binary search) Code:

Ngày đăng: 13/12/2015, 19:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w