1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python

74 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Tác giả Trần Bá Văn
Trường học Trường THPT Nghi Lộc 5
Chuyên ngành Tin học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2025
Thành phố Nghệ An
Định dạng
Số trang 74
Dung lượng 5,02 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • PHẦN I. ĐẶT VẤN ĐỀ (6)
    • 1. Lý do chọn đề tài (6)
    • 2. Tính mới, tính sáng tạo và đóng góp của đề tài (7)
    • 3. Đối tượng và khách thể nghiên cứu (7)
    • 4. Mục đích nghiên cứu (7)
    • 5. Giới hạn và phạm vi nghiên cứu (8)
    • 6. Nhiệm vụ nghiên cứu (8)
    • 7. Phương pháp nghiên cứu (8)
    • 8. Thời gian nghiên cứu (9)
  • PHẦN II. NỘI DUNG (9)
    • I. Cơ sở khoa học (9)
      • 1. Cơ sở lý luận (9)
        • 1.1. Tổng quan về công tác bồi dưỡng học sinh giỏi (9)
          • 1.1.1. Tầm quan trọng của việc bồi dưỡng học sinh giỏi (9)
          • 1.1.2. Các phương pháp giảng dạy hiệu quả trong bồi dưỡng học sinh giỏi Tin học (10)
          • 1.1.3. Lợi ích của ngôn ngữ lập trình Python trong việc dạy và học lập trình (10)
          • 1.1.4. Một số năng lực đặc thù cần chú trọng trong bồi dưỡng học sinh giỏi (10)
        • 1.2. Vai trò của ban giám hiệu trong công tác bồi dưỡng học sinh giỏi (11)
        • 1.3. Vai trò của giáo viên trực tiếp bồi dưỡng đội tuyển học sinh giỏi (13)
      • 2. Cơ sở thực tiễn (13)
        • 2.1. Thực trạng dạy và học lập trình trong các trường phổ thông (13)
        • 2.2. Thực trạng học Tin học lập trình của học sinh ở trường phổ thông (14)
        • 2.3. Những khó khăn gặp phải trong quá trình bồi dưỡng học sinh giỏi (14)
        • 2.4. Những yêu cầu đặt ra đối với công tác bồi dưỡng học sinh giỏi (15)
    • II. Nội dung và phương pháp thực hiện (16)
      • 1. Số học (16)
        • 1.1. Giới thiệu về số học (16)
        • 1.2. Khái niệm số nguyên tố (16)
        • 1.3. Xây dựng hàm xét tính nguyên tố của một số (16)
        • 1.4. Một số bài tập vận dụng (17)
        • 1.5. Sàng số nguyên tố (Sàng Eratosthenes) (19)
        • 1.6. Số hoàn hảo và Định lý Euler (20)
        • 1.7. Lý thuyết đồng dư (21)
      • 2. Thuật toán tham lam (GREEDY ALGORITHM) (23)
        • 2.1. Giới thiệu về thuật toán tham lam (23)
        • 2.2. Cách tiếp cận thuật toán tham lam (23)
        • 2.3. Ngăn xếp (Stack) (24)
        • 2.4. Một số bài toán ứng dụng thuật toán tham lam (25)
      • 3. Đệ quy (31)
        • 3.1. Giới thiệu về đệ quy (31)
        • 3.2. Cách hoạt động của đệ quy (31)
        • 3.3. Đệ quy quay lui (32)
        • 3.4. Đệ quy có nhớ (33)
        • 3.5. Tăng thêm độ sâu đệ quy (34)
        • 3.6. Một số bài tập ứng dụng đệ quy (34)
          • 3.6.1. Tìm kiếm nhị phân (Binary Search) (35)
          • 3.6.2. Quay lui (Backtracking) – Bài toán N-Queen (36)
        • 3.7. Ưu điểm và nhược điểm của đệ quy (37)
      • 4. Quy hoạch động (37)
        • 4.1. Định nghĩa (37)
        • 4.2. Một số bài tập ứng dụng quy hoạch động (38)
    • III. Khảo sát sự cấp thiết và tính khả thi của giải pháp (46)
      • 1. Khảo sát sự cấp thiết và tính khả thi của giải pháp (46)
        • 1.1. Đánh giá định tính (46)
        • 1.2. Đánh giá định lượng (47)
        • 1.3. Khảo sát sự cấp thiết và tính khả thi của giải pháp đưa ra (48)
          • 1.3.1. Mục đích khảo sát (48)
          • 1.3.2. Phương pháp khảo sát và thang đánh giá (48)
          • 1.3.3. Đối tượng khảo sát (48)
          • 1.3.4. Kết quả khảo sát về sự cấp thiết và tính khả thi của các giải pháp (48)
      • 2. Khảo sát sự tiếp nhận, nắm vững kiến thức, tính sáng tạo của học sinh (50)
        • 2.1. Kết quả thực nghiệm sư phạm (50)
      • 3. Một số thành tích đạt được khi áp dụng đề tài (52)
  • PHẦN III. KẾT LUẬN VÀ KIẾN NGHỊ (52)
    • 1. Kết luận (52)
      • 1.1. Ý nghĩa của đề tài đối với hoạt động giáo dục (53)
      • 1.2. Khả năng áp dụng và phát triển của đề tài (54)
    • 2. Kiến nghị (55)
      • 2.1. Đối với trường THPT (55)
      • 2.2. Đối với GV (55)
    • 1. Một số hình ảnh về kết quả đạt được (56)
    • 2. Bảng tổng hợp kết quả khảo sát (58)
    • 3. Bài tập vận dụng thuật toán tham lam (59)
    • 4. Bài tập vận dụng quy hoạch động (63)
    • 5. Danh sách (68)
      • 5.1. Giới thiệu về danh sách (68)
      • 5.2. Các thao tác cơ bản với danh sách (69)
      • 5.3. Duyệt danh sách (69)
      • 5.4. Tìm kiếm và sắp xếp danh sách (70)
      • 5.5. Một số bài tập tổng quát (70)

