bồi dưỡng học sinh giỏi môn tin học thpt chuyên đề ứng dụng BFS và DFS trong giải bài tập lý thuyết đồ thị

29 1.6K 5
bồi dưỡng học sinh giỏi môn tin học thpt chuyên đề ứng dụng BFS và DFS trong giải bài tập lý thuyết đồ thị

Đ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

MỤC LỤC Dữ liệu vào 19 Dữ liệu .19 Ví dụ 19 VNOI - Olympic tin học Việt Nam - Mục lục diễn đàn - Forum 28 1 Phần mở đầu 1.1 Lý chọn đề tài - Bước sang kỷ 21, nhìn lại kỷ 20 kỷ mà người đạt nhiều thành tựu khoa học rực rỡ nhất, thành tựu bùng nổ ngành khoa học máy tính Sự phát triển kỳ diệu máy tính kỷ gắn liền với phát triển tốn học đại, tốn rời rạc Tốn rời rạc nói chung lý thuyết đồ thị nói riêng cơng cụ thiết yếu cho nhiều ngành khoa học kỹ thuật - Trong chương trình học tập học sinh chuyên Tin trường THPT trang bị kiến thức lý thuyết đồ thị để nhằm phục vụ cho việc lập trình giải tốn, làm tập lập trình Bởi điều thơng qua giải tập, học sinh phải thực hoạt động định bao gồm nhận dạng thể định nghĩa, định lý, quy tắc hay phương pháp, hoạt động toán học phức hợp Học sinh nắm lý thuyết cách vững vàng thông qua việc làm tập - Việc cung cấp thêm phương pháp giải tập cho học sinh chuyên Tin nhu cầu cần thiết Hiện việc nghiên cứu khai thác số yếu tố lý thuyết đồ thị số tác giả quan tâm Nếu ta có phương pháp giúp học sinh chuyên Tin trung học phổ thông vận dụng kiến thức lý thuyết đồ thị vào giải tốn giúp học sinh giải số lớp tốn góp phần nâng cao chất lượng dạy học giải tập cho học sinh chuyên Tin - BFS DFS thuật tốn tìm kiếm quan trọng đồ thị Những thuật toán móng quan trọng để xây dựng thiết kế thuật giải khác lý thuyết đồ thị Xuất phát từ lý lựa chọn đề tài: “Ứng dụng BFS DFS giải tập lý thuyết đồ thị ” 1.2 Mục tiêu, nhiệm vụ đề tài - Mục tiêu đề tài: Chỉ hướng vận dụng DFS BFS lý thuyết đồ thị vào giải tốn tìm biện pháp để giúp học sinh chun Tin trung học phổ thơng hình thành phát triển lực vận dụng lý thuyết đồ thị vào giải tập lập trình - Nhiệm vụ đề tài: + Tìm hiểu nội dung lý thuyết đồ thị trang bị cho học sinh chuyên Tin Trong sâu vào hai thuật tốn tìm kiếm đồ thị DFS BFS + Chỉ hệ thống tập chương trình tốn vận dụng DFS BFS để giải tập lý thuyết đồ thị + Kiểm tra hiệu biện pháp, phương án lý thuyết đồ thị vào giải toán thực tế 1.3 Phương pháp nghiên cứu - Nghiên cứu lý luận + Tài liệu Giáo khoa chuyên tin, sách nâng cao, sách chuyên đề + Các tài liệu lý thuyết đồ thị ứng dụng thực tiễn sống dạy học + Các cơng trình nghiên cứu vấn đề liên quan trực tiếp đến phương pháp đồ thị - Thực nghiệm sư phạm + Chỉ cho học sinh dấu hiệu "nhận dạng" cách thức vận dụng lý thuyết đồ thị vào giải tập toán + Biên soạn hệ thống tập luyện tập cho học sinh số đề kiểm tra để đánh giá khả vận dụng lý thuyết đồ thị vào giải toán + Tiến hành thực nghiệm đánh giá kết thực nghiệm Phần nội dung 2.1 Cơ sở lý luận Theo triết học vật biện chứng, mâu thuẫn động lực thúc đẩy trình phát triển Một vấn đề gợi cho học sinh học tập mâu thuẫn yêu cầu nhiệm vụ nhận thức với tri thức kinh nghiệm sẵn có Theo nhà tâm lý học, người bắt đầu tư tích cực nảy sinh nhu cầu tư duy, tức đứng trước khó khăn nhận thức cần phải khắc phục, tình gợi vấn đề Theo tâm lý học kiến tạo, học tập chủ yếu q trình người học xây dựng tri thức cho cách liên hệ cảm nghiệm với tri thức có 2.2.Thực trạng a Thuận lợi - Được quan tâm, giúp đỡ tận tình Ban Gíam Hiệu tổ chức đoàn thể nhà trường Sự ủng hộ nhiệt tình đồng nghiệp giúp cho trình giảng dạy Tin học tơi đạt hiệu cao - Học sinh lớp trương chuyên nói chung, học sinh lớp chun tin nói riêng thơng minh, ham học Trong lớp đa số học sinh tích cực phát biểu xây dựng bài, nguồn động viên lớn q trình giảng dạy tơi - Nhìn chung, học tập theo phương pháp học sinh có hứng thú học tập so với so với phương pháp dạy học truyền thống Vì thế, có điều kiện phát triển tư khả diễn đạt em b Khó khăn - Đội ngũ giáo viên Tin học thiếu, đặc biệt giáo viên dạy chuyên Tin Công việc giáo viên dạy tin học nhà trường phải đảm nhận nhiều, thời gian đầu tư cho chun mơn cịn hạn chế - Dạy học theo lối dạy nhồi nhét, dạy luyện thi, đối phó với thi, kiểm tra cho có điểm số cao mà chưa quan tâm đến phát triển trí tuệ, lực cá nhân học sinh Giáo viên học sinh chưa khắc phục nhận thức, thói quen dạy học truyền thống, nặng lý thuyết coi nhẹ thực hành ứng dụng Các em học sinh thường nắm lý thuyết, việc vận dụng lý thuyết để làm tập hạn chế Giáo viên phải song hành việc dạy lý thuyết cho học sinh với đưa phương pháp làm tập vận dụng kiến thức học Việc làm tập thực hành giúp học sinh nắm vững kiến thức, từ phát triển tư cách tổng quát, giúp em giải lớp toán lớn Qua việc giải tập học sinh u thích, hứng thú với mơn học Đề tài nghiên cứu “Ứng dụng BFS DFS giải tập lý thuyết đồ thị” nguồn tài liệu bổ ích cho giáo viên học sinh việc giảng dạy chuyên đề lý thuyết đồ thị 2.3 Quá trình thực a Các Khái niệm lý thuyết đồ thị - Định nghĩa đồ thị: Đồ thị cấu trúc rời rạc bao gồm đỉnh cạnh nối đỉnh Chúng ta phân biệt loại đồ thị khác kiểu số lượng cạnh nối hai đỉnh đồ thị - Định nghĩa Đơn đồ thị vô hướng G = (V,E) bao gồm V tập đỉnh, E tập cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh - Định nghĩa Đa đồ thị vô hướng G= (V, E) bao gồm V tập đỉnh, E tập cặp khơng có thứ tự gồm hai phần tử khác V gọi cạnh Hai cạnh e1 e2 gọi cạnh lặp chúng tương ứng với cặp đỉnh - Định nghĩa Giả đồ thị vô hướng G = (V, E) bao gồm V tập đỉnh E tập cặp khơng có thứ tự gồm hai phần tử (không thiết phải khác nhau) V gọi cạnh Cạnh e gọi khuyên có dạng e = (u, u) - Định nghĩa Đơn đồ thị có hướng G = (V, E) bao gồm V tập đỉnh E tập cặp có thứ tự gồm hai phần tử khác V gọi cung - Định nghĩa Đa đồ thị có hướng G = (V, E) bao gồm V tập đỉnh E tập cặp có thứ tự gồm hai phần tử khác V gọi cung Hai cung e 1, e2 tương ứng với cặp đỉnh gọi cung lặp - Cạnh liên thuộc: Hai đỉnh u v đồ thị vô hướng G gọi kề (u,v) cạnh đồ thị G Nếu e = (u, v) cạnh đồ thị ta nói cạnh liên thuộc với hai đỉnh u v, nói nối đỉnh u đỉnh v, đồng thời đỉnh u v gọi đỉnh đầu cạnh (u, v) - Bậc đỉnh: Bậc đỉnh v đồ thị G=(V, E), ký hiệu deg(v) số cạnh liên thuộc với Nếu cạnh khun tính Thí dụ Xét đồ thị cho hình 1, ta có deg(a) = 1, deg(b) = 4, deg(c) = 4, deg(f) = 3, deg(d) = 1, deg(e) = 3, deg(g) = Đỉnh bậc gọi đỉnh cô lập Đỉnh bậc gọi đỉnh treo Trong ví dụ đỉnh g đỉnh cô lập, a d đỉnh treo Định lý Giả sử G = (V, E) đồ thị vô hướng với m cạnh Khi tơng bậc tất đỉnh hai lần số cạnh Thí dụ Đồ thị với n đỉnh có bậc có cạnh? Giải: Theo định lý ta có 2m = 6n Từ suy tổng cạnh đồ thị 3n Ta gọi bán bậc (bán bậc vào) đỉnh v đồ thị có hướng số cung đồ thị khỏi (đi vào nó) ký hiệu deg+(v) (deg-(v)) Thí dụ Xét đồ thị cho hình Ta có deg-(a)=1, deg-(b)=2, deg-(c)=2, deg-(d)=2, deg-(e) = deg+(a)=3, deg+(b)=1, deg+(c)=1, deg+(d)=2, deg+(e)=2 Định lý Giả sử G = (V, E) đồ thị có hướng Khi Tổng tất bán bậc tổng tất bán bậc vào số cung Đồ thị vô hướng thu cách bỏ qua hướng cung gọi đồ thị vô hướng tương ứng với đồ thị có hướng cho - Đường đi, chu trình đồ thị Đường độ dài n từ đỉnh u đến đỉnh v, n số nguyên dương, đồ thị vô hướng G = (V, E) dãy x0, x1,…, xn-1, xn u = x0 , v = xn , (xi , xi+1) ∈ E, i = 0, 1, 2,…, n-1 Đường nói cịn biểu diễn dạng dãy cạnh: (x0, x1), (x1, x2), …, (xn-1, xn) Đỉnh u gọi đỉnh đầu, đỉnh v gọi đỉnh cuối đường Đường có đỉnh đầu trùng với đỉnh cuối (tức u = v) gọi chu trình Đường hay chu trình gọi đơn khơng có cạnh bị lặp lại - Tính liên thơng đồ thị - Đồ thị vô hướng G = (V, E) gọi liên thơng ln tìm đường hai đỉnh b Biểu diễn đồ thị máy tính - Có nhiều cách khác để lưu trữ đồ thị máy tính Sử dụng cấu trúc liệu tùy theo cấu trúc đồ thị thuật toán dùng để thao tác đồ thị Trên lý thuyết, người ta phân biệt cấu trúc danh sách cấu trúc ma trận Tuy nhiên, ứng dụng cụ thể, cấu trúc tốt thường kết hợp hai Người ta hay dùng cấu trúc danh sách cho đồ thị thưa (sparse graph), chúng địi hỏi nhớ Trong đó, cấu trúc ma trận cho phép truy nhập liệu nhanh hơn, lại cần lượng nhớ lớn đồ thị có kích thước lớn - Các cấu trúc danh sách Danh sách liên thuộc (Incidence list) - Mỗi đỉnh có danh sách cạnh nối với đỉnh Các cạnh đồ thị được lưu danh sách riêng (có thể cài đặt mảng (array) danh sách liên kết động (linked list)), phần tử ghi thơng tin cạnh, bao gồm: cặp đỉnh mà cạnh nối (cặp có thứ tự đồ thị có hướng), trọng số liệu khác Danh sách liên thuộc đỉnh chiếu tới vị trí cạnh tương ứng danh sách cạnh Danh sách kề (Adjacency list) - Mỗi đỉnh đồ thị có danh sách đỉnh kề (nghĩa có cạnh nối từ đỉnh đến đỉnh đó) Trong đồ thị vơ hướng, cấu trúc gây trùng lặp Chẳng hạn đỉnh nằm danh sách đỉnh đỉnh phải có danh sách đỉnh Lập trình viên chọn cách sử dụng phần khơng gian thừa, liệt kê quan hệ kề cạnh lần Biểu diễn liệu thuận lợi cho việc từ đỉnh tìm đỉnh nối với nó, đỉnh liệt kê tường minh - Các cấu trúc ma trận Ma trận liên thuộc (Incidence matrix) - Đồ thị biểu diễn ma trận kích thước p × q, p số đỉnh q số cạnh, quan hệ đỉnh đầu cạnh cạnh Đơn giản nhất: đỉnh chứa liệu , trường hợp khác Ma trận kề (Adjaceny matrix) - ma trận N × N, N số đỉnh đồ thị Nếu có cạnh nối đỉnh với đỉnh phần tử 1, khơng, có giá trị Cấu trúc tạo thuận lợi cho việc tìm đồ thị để đảo đồ thị Ma trận dẫn nạp (Admittance matrix) ma trận Kirchhoff (Kirchhoff matrix) hay ma trận Laplace (Laplacian matrix) - định nghĩa kết thu lấy ma trận bậc (degree matrix) trừ ma trận kề Do đó, ma trận chứa thông tin quan hệ kề (có cạnh nối hay khơng) đỉnh lẫn bậc đỉnh c Thuật tốn tìm kiếm đồ thị * Thuật tốn tìm kiếm theo chiều rộng Trong lý thuyết đồ thị, tìm kiếm theo chiều rộng (BFS) thuật tốn tìm kiếm đồ thị việc tìm kiếm bao gồm thao tác: (a) thăm đỉnh đồ thị; (b) thêm đỉnh kề với đỉnh vừa thăm vào danh sách thăm tương lai Có thể sử dụng thuật tốn tìm kiếm theo chiều rộng cho hai mục đích: tìm kiếm đường từ đỉnh gốc cho trước tới đỉnh đích, tìm kiếm đường từ đỉnh gốc tới tất đỉnh khác Trong đồ thị khơng có trọng số, thuật tốn tìm kiếm theo chiều rộng ln tìm đường ngắn Thuật tốn BFS đỉnh gốc thăm đỉnh kề với đỉnh gốc Sau đó, với đỉnh số đó, thuật toán lại thăm đỉnh kề với mà chưa thăm trước lặp lại Xem thêm thuật tốn tìm kiếm theo chiều sâu, sử dụng thao tác có trình tự thăm đỉnh khác với thuật tốn tìm kiếm theo chiều rộng Thuật toán sử dụng cấu trúc liệu hàng đợi để lưu trữ thông tin trung gian thu trình tìm kiếm: Chèn đỉnh gốc vào hàng đợi Lấy đỉnh hàng đợi thăm • Nếu đỉnh đỉnh đích, dừng q trình tìm kiếm trả kết • Nếu khơng phải chèn tất đỉnh kề với đỉnh vừa thăm chưa thăm trước vào hàng đợi Nếu hàng đợi rỗng, tất đỉnh đến được thăm – dừng việc tìm kiếm trả "khơng thấy" Nếu hàng đợi khơng rỗng quay bước Thủ tục BFS(G,v): tạo hàng đợi Q chèn v vào Q đánh dấu thăm v while Q khác rỗng: lấy phần tử t Q if t đỉnh đích: 10 trả t for all cung e=(t, o) xuất phát từ t if chưa thăm o: 11 đánh dấu thăm o 12 chèn o vào Q Thuật tốn tìm kiếm theo chiều rộng dùng để giải nhiều toán lý thuyết đồ thị, chẳng hạn như: - Tìm tất đỉnh thành phần liên thông - Thuật tốn Cheney cho việc dọn rác - Tìm đường ngắn hai đỉnh u v (với chiều dài đường tính số cung) - Kiểm tra xem đồ thị có đồ thị hai phía - Thuật tốn Cuthill–McKee - Thuật tốn Ford–Fulkerson để tìm luồng cực đại mạng * Thuật tốn tìm kiếm theo chiều sâu Tư tưởng thuật tốn là: Giả sử xét đồ thị G(V,E) Từ đỉnh u V thời ta thăm tới đỉnh kề v u trình lặp lại đỉnh v bước tổng quát, giả sử xét đỉnh u0, có hai khả xảy ra: -Nếu tồn đỉnh v0 kề với u0 mà chưa thăm đỉnh v0 trở thành đỉnh thăm trình tìm kiếm lại đỉnh v0 -Ngược lại, đỉnh kề với u0 thăm ta quay trở lại đỉnh mà trước ta đến đỉnh u0 để tiếp tục trình tìm kiếm Như vậy, q trình thăm đỉnh thuật tốn tìm kiếm theo chiều sâu, đỉnh thăm muộn sớm duyệt xong (Cơ chế Last In First Out - Vào 10 End; Lời gọi thủ tục đệ quy sau: Write(s); Print_Way(s); Các bạn tuỳ chọn cách mà thích thiết nghĩ chưa phải vấn đề quan trọng Nếu tinh ý dựa vào thứ tự thăm đỉnh thuật tốn tìm kiếm theo chiều rộng BFS ta có nhận xét quan trọng, là: Nếu có đường từ s đến t, đường tìm thuật tốn tìm kiếm theo chiều rộng cho hành trình cực tiểu số cạnh Bài tốn 3: Truyền tin Một lớp gồm N học viên, học viên cho biết bạn mà học viên liên lạc (chú ý liên lạc liên lạc chiều, ví dụ : Bạn An gửi tin tới Bạn Vinh Bạn Vinh chưa gửi tin tới Bạn An) Thầy chủ nhiệm có thơng tin quan trọng cần thông báo tới tất học viên lớp (tin phải truyền trực tiếp) Để tiết kiệm thời gian, thầy nhắn tin tới số học viên sau nhờ học viên nhắn lại cho tất bạn mà học viên liên lạc được, cho tất học viên lớp nhận tin Câu hỏi Có phương án giúp thầy chủ nhiệm với số học viên mà thầy chủ nhiệm cần nhắn? Gợi ý làm bài: - Có thể nhận thấy tốn tốn phát biểu phía Có thể coi học sinh đỉnh đồ thị Hai học sinh liên lạc với cạnh Từ suy tốn Bài tốn tìm thành phần liên thơng đồ thị Bài tốn 4: Đường đến số Mỗi số nguyên dương biểu diễn dạng tích số nguyên dương X,Y cho X

Ngày đăng: 29/04/2017, 19:47

Từ khóa liên quan

Mục lục

  • Dữ liệu vào

  • Dữ liệu ra

  • Ví dụ

  • 6. VNOI - Olympic tin học Việt Nam - Mục lục diễn đàn - Forum

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan