Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
176 KB
Nội dung
Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN THÔNG TIN CHUNG VỀ SÁNG KIẾN Tên sáng kiến: Hướng dẫn học sinh lựa chọn thuật toán tối ưu lập trình giải tốn máy tính Lĩnh vực áp dụng sáng kiến: Áp dụng giảng dạy lập trình mơn tin học 11 Thời gian áp dụng sáng kiến: Từ ngày 20, tháng 09, năm 2014 đến ngày 20, tháng 4, năm 2016 Tác giả: Họ tên: Nguyễn Thị Phương Ngân Năm sinh: 1986 Nơi thường trú: Khu Tập thể giáo viên trường THPT Mỹ Tho Trình độ chun mơn: cử nhân sư phạm tin học Chức vụ công tác: Giáo viên dạy môn Tin học Nơi làm việc: Trường THPT Mỹ Tho Điện thoại: 0975061791 Đơn vị áp dụng sáng kiến: Tên đơn vị: Trường THPT Mỹ Tho Địa chỉ: xã Yên Chính – Ý Yên – Nam Định Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN MỤC LỤC Trang Trang .2 Đề tài: Hướng dẫn học sinh lựa chọn thuật toán tối ưu lập trình giải tốn máy tính I Điều kiện, hoàn cảnh tạo sáng kiến Hiện giới, tin học ngày phát triển mạnh mẽ, có ứng dụng rộng rãi hầu hết lĩnh vực xã hội, phát triển tin học tính giờ, lại có thêm phiên phần mềm tin học nâng cấp hay có phần mềm tạo Ở Việt Nam vậy, tin học có mặt trợ giúp ngành nghề, khắp nơi, từ thành thị đến nông thôn phổ biến với tất người từ người già đến trẻ, từ công nhân viên đến người nông dân cần đến trợ giúp tin học Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN Ngày nay, tin học trở thành phần thiếu sống Lịch sử phát triển xã hội loài người văn minh thứ ba Sự hình thành phát triển văn minh gắn liền với công cụ lao động mới, chẳng hạn máy nước – văn minh cơng nghiệp, máy tính điện tử - văn minh thơng tin Máy tính cơng cụ trợ giúp cho phát triển Tin học, đáp ứng nhu cầu tính tốn, lưu trữ, tìm kiếm, , xử lý thơng tin cách có hiệu Máy tính có tốc độ xử lý nhanh (hàng tỉ lệnh giây) có giới hạn Tất máy tìm kiếm (ví dụ google, yahoo hay gmail…) lập trình đoạn lệnh Ngơn ngữ lập trình máy sử dụng thuật tốn tối ưu (tốt ) tìm kiếm nhanh, xác đông đảo người dùng lựa chọn sử dụng Với toán vậy, toán có nhiều thuật tốn để giải ta nên lựa chọn thuật tốn tối ưu (có số phép tính nhất) Vậy việc lựa chọn thuật tốn đưa tới kết nhanh đòi hỏi thực tế cần quan tâm đặc biệt Do đó, viết chương trình ta nên tìm cách viết cho chương trình thực phép tốn tốt Xuất phát từ thực tế tơi đưa đề tài: “Hướng dẫn học sinh lựa chọn thuật toán tối ưu lập trình giải tốn máy tính” nhằm định hướng cho em học sinh biết phân tích, lựa chọn thuật tốn tối ưu trước lập trình giải tốn máy tính II Mơ tả giải pháp Thực trạng Nhận thấy tầm quan trọng Tin học thực tế sống, lĩnh vực, ngành nghề, từ năm học 2007- 2008 Bộ giáo dục đào tạo đưa môn Tin học thành mơn học thức tất trường Trung học sở, Trung Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN học phổ thông Mỗi khối lớp biên soạn chương trình từ đến cụ thể vấn đề nhằm giúp học sinh có hiểu biết Tin học, có tư duy, logic Tin học với mơn học khác, từ giúp em vận dụng vào thực tế Trong chương trình Tin học 11 sâu vào dạy học lập trình, em học sinh hiểu khái niệm sở, kiến thức lập trình, vận dụng kiến thức để lập trình giải tốn máy tính Tuy nhiên em lập trình cịn mang tính chất cảm tính, lập trình cho chương trình chạy chưa biết phân tích, lựa chọn thuật toán tối ưu để giải toán Trước thực tế tơi đưa đề tài: “Hướng dẫn học sinh lựa chọn thuật toán tối ưu lập trình giải tốn máy tính” nhằm định hướng cho em biết thuật toán tối ưu gì, phải lựa chọn thuật tốn tối ưu, để từ em biết phân tích, lựa chọn thuật tốn trước lập trình giải tốn máy tính Các giải pháp trọng tâm 2.1 Mục đích, yêu cầu - Đề tài sâu vào mục đích trao đổi đồng nghiệp, thầy giáo vai trị việc lựa chọn thuật tốn tối ưu - Giúp em học sinh nhớ lại quy trình lập trình giải tốn máy tính, đặc biệt bước lựa chọn thuật tốn giải toán quan trọng - Giúp em học sinh hiểu thuật toán nên lựa chọn thuật tốn tối ưu để giải tốn, từ đứng trước tốn học sinh biết nhận xét, phân tích trường hợp để đề xuất, lựa chọn thuật toán tối ưu giải tốn cho chương trình chạy nhanh - Thơng qua số thuật tốn (như xếp, tìm kiếm,…) học sinh biết vận dụng để giải tốn phức tạp 2.2 Nội dung Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN 2.2.1 Nhắc lại bước lập trình giải tốn máy tính Thơng thường lập trình giải tốn máy tính học sinh hay bị mắc sai lầm viết chương trình ln mà bỏ qua bước giải tốn máy tính, có chương trình chạy sai kết hiểu sai đề, thuật tốn chưa khả thi… Vì dạy lập trình giáo viên nhắc học sinh khơng nên viết chương trình mà nên nhớ lại bước giải toán máy tính Việc giải tốn máy tính thường tiến hành qua bước sau: + Bước 1: Xác định toán; + Bước 2: Lựa chọn thiết kế thuật tốn; + Bước 3: Viết chương trình; + Bước 4: Hiệu chỉnh; + Bước 5: Viết tài liệu Trong bước giải tốn máy tính bước lựa chọn thiết kế thuật toán đặc biệt quan trọng để em phân tích đề bài, tìm hướng giải, thuật tốn phù hợp 2.2.2 Một số khái niệm 2.2.2.1 Khái niệm thuật toán 2.2.2.1.1 Thuật tốn Thuật tốn để giải toán dãy hữu hạn thao tác xếp theo trình tự xác định cho sau thực dãy thao tác từ Input tốn, ta nhận Output cần tìm 2.2.2.1.2 Các tính chất thuật tốn - Tính dừng: Thuật toán phải kết thúc sau số hữu hạn lần thực thao tác - Tính xác định: Sau thực thao tác thuật tốn kết thúc có thao tác xác định để thực Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN - Tính đắn: Sau thuật toán kết thúc, ta phải nhận Output cần tìm 2.2.2.1.3 Vì phải lựa chọn thuật tốn tối ưu a Vì phải lựa chọn thuật toán tối ưu Sau xây dựng thuật tốn chương trình tương ứng, cài đặt theo thuật toán đáp ứng tính chất thuật tốn khơng cho kết mong muốn liệu địi hỏi q nhiều thời gian, khơng có đủ nhớ để lưu giữ liệu biến chương trình Vì ta cần phân tích thuật toán để đưa thuật toán tối ưu b Căn vào đâu để xác định thuật toán tối ưu Với tốn, khơng có thuật tốn, vào đâu để nói thuật tốn nhanh thuật tốn kia? Ta vào thời gian nhớ cần thiết để thực thuật toán Trong đề tài ta quan tâm đến thời gian thực thuật toán Việc đánh giá thời gian thực thuật toán dẫn tới khái niệm “độ phức tạp thời gian thuật toán” chứng minh thường gọi tắt độ phức tạp thuật tốn, kí hiệu O( ) Độ phức tạp thuật tốn nhỏ thuật tốn chạy nhanh khả thi Thời gian thực thuật toán phụ thuộc vào nhiều yếu tố như: kích thước liệu đưa vào, lựa chọn, bố trí kiểu liệu có hợp lý khơng… Vậy để tính tốn thời gian thực thuật tốn ta đếm số câu lệnh mà thực hiện, số trường hợp đếm cụ thể phép tính số học, so sánh, gán…mà thuật tốn địi hỏi thực chạy trực tiếp chương trình ngơn ngữ lập trình cụ thể thử nghiệm nhờ số liệu so sánh kết thử nghiệm với kết mà ta biết c Ngơn ngữ thuật tốn Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN - Ngôn ngữ dùng để miêu tả thuật tốn gọi ngơn ngữ thuật tốn - Thuật tốn thường mơ tả dãy lệnh Bộ xử lý thực lệnh theo trật tự định gặp lệnh dừng kết thúc - Ngơn ngữ thuật tốn bao gồm: + Ngơn ngữ liệt kê bước; + Sơ đồ khối; + Ngơn ngữ lập trình - Trong đề tài ưu tiên sử dụng ngôn ngữ liệt kê bước ngôn ngữ lập trình Pascal 2.2.3 Một số thuật tốn thường dùng 2.2.3.1 Thuật toán xếp 2.2.3.1.1 Bài toán * Bài toán: Cho số nguyên dương N dãy A gồm N số nguyên: a 1, a2,…, aN Sắp xếp dãy A thành dãy không giảm (tức số hạng trước khơng lớn số hạng sau) * Ví dụ: Cho N=6, dãy A: => Dãy sau xếp: 3 2.2.3.1.2 Thuật tốn Trong q trình học tập giảng dạy tơi học biết có nhiều phương pháp xếp (chẳng hạn xếp kiểu lựa chọn, xếp kiểu thêm dần, xếp kiểu phân đoạn, xếp kiểu vun đống, xếp kiểu hòa nhập hai đường trực tiếp, xếp tuần tự, tráo đổi, xếp nhanh Quick sort…) Tuy nhiên chương trình tin học phổ thơng tơi ưu tiên sử dụng phương pháp xếp tráo đổi xếp nhanh Quick-sort Tôi nhận thấy: phương pháp xếp tráo đổi đơn giản dễ hiểu với học sinh, số lượng phép tính tốn, chi phí thời gian thực không cao, Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân Tổ: Lý – Tin - KTCN nhiên tập liệu đưa vào lớn phương pháp bộc lộ hạn chế; cịn phương pháp xếp nhanh Quick sort thuật tốn xếp tuyệt vời, có chi phí thời gian thấp Trong đề tài tơi đưa hai thuật tốn xếp là: xếp tráo đổi xếp nhanh Quick sort để độc giả có so sánh sử dụng linh hoạt trường hợp cụ thể 2.2.3.1.2.1 Thuật toán xếp tráo đổi * Ý tưởng phương pháp: Với cặp số hạng đứng liền kề dãy, số trước lớn số sau ta đổi chỗ chúng cho Việc lặp lại khơng có đổi chỗ * Thuật toán: Procedure sapxeptraodoi; Var i, j, tg: integer; begin For i:=1 to n-1 For j:= n downto i+1 If a[j]< a[j-1] then Begin Tg:=a[j]; A[j]:=a[j-1]; A[j-1]:=tg; End; End; * Nhận xét: Thuật tốn sử dụng vịng lặp for… => lần duyệt i phải thực n-1 phép so sánh để tìm giá trị lớn đẩy cuối dãy Vậy số Trường THPT Mỹ Tho Giáo viên: Nguyễn Thị Phương Ngân phép toán cần thiết là: (n-1)+(n-2)+…+1= Tổ: Lý – Tin - KTCN n * (n − 1) => Độ phức tạp thuật toán xấp xỉ cỡ O(n2) 2.2.3.1.2.2 Thuật toán xếp nhanh Qick-sort * Ý tưởng phương pháp: Để xếp dãy trước tiên ta chọn phần tử ngẫu nhiên dãy làm “chốt” Mọi phần tử có giá trị nhỏ “chốt” phải xếp vào vị trí trước “chốt” (đầu dãy); phần tử có giá trị lớn “chốt” phải xếp vào vị trí sau “chốt” (cuối dãy) Khi dãy cần xếp phân thành hai đoạn: đoạn gồm phần tử có giá trị nhỏ “chốt”, đoạn gồm phần tử có giá trị lớn “chốt” Cứ tiếp tục xếp lặp lặp lại với đoạn cuối ta thu dãy xếp theo chiều tăng dần * Thuật toán: procedure qs(l,h:longint); var i,j,k:longint; begin if l>=h then exit; i:=l; j:=h; k:=a[random(h-l+1)+l]; repeat while a[i]k dec(j); if i