Nội dung

Qua quá trình giảng dạy, học tập, nghiên cứu và bồi dưỡng học sinh giỏi nhiều năm qua, tôi nhận thấy trong đề thi có những bài toán có kích thước lớn, nếu giải bằng cách thông thường sẽ

NỘI DUNG

Cơ sở khoa học

1.1 Tổng quan về công tác bồi dưỡng học sinh giỏi

1.1.1 Tầm quan trọng của việc bồi dưỡng học sinh giỏi

Bồi dưỡng học sinh giỏi (HSG) trong các môn văn hóa là nhiệm vụ quan trọng trong chiến lược giáo dục, góp phần phát triển nguồn nhân lực chất lượng cao và nuôi dưỡng tài năng trẻ Quá trình này không chỉ nâng cao kiến thức và kỹ năng giảng dạy của giáo viên mà còn tạo động lực học tập cho học sinh, nâng cao vị thế và thành tích của nhà trường Nhân tài là yếu tố then chốt trong phát triển kinh tế - xã hội Đảng ta đã khẳng định giáo dục và đào tạo là quốc sách hàng đầu nhằm nâng cao dân trí và bồi dưỡng nhân tài Do đó, bồi dưỡng HSG là nhiệm vụ trọng tâm của ngành giáo dục, cần thiết để xây dựng đội ngũ nhân lực tinh hoa, thúc đẩy sự phát triển của đất nước.

Học lập trình và thuật toán không chỉ giúp học sinh nâng cao tư duy logic mà còn phát triển khả năng giải quyết vấn đề, rèn luyện kỹ năng làm việc độc lập và khuyến khích sự sáng tạo.

Công tác bồi dưỡng giúp phát hiện và phát triển tiềm năng của học sinh, hỗ trợ những em có năng khiếu để phát huy tối đa năng lực cá nhân Qua đó, các em có thể đạt được những thành tựu vượt trội trong học tập và sự nghiệp sau này.

Tham gia đội ngũ HSG không chỉ tạo động lực học tập cho học sinh mà còn nâng cao tinh thần trách nhiệm và ý thức tự học Điều này giúp hình thành tư duy sáng tạo và khả năng giải quyết vấn đề một cách hiệu quả hơn.

Phát triển nguồn nhân lực chất lượng cao là yếu tố then chốt, khi những học sinh giỏi được đào tạo bài bản sẽ trở thành lực lượng nòng cốt trong các lĩnh vực khoa học, công nghệ, kinh tế và quản lý nhà nước, từ đó góp phần vào sự phát triển bền vững của đất nước.

Tổ chức các kỳ thi học sinh giỏi không chỉ tạo cơ hội cho học sinh thể hiện năng lực mà còn giúp các cơ sở giáo dục đánh giá và điều chỉnh chương trình đào tạo, từ đó nâng cao chất lượng giảng dạy và thúc đẩy sự đổi mới trong giáo dục.

Định hướng nghề nghiệp và phát triển cá nhân là rất quan trọng, giúp học sinh khám phá thế mạnh của bản thân Qua các hoạt động bồi dưỡng, học sinh có thể xác định nghề nghiệp phù hợp với sở thích và năng lực của mình, từ đó góp phần hình thành một thế hệ lao động chất lượng cao trong tương lai.

1.1.2 Các phương pháp giảng dạy hiệu quả trong bồi dưỡng học sinh giỏi Tin học

Dạy học theo chuyên đề giúp học sinh tập trung vào các nội dung quan trọng như số học, danh sách, thuật toán tham lam, đệ quy, quy hoạch động và lý thuyết đồ thị Phương pháp này đảm bảo học sinh nắm vững từng phần kiến thức trước khi tiến hành tổng hợp và áp dụng chúng một cách hiệu quả.

