COMP 494: PHƯƠNG PHÁP DẠY HỌC THUẬT TOÁN VÀ LẬP TRÌNH Ở TRƯỜNG PHỔ THƠNG Thơng tin Mã ngành: Sư phạm tin học Mã học phần: COMP 494 Tên học phần: Phương pháp dạy học thuật toán lập trình trường phổ thơng Số tín chỉ: Số tiết lí thuyết: 24 tập: thảo luận: thực hành: Tự học: 60 Trình độ: Năm thứ tư Điều kiện tiên quyết: Học xong học phần COMP340, COMP334, COMP433, COMP138 Chương THUẬT TOÁN VÀ CÁC CÁCH TIẾP CẬN DẠY HỌC THUẬT TOÁN 1.1 Sự hình thành khái niệm thuật tốn tốn học 1.1.1 Nguồn gốc từ thuật toán Theo Steven Robert (1988), từ "thuật tốn" hay “thuật giải” ("algorithm") có nguồn gốc từ tên gọi Mohamed ibn Musa al-Khowarizmi tên nhà toán học cổ đại người Trung Á (năm 825 sau công nguyên), người phát minh tập qui tắc để thực phép toán cộng, trừ, nhân, chia số thập phân Vào năm 1857, sách đại số ông bắt đầu dịch sang chữ Latin Trong dịch tiếng Anh, từ al-Khowarizmi (hoặc al-Khwarizm, ngun Latin “al-Khwârizmỵ”) phát âm "algoritmi" sau nhiều người gọi algorithm Ngoài ra, từ “algebra” (“đại số”) mà dùng ngụ ý phần tiêu đề chữ A-rập sách này, phiên Latin “Kitâb al-jabr wa‟l-muqâbala” (“Quyển sách Aljabr Almuqâbala”) Theo Steven Robert (1988), tên gọi nhà đại số nghĩa Mohamed, trai Musa, đến từ huyện Khowarizmi Quê hương của Mohamed sau nước Cộng hòa xã hội chủ nghĩa Xô-Viết người Kazakh, Turkmen, Uzbek Tuy nhiên Donald E Knuth (1980) lại cho phần tên gọi al-Khwârizmỵ lại khơng chứng minh ơng sinh Khwarizm Vì cơng việc nghiên cứu ơng diễn Baghdad, nơi mà số nhà khoa học gọi “Ngôi nhà thông thái” (“House of Wisdom”) Caliph al-Ma‟mun - nhà tài trợ nối tiếng cho nhà nghiên cứu khoa học, mời nhiều người đến khóa học ơng để tuyển chọn mở rộng tài giới Nhà sử học al-Tabari thêm từ "al-Qutrubbulli" vào tên al-Khwârizmỵ, có ý đề cập đến huyện Qutrubbulli gần Baghdad Do đó, Knuth nghĩ al-Khwârizmỵ sinh Khwarizm sống phần lớn đời Qutrubbull sau triệu tập tới Baghdad Caliph, thật khơng được biết đến NCT-FIT-HNUE 1.1.2 Sự hình thành khái niệm thuật toán toán học Theo Dimitris Samaras (2009), thuật tốn có vai trị quan trọng tốn học Các tài liệu toán học cổ điển bao gồm mơ tả thuật tốn giải nhiệm vụ khác như: tìm số nguyên tố, tìm ước số chung lớn hai số nguyên, … Khái niệm thuật tốn thân khơng định nghĩa xác tận kỉ 20 Trước kỉ 20, nhà tốn học có khái niệm trực giác (intuitive notation) gọi thuật tốn dựa vào khái niệm sử dụng thuật tốn Khái niệm trực giác thuật tốn khơng đủ để có nhìn sâu việc hiểu thuật toán Nhiều tài liệu nghiên cứu ghi lại chương trình David Hilbert phải đối diện với phát triển khái niệm hình thức thuật toán (formal notation of an algorithm) Năm 1900, Hilbert đề cập đến chương trình hội nghị Toán học quốc tế Paris Trong giảng mình, ơng 23 tốn thách thức kỉ Trong số toán này, tốn thứ 10 địi hỏi "một qui trình phụ thuộc câu hỏi có hay khơng đa thức có nghiệm ngun?" Hilbert khơng sử dụng thuật ngữ "thuật tốn" Bài tốn thứ 10 khơng giải được, nghĩa khơng có thuật tốn mà trả lời câu hỏi tồn hay khơng tồn đa thức có nghiệm ngun Khái niệm trực giác thuật tốn khơng có tác dụng việc không tồn thuật toán để giải toán thứ 10 Hilbert Việc cung cấp khái niệm “khơng tồn thuật tốn để giải tốn cho” địi hỏi phải có định nghĩa thức thuật tốn Năm 1936, Alonzo Church Alan Turing đề xuất định nghĩa hình thức cho khái niệm thuật tốn (formal definitions for the concept of algorithm) (xem Goldberg, 2012) Church sử dụng hệ thống khái niệm gọi phép toán (-calculus) để định nghĩa khái niệm thuật tốn, cịn Turing dùng máy Turing (TM - Turing machine) để định nghĩa khái niệm thuật tốn1 Cả hai định nghĩa tương đương phức tạp, phát biểu dài dịng sử dụng thuật ngữ kí hiệu tốn học Các máy Turing xây dựng không dành cho việc trực tiếp chế tạo máy tính, mà dành cho thí nghiệm tưởng tượng để tìm hiểu giới hạn việc tính tốn máy móc Việc nghiên cứu tính chất máy Turing cho biết nhiều kiến thức quan trọng lĩnh vực Khoa học máy tính lý thuyết độ phức tạp tính tốn Máy Turing mà có khả mơ lại hoạt động tất máy Turing khác gọi máy Turing vạn (hay đơn giản máy vạn năng) Máy vạn Alonzo Church mô tả, xây dựng lý thuyết phép tính Lý thuyết Church Turing tổng kết lại luận đề Church-Turing Luận đề khẳng định hàm tốn học tính dùng máy Turing để tính, cho phép định nghĩa khái niệm tính hàm hay thuật Máy Turing mơ hình thiết bị xử lý ký tự, đơn giản, thực tất thuật tốn máy tính Các máy Turing Alan Turing trình bày vào năm 1936 Các máy Turing xây dựng không dành cho việc trực tiếp chế tạo máy tính, mà dành cho thí nghiệm tưởng tượng để tìm hiểu giới hạn việc tính tốn máy móc Việc nghiên cứu tính chất máy Turing cho biết nhiều kiến thức quan trọng lĩnh vực khoa học máy tính lý thuyết độ phức tạp tính tốn Máy Turing mà có khả mơ lại hoạt động tất máy Turing khác gọi máy Turing vạn (hay đơn giản máy vạn năng) Máy vạn Alonzo Church mô tả, xây dựng lý thuyết phép tính lambda Lý thuyết Church Turing tổng kết lại luận đề Church-Turing Luận đề khẳng định hàm tốn học tính dùng máy Turing để tính, cho phép định nghĩa khái niệm tính hàm hay thuật toán NCT-FIT-HNUE toán Các định nghĩa hình thức khác thuật tốn nhiều tác giả đề xuất Kleene sử dụng hàm hồi qui (recursive functions), Markov sử dụng qui tắc đạo hàm gọi chúng thuật toán chuẩn (normal algorithm) Về mặt chất, định nghĩa tương đương với tương đương với máy Turing Năm 1970, Yuri Matijasevic, tập hợp nghiên cứu Martin Davis, Hilary Putnam, Julia Robinson “khơng tồn thuật tốn để kiểm tra có hay khơng đa thức có nghiệm ngun” (xem Adrian Francalanza, 2009) Harry R Lewis Christos H Papadimitriou (1981) thảo luận khái niệm thuật toán Church-Turing (thủ tục tính tốn) khẳng định luận đề Church-Turing rút nguyên lí: “các máy Turing phiên thuật toán khơng tồn thủ tục tính tốn xem thuật tốn ngoại trừ biểu diễn máy Turing”1 Đó luận đề, khơng phải định lí, khơng phải kết tốn học: Nó đơn giản khẳng định khái niệm khơng hình thức tương ứng với đối tượng tốn học định Nó lí thuyết, luận đề Church đổ vỡ vào ngày tương lai, có người đưa mơ hình tính tốn khác mà thừa nhận “máy” xác định đáp ứng đầy đủ yêu cầu bước có khả hồn thành tính tốn mà khơng có máy Turing tính Khẳng định Lewis cộng nhiều nhà nghiên cứu giới sử dụng tham khảo tin cậy Có lẽ mà nhiều nhà nghiên cứu định nghĩa thuật toán dựa vào máy Turing, ví dụ Robb T Koether (2008) phát biểu “Một thuật toán máy Turing mà ln ln dừng” Máy Turing xây dựng để định (đốn nhận) ngơn ngữ Do đó, định nghĩa Robb T Koether tương đương với định nghĩa thuật toán máy Turing mà định ngơn ngữ Nhiều nghiên cứu tốn biểu diễn dạng ngôn ngữ (biểu diễn nhị phân) để giải máy Turing Tuy nhiên định nghĩa thuật tốn dường khơng làm nhà nghiên cứu cảm thấy hài lòng, họ tiếp tục tìm câu trả lời cho câu hỏi “Thuật tốn gì?” Andreas Blassy Yuri Gurevichz (2003) mơ tả trình “truy tìm” để hiểu định nghĩa khái niệm thuật toán, bắt đầu với luận đề Church – Turing, giới thiệu số cách tiếp cận tương phản với Church Turing cuối số khám phá hình thức hóa khái niệm thuật tốn (sequential algorithms), thuật toán song song (parallel algorithms) thuật toán phân phối (distributed algorithms) Yuri Andreas cho biết có chứng thực nghiệm không ủng hộ luận đề Church-Turing Hơn người ta thường giả định luận đề Church-Turing trả lời câu hỏi “thuật tốn gì?”, khơng hồn tồn Nếu nhìn lại năm 1936, Alonzo Church đưa đoán táo bạo “các hàm hồi qui hàm tính được” Vài tháng sau, nghiên cứu độc lập, Alan Turing chứng minh khẳng định tương tự “mọi số thực tính tính máy Turing” Như luận đề Church-Turing quan tâm đến khái niệm hàm tính nhiều khái niệm thuật toán Luận đề Church-Turing bước tiến lớn tới hiểu biết thuật tốn, chưa trực tiếp giải vấn đề “thuật toán gì” Nguyên bản: Turing machines are formal versions of algorithms and that no computational procedure will be considered as an algorithm unless it can be presented as a Turing machine NCT-FIT-HNUE Cơng việc tìm chất định nghĩa thuật toán lại nỗ lực quan tâm vào năm 1953 Andrei N Kolmogorov mà quan điểm thuật tốn ơng Yuri Andreas trình bày lại sau: - Một qui trình thuật tốn chia thành bước độ phức tạp giới hạn trước, nghĩa giới hạn độc lập với input trạng thái việc tính tốn Mỗi bước thuật tốn thực biến đổi trực tiếp trạng thái Biến đổi áp dụng phần trạng thái khơng biến đổi phần cịn lại trạng thái Qui trình thuật tốn thực bước xảy có dấu hiệu đạt lời giải Với quan điểm trên, Kolmogorov đề xuất mô hình tính tốn với Vladimir A Uspensky, mơ hình phát triển thành mơ hình tổng quát cho máy Turing khắc phục hạn chế máy Turing nguyên gốc Yiannis N Moschovakis (2001) cho rằng: Khi thuật toán định nghĩa cách xác (rigorously) tài liệu Khoa học máy tính, chúng nhận máy trừu tượng, mơ hình tốn học máy tính, đơi lí tưởng hóa cách thêm vào “bộ nhớ khơng giới hạn” Từ đó, Yiannis đề xuất cách định nghĩa trực giác thuật toán đưa cách mà nhà khoa học máy tính giải thích áp dụng kết cách định nghĩa Yiannis trình bày định nghĩa thuật toán theo cách hồi qui (recursive definitions) để giao cho mơ hình máy thực cài đặt (implementations), mơ hình xem kiểu thuật toán1 Dù nhắc đến máy trừu tượng để khái quát cho máy tính cụ thể, định nghĩa thuật thuật toán Yiamis, nhiều nhà toán học túy, định nghĩa tốn học, khó hiểu có khoảng cách xa so với định nghĩa thuật toán mà mơ tả tiệm cận với cài đặt máy tính để thực Kết luận - Thuật tốn khái niệm có nguồn gốc từ tốn học hình thành từ định nghĩa trực giác đến định nghĩa hình thức cách xác - Máy Turing xem định nghĩa hình thức cho khái niệm thuật tốn, trình bày dạng trực quan tốn học hình thức, dài dòng phức tạp - Hầu hết định nghĩa hình thức xác khái niệm thuật toán tương đương với xuất phát từ luận đề Church – Turing mơ hình máy Kolmogorov 1.2 Khái niệm thuật tốn khoa học máy tính Những nhà tốn học khoa học máy tính, đặc biệt nhà khoa học máy tính túy, thường đưa khái niệm thức thuật tốn theo cách trực quan hướng đến đối tượng “hiểu được”, đồng thời có khả “thực được” thuật tốn Ngun bản: Algorithms are recursive definitions while machines model implementations, a special kind of algorithms NCT-FIT-HNUE Steven C Althoen Robert J.Bumcrot (1988) đưa định nghĩa đơn giản: "Một thuật toán danh sách bước dẫn để giải toán cụ thể1 Ví dụ, cơng thức làm bánh bao từ bột yến mạch thuật toán đơn sơ, đồ đường" Ngược lại, Leonard Soicher Franco Vivaldi (2004) đưa định nghĩa cách thận trọng sau: “Một cách khơng thức, thuật tốn dãy xác định dẫn rõ ràng để thực nhiệm vụ cụ thể” Karlheinz Essl (2007), người sáng tạo phương pháp “Soạn nhạc theo thuật toán” (“Algorithmic Compositon”), định nghĩa thuật toán sau: “Một thuật tốn định nghĩa tập xác định trước dẫn để giải vấn đề cụ thể số giới hạn bước Thuật tốn thay đổi từ dãy phép toán số học đơn giản đến kết hợp thủ tục phức tạp hơn, sử dụng nhiều dẫn từ khoa học máy tính dựa nguyên tắc ngữ pháp, đệ quy suy luận xác suất.”3 Piotr Fulmanski (2008) định nghĩa “Trong tốn học khoa học máy tính, thuật tốn danh sách xác định, có thứ tự thao tác định nghĩa rõ ràng, cần đến để thực nhiệm vụ đó4.” Chung-Yang Huang cộng (2009) đưa định nghĩa thuật tốn hướng trực tiếp đến máy tính, đối tượng thực thuật toán, cách rõ ràng rằng: “Một thuật tốn danh sách có thứ tự dẫn xác để thực công việc hay giải tốn Nó mơ tả ngơn ngữ tự nhiên, giả mã, sơ đồ, chí ngơn ngữ lập trình5.” Jỗo Fernando Peixoto Ferreira (2010) giải thích câu nói nơm na “tốn học thuật tốn cách tự nhiên” sau: “Khi ta nói toán học thuật toán cách tự nhiên, khơng có nghĩa thuật tốn dùng để giải tốn Ở đây, chúng tơi muốn nói ngun tắc kĩ thuật phát triển để xây dựng giải vấn đề thuật tốn sử dụng để giải nhiều vấn đề toán học6.”, ơng định nghĩa “Một thuật tốn dãy xác định dẫn mà thực cách hệ thống lời giải toán cho7” Nguyên bản: An algorithm is a step-by-step list of instructions for solving a particular problem Nguyên bản: Informally, an algorithm is a finite sequence of unambiguous instructions to perform a specific task Nguyên bản: An algorithm can be defined as a predetermined set of instructions for solving a specific problem in a limited number of steps Algorithms can range from a mere succession of simple arithmetical operations to more complex combinations of procedures, utilising more involved constructions from computer science such as rule-based grammars, recursion and probabilistic inference Nguyên bản: In mathematic and computer science, algorithm mean finite, ordered sequence of clearly defined actions, needed to perform some task Nguyên bản: An algorithm is a sequence of well-defined instructions for completing a task or solving a problem It can be described in a natural language, pseudocode, a flowchart, or even a programming language Nguyên bản: When we say that mathematics is algorithmic in nature, we not mean that we have an algorithm to mathematics Instead, we want to say that the principles and techniques that have been developed to formulate and solve algorithmic problems can be used to solve many mathematical problems Nguyên bản: An algorithm is a finite sequence of instructions that can be systematically executed in the solution of a given problem NCT-FIT-HNUE Robert Sedgewick (1946) - người viết sách tiếng dịch sang tiếng Việt với tựa đề “Cẩm nang thuật toán”] gián tiếp đề cập đến khái niệm thuật tốn góc độ lập trình sau: "Khi viết chương trình máy tính, ta thường cài đặt phương pháp nghĩ trước để giải vấn đề Phương pháp thường độc lập với máy tính cụ thể dùng, thích hợp cho nhiều máy tính Trong trường hợp phương pháp, khơng phải thân chương trình máy tính, phải nghiên cứu để học cách làm để can thiệp vào toán Từ "thuật toán" dùng khoa học máy tính để mơ tả phương pháp giải tốn thích hợp cho việc cài đặt chương trình máy tính1 Thuật tốn "chất liệu" ("stuff") khoa học máy tính: chúng đối tượng nghiên cứu trung tâm nhiều, khơng nói hầu hết, lĩnh vực tin học" Quan điểm thuật tốn Robert khơng ngược lại định nghĩa hình thức đắn thuật toán đề cập đây, giống nhà khoa học máy tính khác, Robert lược bỏ thuật ngữ phức tạp toán học, để lột tả cách dễ hiểu thuật tốn mơ tả người làm khoa học máy tính phải đủ gần gũi tựa giả mã (pseudo code), đủ độ dễ chuyển đổi sang mã nguồn (source code) khơng phụ thuộc vào phần cứng máy tính hoạt động lập trình Thoạt đầu, ta cảm thấy phát biểu Robert sơ sài, ơng khơng đả động đến "các bước dẫn xác để giải tốn" định nghĩa thuật toán đa số nhà toán học nhà tin học khác Tuy nhiên vậy, mô tả nhấn mạnh vào "cách giải" tốn cách thích hợp cho cài đặt thực máy tính Với cách giải mà máy tính thực đương nhiên thuật tốn định phải dẫn xác để theo máy tính thực giải tốn Hơn nữa, mơ tả thuật tốn Robert có ưu điểm tính đến tính khả thi thuật tốn giao cho máy tính thực Cùng quan điểm với Robert, Donald E Knuth (1975) - nhà khoa học máy tính tiếng, tác giả sách “Nghệ thuật lập trình máy tính” (“The Art of Computer Programming”) - viết: “Cách ưa thích tơi để mơ tả khoa học máy tính nói khoa học máy tính nghiên cứu thuật tốn” ơng định nghĩa: “Một thuật tốn dãy xác định qui tắc mà cho biết thực để tạo thông tin output từ thông tin input cho số hữu hạn bước.2” Đặc biệt, Knuth cho “Một thể riêng thuật toán gọi chương trình, giống dùng từ “dữ liệu” để thể riêng “thông tin” Donald E Knuth (1975, 1980) thời gian dài để trả lời câu hỏi: “Vai trò thực khái niệm thuật toán khoa học toán học gì?”, “Khoa học máy tính mối quan hệ với tốn học gì?” Theo Knuth, Mĩ, ngành Khoa học máy tính (Computer Sciences) nhấn mạnh thuật tốn phải thực máy móc Nhưng Đức Pháp, ngành Tin học (Informatique) nhấn mạnh có nhiều thứ cần đến thuật tốn để xử lí nhờ qui trình tự vận hành Ở Nguyên bản: The term algorithm is universally used in computer science to describe problem-solving methods suitable for implementation as computer programs Nguyên bản: An algorithm is a precisely-defined sequence of rules telling how to produce specified output information from given input information in a finite number of steps NCT-FIT-HNUE Liên xô (cũ), ngành Điều khiển học (Cybertics) nhấn mạnh thuật toán cần thiết cho điều khiển qui trình; ngành tốn học ứng dụng (Applied Mathematics) nhấn mạnh tiện ích thuật toán số chủ đề mối quan hệ chặt chẽ thuật toán đến toán học nói chung Trong nhiều năm, Knuth thuyết phục đồng nghiệp khoa học máy tính nguyên nhân dẫn đến nhu cầu cần phải nghiên cứu thuật tốn, có người khơng đồng ý với quan điểm ông Nguyên nhân bất đồng quan điểm đơn giản có nhiều định nghĩa thuật toán Knuth cho rằng, thuật toán bao gồm tất khái niệm qui trình xác định rõ ràng, chứa đựng cấu trúc liệu thao tác, chứa đựng cấu trúc phép toán thực Tất nhiên Knuth không tán thành số quan niệm thuật toán theo cách đơn thuần, cho thuật toán kết hợp lẫn lộn phương pháp để tìm lời giải cho toán cụ thể, tương tự định lý riêng lẻ toán học Trở lại với al-Khwârizmỵ, nhà khoa học tiếng kỉ 19 mà tên gọi ông nguồn gốc từ “thuật tốn” Donald E Knuth [16] bình luận rằng, gọi thuật toán qui tắc đại số mà al-Khwârizmỵ phát minh, để thực phép tốn cộng, trừ, nhân chia, thuật tốn bỏ qua nhiều giải thích chi tiết cách toán học, kể chúng viết al-Khwârizmỵ! Nếu thực phép tốn giấy bút người ta phải gạch xóa nhiều lần số kết trung gian q trình tính tốn chỗ chưa gạch xóa giải thích chi tiết cách toán học cho việc thực phép toán Rõ ràng qui tắc (thuật toán) thủ tục sử dụng để tính tốn trực tiếp bàn tính chừng mực Khoảng hai kỉ sau, phương pháp (thuật tốn) tính tốn khơng dùng bàn tính phát triển Knuth chí cịn đề cập đến nhà khoa học khác đến từ Khwarizm, Abu Rayhân Muhammad ibn Ahmad al-Bỵrunỵ (973-1048 sau cơng ngun), đánh giá al-Bỵrunỵ vừa nhà toán học vừa nhà khoa học máy tính Al-Bỵrunỵ nhà khoa học máy tính ơng đưa ngun tắc (thuật tốn) tính tốn hiệu Ví dụ xét tốn tính giá trị biểu thức + + + 263 tổng số hạt ngũ cốc xếp vào “bàn cờ vua” kích thước theo nguyên tắc: ô thứ chứa hạt, từ ô thứ hai trở chứa số hạt gấp đơi trước Al-Bỵrunỵ sử dụng chiến lược “chia để trị” chứng minh tổng cần tính (((16 ) ) ) đưa câu trả lời 18 tỷ tỷ hạt (cụ thể 18.446.744.073.709.551.615 hạt) dựa vào hệ thống gồm ba khái niệm (hệ thập phân - decimal, hệ lục thập phân – sexagesimal, bảng chữ A-rập) Al-Bỵrunỵ chí số lớn xấp xỉ tổng số hạt ngũ cốc 2305 núi, nút có 10.000 suối cạn, suối cạn có 1.000 bầy la, bầy la chở 10.000 đống, đống có bao, bao đựng 10.000 hạt ngũ cốc 2 2 Kết luận - Các định nghĩa thuật toán hướng đến đối tượng thực thuật toán, đối tượng cuối cngf máy tính - Các thuật tốn nhấn mạnh đến tính giải được, tính đắn, tính dừng, tính xác định - Thuật tốn có hình thức biểu diễn như: ngôn ngữ tự nhiên, giả mã, sơ đồ, ngôn ngữ lập trình\ NCT-FIT-HNUE Một thuật tốn khơng đực xem lời toán bao gồm việc chứng minh tính đắn lời giải Nói cách khác, xem thuật tốn lời giải tóm tắt cho tốn, lược bỏ nhiều giải thích chi tiết - Khái niệm thuật tốn dạy trường phổ thơng 1.3 Sách giáo khoa Tin học lớp 10 (2006, NXB Giáo dục) làm ẩn chất toán học định nghĩa thức thuật tốn, xuất phát từ khái niệm toán tin học Định nghĩa toán: "Trong phạm vi tin học, "bài toán" việc ta muốn máy tính thực hiện" Trong định nghĩa toán nêu trên, cụm từ "một việc đó" bao gồm tốn giải (đơn định khả thi) toán học bao gồm tốn riêng tin học Ví dụ xét việc sau đây: A In lên hình dịng chữ chuyển động thuộc tốn riêng tin học B In giấy in danh sách học sinh giỏi từ sở liệu quản lý học tập học sinh: thuộc toán riêng tin học C Chứng minh tập số nguyên tố vơ tận nói chung thuộc tốn riêng tốn học D Chứng minh khơng tồn thuật tốn biết đa thức có nghiệm nguyên hay khơng: thuộc tốn riêng tốn học E Giải bất phương trình bậc ax + b ≤ với số thực a, b cho trước thuộc toán toán học tin học F Đếm số lượng số lẻ dãy số thuộc toán toán học tin học G Tập lái xe tơ trường khơng thuộc tốn toán học tin học Định nghĩa thuật toán: "Thuật toán để giải toán dãy hữu hạn thao tác xếp theo trình tự định cho thực dãy thao tác ấy, từ Input (là liệu vào toán), ta nhận output (là liệu tốn) cần tìm" Định nghĩa thuật tốn tin học nêu hàm ý nhấn mạnh việc cách tường minh cách tìm lời giải (output) cụ thể tốn, khơng có xu hướng nghiên cứu định tính tốn tốn học (vì tốn học thường dừng lại việc chứng minh tồn hay không tồn lời giải tốn.) Ví dụ, để tính f(n) hàm cho biết số hạng Fibonaci thứ n, toán học cần đưa cơng thức qui nạp tốn học: if 1 f ( n) f (n 1) f (n 2) if n or n n3 Với công thức này, thời gian không lâu, người làm tốn tính giá trị hàm f(n) với n đủ nhỏ Ngược lại, vài giây (khơng kể 10 phút gõ chương trình), người lập trình trả lời giá trị cụ thể hàm f(n) với n lớn, NCT-FIT-HNUE chí lớn Hơn nữa, lập trình viên có kinh nghiệm khơng chọn thuật tốn đệ qui để áp dụng cơng thức qui nạp đây, để thuật tốn đảm bảo tính khả thi Người lập trình phải xây dựng thuật tốn mà cần đến nhiều khái niệm đặc trưng tin học, biến, phép gán câu lệnh lặp 1.4 Các tính chất thuật tốn Có thể chia tính chất thuật tốn thành hai nhóm: tính chất tính chất mở rộng 1.4.1 Các tính chất thuật tốn Các tính chất thuật tốn bao gồm: 1) Tính dừng, 2) Tính xác định, 3) Tính đắn, 4) Tính ln tồn Input, Output, 5) Tính phổ dụng, 6) Tính hiệu Có hai quan điểm mối quan hệ thuật tốn tính chất thuật toán: - Quan điểm thứ cho thuật tốn vi phạm tính chất nói - Quan điểm thứ hai cho thuật tốn ln gắn liền với tính chất nói trên, nói cách khác, dãy hữu hạn dẫn vi phạm tính chất dãy hữu hạn khơng xem thuật toán Quan điểm tán thành khái niệm chặt chẽ thuật tốn (quan điểm thứ hai) có hạn chế định muốn tìm “thuật tốn” giải nhiều tốn thực tế Vì thế, số người sử dụng thuật ngữ “thuật giải” nhằm mở rộng khái niệm “thuật toán” phép thuật toán đưa lời giải gần đúng, nghĩa khơng đáp ứng tính đắn tuyệt đối thuật tốn (nếu khơng thể), ví dụ thuật tốn tính tốn xấp xỉ để giải gần phương trình, hệ phương trình, tính tốn nội suy, giải toán tối ưu Thuật ngữ “thuật giải” cịn cho phép thuật tốn nhiên khơng cần đảm bảo tính xác định (nếu khơng thể), ví dụ thuật tốn ngẫu Quan điểm tán thành khái niệm thuật tốn vi phạm tính chất (quan điểm thứ nhất) không cần đến khái niệm “thuật giải” khái niệm “qui tắc, phương pháp tựa thuật giải”, cho phép mở rộng cách giải nhiều toán thực tế cần đến tính tốn mềm tính tốn gần đúng, ví dụ tốn liên quan đến mạng nơ-ron, logic mờ tính tốn mờ, phương pháp sai phân phương pháp phần tử hữu hạn Nhờ có kiến thức mà ngành khoa học máy tính phát triển thành nhiều nhánh khác giải nhiều toán thực tế lĩnh vực học máy, lĩnh vực trí tuệ nhân tạo, khai phá liệu NCT-FIT-HNUE Trong chương trình tin học phổ thơng, học sinh dạy thức ba tính chất thuật tốn tính dừng, tính xác định tính đắn Tuy nhiên giáo viên giới thiệu ba tính chất cịn lại, tính ln tồn Input, Output; tính phổ dụng; tính hiệu Tính ln có Input/Output nhắc đến tính chất ngầm định Tính phổ dụng nhắc đến để nhấn mạnh thuật toán nên giải tốn tổng qt thay giải tốn riêng lẻ Riêng tính hiệu thuật toán giới thiệu hạn chế chủ yếu đề cập đến viết chương trình khía cạnh mà tránh né khái niệm tính hiệu thuật tốn, ví dụ cách tổ chức liệu, cách cải tiến thuật toán để chương trình chạy nhanh Việc đánh giá thuật toán “tốt hơn” so với thuật toán khác dựa vào đánh giá trực quan Ví dụ so sánh hai thuật toán xếp kiểu chọn trực tiếp sau đây? Thuật toán Thuật toán for i := to n-1 for i := to n-1 for j := i+1 to n begin k := i; if (a[j] < a[i]) then for j : = i + to n begin if (a[j] < a[i]) then k := i; x := a[i]; a[i] := a[j]; a[j] := x; if (ki) then end; begin x := a[i]; a[i] := a[j]; a[j] := x; end; end; 1.4.2 Các tính chất mở rộng a) Tính hiệu thuật toán đo độ phức tạp thuật tốn Ở chương trình bậc đại học, tính hiệu thuật toán đề cập đến vấn đề “Phân tích thiết kế thuật tốn đánh giá độ phức tạp thuật toán”, “Lý thuyết độ phức tạp” Cần phân biệt thời gian thực thuật toán độ phức tạp thuật toán Thời gian thực thuật toán hàm liệu đầu vào mà cho biết số lần thực phép tính thuật tốn Các phép tính bao gồm: Lời gọi thủ tục read, write, lời gọi hàm sqr, sqrt, Câu lệnh gán Phép tính số học (+, -, *, /) Phép toán logic phép toán so sánh Có ba loại thời gian tính: 10 NCT-FIT-HNUE SW11: thao tác đổi chỗ hai kí tự vị trí tương ứng hai vịng X Y Có thể suy SW11 = {X(-1); Y(1); X(1), Y(-1)} Tìm vị trí kí tự “*” Y: thao tác cho biết vị trí kí tự "*" vòng Y, qui ước vị trí khơng tìm thấy kí tự “*” Y Thao tác xây dựng từ thao tác sở chung Thuật toán biểu thị thao tác thuật tốn tìm kiếm - thuật toán sách giáo khoa tin học lớp 10 Có thể trình bày sơ lược thao tác mô tả thuật toán để giải yêu cầu sau: Lặp q trình sau cịn kí tự “*” vịng Y: a Tìm vị trí kí tự “*” Y gán cho k; b Nếu k = thực hai thao tác SW11 X(1) để chuyển kí tự “*” sang vị trí 1, sang vị trí vịng X; c Nếu k (tức kí tự * khơng thuộc dây MN) thực dãy thao tác Y(k-1); SW11; X(1) để chuyển kí tự “*” đến vị trí vịng Y, vị trí 1, vị trí vịng X; d Nếu k 12 (tức kí tự “*” nằm dây MN) thực dãy thao tác Y(-(k-7)); SW11; X(1) để chuyển kí tự “*” đến vị trí bước 1.3; Thực thao tác X(-6) để chuyển dãy kí “*” sang dây MN b) Giải yêu cầu Ý tưởng thuật toán: Tiến hành đổi chỗ tất cặp kí tự (chữ X, chữ số Y) cho giữ nguyên dây MN Liệu ý tưởng có thực khơng? Câu hỏi trả lời nhờ việc phân tích sâu tìm cách mơ tả thuật tốn thể ý tưởng nêu Tìm cách mơ tả thuật tốn giải u cầu 2: Sau đưa kí tự “*” vào dây MN, ta suy nghĩ cách chuyển chữ số sang vòng X chữ sang vịng Y Chỉ có chỗ “bế tắc” hướng giải quyết, xoay vịng X Y để đưa kí tự đến vị trí mong muốn đó, kí tự khác bị thay đổi vị trí so với vị trí mà trước ta chuyển đến, ta mong đợi đứng cố định Vậy ta phải tìm thao tác mà có khả đổi chỗ số vị trí cấu hình cho phần trọng cấu hình phải giữ ngun Phần khơng cần trọng cấu hình dây MN đổi chỗ kí tự “*” dây MN giữ nguyên tính chất “dây MN bao gồm kí tự „*‟ ” Theo ý tưởng thuật tốn, ta mong muốn có thao tác, kí hiệu XY(i,j), có khả đổi chỗ kí tự vị trí i vịng X với kí tự vị trí j vịng Y, cho, trừ đoạn chung MN, kí tự cịn lại vịng X Y giữ nguyên Các thao tác X(k), Y(k) SW11 không đủ để xây dựng XY(i,j) Bằng đường suy diễn lùi, ta suy dãy thao tác cần xây dựng sau đây: Thao tác đổi chỗ kí tự thứ i vịng X với kí tự vị trí vịng Y, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: PX(i) = {X(-i+1); SW11; X(i-1)} 27 NCT-FIT-HNUE Thao tác đổi chỗ kí tự thứ j vịng Y với kí tự vị trí vịng X, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: PY(j) = {Y(-j+1); SW11; Y(j-1)} Thao tác đổi chỗ kí tự thứ i vịng X với kí tự thứ j vịng Y, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: XY(i, j) = {PX(i); PY(j); SW11; PX(i); PY(j)} Bây mô tả thuật tốn giải u cầu diễn đạt sơ lược sau: Lặp trình sau cịn tìm chữ X (hoặc cịn tìm chữ số Y) Tìm vị trí i chữ vịng X Tìm vị trí j chữ số vòng Y Thực thao tác XY(i, j) Nhận xét 2: Ta thấy thao tác PX(i), PY(i) xây dựng từ thao tác sở thao tác bản, ta gọi chúng thao tác tổng hợp Riêng thao tác XY(i,j) lại xây dựng từ thao tác từ thao tác tổng hợp khác, ta gọi thao tác tổng hợp Vậy ta định nghĩa thao tác tổng hợp cách đệ qui sau: Định nghĩa Nếu A xây dựng từ thao tác A thao tác tổng hợp Nếu B, C hai thao tác tổng hợp thao tác D xây dựng từ B C D thao tác tổng hợp Giống thao tác bản, thao tác tổng hợp đóng gói mơ tả thuật tốn giải tốn độc lập, chúng sử dụng thao tác sở để diễn tả bước thuật toán c) Giải yêu cầu Ý tưởng thuật toán: Khi cấu hình trị chơi đạt đến trạng thái thỏa mãn yêu cầu 2, ta việc áp dụng thuật tốn xếp lên đoạn từ vị trí đến vị trí vịng X vịng Y Tìm cách mơ tả thuật tốn giải u cầu 3: Để thực ý tưởng thuật toán nêu, ta cần đến thao tác có khả đổi chỗ hai kí tự vòng X (tương tự vòng Y) cho trừ đoạn MN, kí tự cịn lại cấu hình giữ ngun vị trí Tiếp tục phân tích, phán đốn suy diễn lùi, ta tìm thao tác tổng hợp sau đây: Thao tác hoán đổi hai kí tự vị trí i j vòng X, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: XX(i, j) = {XY(i, j); XY(j,j); XY(i, j)} Thao tác hốn đổi hai kí tự vị trí i j vòng Y, cho trừ đoạn chung MN, kí tự cịn lại X Y giữ nguyên: YY(i, j) = {XY(i,j); XY(i,i); XY(i, j)} Phần mơ tả thuật tốn giải u cầu trị chơi dễ dàng sau: Sắp xếp tăng dần dãy X[1 7] Khi cần đổi chỗ sử dụng thao tác XX(i,j); 28 NCT-FIT-HNUE Sắp xếp tăng dần dãy Y[1 7] Khi cần đổi chỗ sử dụng thao tác YY(i,j) 1.6.6 Dạy cho học sinh lực tư trường hợp đặc biệt bình thường xảy thuật toán a) Xem xét lại yêu cầu trị chơi Giáo viên minh họa cho học sinh thấy trình lặp chuyển hết kí tự "*" khỏi vịng Y xảy trường hợp mà kết chuỗi gồm kí tự "*" cạnh nhau, có kí tự "*" đứng tách riêng vị trí vị trí vịng X Do thao tác X(-6) thu dây MN mong đợi Cách khắc phục đơn giản: Ngay vòng lặp, ta xử lí trường hợp đặc biệt sau: Nếu kí tự "*" vị trí 1, ta cho thực thao tác X(-2) đặt lại k = 9; Nếu kí tự "*" vị trí 7, ta cho thực thao tác X(2) đặt lại k = 12 b) Xem xét lại u cầu trị chơi Giáo viên đề nghị học sinh kiểm tra lại thao tác XY(i,j) số vị trí đặc biệt Các em phát thao tác XY(i,j) không đạt ý đồ đổi chỗ (hoặc hai biến) i j Đây trường hợp riêng, cần thao tác đổi chỗ riêng Ví dụ i j 1, XY(i,j) = {SW11} Tiếp theo, giáo viên nên cẩn thận dẫn dắt học sinh kiểm thử số trường hợp lại để phát thêm thao tác XY(i,j) j (với i 4), ta gọi trường hợp bình thường Việc xem xét trường hợp riêng khó (j 5) dẫn đến nhiều hướng giải quyết, chẳng hạn ta xây dựng thêm thao tác Y4j(j) để đổi chỗ kí tự xa vịng Y với kí tự vị trí thứ nhằm qui trường hợp bình thường Nhu cầu dẫn đến loạt thao tác tổng hợp như: SW77; PX7(i), PY7(j), XY7(i, j) Các thao tác tương tự thao tác SW11, PX(i), PY(j), XY(i,j) việc đổi chỗ thay dựa vào hai vị trí dựa vào hai vị trí vòng X vòng Y Nhờ thao tác này, giáo viên dẫn dắt học sinh suy cách xử lí trường hợp cịn lại i j c) Xem xét lại yêu cầu trị chơi Khi xây dựng thành cơng thao tác đổi chỗ kí tự xa (j 5) với kí tự vị trí thứ vịng Y, giáo viên giúp học sinh khái quát hóa thành thao tác tổng hợp YY(i, j) để đổi chỗ hai phần tử vị trí i vị trí j vịng Y (tương tự thao tác XX(i,j)) mà ln xét đủ trường hợp đặc biệt Vòng X Vòng Y M G * E 5 * A * C D * F 2 B * N Hình Việc xem xét kĩ tất trường hợp đặc biệt địi hỏi tách cấu hình trị chơi thành hai phần (kí hiệu nét đơi nét đơn đậm) Hình Thao tác tổng hợp YY(i,j) xây dựng phần nét đơi khác với phần nét đậm Từ ta áp dụng thuật tốn xếp kiểu "nổi bọt", thao tác đổi chỗ hai phần tử liền kề vòng Y diễn cách “trong suốt” Thao tác tổng hợp XX(i,j) xây dựng tương tự thao tác YY(i,j) 29 NCT-FIT-HNUE Thảo luận Đối với toán cần mơ tả thuật tốn thao tác sở, lần giáo viên cung cấp cho học sinh khái niệm thao tác sở yêu cầu em hoạt động tùy theo mức độ từ cao xuống thấp như: (1) dùng thao tác sở để mơ tả thuật tốn giải tốn; (2) giáo viên trình bày sai thứ tự bước thuật toán yêu cầu học sinh xếp lại cho đúng; (3) yêu cầu học sinh làm tập trắc nghiệm dạng “điền khuyết” “ghép nối” thao tác cần dùng bước tương ứng thuật tốn Ví dụ, bảng mơ tả thuật tốn, giáo viên để trống cột “Thao tác chọn” vài chỗ cột “Sử dụng thao tác” yêu cầu học sinh điền vào chỗ trống cho Khi thành thạo việc phán đốn, suy luận để mơ tả thuật toán thao tác sở, học sinh biết cách xây dựng thao tác (mới) để mơ tả thuật tốn gọn gàng, sáng Giáo viên cần tạo tình thuật tốn mà thao tác nảy sinh cách tự nhiên, điển hình tình xuất nhiều đoạn mơ tả thuật toán giống Để rèn luyện cho học sinh biết xây dựng thao tác dùng chúng mơ tả thuật tốn, giáo viên thiết kế kiểu dạy học chương trình hóa theo đường thẳng (xem [2,3]) để bước dẫn dắt học sinh tiếp cận thuật tốn đích cần xây dựng Mỗi “liều” chương trình đề cập đến thao tác (nếu có) “liều” cuối thuật tốn giải tốn Chỉ nên cho học sinh có trình độ từ mức trở lên tiếp cận với thao tác tổng hợp Bài tập loại nên phân hóa thành yêu cầu mà theo thứ tự thao tác tổng hợp hình thành cách tự nhiên, ví dụ Bài tốn Giáo viên thiết kế phương pháp dạy học chương trình hóa kiểu phân nhánh, nhánh sử dụng để đưa gợi ý dạng toán Các toán giúp học sinh dễ suy thao tác tổng hợp phức tạp, dùng để xây dựng thao tác tổng hợp phức tạp hơn, lại gần với ý tưởng thuật toán Các phương pháp dạy học tích cực “khám phá có hướng dẫn”, “dạy học dựa truy vấn”, “phát giải vấn đề”, áp dụng để rèn luyện cho học sinh dạng tập Các toán sách giáo khoa tin học 10, THPT tốn mơ tả thuật tốn dựa loại thao tác Bảng sau đây: Bảng Các loại thao tác cho thuật toán SGK, Tinhọc 10, THPT TT Bài toán, thuật tốn Loại thao tác cần sử dụng Tìm giá trị lớn Các thao tác sở chung dãy số nguyên Kiểm tra tính nguyên Các thao tác sở chung; Các thao tác sở riêng tố số nguyên (phép lấy căn, phép chia hết) dương Bài toán xếp Các thao tác sở chung; Các thao tác (tráo tráo đổi đổi hai số, đưa phần tử “nặng” vị trí cuối dãy xác định M) Bài tốn tìm kiếm tuần Các thao tác sở chung 30 NCT-FIT-HNUE tự Bài tốn tìm kiếm nhị Các thao tác sở chung phân Kết luận Mục tiêu chung môn tin học, bậc phổ thông “nhằm cung cấp cho học sinh kiến thức phổ thơng ngành khoa học tin học, hình thành phát triển khả tư thuật toán, lực sử dụng thành tựu ngành khoa học học tập lĩnh vực hoạt động sau này." Trên thực tế có giáo viên quan tâm nghiên cứu câu hỏi “tư thuật tốn gì?” “cần phải dạy học để rèn luyện phát triển tư thuật toán cho học sinh?” Bài báo thảo luận vấn đề đặt câu hỏi trình bày quan điểm dạy cho học sinh phương cách tư để chuyển hóa ý tưởng thuật tốn thành mơ tả thuật tốn giải tốn Có thể thấy hầu hết tốn xây dựng thuật tốn giải dựa việc tìm loại thao tác: thao tác sở (chung, riêng), thao tác thao tác tổng hợp Với tốn tính tốn, loại thao tác tìm sau có ý tưởng thuật tốn Với tốn khó tốn biến đổi trạng thái, câu đố, trị chơi ý tưởng thuật tốn thường hình thành với việc xây dựng loại thao tác Điều giúp cho việc hiểu mơ tả thuật tốn Ví dụ trị chơi xoay rubik có thuật tốn phức tạp dài dịng có hướng giải giống hướng giải trò chơi “Xoay vòng” đề cập Bài báo tập trung vào việc rèn luyện lực tìm loại thao tác tương ứng với toán cho, lực xây dựng thuật tốn xác giải toán cho cách sử dụng thao tác tìm ra, lực tư tất trường hợp bình thường đặc biệt xảy toán Hướng nghiên cứu báo lực nâng cao hiệu thuật tốn Ngồi ra, phần thực nghiệm triển khai để vận dụng kết nghiên cứu, từ đánh giá điều chỉnh cần thiết 1.7 Tiếp cận dạy học thuật toán theo đường tinh chế 1.7.1 Các cấp độ tư thuật toán Biểu diễn thuật toán thực chất biểu diễn tri thức giải vấn đề, thể lực tư thuật toán Việc biểu diễn chia thành cấp độ tăng dần sau: 1) Cấp độ thực hiện: HS hiểu ý tưởng thuật toán, biểu diễn lại thuật toán cho trước, hiểu hoạt động nào, thực thuật tốn 2) Cấp độ chuyển giao: HS đạt cấp độ thực thuật tốn, mà cịn biểu diễn lại thuật tốn phiên thích hợp để truyền đạt lại cho tác nhân hiểu thực thuật tốn 3) Cấp độ thiết kế: HS khơng đạt cấp độ chuyển giao thuật tốn, mà cịn cải tiến, nữa, sáng tạo thuật toán để giải toán 31 NCT-FIT-HNUE Ba cấp độ tư khơng hồn tồn giao khác rỗng có cấp độ trung gian Trong trình biểu diễn thuật tốn, HS ln phải bám sát vào ý tưởng thuật tốn, điều chỉnh lại ý tưởng thuật tốn để đầy đủ, đắn hơn; diễn đạt lại thuật toán cho người khác hiểu thực hiện; phát điều chỉnh bổ sung cần thiết vào mơ tả thuật tốn trước để hồn thiện Chính vậy, cấp độ đòi hỏi phải biểu diễn thuật toán việc biểu diễn thuật toán cấp độ thấp liên quan đến cấp độ cao Với cấp độ tư duy, giáo viên thiết kế nhiều phiên thuật tốn để học sinh hiểu thực thuật toán Cần phiên thuật toán? Mỗi phiên thuật toán thiết kế nào? Những câu trả lời cho câu hỏi đề cập đến nội dung sau 1.7.2 Phương pháp tinh chế dạy học thuật toán để rèn luyện tư thuật toán a) Khái niệm phương pháp tinh chế Tinh chế phương pháp dạy học thuật toán dựa ý tưởng “làm mịn” chi tiết hóa thành phiên khác Mỗi phiên thuật toán thể cấp độ làm mịn thể nâng cấp (hiệu chỉnh hay cải tiến) phiên trước Việc lựa chọn phiên để dạy thuật toán định yếu tố xác định (Phương pháp làm mịn giới thiệu chi tiết [2].) Thuật tốn biểu diễn hình thức sau đây: Nêu ý tưởng: Thuật tốn mơ tả ngơn ngữ tự nhiên mức độ phát biểu ý tưởng thuật toán Mơ tả: Thuật tốn mơ tả ngơn ngữ tự nhiên mức độ biểu diễn theo phương pháp liệt bước sơ đồ khối Giả mã: Thuật tốn mơ tả ngơn ngữ gần giống với ngơn ngữ lập trình mức độ mơ chương trình Chương trình: Thuật tốn mơ tả ngơn ngữ lập trình cụ thể với việc tổ chức liệu, tạo thành chương trình thực máy tính Mặc dù cấp độ làm mịn, thuật tốn biểu diễn hình thức nêu trên, hình thức biểu diễn địi hỏi mức độ suy nghĩ, tìm tịi khác để thể thuật tốn Do đó, việc chuyển thể thuật tốn từ hình thức mơ tả đến thể thuật tốn hình thức giả mã, cuối hình thức chương trình thường phải qua nhiều phiên thuật toán thể nâng dần mức độ tư Đây trình tinh chế Đặc biệt, phiên nâng cấp thuật tốn (cải tiến hiệu quả, cải tiến thuật tốn) địi hỏi mức độ tư cao thể rõ ý nghĩa “tinh chế” Quá trình tinh chế dựa hai nguyên tắc sau đây: Tinh chế tương đương: Các phiên hạn chế dần ngôn ngữ tự nhiên, tăng dần biểu diễn toán học, hạn chế dần biểu diễn toán học để tăng dần biểu diễn cú pháp giả mã ngơn ngữ lập trình 32 NCT-FIT-HNUE Tinh chế từ xuống: Nguyên tắc dựa ý tưởng bước phân tích tốn thành toán đơn giản Mỗi toán bước lại phân tích thành tốn đơn giản Quá trình tiếp tục thu tập toán sơ cấp (dễ giải biết cách giải) Như vậy, phiên thuật toán bước bao gồm số thao tác mô tả ngắn gọn chung chung, chưa biết rõ ràng thực Những thao tác chi tiết hóa dần phiên thuật tốn bước b) Bộ tham số cách xác định Trước hết, yếu tố ảnh hưởng định đến hiệu dạy học môn khoa học, có mơn tốn, cơng nghệ, lập trình số nước giới giới thiệu cách sơ lược Steve Higgins cộng (Trung tâm Giáo dục Phổ thông, Đại học Newcasle, Anh) (2005) khẳng định hiệu dạy học chịu ảnh hưởng định bốn yếu tố chính, yếu tố “hệ thống qui trình” bao gồm: Năng lực nhận thức người học; Thái độ, hành vi người dạy; Kế hoạch dạy học Fabio Alivernini cộng (viện Đào tạo Giáo dục Quốc gia, Ý) (2010) hiệu học tập khoa học HS liên quan mật thiết với năm yếu tố: Nơi sinh; Giới tính; Tài liệu học tập nhà; Sự tự tin học khoa học; Khả nhận thức trường học Jeannie Oakes (Đại học Canifornia, Mỹ) (2010) xây dựng mô hình Rand gồm sáu nhân tố ảnh hưởng đến hiệu học tập, là: Kiến thức có HS; Thái độ học tập; Chất lượng trường phổ thơng; Trình độ người thầy; Chất lượng dạy học; Kết đạt trước mơn toán Susan Wiedenbeck (Đại học Drexel, IreLand) cộng (2004) quan tâm đến câu hỏi: Tại số HS học lập trình dễ dàng nhanh chóng, HS khác ngược lại? Các tác giả đề xuất mơ hình hai nhân tố ảnh hưởng đến việc học lập trình HS, tính tự khả1 (self-efficacy) định nghĩa Bandura (1997) mơ hình trí tuệ (mental model) định nghĩa Norman (1983) Bandura cho tự khả tự đánh giá khả tổ chức thực qui trình cần thiết để đạt dạng thiết kế cách thực nhiệm vụ cho trước lĩnh vực riêng biệt2 Normal cho mơ hình trí tuệ thể bên trí tuệ người đối tượng hệ thống thực Các mơ hình trí tuệ có vai trị quan trọng việc gỡ rối qui trình gặp sai sót, chúng hỗ trợ lí giải định vị lỗi xảy Theo nhóm nghiên cứu Cas [18], mơ hình trí tuệ người lập trình bao gồm: Hiểu cách chương trình thực hiện; Hiểu phương pháp chung để giải tốn lập trình; Biết cấu trúc chương trình hàm; Nắm cú pháp ngữ nghĩa ngơn ngữ lập trình cụ thể Qua tìm hiểu đây, ta thấy có nhiều quan điểm khác yếu tố ảnh hưởng đến hiệu dạy học môn khoa học Một cách khái quát, giả thiết yếu tố “người thầy” Có nhiều cách dịch khơng thức từ self-efficacy, ví dụ “sự tự tin vào thân” (theo nhóm TOEFL), “năng lực thân” (theo nhóm văn học, nghệ thuật), “tính tự hữu hiệu” (nhóm tâm lí học), “hiệu thân” (nhóm dịch thuật) Cụm từ “tự khả” có nghĩa tự đánh giá khả thân để biết liệu hồn thành cơng việc hay không Nguyên bản: Self-efficacy is the individual‟s judgment of his or her ability to perform a task in a specific domain Bandura defines self-efficacy as “people‟s judgments of their capabilities to organize and execute courses of action required to attain designated types of performance Nguyên bản: A mental model is a person‟s internal (mental) representation of real world objects and systems 33 NCT-FIT-HNUE đảm bảo (về tinh thần trách nhiệm, trình độ, khả năng, phương pháp dạy học) hiệu học tập chịu ảnh hưởng hai yếu tố “người học” “môi trường” Việc dạy học (ở bao gồm phương pháp, cách tổ chức dạy học) chịu ảnh hưởng hai yếu tố này, chịu định yếu tố “chương trình” Các thuộc tính ba yếu tố sau: “Chương trình”: Gồm thuộc tính nội dung học, mục tiêu cần đạt, chuẩn kiến thức, kĩ năng, thái độ số tiết theo qui định chương trình “Người học”: Gồm thuộc tính tinh thần, thái độ học tập, kiến thức học, lực nhận thức, độ tuổi, giới tính, loại hình lớp, điều kiện sinh sống; “Mơi trường”: Gồm thuộc tính điều kiện học tập trường, lớp ảnh hưởng điều kiện kinh tế, xã hội vùng miền Xét toán: “Cho thuật toán, yếu tố chương trình, đối tượng HS, mơi trường học tập để xác định cấp độ làm mịn, từ định phiên thuật toán để dạy cho HS” Có thể xem đầu vào tốn tham số gồm yếu tố, thuộc tính xem xét, đầu tốn phiên thuật toán Việc lựa chọn thành phần tham số này, từ lựa chọn cấp độ làm mịn, số lượng phiên thuật hoàn toàn giáo viên (GV) định Bộ tham số để định lựa chọn cấp độ tư thuật toán cần rèn luyện cho HS Để thuận lợi, ta đưa thêm cấp độ tư thuật toán vào tham số Ta nhận thấy yếu tố có ảnh hưởng lẫn nhau, yếu tố, thuộc tính có mối liên quan mật thiết với Vì thế, cần lựa chọn cách phù hợp thuộc tính để tạo tham số không phức tạp sử dụng Có thể chọn tham số theo hai cách sau: Cách 1: Chọn tham số gồm thành phần ưu tiên: GV tự định thành phần (thuộc tính) ưu tiên đưa vào tham số loại bỏ thành phần không ưu tiên Chẳng hạn, chọn tham số ưu tiên bảy thành phần: (mục tiêu, thời lượng chương trình, khối lớp, loại hình lớp, lực nhận thức HS, vùng miền, cấp độ tư duy) Giả sử tham số qui định GV dạy trường chuyên thành phố Khi đó, tham số đơn giản nhờ việc ẩn thành phần mặc định, chẳng hạn tham số (tên lớp chuyên, mục tiêu dạy, số tiết, cấp độ tư duy) Cách 2: Chọn tham số gồm thành phần gán trọng số Có thể coi tham số đầy đủ nhất, gồm tất thuộc tính yếu tố, thuộc tính gán trọng số ưu tiên Trọng số thuộc tính GV quy định tỷ lệ phần trăm mức độ quan trọng so với tất thuộc tính yếu tố tương ứng GV đơn giản hóa tham số cách bỏ qua thuộc tính có trọng số gán zero, tham số lại tạo thành tham số gồm số thuộc tính ưu tiên với trọng số ưu tiên khác 34 NCT-FIT-HNUE c) Các bước phương pháp tinh chế Căn vào cấp độ làm mịn cách xác định tham số đầu vào, ta đưa “khung cơng việc” chung cho phương pháp tinh chế dạy học thuật toán, gồm ba bước sau đây: Bước 1: Căn vào chương trình, đối tượng học sinh, mơi trường học tập để định tham số gồm tham số ưu tiên (có trọng số khơng có trọng số) Mỗi thành phần tham số (yếu tố thuộc tính) coi tham số Bước 2: Căn vào tham số lựa chọn để định cấp độ làm mịn phiên thuật toán tương ứng Bước 3: Tổ chức cho HS hoạt động học tập theo phiên thuật toán Cách sử dụng khung cơng việc có vài giải thích bổ sung sau: Tham số “người học” thuộc tính “kiến thức học” “năng lực nhận thức” (thể trình độ, khả hiểu thực thuật toán) trường hợp đặc biệt tác nhân Như tác nhân tham số đặc biệt ngầm định tham số Có hai loại cấp độ ý tưởng: Loại cấp độ thấp địi hỏi hiểu ý tưởng thuật tốn có Loại cấp độ cao (thập chí cao) địi hỏi phải tìm ý tượng thuật tốn Loại cấp độ ý tưởng thấp áp dụng tham số đầu vào d) Ví dụ vận dụng phương pháp tinh chế Xét toán: Cho n số nguyên dương không vượt 10000, cho dãy (a) gồm n số thực a1, a2, , an Hãy xếp phần tử dãy (a) theo thứ tự tăng dần (không giảm) Giả sử ta cần dạy thuật toán giải toán cho lớp 10A1 (lớp đại trà) trường trung học phổ thông (THPT) khu vực nơng thơn Các bước thực phương pháp tinh chế để dạy học thuật toán sau: Bước 1: Chọn tham số đầu vào (tên lớp, mục tiêu dạy, số tiết, cấp độ tư duy) Giá trị tham số tương ứng là: Tên lớp = “10A1 đại trà”; Mục tiêu dạy = “HS hiểu ý tưởng thuật toán xếp cho; nắm thuật toán mô tả phương pháp liệt kê”; Số tiết = 1; Cấp độ tư = “Cấp độ thực hiện” Bước 2: Căn tham số, ta chọn hai cấp độ làm mịn cấp độ ý tưởng cấp độ mô tả, với bốn phiên thuật toán dựa hai nguyên tắc tinh chế tương đương tinh chế từ xuống Bước 3: Tổ chức cho HS hoạt động dạy học thuật toán qua phiên Phiên 1: Phát biểu ý tưởng thuật toán xếp chọn trực tiếp Lần đầu tiên, xét dãy n phần tử, ta so sánh phần tử vị trí đầu dãy với phần tử vị trí sau hết dãy, gặp phần tử nhỏ đổi giá trị với phần tử đầu dãy Sau lần thứ nhất, ta chuyển phần tử nhỏ đầu dãy Lần thứ hai, ta tạm thời bỏ qua phần tử để xét dãy gồm n – phần tử lại làm tương tự, nghĩa so sánh phần tử vị trí thứ hai dãy (a) với phần tử vị trí sau nó, gặp phần tử nhỏ đổi giá trị với phần tử vị trí thứ hai Cứ tiếp tục trình dãy 35 NCT-FIT-HNUE lại phần tử dừng trình đổi chỗ Dãy thu dãy n phần tử xếp tăng dần Trong trình trên, lần xét dãy mới, ta lặp lại cách làm tương tự nhau: duyệt dãy, so sánh đổi giá trị Ta gọi cách làm qui tắc chung Ví dụ: Cho dãy (a) = (9, 7, 6, 5, 2) Bảng sau minh họa trạng thái dãy (a) sau lần xét dãy áp dụng qui tắc chung Qui ước lần thứ biểu thị dãy (a) cho Ở lần thứ i, phần tử dãy phần tử thứ i dãy (a) ban đầu, với i = 1, 2, , n – Lần a1 a2 a3 a4 a5 2 2 6 7 Bảng Các lần áp dụng qui tắc chung thể ý tưởng xếp kiểu chọn trực tiếp Phiên 2: Thuật tốn mức mịn (trong cấp độ mơ tả) Ta gọi thuật tốn Q(i) lời giải toán “Chuyển phần tử nhỏ đầu dãy dãy gồm phần tử dãy (a) tính từ vị trí thứ i đến vị trí thứ n cuối dãy” Nói cách khác, Q(i) cho kết dãy {ai, ai+1, an} mà phần tử có giá trị nhỏ Khi đó, ý tưởng thuật tốn mơ tả sau: Thuật tốn chính: với i = 1, 2, , n-1, tiến hành thực thuật toán Q(i); Phiên 3: Thuật toán mức độ mịn sau mở tốn Q(i) (trong cấp độ mơ tả) Thuật toán Q(i): Dễ thấy Q(i) thể qui tắc chung mô tả phần ý tưởng: với j = i + 1, i + 2, , n, tiến hành kiểm tra aj < đổi giá trị aj cho Để lấy ví dụ minh họa, ta sử dụng lại Bảng đây, cột “lần” thay tiêu đề thành cột “i” Bộ giá trị hàng cột lại biểu thị kết thực thuật toán Q(i) Chú ý rằng, để tiện trình bày, đơi ta nói Q(i) toán Thuật toán đầy đủ: với i = 1, 2, , n, tiến hành áp dụng qui tắc chung dãy ai, ai+1, , an sau: với j = i + 1, i + 2, , n, tiến hành kiểm tra aj < đổi giá trị aj cho 36 NCT-FIT-HNUE Các Bảng 2a,2b,2c, 2d sau mơ thuật tốn xếp dãy (a) ví dụ nêu theo giá trị i Mỗi bảng diễn tả thuật toán Q(i) thể qui tắc chung, cặp số cột “i, j” biểu thị hai phần tử aj hàng tương ứng so sánh đổi giá trị aj < Kết quả đổi giá trị (hoặc không đổi giá trị) thể hàng bên i, j a1 a2 a3 a4 a5 i, j a1 a2 a3 a4 a5 1, 2, 1, 2, 1, 2, 1, 5 2 9 (b) (a) i, j a1 a2 a3 a4 a5 i, j a1 a2 a3 a4 a5 3, 4, 5 3, 5 6 9 (d) (c) Bảng Mô thuật toán áp dụng qui tắc chung dãy mà đầu dãy i: (a) i = 1, (b) i = 2, (c) i = 3, (d) i = Phiên 4: Thuật toán mức độ mịn (trong cấp độ mơ tả) Thuật tốn: Bước 1: nhập n, a1, a2, , an Bước 2: với i = 1, 2, , n, với j = i + 1, i + 2, , n, aj < đổi giá trị aj cho Bước 3: đưa dãy a1, a2, , an Phiên chưa phải phiên mịn cấp độ mô tả, nhiên tham số đầu vào giúp ta định có lẽ nên dừng lại phiên thuật toán Bốn phiên thuật tốn tóm tắt qua Hình 37 NCT-FIT-HNUE Phiên 1: Phát biểu ý tưởng thuật toán xếp chọn trực tiếp (cấp độ ý tưởng) Nêu qui tắc chung để đưa phần tử có giá trị nhỏ đầu dãy ai, ai+1, , an, với i = 1, 2, , n Phiên 2: Thuật toán mức mịn (trong cấp độ mơ tả) Phiên 3: Thuật toán mức độ mịn (cấp độ mơ tả) Thuật tốn cho tốn Q(i) Phương pháp “đơn thể hóa” cho tốn Q(i) thể qui tắc chung phiên Phiên 4: Thuật toán đầy đủ (ở mức độ mịn cấp độ mô tả) Nhập dãy số Sắp xếp dãy số Thuật toán xếp với toán Q(i) “mở” tường minh Thuật toán xếp sử dụng tốn Q(i) Đưa dãy số Hình Các phiên phương pháp tinh chế dạy phương pháp xếp Kết luận Khi đứng trước tốn tương đối khó, HS xuất sắc lớp chun tốn-tin tự thực phiên thuật toán cấp độ ý tưởng cách rõ ràng nhờ vài định hướng giáo viên, sau chuyển sang phiên phản thuật tốn cấp độ chương trình với nhận xét hướng dẫn giáo viên, HS nâng cấp dần phiên lên mức độ hiệu Trường hợp này, giáo viên yêu cầu HS cấp độ cao tư thuật toán (cấp độ thiết kế) Ngược lại, với đối tượng HS trình độ thấp hơn, học lớp chuyên toán – tin, có điều kiện thực hành phịng máy tính trường, giáo viên phải dẫn dắt em nắm thuật toán qua nhiều phiên khác nhau, nâng dần cấp độ làm mịn nâng dần cấp độ tư thuật tốn Từ đó, việc lựa chọn phiên thuật toán để tổ chức cho HS hoạt động lĩnh hội thuật toán phải tham số đầu vào có tính đến đối tượng HS, điều kiện môi trường học tập, phải đảm bảo mục tiêu chương trình Cách tiếp cận dạy học thuật tốn thơng qua phương pháp tinh chế đề xuất báo thỏa mãn nhiều mục tiêu như: dạy học phân hóa thơng qua cách xác định tham số đầu vào, rèn luyện tư thuật toán, bồi dưỡng kĩ giải vấn đề theo qui trình xác định Đưa hệ thống khái niệm tư thuật toán, cấp độ tư duy, cấp độ làm mịn, qui tắc chọn tham số, bước tinh chế Có thể xem nội dung sở lí luận cho phương pháp dạy học nội dung thuật toán cho HS Trong phạm vi báo, khó đưa đầy đủ ví dụ minh họa cho vấn đề đề cập Mặt khác, báo tập trung vào việc nghiên cứu lí thuyết, nên hướng phát cơng việc báo trước hết tiến hành thực nghiệm để rút kết luận, đánh giá điều chỉnh cần thiết Chúng cho thực nghiệm sư phạm có kết khả quan vận dụng phương pháp có sở lí luận khoa học Chúng tơi hi vọng cách tiếp cận 38 NCT-FIT-HNUE phương pháp hiệu nhiều thầy cô giáo biết đến áp dụng rộng rãi dạy học thuật toán trường phổ thông TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO TIẾNG VIỆT Hồ Sỹ Đàm (chủ biên), Hồ Cẩm Hà, Trần Đỗ Hùng, Nguyễn Xuân My, Nguyễn Đức Nghĩa, Nguyễn Thanh Tùng, Ngô Ánh Tuyết (2006), “Tin học lớp 11”, “Tin học lớp 11 – Sách giáo viên”, NXB Giáo dục, Hà Nội Vương Dương Minh (1996), “Phát triển tư thuật toán cho học sinh dạy học hệ thống số trường phổ thông”, Luận án tiến sĩ Giáo dục học, Khoa Sư phạm tâm lí, ĐHSPHN Bùi Văn Nghị, Vương Dương Minh, Nguyễn Anh Tuấn (2005), “Tài liệu bồi dưỡng thường xuyên giáo viên trung học phổ thơng chu kì III (2004-2007) Tốn học”, NXB Đại học sư phạm, 2005, trang 119 Bùi Văn Nghị (2009), "Vận dụng lí luận vào thực tiễn dạy học trường phổ thông", NXB Đại học Sư phạm Hà nội Nguyễn Bá Kim (2009), "Phương pháp dạy học mơn tốn", NXB Đại học Sư phạm Hà nội Nguyễn Bá Kim Lê Khắc Thành (2006), “Phương pháp dạy học đại cương môn tin học”, NXB Đại học Sư Phạm Hà Nội Lê Khắc Thành (2009), "Phương pháp dạy học chuyên ngành môn Tin học", NXB Đại học Sư phạm Hà nội Nguyễn Chí Trung, Hồ Cẩm Hà (2010), "Truyền tải kiến thức tới người học phương pháp “làm mịn dần”, Journal of science of HNUE, Vol 55, No 4, pp 38-48 Nguyễn Chí Trung (2012), “Phát triển tư thuật tốn cho học sinh phổ thơng đường từ ý tưởng đến mô tả thuật toán”, Kỷ yếu Hội nghị Nghiên cứu khoa học, Khoa Công nghệ thông tin, Đại học Sư phạm Hà nội, trang 129-137 Nguyễn Chí Trung, Hồ Cẩm Hà (2012), “Phương pháp tinh chế - Một cách tiếp cận dạy học thuật toán cho học sinh trường phổ thông”, Kỷ yếu Hội thảo Phương pháp dạy học môn tốn thời kì hộp nhập, ngày 17 tháng 11 năm 2012, Khoa Toán – Tin, Đại học Sư phạm Hà nội Nguyễn Chí Trung, Nguyễn Thị Thu Thủy (2012), “Rèn luyện tư giải vấn đề cho học sinh dạy học tin học ứng dụng tin học dạy học trường phổ thông”, Kỉ yếu hội thảo “Cơng nghệ thơng tin giáo dục:tích hợp hay chuyển đổi”, Viện KHGD VN, ĐHSPHN, VVOB (Bỉ) 12-2012, NXB Đại học Sư phạm, trang 178-196 TÀI LIỆU THAM KHẢO TIẾNG ANH Steven C Althoen, Robert J.Bumcrot (1988), “Introduction to Discrete Mathematics”, PWSKENT Publishing Company Boston, © ISBN: 0-534-91504-3 pp 39 NCT-FIT-HNUE Donald E Knuth (1975), “Computer Science and its relation to mathematics”, The American Mathematical Monthly, vol 81, 1974, pp 323-343 Donald E Knuth (1980), “Algorithm in modern mathematics and computer science”, Stanford Department of Computer Science, Report No STAN-CS-80-786, Research sponsored by, National Science Foundation and Office of Naval Research Knuth, D E., (1985), "Algorithmic Thinking and Mathematical Thinking", American Mathematical Monthly, 92, pp 170-181 Dimitris Samaras (2009), "The Definition of Algorithm", Turing subject in module 8302, Lecture Material at CS of Tony Brook University, Available at website www.cs.sunysb.edu/~cse350/slides/turing4.pdf Goldberg (2012), “Turing Machines”, Lecture note in module “Computability and Complexity 6050/4050”, The Computer Science Department, RPI – Rensselaer Polytechnic Institude, Troy, 110 Eighth Street, Troy, NY USA 12180 (518) 276-6000 Adrian Francalanza (2009), “An Introduction to Computability and Complexity”, Department of Computer Science, ICT, University of Malta, pp 5-25 Harry R Lewis, Christos H Papadimitriou (1981), “Elements of the Theory of Computation”, Second Edition, Prentice-Hall, Upper Sađle River, New Jersey 07458, ISBN: 0-13-262478, pp 222-223 Robb T Koether (2008), “The Definition of Algorithm”, Lecture note in module “Theory of Computing”, Hampden-Sydney College Andreas R Blass, Yuri Gurevichz (2003), “Algorithms: A Quest for Absolute Defnitions”, Bulletin of European Association for Theoretical Computer Science 81, 2003 Yiannis N Moschovakis (2001), "What Is an Algorithm?", Department of Mathematics, University of Athens, Greece, beyond Edited by B Engquist and W Schmid, Springer, 2001, pages 919-936 (Part II) Leonard Soicher & Franco Vivaldi (2004), “Algorithmic Mathematics”, the course MAS202 Algorithmic Mathematics, Copyright by The University of London Karlheinz Essl (2007), “Algorithmic composition”, In N Collins and J d‟Escriván (eds.), (2007), “The Cambridge companion to electronic music” Cambridge University Press Piotr Fulmanski (2008), “Algorithms”, Lecture notes in “Introduction to Computer Science Algorithms and data structures”, Faculty of Mathematics and Computer Science, University of Lodz, Poland Chung-Yang (Ric) Huang, Chao-Yue Lai Kwang-Ting (Tim) Cheng (2009), “Fundamentals of algorithms”, Chapter in “Electronic Design Automation”, Copyright © Elsevier Inc Alrights reserved, ISBN: 987-0-12-374-364, pp 173-232 João Fernando Peixoto Ferreira (2010), “Principles and Applications of Algorithmic Problem Solving”, Thesis of Doctor of Philosophy, The University of Nottingham, UK 40 NCT-FIT-HNUE Robert Sedgewick (1946), "Algorithms", Princeton University (USA), 4nd Edition, Copyright 1983 by Addison-Wesley Publishing Company, Inc Yuri Gurevichz (2011), “ What is an algorithm?”, in Microsoft Research, Technical Report, MSR-TR-2011-116, July 2011 Gerald Futschek (2006), Algorithmic Thinking: The Key for Understanding Computer Science © Springer - Verlag Berlin Heidelberg (2006), R.T Mittermeir (Ed.): ISSEP 2006, LNCS 4226, pp 159 – 168 Steve Higgins, Elaine Hall, Kate Wall, Pam Woolner, Caroline McCaughey (2005), “The Impact of School Environments:A literature review”, The Centre for Learning and Teaching School of Education, Communication and Language Science University of Newcastle, Design Council, February 2005 Fabio Alivernini, Laura Palmerio, Emanuela Vinci, Ines Di Leo (2010), “An Analysis of Factors Affecting Pupils’ Science Achievement in Italy”, in proceeding on 4th International Association for the Evaluation of Education Achivement (IEA), July 2010 - (IRC 2010), Gothenburg, Sweden Oakes J.J.(2010), “Educational Indicators: A Guide for Policymakers”, Center for Policy Research in Education, The RAND Corporation, Santa Monica, CA Susan Wiedenbeck, Deborah LaBelle, Vennila N.R Kain (2004), “Factors Affecting Course Outcomes in Introductory Programming”, In Education Dunican & T.R.G Green (Eds), Proceeding on 16th Workshop of the Psychology of Programming Interest Group (PPIG), Carlow, Ireland, April 2004, pp 97-110 Bandura (1997), A “Self-efficacy: Toward a unifying theory of behavioral change.”, Psychological, Review, 1997, Vol 84, No 2, pp 191-215 Norman, D.A (1983), “Some observations on mental models” In D Gentner and A.L Stevens, Educations, 1983 Cañas, J.J., Bajo, M.T & Gonzalvo, P (1984), “Mental models and computer programming.” International Journal of Human-Computer Studies, 1994, Vol 40, No 5, pp 795-811 41