(SKKN 2022) vận dụng thuật toán tìm kiếm nhị phân vào giải quyêt tối ưu một số bài toán

22 21 0
(SKKN 2022) vận dụng thuật toán tìm kiếm nhị phân vào giải quyêt tối ưu một số bài toán

Đ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ụclục: PHẦN MỞ ĐẦU I Lí chọn đề tài .1 II Mục đích đề tài III Đối tượng phạm vi nghiên cứu IV Phương pháp nghiên cứu PHẦN NỘI DUNG SÁNG KIẾN KINH NGHIỆM I Cơ sở lý luận .2 I.1 Bài tốn tìm kiếm I.2 Thuật tốn tìm kiếm nhị phân .2 I.3 Hiệu tìm kiếm nhị phân tốn tìm kiếm II Vận dụng thuật toán giải tối ưu số toán II.1 Một số dạng sử dụng thuật tốn tìm kiếm nhị phân II.2 Một số tốn tìm kiếm nhị phân II.3 Một số toán nâng cao sử dụng thuật tốn tìm kiếm nhị phân 12 III Hiệu sáng kiến 18 PHẦN KẾT LUẬN 19 PHẦN MỞ ĐẦU I Lí chọn đề tài Hiện tài liệu dạng chuyên đề nâng cao phục vụ cho việc bồi dưỡng học sinh giỏi môn Tin học chưa thật đầy đủ tổng quát, đặc biệt chuyên đề khó, đưa vào đề thi học sinh giỏi tỉnh như: Chia để trị, Quy hoạch động, … Từ thực tiễn giảng dạy tin trường THPT thấy để đạt hiệu cao bồi dưỡng học sinh giỏi, cần có cách thiết kế giảng cho phù hợp với nội dung kiến thức dựa tài liệu chuyên đề đầy đủ rõ ràng từ lýthuyết đến tập theo xu chung kì thi học sinh giỏi cấp tương lai, để mang lại thành tích cao cho đội tuyển học sinh giỏi kì thi Xuất phát từ sở trên, tơi chọn đề tài “ Vận dụng thuật tốn tìm kiếm nhị phân vào giải quyêt tối ưu số toán” , sáng kiến giúp học sinh trường THPT Cầm Bá Thước vận dụng kiến thức vào làm tốt dạng đề thi học sinh giỏi tỉnh có liên quan đến phương pháp chia để trị, phục vụ cho việc bồi dưỡng học sinh giỏi trường II Mục đích đề tài - Mục tiêu đề tài giúp học sinh nắm thuật tốn tìm kiếm nhị phân; Tăng khả tư thuật tốn, phát huy tính sang tạo, Năng lực vận dụng kiến thức học vào giải tốn - Giúp cho việc ơn thi học sinh giỏi đạt kết cao - Tạo nguồn tài liệu tham khảo phương pháp thuật toán nhằm hỗ trợ cho học sinh, giáo viên dạy bồi dưỡng học sinh giỏi tin học III Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu - Thuật tốn tìm kiếm nhị phân vận dụng vào tốn tối ưu sử dụng ngơn ngữ lập trình C++ - Học sinh giỏi tin khối 11, 12, giáo viên giảng dạy học sinh giỏi tin Phạm vi nghiên cứu Sử dụng Thuật tốn tìm kiếm nhị phân để giải số toán bồi dưỡng học sinh giỏi tin học 11, 12 IV Phương pháp nghiên cứu - Thu thập, phân tích tài liệu thơng tin liên quan đến Thuật tốn tìm kiếm nhị phân - Lựa chọn số toán để sử dụng Thuật tốn tìm kiếm nhị phân - Thiết kế toán lựa chọn chương trình tin học 11 để bồi dưỡng học sinh giỏi 2 PHẦN NỘI DUNG SÁNG KIẾN KINH NGHIỆM I Cơ sở lý luận I.1 Bài tốn tìm kiếm Tìm kiếm việc thường xảy sống, chẳng hạn tìm kiếm học sinh trường học, tìm kiếm đồ siêu thị, tìm kiếm kiến thức mạng Internet,…Tổng quát, phạm vi đó, tập hợp đối tượng đó, cần tìm đối tượng cụ thể thỏa mãn yêu cầu Các tốn tìm kiếm thường đưa tìm kiếm phần tử mảng số I.2 Thuật tốn tìm kiếm nhị phân Chia để trị tư tưởng phổ biến sống áp dụng hiệu Tin học Tư tưởng phương pháp chia để trị Người ta phân toán thành toán con, toán lại tiếp tục phân thành toán nhỏ hơn, tiếp tục ta nhận tốn có thuật giải dễ dàng đưa thuật giải Sau kết hợp nghiệm tốn để nhận nghiệm toán lớn để cuối nhận nghiệm toán cần giải Thơng thường tốn phân chia dạng với tốn ban đầu có cỡ chúng nhỏ Thuật tốn tìm kiếm nhị phân dựa tư tưởng chia để trị Với dãy số xếp, ta thường tìm cách thu hẹp phạm vi tìm kiếm cách phân đơi vùng tìm kiếm, xác định xem khóa tìm kiếm phần đầu hay phần cuối Sau thu hẹp lại phân đơi Q trình xảy khơng tồn vùng tìm kiếm tìm số cần tìm Thuật tốn tìm kiếm nhị phân thường phát biểu toán sau: “ Cho mảng n phần tử tăng dần phần tử x Tìm xem x có mảng hay khơng” u cầu: Thuật tốn dung dãy số xếp đơn điệu theo thứ tự tăng giảmdần I.3 Hiệu tìm kiếm nhị phân tốn tìm kiếm Trong ngơn ngữ lập trình C++, việc sử dụng hàm phổ biến dung hàm dễ dàng mà nhớ đoạn lệnh dài mà lại tối ưu việc xếp Do ta thường dung hàm sort để tối ưu việc xếp phần tử dung thuật tốn tìm kiếm nhị phân Cấu trúc câu lệnh sort sau: sort(a,a+n);// xếp mảng a tăng dần từ phần tử đến phần tử thứ n-1 Hoặc sort(a+1, a+n+1);// xếp mảng a tăng dần từ phần tử thứ đến phần tử thứ n Hoặc sort(a,a+n,greater());//sắp xếp mảng a giảm dần từ phần tử đến n-1 Hàm sort có độ phức tạp O(nlogn), sử dụng thuật toán xếp nhanh Quicksort kết hợp với Selection Sort, có tốc độ xếp nhanh thuật toán xếp bọt hay xếp chọn, xếp chèn, hồn tồn xếp n=100.000 phần tử số bước xếp khoảng 1.700.000, máy tính hồn tồn thực giây 3 Cũng có trường hợp mảng tìm kiếm mảng thường xếp sẵn theo giá trị nên ta dễ dàngtìm kiếm mảng xếp Tư tưởng thuật toán: chọn phần tử vị trí làm chốt, chia dãy thành phần có kích thước nhỏ Sau so sánh phần tử cần tìm x với chốt, x lớn chốt tìm nửa sau dãy, x nhỏ chốt tìm nửa trước dãy (áp dụng với dãy tăng), trình tiếp tục tìm x dãy chia khơng cịn phần tử Thuật tốn: Cho dãy số: A{n} gồm n phần tử nguyên tăng dần, tìm phần tử có giá trị x Bước 1:Xét đoạn mảng a[L H] ban đầu L=1; H=n; Bước 2: Phần tử chốt chọn dãy k=(L+H)/2; Bước 3: so sánh x với a[k], a[k]=x nghiệm, đưa nghiệm kết thúc tìm kiếm Bước 4: Nếu a[k]>x ta lấy nửa đầu, thực tìm kiếm đoạn a[L;k-1] Bước 5: Nếu a[k]m; for (i=1;i>t; if (tim(1,N,t)==0) coutT; for(i=1;it; cout

Ngày đăng: 06/06/2022, 07:39

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

Tài liệu liên quan