Học qua thực hành là phương pháp hiệu quả, giúp học sinh thực hiện nhiều bài tập từ đơn giản đến phức tạp Điều này không chỉ giúp các em hiểu sâu về kiến thức mà còn vận dụng linh hoạt vào các bài toán lập trình.

Phân tích và tối ưu thuật toán giúp học sinh nâng cao khả năng đánh giá hiệu quả của các thuật toán, từ đó lựa chọn phương pháp tối ưu hóa phù hợp nhằm cải thiện thời gian chạy và sử dụng bộ nhớ hiệu quả hơn.

1.1.3 Lợi ích của ngôn ngữ lập trình Python trong việc dạy và học lập trình

Python là ngôn ngữ lập trình dễ học với cú pháp rõ ràng, phù hợp cho người mới bắt đầu, đồng thời mạnh mẽ trong các ứng dụng thuật toán phức tạp Ngôn ngữ này được ứng dụng rộng rãi trong nghiên cứu khoa học, trí tuệ nhân tạo, khoa học dữ liệu và phát triển phần mềm, tạo nền tảng vững chắc cho tương lai của học sinh.

- Python có cú pháp đơn giản và rõ ràng, giúp người mới bắt đầu dễ dàng tiếp cận và hiểu được ngôn ngữ này

Python boasts a large and vibrant community that offers a wealth of libraries and frameworks for application development, spanning web development, machine learning, and data science.

Python thích hợp cho phát triển nhanh, dễ dàng và có sẵn các thư viện mạnh mẽ cho các ứng dụng phức tạp

1.1.4 Một số năng lực đặc thù cần chú trọng trong bồi dưỡng học sinh giỏi

* Năng lực vận dụng và khai thác kiểu dữ liệu, cấu trúc dữ liệu

Trong lập trình, kiểu dữ liệu xác định phạm vi giá trị mà nó có thể lưu trữ, dung lượng bộ nhớ cần thiết và các phép toán có thể thực hiện trên dữ liệu Bên cạnh các kiểu dữ liệu đơn giản, còn có nhiều loại kiểu dữ liệu phức tạp khác.

Cấu trúc dữ liệu là yếu tố quan trọng trong việc tổ chức và quản lý thông tin hiệu quả Việc thiết kế và lựa chọn cấu trúc dữ liệu cần dựa vào loại dữ liệu cần xử lý, đồng thời tối ưu hóa bộ nhớ và hiệu suất thực thi của chương trình.

Các bài thi học sinh giỏi Tin học yêu cầu xử lý dữ liệu lớn trong thời gian ngắn, thường không quá 1 giây Học sinh cần có khả năng đánh giá và chọn lựa cấu trúc dữ liệu phù hợp để đảm bảo thuật toán hoạt động hiệu quả Việc nắm vững cách tổ chức, truy xuất và thao tác trên các cấu trúc dữ liệu như mảng, danh sách liên kết, hàng đợi, cây, và đồ thị là kỹ năng thiết yếu cho học sinh tham gia các kỳ thi lập trình.

* Năng lực phân tích và đánh giá độ phức tạp của thuật toán

Nội dung và phương pháp thực hiện

1.1 Giới thiệu về số học

Số học đóng vai trò quan trọng trong lĩnh vực Tin học, đặc biệt trong lập trình thi đấu và phát triển học sinh giỏi Nó bao gồm các chủ đề như tính toán trên số nguyên, số nguyên tố, đồng dư, ước chung lớn nhất, bội chung nhỏ nhất và các thuật toán tối ưu hóa liên quan.

Trong lập trình thi đấu, số học là yếu tố then chốt, vì nhiều bài toán đòi hỏi tối ưu hóa thuật toán để xử lý các số lớn và đảm bảo thời gian chạy hiệu quả.

Trong phần này chúng tôi tập trung vào hai nội dung quan trọng:

Sàng số nguyên tố là một thuật toán hiệu quả giúp tìm và đánh dấu các số nguyên tố trong một phạm vi lớn, từ đó giải quyết nhanh chóng các bài toán liên quan đến số nguyên tố.

Lý thuyết đồng dư là một khái niệm quan trọng trong số học, hỗ trợ giải quyết các bài toán liên quan đến chia hết, tìm số dư, và giải hệ đồng dư Nó cũng có ứng dụng trong tính toán modulo, mã hóa và bảo mật thông tin.

Sau khi học xong phần số học này, học sinh sẽ:

- Hiểu rõ khái niệm số nguyên tố, thuật toán kiểm tra số nguyên tố và ứng dụng của chúng

- Nắm vững thuật toán Sàng Eratosthenes để tìm số nguyên tố hiệu quả

- Hiểu về đồng dư, tính chất của phép toán modulo và cách áp dụng vào các bài toán thực tế

