THÔNG TIN TÀI LIỆU
i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH Nguyễn Tam Hùng CÁC THUẬT TỐN VỀ ĐƢỜNG ĐI VÀ CHU TRÌNH EULER VÀ ỨNG DỤNG Ngành: Công nghệ thông tin Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 Người hướng dẫn khoa học: PGS TSKH Nguyễn Xuân Huy Thái Nguyên, năm 2014 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ i LỜI CẢM ƠN Tôi xin gửi lời cảm ơn tới Trường ĐH CNTT&TT – ĐHTN, nơi thầy tận tình truyền đạt kiến thức quý báu cho suốt trình học tập Xin cảm ơn Ban chủ nhiệm khoa cán tạo điều kiện tốt cho chúng tơi học tập hồn thành đề tài tốt nghiệp Đặc biệt, tơi xin gửi tới PGS TSKH Nguyễn Xuân Huy, thầy tận tình bảo tơi suốt q trình thực đề tài lời cảm ơn biết ơn sâu sắc Bên cạnh kiến thức khoa học, thầy giúp nhận học phong cách học tập, làm việc kinh nghiệm sống quý báu Tơi xin bày tỏ lịng biết ơn tới gia đình, bạn bè, đồng nghiệp người thân động viên khích lệ tinh thần giúp đỡ để tơi hồn thành luận luận Thái Ngun, ngày 15 tháng năm 2014 Học viên thực Nguyễn Tam Hùng Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ii LỜI CAM ĐOAN Học viên xin cam đoan, toàn nội dung liên quan tới đề tài trình bày luận văn thân học viên tự tìm hiểu nghiên cứu, hướng dẫn khoa học Thầy giáo PGS TSKH Nguyễn Xuân Huy Các tài liệu, số liệu tham khảo trích dẫn đầy đủ nguồn gốc Học viên xin chịu trách nhiệm trước pháp luật lời cam đoan Thái Nguyên, ngày 15 tháng năm 2014 Học viên thực Nguyễn Tam Hùng Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ iii MỤC LỤC LỜI CẢM ƠN I LỜI CAM ĐOAN II MỤC LỤC III DANH MỤC CÁC BẢNG IV DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ VI LỜI MỞ ĐẦU CHƢƠNG ĐẠI CƢƠNG VỀ ĐỒ THỊ 1.1 Đồ thị vô hướng 1.2 Bậc đồ thị 1.3 Đường đi, chu trình, tính liên thơng 1.4 Biểu diễn đồ thị vô hướng 11 CHƢƠNG 15 CÁC THUẬT TOÁN VÀ TỔ CHỨC DỮ LIỆU 15 2.1 Chu trình, đường Euler 15 2.2 Các thuật tốn tìm chu trình Euler 18 2.3 Tổ chức liệu cho thuật toán 31 CHƢƠNG 35 ỨNG DỤNG ĐỒ THỊ EULER 35 3.1 Bài toán cầu Königsberg 35 3.2 Bài toán quân Domino 36 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ iv 3.3 Bài tốn "Thanh tra giao thơng" 38 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 46 TÀI LIỆU THAM KHẢO 47 PHỤ LỤC 48 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ v DANH MỤC CÁC BẢNG Trang Bảng 1.1 Ma trận kề đồ thị G hình 1.7 12 Bảng 1.2 Ma trận liên thuộc đồ thị G hình 1.7 14 Bảng 1.3 Danh sách cạnh đồ thị G hình 1.7 14 Bảng 2.1 Các bước thực thuật toán Hierholzer để tìm chu trình Euler 29 Bảng 2.2 Các bước thực thuật tốn Hierholzer để tìm đường Euler 30 Bảng 3.1 Kết đồ thị Domino 38 Bảng 3.2 Số cạnh nối thêm cặp đỉnh bậc lẻ 42 Bảng 3.3 Cách chọn cặp đỉnh bậc lẻ số cạnh nối thêm 43 Bảng 3.4 Chu trình Euler tìm với đồ thị GT 45 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ vi DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Trang Hình 1.1 Đồ thị vơ hướng với đỉnh cạnh Hình 1.2 Đồ thị đầy đủ với đỉnh Hình 1.3 Đồ thị có vectơ bậc [3, 3, 2, 2] Hình 1.4 Đồ thị có vectơ bậc [5, 4, 4, 3, 3, 3, 2] Hình 1.5 Đồ thị vô hướng liên thông Hình 1.6 Đồ thị vô hướng G với đỉnh cạnh 10 Hình 1.7 Đồ thị vô hướng G với đỉnh cạnh 12 Hình 2.1 Đồ thị G với đinh cạnh 15 Hình 2.2 Đồ thị vô hướng G với đỉnh bậc chẵn 19 Hình 2.3 Đồ thị G sau xóa cạnh (1,2) 20 Hình 2.4 Đồ thị G sau xóa cạnh (1,2), (2,3) 21 Hình 2.5 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4) 22 Hình 2.6 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4), (4, 5) đỉnh 23 Hình 2.7 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6) đỉnh 23 Hình 2.8 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2) đỉnh 24 Hình 2.9 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5) xóa đỉnh 4, 25 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ vii Hình 2.10 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5),(5,3) xóa đỉnh 4, 2, 26 Hình 11 Đồ thị G sau xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5),(5,3), (3,6) xóa đỉnh 4, 2, 5, 26 Đồ thị G : Đồ thị gồm đỉnh bậc chẵn V={1, 2, 3, 4, 5, 6} ; tập cạnh E={a, b, c, d, e, f, g, h, i, j} 28 Hình 2.13 Đồ thị vơ hướng G liên thơng có đỉnh bậc lẻ 30 Hình 3.1 Bảy cầu bên bờ sơng thành phố Kưnigsberg 35 Hình 3.2 Đồ thị biểu diễn bảy cầu hình 3.1 36 Hình 3.3 Đồ thị Domino 37 Hình 3.4 Bản đồ khu vực tra 39 Hình 3.5 Đồ thị biểu diễn đồ hình 3.4 40 Hình 3.6 Đồ thị GT có thêm cạnh (các nét đứt cạnh nối thêm) 44 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ LỜI MỞ ĐẦU Những vấn đề lý thuyết đồ thị đề xuất từ kỷ XVIII, báo Euler công bố năm 1736 liên quan đến lời giải tốn tiếng cầu Kưnigsberg Tại thành phố Kưnigsberg nước Đức có sơng Pregel bao quanh đảo lớn Hai đảo nối với vùng đất thành phố cầu Cư dân thành phố đặt tốn: xuất phát điểm qua cầu, cầu qua lần, trở điểm xuất phát không? Và nhà toán học L.Euler trả lời trọn vẹn cho toán Người ta lấy tên cho toán tên nhà toán học Euler Tuy nhiên, mối quan tâm đến lý thuyết đồ thị không suy giảm Lý quan tâm vận dụng rộng rãi đồ thị nhiều lĩnh vực khác Chẳng hạn, đồ thị xác định mạch vịng vấn đề giải tích mạch điện Chúng ta phân biệt hợp chất hóa học hữu khác với công thức phân tử khác cấu trúc phân tử nhờ đồ thị Chúng ta xác định xem hai máy tính mạng trao đổi thơng tin với hay khơng nhờ mơ hình đồ thị mạng máy tính Đồ thị có trọng số cạnh sử dụng để giải tốn như: Tìm đường ngắn hai thành phố mạng giao thơng Chúng ta cịn sử dụng đồ thị để giải tốn lập lịch, thời khóa biểu, phân bố tần số cho trạm phát truyền hình Hiện nay, vài tài liệu viết nội dung đưa vào giảng dạy Toán rời rạc ứng dụng tin học (bản dịch) tác giả Kenneth H.Rosen [1] hay Toán rời rạc Nguyễn Đức Nghĩa, Nguyễn Tô Thành [2] Trong Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ giải thuật lập trình [4] Lê Minh Hồng trình bày lại thuật tốn fleury để tìm chu trình Euler Tuy nhiên, toán thực tế, lượng liệu vào liệu tương đối lớn Một số tốn có số lượng đỉnh đến hàng nghìn, tương ứng với số lượng kết đưa lên đến hàng trăm nghìn, ví dụ tốn kiểm thử tốc độ tính tốn thuật tốn dùng tìm kiếm mạng Với đồ thị trên, lượng đỉnh cạnh đồ thị lớn ta cần có cách tổ chức liệu cho hợp lý cho toán vấn đề cần đặt Luận văn tìm hiểu thuật tốn chu trình Euler cách tổ chức liệu cho tốn, từ đưa thuật toán tối ưu cho dạng qua nghiên cứu sáng tạo thuật tốn lập trình [3] hướng dẫn GS.TSKH Nguyễn Xuân Huy với tên đề tài: "Các thuật toán đƣờng chu trình Euler ứng dụng" Nội dung luận văn trình bày thành ba chương: Chương giới thiệu đại cương đồ thị, định nghĩa đồ thị đồ thị có hướng, đường đi, chu trình đồ thị Chương tìm hiểu đồ thị Euler, điều kiện cần đủ, thuật toán đường Euler thuật toán Fluery, thuật toán Hierholzer cách tổ chức lại liệu cho thuật toán tối ưu Chương áp dụng thuật tốn tìm đường chu trình Euler số tốn điển hình tốn Thanh tra giao thơng Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 43 STT Cặp đỉnh chọn Cạnh nối thêm Dmin 2, (2, 3) 6, (6, 9) 14 15 (14, 15) 18 29 (18, 29) 26 27 (26, 27) 48 (4, 5) ; (5, 8) 12 19 (12, 13) ; (13, 19) 28 30 (28, 31) ; (31, 30) Bảng 3.3 Cách chọn cặp đỉnh bậc lẻ số cạnh nối thêm Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 44 Đồ thị GT sau thêm cạnh: 12 13 14 19 20 24 25 26 29 30 18 15 10 11 16 21 27 17 22 23 28 31 Hình 3.6 Đồ thị GT có thêm cạnh (các nét đứt cạnh nối thêm) Khi đồ thị GT đồ thị Euler (tất đỉnh bậc chẵn), áp dụng thuật toán Hierholzer với đỉnh xuất phát đỉnh (do trụ sở nằm đỉnh 3) Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 45 Sô đỉnh: 31 Số cạnh: 59 Số đỉnh bậc lẻ là: Có chu trình Euler: 12 13 19 25 30 31 28 31 30 29 18 29 24 25 26 27 28 22 23 17 16 22 21 27 26 20 21 15 14 20 19 13 14 15 16 10 11 10 9 13 12 24 18 123678543 Bảng 3.4 Chu trình Euler tìm với đồ thị GT Từ chu trình Euler ta xác định hành trình đội tuần tra Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 46 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Các kết đạt đƣợc: Đề tài tìm hiểu số thuật tốn tìm chu trình Euler, cài đặt thuật toán tổ chức lại liệu để tăng tốc độ tính tốn chương trình Từ đó, vận dụng thuật tốn vào ứng dụng cụ thể để giải tốn tra giao thơng Đưa hành trình cho đội tuần tra cách tốt Cài đặt chương trình so sánh tốc độ tính tốn sau tổ chức liệu với đồ thị có số đỉnh lớn Đề tài có tiếp tục phát triển để đem lại đáp ứng yêu cầu thực tế Hƣớng phát triển đề tài: Cách tổ chức liệu giúp tăng tốc độ tính tốn, từ áp dụng vào ứng dụng có liệu lớn, thí dụ tìm đường cho gói tin mạng… Ngồi từ thuật tốn tìm chu trình Euler áp dụng giải biến thể toán, tìm chu trình Euler đồ thị, hay tìm chu trình Euler đồ thị từ giải tốn liên quan chuyển hàng từ kho đến địa điểm … Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 47 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Kenneth H.Rosen, Toán rời rạc ứng dụng Tin học (Bản dịch), NXB Khoa học Kỹ thuật, 2000 [2] Nguyễn Đức Nghĩa, Nguyễn Tơ Thành, Tốn rời rạc, NXB Đại học Quốc Gia Hà Nội, 2003 [3] Nguyễn Xuân Huy, Sáng tạo thuật tốn lập trình, NXB Thơng tin truyền thơng 2011 [4] Lê Minh Hồng, Giải thuật & lập trình, Đại học sư phạm Hà Nội 1999 2002 Tiếng Anh [5] S Pemmaraju, and S Skiena, Computational Discrete Mathematics: Combinatorics and Graph Theory with Mathematica Cambridge, England: Cambridge University Press, 2003 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 48 PHỤ LỤC Chương trình C++ Chƣơng trình thuật tốn tìm chu trình Euler (phƣơng án 1) #include #include using namespace std; const int MN = 500; typedef int mi1[MN]; typedef mi1 mi2[MN]; mi2 mi1 mi1 int mi1 int int int int int c; // ma tran ke c[i][j] = c[j][i] bac; r; // cac dinh chua duyet ir; // index for r p; // Path k; // ngon stack: chi so tien last; // chi lui n; // so dinh m; // so canh dinhLe1, dinhLe2; // dinh le, neu co // Hiển thị mảng c[d c] với thông báo msg void Print(mi1 a, int d, int c, char *msg = ""){ cout
Ngày đăng: 25/02/2021, 08:41
Xem thêm: