1. Trang chủ
  2. » Công Nghệ Thông Tin

sáng kiến kinh nghiệm 2022 THPT21 01

59 17 0

Đ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

Định dạng
Số trang 59
Dung lượng 702,34 KB

Nội dung

SỞ GIÁO DỤC VÀ ĐÀO TẠO NAM ĐỊNH TRƯỜNG THPT CHUYÊN LÊ HỒNG PHONG (TÊN CƠ QUAN, ĐƠN VỊ CHỦ QUẢN) (TÊN CƠ QUAN ÁP DỤNG SÁNG KIẾN) BÁO CÁO SÁNG KIẾN BÁO CÁO SÁNG KIẾN (Tên sáng kiến) PHÁT TRIỂN TƯ DUY CỦA HỌC SINH THÔNG QUA VIỆC TỐI ƯU HÓA Tác giả: CÁCTrình BÀI TỐN TRÊN ĐỒ THỊ độ chuyên môn: ChứcTin vụ: Lĩnh vực: (14)/THPT NơiĐặng công tác: Tác giả: Trung Kiên Trình độ chuyên môn: Cử nhân Chức vụ: Giáo viên Nơi công tác: Trường THPT chuyên Lê Hồng Phong THÔNG TIN CHUNG VỀ SÁNG KIẾN Tên sáng kiến: Vận dụng stack, queue việc bồi dưỡng học sinh giỏi Lĩnh vực áp dụng sáng kiến: Tin học Thời gian áp dụng sáng kiến: Từ ngày 06 tháng 09 năm 2018 đến ngày tháng 05 năm 2019 Tác giả: Họ tên: Đặng Trung Kiên Năm sinh: 1990 Nơi thường trú: Định, 11/49 đường Văn Can, Thành2021 phố Nam Định Nam ngày Lương 20 tháng 04 năm Trình độ chuyên môn: Cử nhân Sư phạm Tin học Chức vụ cơng tác: Giáo viên THƠNG TIN CHUNG VỀ SÁNG KIẾN Tên sáng kiến: Phát triển tư học sinh thơng qua việc tối ưu hóa tốn đồ thị Lĩnh vực: Tin học (14)/THPT Thời gian áp dụng sáng kiến: Từ ngày 06 tháng 09 năm 2021 đến ngày 22 tháng 05 năm 2022 Tác giả: Họ tên: Đặng Trung Kiên Năm sinh: 1990 Nơi thường trù: 2D/13/71 đường Phù Nghĩa, Phường Hạ Long, thành phố Nam Định 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 Tin học Nơi làm viêc: Trường THPT chuyên Lê Hồng Phong Điện thoại: 0389905703 Tỷ lệ đóng góp tạo sáng kiến: 100% Đồng tác giả: không Đơn vị áp dụng sáng kiến: Tên đơn vị: Trường THPT chuyên Lê Hồng Phong Địa chỉ: 76 Vị Xuyên, P Vị Xuyên, TP Nam Định BÁO CÁO SÁNG KIẾN Điều kiện hoàn cảnh tạo sáng kiến I Lý thuyết đồ thị có nhiều thuật tốn ứng dụng vào toán thực tế sống tìm đường ngắn nhất, tìm khung có trọng số nhỏ nhất,…Việc tìm mối liên hệ toán thực tế sống với thuật toán đồ thị, khiến cho học sinh cảm thấy hứng thú lớn với lý thuyết đồ thị Tuy nhiên, có khó khăn dạy học lý thuyết đồ thị, số lượng thuật tốn liên quan đến đồ thị khơng nhỏ Do vậy, học sinh làm tập liên quan đến đồ thị, em thường có nhiều thuật tốn khác để giải vấn đề Đơi khi, em cảm thấy chưa biết phải vận dụng thuật toán để giải toán đồ thị Việc dạy cho em nhiều thuật toán đồ thị thời gian ngắn, khiến cho em cảm thấy đồ thị thật khó Do đó, tơi muốn tiếp cận cách giải tốn đồ thị, dựa việc phát triển từ thuật toán, phương pháp em cảm thấy quen thuộc số học, quy hoạch động, tổ hợp,… Vì tơi chọn đề tài: “Phát triển tư học sinh thơng qua việc tối ưu hóa tốn đồ thị”, nhằm mục đích xây dựng hệ thống tập liên quan đến đồ thị, đồng thời rèn luyện kỹ tối ưu hóa tốn đồ thị II Mô tả giải pháp Mô tả giải pháp trước tạo sáng kiến Trước dạy tập đồ thị, phương pháp dạy học tơi tiến hành sau: • Tơi thường tìm kiếm tập đồ thị với nguồn từ sách giáo khoa, sách tập, nguồn tập Internet, sách tham khảo Tuy nhiên, sau thời gian dạy cho đội tuyển Tin, nhận thấy vấn đề sau: • Một là, tập xây dựng chưa theo mạch logic từ dễ đến khó Khiến cho số đơn vị tập dễ, số đơn vị tập lại q khó Điều khiến cho dễ học sinh nảy sinh tâm lý chủ quan, khó nhiều học sinh nảy sinh tâm lý sợ sệt nản học lập trình • Hai là, cần thiết phải có hệ thống tập khơng q dễ khơng q khó, nằm khả làm nhiều đối tượng học sinh Hệ thống tập khiến cho học sinh cảm thấy thích thú tìm hiểu lập trình, khai thác sâu nhiều đơn vị kiến thức qua toán Tin học Do vậy, tơi viết chun đề với mục đích sau: • Xây dựng hệ thống tập có vận dụng đồ thị việc tối ưu hóa thuật tốn; thuật toán tối ưu thuật toán chưa tối ưu việc giải toán, cài đặt chương trình ngơn ngữ lập trình C++ Mơ tả giải pháp sau có sáng kiến Đề tài tơi xây dựng hướng tới mục đích sau: • Xây dựng phân tích tập đồ thị có nhiều cách giải, sử dụng thuật tốn đồ thị dfs, bfs, tìm đường ngắn nhất,… sau tối ưu hóa chúng phương pháp lớp 10 số học, quy hoạch động, tổ hợp,… • Hệ thống hóa tập đồ thị, nhằm giúp cho việc phát triển tư học sinh theo mạch logic • Rút kinh nghiệm cài đặt tập liên quan đến đồ thị • Hình thành kỹ tối ưu hóa tốn đồ thị Nội dung sáng kiến kinh nghiệm tơi gồm có phần: Phần I Lý thuyết, nêu số lý thuyết học sinh cần nắm vững trước bắt đầu với toán đồ thị Phần tập vận dụng: I Một số khái niệm Ma trận kề Trong lý thuyết đồ thị, ma trận kề ma trận sử dụng để biểu diễn đồ thị Các phần tử ma trận biểu thị liệu có cạnh nối hai đỉnh đồ thị hay khơng Hình minh họa mơ cách biểu diễn đồ thị ma trận kề: Đồ thị Ma trận kề biểu diễn đồ thị 0  0 0  0 0  0 0 0 0 0 0 0  0 0  1  Ma trận gồm có hàng, cột, phần tử có giá trị biểu thị có cạnh nối 2, 3, 5, phần tử có giá trị biểu thị khơng có cạnh nối chúng Danh sách kề Một danh sách kề mảng danh sách, nghĩa là, phần tử mảng danh sách, danh sách chứa tất đỉnh liền kề với đỉnh i Với đồ thị có trọng số, trọng số cạnh lưu với đỉnh danh sách cách sử dụng cấu trúc pair C++ Với đồ thị vô hướng, đỉnh j danh sách ai, đỉnh i lưu danh sách aj Chúng ta quan sát đồ thị sau: Đỉnh số nối với đỉnh số đỉnh số 4, ta biểu diễn:1->2->4 Đỉnh số nối với đỉnh số 3, ta biểu diễn: 2->1->3 Đỉnh số nối với đỉnh số 4, ta biểu diễn: 3->2->4 Đỉnh số nối với đỉnh số 3, ta biểu diễn 4->1->3 Ta xét đồ thị có hướng sau đây: Đỉnh số nối với đỉnh số 2, ta biểu diễn: 1->2 Đỉnh số nối với đỉnh số 4, ta biểu diễn: 2->4 Đỉnh nối với đỉnh số 4, ta biểu diễn: 3->1->4 Đỉnh số nối với đỉnh số 2, ta biểu diễn: 4->2 Ví dụ sau biểu diễn đồ thị vơ hướng gồm có N đỉnh M cạnh (trong 1> edges; //So canh for(int i = 0;i < edges;++i) { cin >> x >> y; adj[x].push_back(y); //Chen nut y vao danh sach ke cua x } for(int i = 1;i > v; adj[u].push_back(v); adj[v].push_back(u); } for(int i = 1; i n; a = dp = ans = vector(n); g = vector(n); for (int i = 0; i < n; ++i) { cin >> a[i]; if (a[i] == 0) a[i] = -1; } for (int i = 0; i < n - 1; ++i) { int x, y; cin >> x >> y; x, y; g[x].push_back(y); g[y].push_back(x); } dfs(0); dfs2(0); for (auto it : ans) cout Out-time of node i int t_out[n + 1]; // Fill the level, in-time // and out-time of all nodes dfs(1, -1, g, level, t_in, t_out); int mint = INT_MAX, maxt = INT_MIN; int minv = -1, maxv = -1; for (auto i = v.begin(); i != v.end(); i++) { // To find minimum in-time among // all nodes in LCA set if (t_in[*i] < mint) { mint = t_in[*i]; minv = *i; } // To find maximum in-time among // all nodes in LCA set if (t_out[*i] > maxt) { maxt = t_out[*i]; maxv = *i; } } // Node with same minimum // and maximum out time // is LCA for the set if (minv == maxv) { return minv; } // Take the minimum level as level of LCA int lev = min(level[minv], level[maxv]); int node, l = INT_MIN; for (int i = 1; i lev) continue; // Compare in-time, out-time // and level of i-th node // to the respective extremes // among all nodes of the given set if (t_in[i] = maxt && level[i] > l) { node = i; l = level[i]; } } return node; } // Driver code int main() { int n = 10; vector g[n + 1]; g[1].push_back(2); g[2].push_back(1); g[1].push_back(3); g[3].push_back(1); g[1].push_back(4); g[4].push_back(1); g[2].push_back(5); g[5].push_back(2); g[2].push_back(6); g[6].push_back(2); g[3].push_back(7); g[7].push_back(3); g[4].push_back(10); g[10].push_back(4); g[8].push_back(7); g[7].push_back(8); g[9].push_back(7); g[7].push_back(9); 52 vector v = { 7, 3, }; cout u>>v; adj[u].pb(v); adj[v].pb(u); } dfs(1,1); ll q,r; 54 cin>>q; while(q ) { cin>>r>>u>>v; if(u==v)cout

Ngày đăng: 19/03/2022, 14:20

TỪ KHÓA LIÊN QUAN

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