- Biết cách sử dụng các thuật toán tính toán nhanh trên số nguyên như nhân lũy thừa nhanh, định lý số dư Trung Hoa

1.2 Khái niệm số nguyên tố

Số nguyên tố là số tự nhiên lớn hơn 1 chỉ có hai ước số dương là 1 và chính nó

Bất kỳ số nguyên dương nào cũng có thể được phân tích thành tích của các số nguyên tố (định lý cơ bản của số học)

1.3 Xây dựng hàm xét tính nguyên tố của một số

Nếu số x nhỏ hơn 2, thì x không phải là số nguyên tố Hàm sẽ kiểm tra điều kiện này và trả về kết quả tương ứng.

False Điều này đúng vì số nguyên tố là số nguyên lớn hơn 1, nếu x nhỏ hơn 2, nó không thể là số nguyên tố

1.4 Một số bài tập vận dụng

Bài 1 Số nguyên tố gần nhất

Tìm số nguyên tố gần số nguyên N nhất Trong chương trình dưới đây có sử dụng hàm isPrime() đã được xây dựng ở trên

Bài 2 Thừa số nguyên tố

Nhập số N nguyên dương Hãy phân tích N thành các thừa số nguyên tố

Bài 3 Trò chơi với số nguyên tố

John và Jame rất yêu thích các số nguyên tố, là những số nguyên dương lớn hơn 1 chỉ có hai ước Dãy số nguyên tố đầu tiên bao gồm: 2, 3, 5, 7, 11, 13, 17, 19.

23, … John chọn các số nguyên tố thuộc đoạn [a, b], Jame chọn các số nguyên tố trong đoạn [c, d] Người thắng cuộc là người có được nhiều số nguyên tố nhất

Yêu cầu: Cho a, b, c, d Hãy xác định tên người thắng cuộc và số lượng số nguyên tố người đó có được

Dữ liệu: Vào từ tệp CPRIMED.INP trong tệp ghi 4 số nguyên dương a, b, c, d (a ≤ b ≤ 10 6 , c ≤ d ≤ 10 6 )

Kết quả sẽ được ghi vào tệp CPRIMED.OUT, bao gồm tên người thắng cuộc và số lượng số nguyên tố nhiều nhất mà họ tìm được, hai giá trị này cách nhau bằng một dấu cách Nếu John và Jame có số lượng số nguyên tố bằng nhau, kết quả sẽ ghi là EQUAL.

Để giải bài toán này, chúng ta cần xây dựng một hàm nhằm đếm số lượng số nguyên tố trong các đoạn [a, b] và [c, d] Sau đó, chúng ta sẽ so sánh kết quả để xác định người thắng cuộc.

1.5 Sàng số nguyên tố (Sàng Eratosthenes)

Sàng Eratosthenes là một thuật toán hiệu quả để xác định tất cả các số nguyên tố nhỏ hơn hoặc bằng N Thuật toán bắt đầu với giả định rằng tất cả các số từ 2 đến N đều là số nguyên tố, sau đó loại bỏ các số không phải nguyên tố bằng cách đánh dấu các bội số của những số nguyên tố đã được phát hiện.

Bước 1: Tạo một mảng đánh dấu mang_snt với kích thước từ 2 đến N+1, trong đó tất cả các giá trị ban đầu đều được đặt là True, giả định rằng mọi số từ 2 đến N đều là số nguyên tố.

Bước 2: Đặt mang_snt [0] = mang_snt [1] = False

Bước 3: Duyệt qua các số từ 2 đến √𝑁:

Nếu một số \( p \) chưa được đánh dấu là False, thì nó được coi là số nguyên tố Tất cả các bội số của \( p \) lớn hơn hoặc bằng \( p^2 \) sẽ được đánh dấu là False, vì các bội số nhỏ hơn đã bị loại bỏ trước đó.

Bước 4: Duyệt qua mảng mang_snt, in ra các số còn lại có giá trị True

Cài đặt thuật toán bằng Python:

- Vòng lặp ngoài chạy O(√𝑁) lần

- Vòng lặp trong chạy trung bình O(N) phép gán

- Tổng thể, thuật toán có độ phức tạp O(N log log N), nhanh hơn so với kiểm tra từng số riêng lẻ O(N√𝑁)

1.6 Số hoàn hảo và Định lý Euler

Một số tự nhiên 𝑛 được gọi là số hoàn hảo nếu tổng các ước số dương của nó (không tính chính nó) bằng chính nó, tức là: 𝜎(𝑛) − 𝑛 = 𝑛

Trong đó 𝜎(𝑛) là hàm tổng các ước số của 𝑛

6 là số hoàn hảo vì các ước của nó là 1, 2, 3, 6, và 1 + 2 + 3 = 6

