Việc “Tìm hiểu về thuật toán loang” nhằm giúp tôi hiểu rõ hơn, sâu sắc hơn về giải thuật loang, các bài toán ứng dụng của giải thuật và cách viết các chương trình bằng phương pháp loang từ đó nâng cao khả năng nghiên cứu khoa học, khả năng tự học, tự bồi dưỡng, khả năng nhận biết, suy đoán và khả năng lập trình của bản thân. Qua đó tạo nên một tài liệu hỗ trợ học tập cho học sinh và nâng cao kiến thức chuyên môn cho giáo viên.
“Ứng dụng thuật toán loang để giải số toán cho học sinh giỏi tỉnh khối 12” Phần I: MỞ ĐẦU Lý chọn đề tài: Ngôn ngữ lập trình Pascal nội dung đưa vào chương trình học bậc THPT nội dung áp dụng cho kỳ thi chọn học sinh giỏi tỉnh, học sinh giỏi quốc gia mơn tin học Chính cần nghiên cứu sâu giải thuật để hướng dẫn cho học sinh ôn tập cách tốt cho kỳ thi mục tiêu cần đạt người giáo viên Trong kỳ thi tuyển học sinh giỏi tỉnh khối 12 hầu hết đề thi có tốn cần sử dụng giải thuật đệ loang để giải vấn đề Đó dạng tốn có ứng dụng phổ biến Vậy nên, có nhiều tài liệu viết nội dung Tuy nhiên, theo quan điểm, cách nhìn nhận tơi việc phân tích tốn cịn trừu tượng khiến người đọc khó hình dung, khó để hiểu khó viết chương trình Hiện nay, trường việc hiểu sử dụng giải thuật loang cịn nhiều hạn chế, khơng số học sinh tham gia bồi dưỡng hiểu sử dụng cịn mà giáo viên tham gia bồi dưỡng nhiều lúng túng giảng dạy phần nội dung Tôi giáo viên tham gia bồi dưỡng học sinh giỏi, nhận thấy cần nghiêm túc nghiên cứu nội dung để đưa cách trình bày, cách phân tích giúp người đọc dễ hiểu, dễ biết dễ viết chương trình Để tạo điều kiện thuận lợi trình bồi dưỡng qua q trình bỗi dưỡng tơi đúc rút số kinh nghiệm việc trình bày, phân tích tốn, ứng dụng giải thuật loang cài đặt số toán đề thi học sinh giỏi khối 12 năm gần Với mong muốn người đọc dễ dàng tiếp cận vấn đề Vì tơi chọn đề tài “Ứng dụng thuật toán loang việc giải số toán cho học sinh giỏi tỉnh khối 12” để nghiên cứu Hy vọng đề tài trở thành tài liệu quý cho học sinh tham gia bồi dưỡng tài liệu đáng tham khảo cho quý thầy q trình “Ứng dụng thuật tốn loang để giải số toán cho học sinh giỏi tỉnh khối 12” tham gia bồi dưỡng đội tuyển học sinh giỏi tỉnh để góp phần đưa cho đội tuyển thành tích cao Mục đích nghiên cứu: Việc “Tìm hiểu thuật tốn loang” nhằm giúp tơi hiểu rõ hơn, sâu sắc giải thuật loang, toán ứng dụng giải thuật cách viết chương trình phương pháp loang từ nâng cao khả nghiên cứu khoa học, khả tự học, tự bồi dưỡng, khả nhận biết, suy đoán khả lập trình thân Qua tạo nên tài liệu hỗ trợ học tập cho học sinh nâng cao kiến thức chuyên môn cho giáo viên Đối tượng nghiên cứu: Tôi phân công bồi dưỡng học sinh giỏi trường nên đối tượng nghiên cứu học sinh lớp chọn khối học sinh chọn bồi dưỡng học sinh giỏi trường môn tin học Phạm vi nghiên cứu: Để nghiên cứu đề tài này, phạm vi nghiên cứu ‘‘lý thuyết loang ứng dụng thuật toán loang để giải tốn tin học ngơn ngữ lập trình Pascal’’ Giả thuyết khoa học: Lý thuyết loang, ứng dụng thuật tốn loang thực đóng vai trò quan trọng việc giúp học sinh định hướng, tìm phương pháp giải tốn ứng dụng thuật toán loang đề thi học sinh giỏi cấp tỉnh, cấp quốc gia Bước đầu giúp học sinh nhận dạng, phân tích giải toán liên quan cách hiệu Nhiệm vụ nghiên cứu: Nghiên cứu sở lí luận Nghiên cứu khái niệm, thuật toán số toán ứng dụng “Ứng dụng thuật toán loang để giải số toán cho học sinh giỏi tỉnh khối 12” Nghiên cứu cú pháp, câu lệnh ngơn ngữ lập trình Pascal để cài đặt số toán loang Phương pháp nghiên cứu: Sử dụng phương pháp nghiên cứu lý thuyết, phương pháp tìm kiếm, thu thập thơng tin, tổng hợp, phân tích so sánh, thiết kế cài đặt chương trình Đóng góp đề tài: Về mặt khoa học: Đề tài trình bày cách logic khái niệm từ đơn giản đến trừu tượng, giới thiệu, phân tích tập giúp hiểu rõ chất vấn đề, từ vận dụng để giải toán phức tạp Về mặt thực tiễn: Đề tài trình bày tương đối đầy đủ khái niệm, ví dụ tốn loang – phân tích ưu điểm việc sử dụng thuật toán loang tập đa dạng giúp cho người đọc nắm bắt hiểu rõ ưu điểm thuật toán, cách viết sử dụng loang lập trình Pascal để giải tốn “Ứng dụng thuật toán loang để giải số toán cho học sinh giỏi tỉnh khối 12” Phần II: GIẢI QUYẾT VẤN ĐỀ Cơ sở lí luận: Trong tin học tìm kiếm phương pháp phổ biến để giải tốn Và tìm kiếm có nhiều phương pháp tìm kiếm Tuy nhiên, tìm kiếm đồ thị ta có hai cách tìm kiếm là: Tìm kiếm theo chiều sâu tìm kiếm theo chiều rộng Mỗi cách tìm có ưu điểm riêng Đối với tìm kiếm theo chiều sâu ta thường sử dụng giải thuật đệ quy Giải thuật tương đối dễ cài đặt, giải toán liệu bé Với tốn có liệu lớn tìm kiếm theo chiều rộng – cài đặt thuật tốn loang giúp ta khắc phục hạn chế 1.1 Khái niệm loang Thuật toán Loang thực chất thuật tốn tìm kiếm theo chiều rộng đồ thị (Breadth First Search) Để hiểu rõ chất thuật toán này, ta xét toán “Thăm đỉnh đồ thị” sau: Cho đồ thị vô hướng G = (V,E), N đỉnh M cạnh (số hiệu đỉnh 1, 2, …,N) Bây ta đưa thứ tự duyệt đỉnh đồ thị cho theo thuật tốn tìm kiếm theo chiều rộng; thứ tự duyệt đỉnh v Tư tưởng thuật tốn sử dụng cấu trúc liệu kiểu hàng đợi (QUEUE - vào trước trước) Phần tử nạp vào QUEUE đỉnh v Sau đỉnh p lấy khỏi QUEUE ta thăm đỉnh đồng thời nạp vào QUEUE đỉnh chung cạnh với p (chỉ nạp vào đỉnh chưa xét đến) Quá trình lặp lặp lại QUEUE rỗng dừng 1.2 Thuật tốn loang Thuật tốn tìm kiếm theo chiều rộng BFS thuật tốn tìm kiếm đồ thị cách tìm kiếm dựa thao tác là: cho trước đỉnh đồ “Ứng dụng thuật toán loang để giải số toán cho học sinh giỏi tỉnh khối 12” thị thêm đỉnh kề với vào danh sách chờ duyệt Phương pháp cài đặt “lập lịch” để duyệt đỉnh theo thứ tự duyệt ưu tiên chiều rộng (đỉnh gần với đỉnh gốc duyệt trước) Vì nguyên tắc (đỉnh gần gốc duyệt trước) nên thuật tốn tìm kiếm theo chiều rộng BFS thường dùng để tìm đường ngắn đỉnh Chúng ta xây dựng danh sách chứa đỉnh chờ duyệt, bước thăm đỉnh đầu danh sách thêm đỉnh kề với chưa có danh sách chờ vào cuối danh sách Vì ngun tắc nên tổ chức danh sách chờ cấu trúc liệu hàng đợi (Queue) Ban đầu tất đỉnh i (i = n) đặt cờ chuaxet[i] = True Nếu đỉnh xét ta đặt cờ đỉnh sang trạng thái False Procedure BFS(v); Tìm kiếm theo chiều rộng đỉnh v Begin QUEUE = ; {Khởi tạo QUEUE ban đầu rỗng} QUEUE cờ v False} While QUEUE ≠ Begin P