các thuật toán về đường đi và chu trình euler và ứng dụng

65 3.4K 6
các thuật toán về đường đi và chu trình euler và ứng dụng

Đ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

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 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 TOÁ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 bởi 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 các thầy cô đã tận tình truyền đạt các kiến thức quý báu cho tôi trong suốt quá trình học tập. Xin cảm ơn Ban chủ nhiệm khoa và các cán bộ đã tạo điều kiện tốt nhất cho chúng tôi học tập và hoàn thành đề tài tốt nghiệp của mình. Đặc biệt, tôi xin gửi tới PGS TSKH Nguyễn Xuân Huy, thầy đã tận tình chỉ bảo tôi trong suốt quá trình thực hiện đề tài lời cảm ơn và biết ơn sâu sắc nhất. Bên cạnh những kiến thức khoa học, thầy đã giúp tôi nhận ra những bài học về phong cách học tập, làm việc và những 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 và những người thân đã động viên khích lệ tinh thần và giúp đỡ để tôi hoàn thành luận luận này. Thái Nguyên, ngày 15 tháng 5 năm 2014 Học viên thực hiện Nguyễn Tam Hùng Số hóa bởi 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 bộ nội dung liên quan tới đề tài được trình bày trong luận văn là bản thân học viên tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn khoa học của Thầy giáo PGS TSKH Nguyễn Xuân Huy. Các tài liệu, số liệu tham khảo được 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 của mình. Thái Nguyên, ngày 15 tháng 5 năm 2014 Học viên thực hiện Nguyễn Tam Hùng Số hóa bởi 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 1 CHƢƠNG 1 3 ĐẠI CƢƠNG VỀ ĐỒ THỊ 3 1.1 Đồ thị vô hướng 3 1.2 Bậc của đồ thị 4 1.3 Đường đi, chu trình, tính liên thông 8 1.4 Biểu diễn đồ thị vô hướng 11 CHƢƠNG 2 15 CÁC THUẬT TOÁN VÀ TỔ CHỨC DỮ LIỆU 15 2.1 Chu trình, đường đi Euler 15 2.2 Các thuật toán tìm chu trình Euler 18 2.3 Tổ chức dữ liệu cho thuật toán 31 CHƢƠNG 3 35 ỨNG DỤNG ĐỒ THỊ EULER 35 3.1 Bài toán về những cây cầu ở Königsberg 35 3.2. Bài toán về các quân Domino 36 Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ iv 3.3 Bài toá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 bởi 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ề của đồ thị G hình 1.7 12 Bảng 1.2 Ma trận liên thuộc của đồ thị G hình 1.7 14 Bảng 1.3 Danh sách cạnh của đồ thị G hình 1.7 14 Bảng 2.1 Các bước thực hiện thuật toán Hierholzer để tìm chu trình Euler 29 Bảng 2.2 Các bước thực hiện thuật toán Hierholzer để tìm đường đi Euler 30 Bảng 3.1 Kết quả của đồ thị Domino 38 Bảng 3.2 Số cạnh nối thêm giữa các cặp đỉnh bậc lẻ 42 Bảng 3.3 Cách chọn cặp đỉnh bậc lẻ và số cạnh nối thêm 43 Bảng 3.4 Chu trình Euler tìm được với đồ thị G T 45 Số hóa bởi 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 7 đỉnh và 8 cạnh 4 Hình 1.2 Đồ thị đầy đủ với 5 đỉnh 5 Hình 1.3 Đồ thị có vectơ bậc [3, 3, 2, 2] 6 Hình 1.4 Đồ thị có vectơ bậc [5, 4, 4, 3, 3, 3, 2] 8 Hình 1.5 Đồ thị vô hướng liên thông 9 Hình 1.6 Đồ thị vô hướng G với 7 đỉnh 8 cạnh 10 Hình 1.7 Đồ thị vô hướng G với 5 đỉnh 8 cạnh 12 Hình 2.1 Đồ thị G với 6 đinh 8 cạnh 15 Hình 2.2 Đồ thị vô hướng G với 6 đỉnh bậc chẵn 19 Hình 2.3 Đồ thị G sau khi xóa cạnh (1,2) 20 Hình 2.4 Đồ thị G sau khi xóa cạnh (1,2), (2,3) 21 Hình 2.5 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4) 22 Hình 2.6 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4, 5) và đỉnh 4 23 Hình 2.7 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6) và đỉnh 4 23 Hình 2.8 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2) và đỉnh 4 24 Hình 2.9 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5) và xóa đỉnh 4, 2 25 Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ vii Hình 2.10 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5),(5,3) và xóa đỉnh 4, 2, 5 26 Hình 2 11 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5),(5,3), (3,6) và xóa đỉnh 4, 2, 5, 3 26 Đồ thị G : Đồ thị gồm 6 đỉ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ó 2 đỉnh bậc lẻ 30 Hình 3.1 Bảy cây cầu bên bờ sông của thành phố Königsberg 35 Hình 3.2 Đồ thị biểu diễn bảy cây cầu ở hình 3.1 36 Hình 3.3 Đồ thị Domino 37 Hình 3.4 Bản đồ khu vực thanh tra 39 Hình 3.5 Đồ thị biểu diễn bản đồ ở hình 3.4 40 Hình 3.6 Đồ thị G T có được khi thêm cạnh (các nét đứt là các cạnh nối thêm) 44 Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 1 LỜI MỞ ĐẦU Những vấn đề cơ bản của lý thuyết đồ thị được đề xuất từ thế kỷ XVIII, bắt đầu từ bài báo của Euler công bố năm 1736 liên quan đến lời giải bài toán nổi tiếng về các cây cầu ở Königsberg. Tại thành phố Königsberg nước Đức có sông Pregel bao quanh 2 đảo lớn. Hai đảo này được nối với các vùng đất thành phố bởi 7 cây cầu. Cư dân thành phố đặt ra bài toán: có thể xuất phát tại một điểm và đi qua 7 cây cầu, mỗi cây cầu chỉ được đi qua đúng một lần, và trở về điểm xuất phát được không? Và nhà toán học L.Euler đã trả lời trọn vẹn cho bài toán này. Người ta lấy tên cho bài toán trên là tên của nhà toán học Euler. Tuy nhiên, cho tới nay mối quan tâm đến lý thuyết đồ thị không hề suy giảm. Lý do của sự quan tâm ấy chính là sự vận dụng rộng rãi của đồ thị trong rất nhiều lĩnh vực khác nhau. Chẳng hạn, đồ thị có thể xác định các mạch vòng trong vấn đề giải tích mạch điện. Chúng ta có thể phân biệt các hợp chất hóa học hữu cơ khác nhau với cùng công thức phân tử nhưng khác nhau về cấu trúc phân tử nhờ đồ thị. Chúng ta có thể xác định xem hai máy tính trong mạng có thể trao đổi thông tin được với nhau hay không nhờ mô hình đồ thị mạng máy tính. Đồ thị có trọng số trên các cạnh có thể sử dụng để giải các bài toán như: Tìm đường đi ngắn nhất giữa hai thành phố trong một mạng giao thông. Chúng ta cũng còn sử dụng đồ thị để giải các bài toán về lập lịch, thời khóa biểu, và phân bố tần số cho các trạm phát thanh truyền hình Hiện nay, một vài tài liệu viết về nội dung này được đưa vào giảng dạy như Toán rời rạc ứng dụng trong tin học (bản dịch) của tác giả Kenneth H.Rosen [1] hay Toán rời rạc của Nguyễn Đức Nghĩa, Nguyễn Tô Thành [2]. Trong cuốn Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 2 giải thuật và lập trình [4] của Lê Minh Hoàng đã trình bày lại thuật toán fleury để tìm chu trình Euler. Tuy nhiên, đối với những bài toán trong thực tế, lượng dữ liệu vào cũng như dữ liệu ra là tương đối lớn. Một số bài toán có số lượng các đỉnh đến hàng nghìn, tương ứng với nó là số lượng kết quả đưa ra có thể lên đến hàng trăm nghìn, ví dụ như bài toán kiểm thử tốc độ tính toán của các thuật toán dùng trong các bộ tìm kiếm trên mạng. Với một đồ thị như trên, lượng đỉnh và cạnh của đồ thị là lớn cho nên ta cần có được cách tổ chức dữ liệu cho hợp lý cho bài toán là một vấn đề cần đặt ra. Luận văn tìm hiểu các thuật toán về chu trình Euler và cách tổ chức dữ liệu cho bài toán, từ đó đưa ra thuật toán tối ưu nhất cho dạng bài qua nghiên cứu sáng tạo trong thuật toán và lập trình [3] và dưới sự hướng dẫn của GS.TSKH Nguyễn Xuân Huy với tên đề tài: "Các thuật toán về đƣờng đi và chu trình Euler và ứng dụng" Nội dung luận văn được trình bày thành ba chương: Chương 1 giới thiệu đại cương về đồ thị, các định nghĩa cơ bản về đồ thị như đồ thị có hướng, đường đi, chu trình của đồ thị Chương 2 tìm hiểu về đồ thị Euler, điều kiện cần và đủ, các thuật toán về đường đi Euler như thuật toán Fluery, thuật toán Hierholzer và cách tổ chức lại dữ liệu sao cho thuật toán tối ưu. Chương 3 áp dụng thuật toán tìm đường đi và chu trình Euler trong một số bài toán điển hình và bài toán Thanh tra giao thông. [...]... a) quay về a */ G’ có 3 thành phần liên thông G1, G2 và G3 Không mất tính tổng quát giả sử G1 chứa a, G2 chứa b và G3 chứa c G1 có chu trình Euler C1, G2 có chu trình Euler C2 và G3 có chu trình Euler C3 Ta xây dựng chu trình Euler C của G như sau : Xuất phát từ đỉnh a ta đi theo chu trình C1, quay về a sau đó ta đi theo cạnh x=(a, b) đến đỉnh b, rồi từ b đi theo chu trình C2 quay về b, sau đó đi theo... quy nạp G’ có n-1 đường đi phủ G’ Gọi P là đường đi qua cạnh z Hiển nhiên a, b không phải đỉnh đầu hoặc cuối của P, vì vậy nếu bỏ cạnh z ta thu được 2 đường đi P1 và P2 cùng với n-2 đường đi còn lại phủ đồ thị G 2.2 Các thuật toán tìm chu trình Euler 2.2.1 Thuật toán Fleury * Đầu vào: Đồ thị G , không có đỉnh cô lập * Đầu ra: Chu trình Euler C của G, hoặc kết luận G không có chu trình Euler * Phương pháp:... thu được chu trình Euler C của G */ G’ có 2 thành phần liên thông G1 và G2 Không mất tính tổng quát giả sử G1 chứa a, G2 chứa b và c G1 có chu trình Euler C1, G2 có chu trình Euler C2 Ta xây dựng chu trình Euler của G như sau: Thay cạnh z C2 bằng các cạnh x và y ta có chu trình C2’ Nối C2’ với C1 ta thu được chu trình Euler C của G Định lý 2.2 Cho đồ thị G có k đỉnh bậc lẻ Khi đó số đường đi tối thiểu... phần liên thông G1 và G2 Không mất tính tổng quát giả sử G1 chứa a, G2 chứa b và c G1 có chu trình Euler C1, G2 có chu trình Euler C2 Ta xây dựng chu trình Euler của G như sau: Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 17 Xuất phát từ đỉnh a ta đi theo chu trình C1, quay về a sau đó ta đi theo cạnh x=(a, b) đến đỉnh b, rồi từ b đi theo chu trình C2 quay về b, sau đó đi theo cạnh z = (b,... 1,…,n) là các cạnh trên dãy liên thuộc đỉnh kề trước và sau nó Các đỉnh và cạnh trên dãy có thể lặp lại Đường đi từ đỉnh v đến đỉnh w là dãy từ đỉnh v đến đỉnh w, trong đó có các cạnh không lặp lại Đường đi sơ cấp là đường đi không đi qua một đỉnh quá 1 lần Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau Chu trình sơ cấp là chu trình không đi qua một đỉnh quá 1 lần Số hóa bởi Trung tâm Học... 2.1.2 Đi u kiện cần và đủ Định lý 2.1 (Định lý Euler) Đồ thị G có chu trình Euler khi và chỉ khi G liên thông và mọi đỉnh có bậc chẵn Chứng minh : (i) : Giả sử G có chu trình Euler và v là một đỉnh bất kì của G Khi đó chu trình Euler đến v theo cạnh e thì ra khỏi v bằng cạnh e’ e Do đó bậc của G phải là số chẵn G hiển nhiên liên thông (ii) : Giả sử G liên thông và mọi đỉnh có bậc chẵn khác 0 Ta chứng... Cho đồ thị G = (V, E) Chu trình Euler là chu trình qua mọi cạnh và mọi đỉnh của đồ thị, mỗi cạnh không quá 1 lần Đường đi Euler là đường đi qua mọi cạnh và mọi đỉnh của đồ thị, mỗi cạnh không quá 1 lần Cho đồ thị có hướng G = (V, E) Đồ thị chứa chu trình Euler gọi là Đồ thị Euler Thí dụ 2.1.1 Đồ thị 1 2 3 4 5 5 6 5 Hình 2.1 Đồ thị G với 6 đinh 8 cạnh Có chu trình Euler là: (1, 2, 3, 4, 2, 5, 6, 3, 1)... cạnh đi kế tiếp là cạnh (6, 1) khi đó C = {1, 2, 3, 4, 5, 6, 2, 5, 3, 6, 1} sang bước (4) (4) : xóa cạnh vừa qua và xóa đỉnh cô lập Loại cạnh (6, 1) và đỉnh cô lập 6 và 1 khỏi H, khi đó H = (thuật toán dừng) Kết luận ta có chu trình Euler là : C = {1, 2, 3, 4, 5, 6, 2, 5, 3, 6, 1} 2.2.2 Thuật toán Hierholzer Năm 1873 Hierholzer đề xuất một thuật toán tìm chu trình : Đầu vào : đồ thị G liên thông và không... có chu trình Euler quy nạp theo số cạnh m của G +) m = 1 : Vì G liên thông và mọi đỉnh có bậc chẵn nên G chỉ có 1 đỉnh và 1 khuyên Khuyên đó cũng tạo thành chu trình Euler +) Giả sử G có m cạnh, số đỉnh n > 0 và mọi đồ thị liên thông có số cạnh nhỏ hơn m với mọi đỉnh có bậc chẵn đều có chu trình Euler - Trường hợp n = 1 hoặc n = 2 thì hiển nhiên tồn tại chu trình Euler - Trường hợp n > 2 Vì bậc của các. .. rồi từ c đi theo chu trình C3 quay về c sau đó đi theo cạnh y=(c, a) quay về a Giả sử G không chứa cạnh z = (b, c) Xét đồ thị G’ thu được từ G bằng cách loại bỏ hai cạnh x, y và thêm cạnh z, sẽ xảy ra một trong hai khả năng sau : */ G’ liên thông, vì số cạnh của G’ nhỏ hơn m và các đỉnh vẫn có bậc chẵn nên theo giả thiết quy nạp tồn tại chu trình Euler C’ của G’ Thay cạnh z C ' bằng cạnh x và y ta thu . có hướng, đường đi, chu trình của đồ thị Chương 2 tìm hiểu về đồ thị Euler, đi u kiện cần và đủ, các thuật toán về đường đi Euler như thuật toán Fluery, thuật toán Hierholzer và cách tổ chức. 15 CÁC THUẬT TOÁN VÀ TỔ CHỨC DỮ LIỆU 15 2.1 Chu trình, đường đi Euler 15 2.2 Các thuật toán tìm chu trình Euler 18 2.3 Tổ chức dữ liệu cho thuật toán 31 CHƢƠNG 3 35 ỨNG DỤNG ĐỒ THỊ EULER. có các cạnh không lặp lại. Đường đi sơ cấp là đường đi không đi qua một đỉnh quá 1 lần. Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau. Chu trình sơ cấp là chu trình không đi qua

Ngày đăng: 23/11/2014, 00:18

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

Tài liệu liên quan