28 là số hoàn hảo vì các ước của nó là 1, 2, 4, 7, 14, 28 và 1 + 2 + 4 + 7 + 14 = 28

* Định lý Euler về số hoàn hảo

Leonhard Euler đã đưa ra một định lý quan trọng về số hoàn hảo:

Nếu 𝑛 là một số hoàn hảo chẵn, thì nó có dạng: 𝑛 = 2 𝑝−1 × (2 𝑝 − 1)

 2 𝑝 − 1 cũng là một số nguyên tố (còn gọi là số nguyên tố Mersenne)

Với 𝑝 = 2, ta có 2 2 − 1 = 3 (nguyên tố) → 𝑛 = 2 2−1 × 3 = 6 (số hoàn hảo)

Với 𝑝 = 3, ta có 2 3 − 1 = 7 (nguyên tố) → 𝑛 = 2 3−1 × 7 = 28 (số hoàn hảo) Với 𝑝 = 5, ta có 2 5 − 1 = 31 (nguyên tố) → 𝑛 = 2 5−1 × 31 = 496 (số hoàn hảo)

Đồng dư thức là một khái niệm quan trọng trong toán học, đặc biệt là trong lĩnh vực Tin học Các tính chất của đồng dư thức, cùng với định lý Fermat, là những công cụ hữu ích trong việc giải quyết các bài toán Bài viết này sẽ tập trung vào các công thức ứng dụng phổ biến của đồng dư, giúp người đọc hiểu rõ hơn về cách áp dụng chúng trong thực tiễn.

Ví dụ: (7 + 9) % 4 = 4  [(7%4) + (9%4)] % 4 b Ứng dụng của đồng dư

* Kiểm tra tính chia hết

Dùng đồng dư để kiểm tra số có chia hết cho 𝑚 hay không mà không cần chia trực tiếp

* Phép nhân modulo (Tính nhanh luỹ thừa)

Dùng đồng dư để tính luỹ thừa nhanh bằng Phép nhân có lũy thừa modulo

* Giải hệ đồng dư – Định lý số dư Trung Hoa (Chinese Remainder Theorem - CRT) Định lý này giúp tìm số 𝑥 thỏa mãn hệ phương trình đồng dư:

Khi 𝑚 1 , 𝑚 2 , , 𝑚 𝑘 là số nguyên tố cùng nhau, có thể tìm 𝑥 duy nhất trong khoảng [0, 𝑀), với 𝑀 = 𝑚 1 × 𝑚 2 × .× 𝑚 𝑘

Một số ứng dụng như:

 Tính toán với số lớn

 Giải bài toán về chu kỳ c Bài tập

Ví dụ 1: Tính N! chia dư cho 10 9 + 7 (mod) Ứng dụng lý thuyết đồng dư để giải

Ví dụ 2: Khi bài toán yêu cầu chia dư kết quả cho 1 số nào đó, Tính đến đâu chia dư đến đó

Ví dụ: Tính A B % C Ứng dụng lý thuyết đồng dư để giải: Duyệt từ 1  b để tính a b

2 Thuật toán tham lam (GREEDY ALGORITHM)

2.1 Giới thiệu về thuật toán tham lam

Thuật toán tham lam (Greedy Algorithm) là một phương pháp thiết kế thuật toán phổ biến trong giải quyết các bài toán tối ưu hóa Nguyên tắc của nó là chọn lựa phương án tối ưu cục bộ tại mỗi bước, với hy vọng rằng điều này sẽ dẫn đến nghiệm tối ưu toàn cục.

Phương pháp này tập trung vào việc tìm kiếm các nghiệm gần đúng với nghiệm tối ưu, mặc dù có thể có sai số Mục tiêu là xây dựng một hàm tính toán độ tối ưu cho phương án, nhằm tối đa hóa khả năng đạt được nghiệm tối ưu Ưu điểm nổi bật của phương pháp là độ phức tạp thấp, và nếu được triển khai đúng cách, nó có thể mang lại nghiệm tối ưu một cách nhanh chóng.

Thuật toán tham lam là cách tiếp cận hiệu quả để giải các bài toán tối ưu hóa

 Điều kiện cần: Bài toán cần có cấu trúc cho phép chọn tham lam mà vẫn đảm bảo nghiệm tối ưu toàn cục

 Lợi ích: Đơn giản, dễ cài đặt, nhanh hơn so với phương pháp quy hoạch động hoặc quay lui

 Ứng dụng: Rộng rãi trong các bài toán đổi tiền, cái túi, xếp lịch, đồ thị, mã Huffman

Lưu ý: Không phải bài toán nào cũng có thể áp dụng thuật toán tham lam Khi sử dụng, cần có chứng minh tính đúng đắn!

2.2 Cách tiếp cận thuật toán tham lam

Một thuật toán tham lam thông thường bao gồm các bước sau:

- Sắp xếp dữ liệu đầu vào theo tiêu chí phù hợp

- Lựa chọn tham lam: Ở mỗi bước, chọn phương án tối ưu cục bộ (tốt nhất tại thời điểm đó)

- Kiểm tra điều kiện dừng: Lặp lại quá trình trên cho đến khi đạt được kết quả mong muốn

- Xác nhận nghiệm tối ưu: Kiểm tra xem kết quả thu được có phải là nghiệm tối ưu toàn cục không

- Dễ cài đặt, nhanh chóng với độ phức tạp thấp

- Hoạt động hiệu quả với nhiều bài toán thực tế

- Không cần xét hết tất cả các trường hợp như phương pháp quy hoạch động hay quay lui

- Không phải lúc nào cũng tìm được nghiệm tối ưu toàn cục

- Cần có chứng minh tính đúng đắn cho từng bài toán cụ thể

- Một số bài toán cần thêm kỹ thuật bổ trợ như quy hoạch động để đảm bảo nghiệm đúng

Bài toán 1: Tìm số lớn nhất với phương thức sử dụng ngăn xếp

Bài toán 2: Chuyển số thập phân sang số nhị phân sử dụng ngăn xếp

2.4 Một số bài toán ứng dụng thuật toán tham lam

Bài 1: Bài toán đổi tiền

Để đổi giá trị tiền M thành các tờ tiền trong hệ thống mệnh giá 1, 2, 5 và 10 xu, với M = 18 xu, thuật toán tham lam sẽ chọn các tờ tiền có mệnh giá lớn nhất trước, nhằm giảm thiểu số lượng tờ tiền cần sử dụng.

Bước 1: Chọn đồng 10 xu, do đó sẽ còn 18 – 10 = 8 xu

Bước 2: Chọn đồng 5 xu, do đó sẽ còn là 3 xu

Bước 3: Chọn đồng 2 xu, còn lại là 1 xu

Bước 4: Cuối cùng chọn đồng 1 xu và giải xong bài toán

Cách làm trên là khá ổn, và số lượng đồng tiền cần phải lựa chọn là 4 đồng tiền

- Gọi C là hệ mệnh giá tiền  C(M) = m1 + m2 + … + mn

Thực hiện chọn các đồng xu theo phương thức được mô tả bên dưới:

Nếu chúng ta thay đổi bài toán trên một chút thì cũng hướng tiếp cận như trên có thể sẽ không đem lại cùng kết quả tối ưu

Chẳng hạn, một hệ thống tiền tệ khác có các đồng tiền có mệnh giá lần lượt là

Khảo sát sự cấp thiết và tính khả thi của giải pháp

1 Khảo sát sự cấp thiết và tính khả thi của giải pháp

* Trước khi thực hiện giải pháp

Trước khi tiếp cận các chuyên đề thuật toán, học sinh thường gặp khó khăn trong việc áp dụng và vận dụng các thuật toán vào lập trình Hầu hết học sinh chỉ quen với các phương pháp giải quyết bài toán đơn giản, thiếu tư duy thuật toán sâu sắc và chưa biết cách tối ưu hóa chương trình.

Các vấn đề thường gặp bao gồm:

 Chưa thành thạo các thuật toán quan trọng, dẫn đến việc giải bài toán còn chậm và kém hiệu quả

 Gặp khó khăn trong việc nhận diện bài toán có thể áp dụng các phương pháp tham lam, đệ quy hoặc quy hoạch động

 Chưa biết cách tối ưu hóa thuật toán để giảm thời gian chạy, dễ mắc lỗi về hiệu suất khi xử lý dữ liệu lớn

 Chưa có tư duy phân tích và chứng minh tính đúng đắn của thuật toán, thường chọn phương pháp giải quyết theo cảm tính

* Sau khi thực hiện giải pháp

Sau quá trình học tập và rèn luyện chuyên sâu, học sinh không chỉ nắm vững kiến thức mà còn có khả năng vận dụng linh hoạt các thuật toán vào lập trình thực tế, mang lại những cải thiện quan trọng trong kỹ năng lập trình.

Nâng cao tư duy thuật toán giúp học sinh tư duy chặt chẽ hơn khi giải quyết bài toán, đồng thời biết cách lựa chọn thuật toán phù hợp để tối ưu hóa thời gian chạy.

Cải thiện kỹ năng lập trình: Viết mã nguồn gọn gàng hơn, hạn chế lỗi logic và tối ưu hóa thuật toán để tăng hiệu suất

Giải quyết bài toán nhanh hơn cho phép xử lý các bài toán phức tạp trong thời gian ngắn, từ đó nâng cao thành tích trong các kỳ thi học sinh giỏi.

Sau khi hoàn thành các chuyên đề, học sinh đã xây dựng được nền tảng vững chắc về thuật toán và lập trình, điều này hỗ trợ đáng kể cho quá trình học tập và tham gia các kỳ thi lập trình trong tương lai.

Trước khi tham gia chuyên đề bồi dưỡng, học sinh gặp nhiều khó khăn trong việc tiếp cận các thuật toán nâng cao Một số thống kê cho thấy năng lực học sinh còn hạn chế trước khi bắt đầu học.

Trước khi thực hiện các chuyên đề

Sau khi thực hiện các chuyên đề

Tỷ lệ học sinh hiểu và vận dụng thuật toán:

1 Nắm vững kiến thức cơ bản về lập trình 60% 95%

2 Hiểu và áp dụng thuật toán về số học 30% 85%

3 Hiểu và vận dụng thuật toán tham lam 20% 80%

4 Có khả năng xây dựng và sử dụng đệ quy 15% 75%

5 Hiểu và áp dụng quy hoạch động 5% 40%

Thời gian trung bình hoàn thành bài tập

1 Bài tập cơ bản 20-30 phút/bài 10-15 phút/bài

2 Bài tập có áp dụng thuật toán 45-60 phút/bài 25-40 phút/bài

3 Bài tập khó (có áp dụng lý thuyết đồng dư, đệ quy, tham lam, quy hoạch động)

Không làm được hoặc (> 90 phút) 50-60 phút/bài

Tỷ lệ học sinh đạt điểm cao khi làm bài kiểm tra đánh giá

1 học sinh đạt điểm cao khi giải bài tập khó áp dụng các thuật toán như đệ quy, tham lam, quy hoạch động)

1.3 Khảo sát sự cấp thiết và tính khả thi của giải pháp đưa ra

Đề tài này nhằm xác định tính khả thi và hiệu quả của giải pháp đối với học sinh có học lực tốt trong môn Tin học Cần đánh giá xem giải pháp được đề xuất có phù hợp với các vấn đề nghiên cứu hiện tại hay không.

1.3.2 Phương pháp khảo sát và thang đánh giá

- Phương pháp được sử dụng để khảo sát là Trao đổi bằng bảng hỏi, với thang đánh giá 04 mức (tương ứng với điểm số từ 1 đến 4):

+ Không cấp thiết; Ít cấp thiết; Cấp thiết và Rất cấp thiết

+ Không khả thi; Ít khả thi; Khả thi và Rất khả thi

- Tính điểm trung bình theo phần mềm Microsoft Excel 2016

Giá trị trung bình cộng ( X ) Tổng điểm các đối tượng được khảo sát

Số lượng đối tượng được khảo sát

- Sau khi tính điểm trung bình khảo sát cho các giải pháp chúng tôi đưa ra thang đánh giá gồm 04 mức tương ứng với thang điểm như sau:

Giá trị khoảng cách = Maximum - Minimum

+ Thang điểm: 1.00 – 1.75: Không cấp thiết hoặc Không khả thi

+ Thang điểm: 1.76 – 2.50: Ít cấp thiết hoặc Ít khả thi

+ Thang điểm: 2.51 – 3.25: Cấp thiết hoặc Khả thi

+ Thang điểm: 3.26 – 4.00: Rất cấp thiết hoặc Rất khả thi

Tổng hợp các đối tượng khảo sát

TT Đối tượng Số lượng

1 Học sinh lớp 10 trường THPT Nghi Lộc 5 có học lực môn

Tin học học kỳ 1 năm học 2024-2025 xếp loại Tốt 45

2 Học sinh lớp 11 trường THPT Nghi Lộc 5 có học lực môn

Tin học học kỳ 1 năm học 2024-2025 xếp loại Tốt 60

1.3.4 Kết quả khảo sát về sự cấp thiết và tính khả thi của các giải pháp

* Đánh giá sự cấp thiết của các giải pháp

- Bảng tổng hợp kết quả phiếu khảo sát sự cấp thiết nằm ở PHỤ LỤC 1

TT Các giải pháp Các thông số

1 Sử dụng ngôn ngữ lập trình Python trong công tác bồi dưỡng học sinh giỏi môn Tin học 3.86 Rất cấp thiết

Phát triển năng lực đặc thù cho học sinh luyện thi học sinh giỏi cấp tỉnh bao gồm các kỹ năng như phân tích và đánh giá độ phức tạp của thuật toán, cũng như khả năng triển khai giải thuật một cách hiệu quả.

Các chuyên đề như số học, đệ quy, tham lam và quy hoạch động đóng vai trò quan trọng trong việc nâng cao kỹ năng lập trình và thuật toán Việc nắm vững những kiến thức này không chỉ giúp lập trình viên giải quyết vấn đề hiệu quả hơn mà còn cải thiện khả năng tư duy logic và sáng tạo trong lập trình.

Theo bạn, việc bồi dưỡng chuyên đề này có giúp ích gì trong các kỳ thi Tin học (học sinh giỏi, lập trình thi đấu, v.v.) hay không?

* Đánh giá tính khả thi của các giải pháp đề xuất

- Bảng tổng hợp kết quả phiếu khảo sát tính khả thi nằm ở PHỤ LỤC 2

TT Các giải pháp Các thông số

1 Sử dụng ngôn ngữ lập trình Python trong công tác bồi dưỡng học sinh giỏi môn Tin học 3.96 Rất khả thi

Phát triển năng lực đặc thù cho học sinh luyện thi học sinh giỏi cấp tỉnh bao gồm năng lực phân tích và đánh giá độ phức tạp của thuật toán, cũng như năng lực triển khai giải thuật.

Đánh giá mức độ khả thi của các chuyên đề như số học, đệ quy, tham lam và quy hoạch động là rất quan trọng trong việc nâng cao kỹ năng lập trình và thuật toán Những chuyên đề này không chỉ giúp người học nắm vững các khái niệm cơ bản mà còn phát triển tư duy logic và khả năng giải quyết vấn đề Việc áp dụng các kỹ thuật này vào thực tiễn sẽ cải thiện đáng kể hiệu suất lập trình và khả năng tối ưu hóa giải thuật.

Bạn có gặp khó khăn trong việc tiếp cận nội dung các chuyên đề không? Liệu việc bồi dưỡng các chuyên đề này có khả thi trong các kỳ thi Tin học như học sinh giỏi hay lập trình thi đấu không?

Dựa trên kết quả khảo sát, các giải pháp được đánh giá là cấp thiết và khả thi, cho thấy chúng là nền tảng vững chắc cho việc phát triển khả năng giải quyết bài toán lập trình phức tạp của học sinh Những chuyên đề này không chỉ giúp học sinh hiểu sâu về thuật toán mà còn nâng cao kỹ năng thực hành và ứng dụng.

45 các bài toán thi đấu

Kết quả khảo sát cho thấy các chuyên đề được thiết kế có tính khả thi cao và đáp ứng tốt nhu cầu học tập của học sinh

Việc sử dụng Python để phát triển tư duy thuật toán là rất phù hợp, đặc biệt khi tập trung vào các chuyên đề quan trọng như số học, đệ quy, tham lam và quy hoạch động Để nâng cao hiệu quả học tập, nên bổ sung các bài giảng chuyên sâu về phân tích thuật toán và tối ưu hóa triển khai giải thuật Hơn nữa, việc xây dựng một bộ ngân hàng bài tập phong phú sẽ cung cấp cho học sinh nhiều tài liệu luyện tập hữu ích.

2 Khảo sát sự tiếp nhận, nắm vững kiến thức, tính sáng tạo của học sinh Đối tượng và địa bàn thực nghiệm: Chúng tôi và đồng nghiệp chọn 2 lớp 11

(1 lớp đối chứng và 1 lớp thực nghiệm, các lớp này tương đương về chất lượng học tập) tại trường THPT Nghi Lộc 5

Mục đích của thực nghiệm sư phạm là để kiểm tra tính chính xác và khả năng thực hiện của giả thuyết khoa học, đồng thời khẳng định sự cần thiết và ý nghĩa của đề tài trong cả khía cạnh khoa học lẫn thực tiễn.

Lớp đối chứng (ĐC): Lớp 11A2 dạy học phần Chủ đề 6 – Kỹ thuật lập trình và KHÔNG được học các chuyên đề của đề tài

Ngày đăng: 28/06/2025, 09:35

HÌNH ẢNH LIÊN QUAN

Sơ đồ chung: - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Sơ đồ chung (Trang 33)
Bảng 2. Phân phối tần suất điểm bài kiểm tra - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Bảng 2. Phân phối tần suất điểm bài kiểm tra (Trang 51)
Hình 1: Đường lũy tích điểm bài kiểm tra kỹ thuật lập trình 100 phút - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Hình 1 Đường lũy tích điểm bài kiểm tra kỹ thuật lập trình 100 phút (Trang 51)
Bảng 3. Bảng phân phối tần suất lũy tích điểm kiểm tra - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Bảng 3. Bảng phân phối tần suất lũy tích điểm kiểm tra (Trang 51)
2. Bảng tổng hợp kết quả khảo sát - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
2. Bảng tổng hợp kết quả khảo sát (Trang 58)
Bảng tổng hợp kết quả khảo sát HS về sự cấp thiết của các giải pháp. - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Bảng t ổng hợp kết quả khảo sát HS về sự cấp thiết của các giải pháp (Trang 58)
Bảng tổng hợp kết quả khảo sát HS về tính khả thi của các giải pháp: - Skkn giải pháp bồi dưỡng học sinh giỏi tin học theo chuyên Đề thuật toán và bộ bài tập, ngôn ngữ lập trình python
Bảng t ổng hợp kết quả khảo sát HS về tính khả thi của các giải pháp: (Trang 59)

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w