Nghiên cứu bài toán luồng cực đại trong mạng và thuật toán ford fulkerson

74 18 0
Nghiên cứu bài toán luồng cực đại trong mạng và thuật toán ford   fulkerson

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH NGUYỄN HỒNG VŨ NGHIÊN CỨU BÀI TỐN LUỒNG CỰC ĐẠI TRONG MẠNG VÀ THUẬT TOÁN FORD - FULKERSON LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGHỆ AN, 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH NGUYỄN HỒNG VŨ NGHIÊN CỨU BÀI TỐN LUỒNG CỰC ĐẠI TRONG MẠNG VÀ THUẬT TOÁN FORD - FULKERSON Chuyên ngành: Công nghệ thông tin Mã ngành: 8.48.02.01 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Người hướng dẫn khoa học: TS PHAN LÊ NA NGHỆ AN, 2017 LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Nghiên cứu toán luồng cực đại mạng thuật toán Ford - Fulkerson” cơng trình nghiên cứu tơi với hướng dẫn khoa học TS Phan Lê Na, tham chiếu tài liệu ghi rõ phần tài liệu tham khảo Các số liệu thực nghiệm nghiên cứu thực tế môi trường thí nghiệm, số thống kê ghi nhận cách khách quan, trung thực chưa công bố hình thức trước Tác giả Nguyễn Hoàng Vũ LỜI CẢM ƠN Em xin chân thành cảm ơn cô giáo, TS Phan Lê Na tận tình hướng dẫn, giúp đỡ để tơi hồn thành tốt luận văn Em xin cảm ơn giúp đỡ thầy giáo, cô giáo Khoa công nghệ thông tin - Trường đại học Vinh tận tình giảng dạy kiến thức chuyên đề CNTT cho tơi q trình học tập Ngồi tơi chân thành cảm ơn bạn học viên cao học K24 Vĩnh Long giúp việc cung cấp tài liệu, trau đổi vấn đề thuộc lĩnh vực mà nghiên cứu, cảm ơn cán lãnh đạo nơi công tác hỗ trợ cho thời gian làm luận văn Vĩnh Long, tháng năm 2018 Học viên Nguyễn Hoàng Vũ MỤC LỤC Nội dung Trang LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU Sự cần thiết vấn đề nghiên cứu Mục tiêu nghiên cứu 2.1 Mục tiêu tổng quát 2.2 Mục tiêu cụ thể Đối tượng phạm vi nghiên cứu 10 3.1 Đối tượng nghiên cứu 10 3.2 Phạm vi nghiên cứu 10 Nội dung nghiên cứu 11 Cấu trúc luận văn 11 Chương 1: TỔNG QUAN LUỒNG CỰC ĐẠI 12 1.1 Tổng quan đồ thị 12 1.1.1 Định nghĩa đồ thị (graph) 12 1.1.2 Các loại đồ thị 13 1.1.3 Các khái niệm liên quan 16 1.2 Tổng quan luồng cực đại 18 1.2.1.Mạng (network) 18 1.2.2 Luồng (flow) (Luồng mạng) 18 1.2.3.Tính chất Luồng 20 Kết luận chương 22 Chương 2: BÀI TOÁN LUỒNG CỰC ĐẠI TRONG MẠNG VÀ THUẬT TOÁN FORD-FULKERSON 23 2.1 Bài toán luồng cực đại mạng 23 2.1.1 Phát biểu toán luồng cực đại 23 2.1.2 Lát cắt, định lý Ford – Fulkerson 24 2.2 Thuật toán Ford – Fulkerson 25 2.3 Giới thiệu ứng dụng luồng cực đại 31 2.3.1 Bài tốn tìm cơng suất bơm dầu 31 2.3.2 Bài toán đám cưới vùng quê 32 2.3.3 Bài tốn xét ứng cử viên vơ địch 33 2.3.4 Bài toán hệ thống đại diện chung 34 2.3.5 Bài toán tối ưu rời rạc 35 2.3.5.1 Phát biểu toán 35 2.3.5.2 Bài toán phân nhóm sinh hoạt 36 2.3.5.3 Bài toán lập lịch cho hội nghị 36 2.4 Kết luận chương 36 Chương 3: ỨNG DỤNG THUẬT TOÁN FORD-FULKERSON THIẾT KẾ HỆ THỐNG TÍNH SỐ LƯỢT KHÁCH THĂM ĐÌNH THẦN BÌNH THỦY37 3.1 Đặt vấn đề: 37 3.2 Bài tốn tính số lượt khách thăm Đình thần Bình Thủy 38 3.3 Thiết kế mơ hình hệ thống tính số lượt khách thăm Đình thần Bình Thủy 39 3.4 Thiết kế chương trình 50 3.4.1 Môi trường cài đặt 50 3.4.2 Giao diện chức 51 3.5 Dữ liệu thử nghiệm 52 3.5.1 Thử nghiệm 1: Tính tốn ngày thứ (14/04 âm lịch) 52 3.5.2 Thử nghiệm 2: Tính toán ngày thứ hai (15/04 âm lịch) 58 3.6 So sánh hiệu hệ thống 64 3.7 Một số nhận xét đề xuất 64 3.8 Kết luận chương 64 KẾT LUẬN 65 TÀI LIỆU THAM KHẢO 67 PHỤ LỤC 69 DANH MỤC CÁC BẢNG CHƯƠNG CHƯƠNG Bảng 2.1: Bảng liệu phân bổ chàng trai cô gái 32 CHƯƠNG Bảng 3.1: Bảng số quận/huyện đồ 41 Bảng 3.2: Bảng liệu giả định nhu cầu 41 Bảng 3.3: Bảng liệu giả định khả thông qua 42 Bảng 3.4: Bảng liệu giả định file 50 Bảng 3.5: Bảng liệu giả định nhu cầu 53 Bảng 3.6: Bảng liệu giả định khả thông qua 53 Bảng 3.7: Dữ liệu file kết chạy chương trình thử nghiệm 56 Bảng 3.8: Bảng liệu giả định nhu cầu 58 Bảng 3.9: Bảng liệu giả định khả thông qua 59 Bảng 3.10:: Dữ liệu file kết chạy chương trình thử nghiệm 61 Bảng 3.11 So sánh kết tính tốn liệu thực tế 64 DANH MỤC CÁC HÌNH VẼ CHƯƠNG Hình 1.1: Ví dụ mơ hình đồ thị 12 Hình 1.2: Sơ đồ máy tính đơn đồ thị vơ hướng 13 Hình 1.3: Đơn đồ thị có hướng 14 Hình 1.4: Sơ đồ mạng máy tính với đa kênh thoại (đa đồ thị vơ hướng) 14 Hình 5: Mạng máy với kênh thoại chiều (đa đồ thị có hướng) 15 Hình 1.6: Các loại đồ thị đặc biệt 16 Hình 1.7: Minh họa khái niệm liên quan đến đồ thị 16 Hình 1.8: Mạng luồng mạng 19 CHƯƠNG Hình 2.1: Luồng cực đại mạng 24 Hình 2.2: Lát cắt mạng 24 Hình 2.3: Lát cắt hẹp mạng 25 Hình 2.4: Mạng ban đầu 27 Hình 2.5: Khởi tạo luồng 28 Hình 2.6: Xây dựng mạng thặng dư 28 Hình 2.7: Tăng luồng theo đường Pf1 29 Hình 2.8: Tăng luồng theo đường Pf2 29 Hình 2.9: Tăng luồng theo đường Pf3 30 Hình 2.10: Mạng tăng luồng cực đại 30 Hình 2.11: Bài tốn tìm cơng suất bơm dầu 32 Hình 2.12: Mạng tương ứng với toán đám cưới vùng quê 33 Hình 2.13: Bài tốn loại bỏ ứng cử viên vơ địch 34 CHƯƠNG Hình 3.1: Bài tốn tính số lượt khách tới thăm 40 Hình 3.2: Mạng liệu 43 Hình 3.3: Khởi tạo luồng liệu 43 Hình 3.4: Xây dựng mạng thặng dư liệu 44 Hình 3.5: Tìm luồng theo Pf liệu 44 Hình 3.6: Tìm luồng theo Pf liệu 45 Hình 3.7: Tìm luồng theo Pf liệu 46 Hình 3.8: Tìm luồng theo Pf liệu 46 Hình 3.9: Tìm luồng theo Pf liệu 47 Hình 3.10: Tìm luồng theo Pf liệu 47 Hình 3.11: Tìm luồng theo Pf liệu 48 Hình 3.12: Tìm luồng theo Pf liệu 48 Hình 3.13: Tìm luồng theo Pf liệu 49 Hình 14: Luồng cực đại liệu 49 Hình 15: Giao diện chương trình 51 Hình 16: Mơ với liệu số khả 55 Hình 17: Mơ với liệu nhu cầu luồng 58 Hình 18: Mơ với liệu số khả 61 Hình 19: Mơ với liệu nhu cầu luồng 63 57 583 783 832 841 896 - Dòng ngăn cách Demandvalue: 34 Số lượng nhu cầu đăng ký dự lễ Flowvalue: 24 Giá trị luồng cực đại 58 Hình 18: Mô với liệu nhu cầu luồng 3.5.2 Thử nghiệm 2: Tính tốn ngày thứ hai (15/04 âm lịch) Trong ngày 15/4 âm lịch, địa phương gửi thêm thông tin nhu cầu đến thăm đình Bình Thuỷ khả vận chuyển hành khác quận/huyện mộ TP Cần Thơ số quận/huyện lân cận Do đó, có liệu giả định sau: Bảng 3.8: Bảng liệu giả định nhu cầu Chỉ số Quận/huyện Nhu cầu Ninh Kiều Cái Răng Ơ Mơn Phong Điền 59 Cờ Đỏ Vĩnh Thạnh Thốt Nốt Thới Lai Ngoài có khả vận tải hành khách Quận/huyện sau: Bảng 3.9: Bảng liệu giả định khả thông qua Đường Quận/huyện đầu Chỉ số Khả Chỉ số Quận/huyện cuối thông qua Ninh Kiều  Bình Thuỷ Cái Răng  Ninh Kiều Cái Răng  Phong Điền Ơ Mơn  Bình Thuỷ Phong Điền  Ninh Kiều Phong Điền  Bình Thuỷ Cờ Đỏ  Thới Lai Vĩnh Thạnh  Cờ Đỏ Vĩnh Thạnh  Thới Lai Thốt Nốt  Vĩnh Thạnh Thốt Nốt  Ơ Mơn 60 Thới Lai  Ơ Mơn Thới Lai  Phong Điền Thới Lai  Bình Thuỷ Sau đưa liệu vào tập huấn ta có kết sau: 61 Hình 19: Mơ với liệu số khả Chương trình chạy cho ta giá trị luồng đỉnh phát là: 2+4+5+6+3+5+2=27, giá trị luồng đỉnh thu = 8+6+8+5=27 Và xuất file liệu lưu giá trị luồng luồng cực đại sau: Bảng 3.10:: Dữ liệu file kết chạy chương trình thử nghiệm 062 084 045 036 053 025 072 898 Luồng cạnh 62 196 398 495 411 830 841 583 760 682 732 215 240 650 Dòng ngăn cách DemandValue: 30 Số lượng nhu cầu đăng ký dự lễ FlowValue: 27 Giá trị luồng cực đại 63 Hình 20: Mơ với liệu nhu cầu luồng 64 3.6 So sánh hiệu hệ thống Bảng 3.11 So sánh kết tính tốn liệu thực tế Ngày Lượng khách yêu cầu (trăm người) Lượng khách vận chuyển thực tế (trăm người) Lượng khách tính toán (trăm người) 15/04/2017 34 24 24 15/04/2017 30 27 27 3.7 Một số nhận xét đề xuất So sánh kết thực nghiệm chương trình kết thực tế ngày lễ hội đình thần Bình Thuỷ năm 2017 thấy phần mềm đưa kết tốt, tương đối xác, có khả ứng dụng thực tế 3.8 Kết luận chương Chương mơ tốn đồ thị xây dựng chương trình ứng dụng sử dụng thuật tốn Ford-Fulkerson để thực tốn tính tốn số lượt khách thăm Đình thần Bình Thủy dịp lễ hội 2017; mơ tốn toán luồng cực đại mạng Kết thực nghiệm cho thấy chương trình tính tốn tương đối xác, hợp lý, mang tính xác thực 65 KẾT LUẬN Trong luận văn đề cập đến toán luồng cực đại mạng toán chuyển vận (TransShipment Problem) lớp toán quan trọng hay gặp qui hoạch toán học Lớp bao gồm toán quen thuộc thực tế như: Bài tốn vận tải, tốn mạng giao thơng, toán luồng lớn nhất, toán mạng điện, toán phân bổ vật tư, toán quản lý, toán kế hoạch tài chính, tốn đường ngắn Bài toán luồng cực đại mạng số tốn tối ưu đồ thị có ứng dụng rộng rãi thực tế ứng dụng thú vị lý thuyết tổ hợp Luận văn trình cách tổng quát lý thuyết đồ thị, khái niệm mạng, khái niệm luồng cực đại mạng, điều kiện cân luồng giá trị luồng số tính chất Đồng thời phát biểu toán luồng cực đại mạng, cách tiếp cận có để giải tốn số ứng dụng thực tế tốn tìm luồng cực đại Nghiên cứu tìm hiểu tốn thực tế, luận văn trình bày ứng dụng thuật tốn Ford-Fullkerson để giải vấn đề mơ tính tốn số lượt khách viếng thăm Đình thần Bình Thủy dịp lễ hội Từ vấn đề tốn thực tế, tác giả mơ hình tốn đồ thị, từ xây dựng chương trình thử nghiệm tính tốn lượt khách thăm Đình thần Bình Thủy dịp lễ hội năm 2017 Bài toán biến thể mạng có nhiều đinh phát đỉnh thu nhằm tính tốn lượt khách thăm viếng Đình thần Bình Thủy dịp lễ hội Kết có vai trị to lớn giúp nhà quản lý chủ động xây dựng kế hoạch cho công tác chuẩn bị sở hạ tầng, dịch vụ du lịch, quản lý, đáp ứng nhu cầu phục vụ khách dự lễ hội Đình thần Bình Thủy 66 Do thời gian nghiên cứu tương đối hạn hẹp trình độ học viên cịn hạn chế nên ứng dụng chương trình cịn phạm vi nhỏ Hướng phát triển: Có thể xem luận văn bước tìm hiểu ban đầu việc ứng dụng lý thuyết luồng cực đại mạng vào giải toán thực tế Tác giả huy vọng thời gian tới có dịp nghiên cứu luận văn sâu toán ứng dụng thực tế Luồng cực đại mạng Xây dựng chương trình với vi mô, phạm vi lớn 67 TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt: [1] Trần Quốc Chiến (2007),“Thuật tốn đích hướng nguồn tìm luồng cực đại”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 4(21)/2007, 16 [2] Trần Quốc Chiến (2005), Bài tốn tìm luồng cực đại mạng, Đề tài NCKH cấp Bộ, mã số B2005-16-34 [3] Trần Quốc Chiến (2006),“Thuật toán hoán chuyển nguồn đích tìm luồng cực đại (1)”, Tạp chí Khoa học & Công nghệ, Đại học Đà Nẵng, 1(13)/2006, 53-58 [4] Nguyễn Thanh Hùng (2007), Nguyễn Đức Nghĩa, Giáo Trình Lý Thuyết Đồ Thị, NXB Đại học Quốc Gia TPHCM [5] Phạm Thế Long (chủ biên) (2005), Toán rời rạc, NXB Đại học Sư phạm [6] Nguyễn Đức Nghĩa, Nguyễn Tơ Thành (2009), Tốn rời rạc, Nxb Đại học Quốc gia Hà Nội Tài liệu tiếng Anh: [7] Karzanov A V (1974) Determining the maximal flow in a network by the method of preflows [8] L.R Ford and D.R Fulkerson (1956) Maximal Flow Through a Network Canadian Journal of Mathematics 8.3 (1956): 399-404 [9] L.R.Ford and D.R.Fulkerson (1962), Flows and Networks, Princeton University 68 [10] Sleator D D K (1981) O(nmlog(n)) An algorithm for maximum network flow [11] U Zwick (1995) The Smallest Networks on which the Ford-Fulkerson Maximum Flow Procedure May Fail to Terminate Theoretical Computer Science 148.1 (1995): 165-170 69 PHỤ LỤC - Mã nguồn số modul hệ thống Phương thức FlowNetwork() int getSizeOfNetwork() void setCapacityOfEdge(int x, int y, int k) Mô tả Phương thức khởi tạo cho lớp FlowNetwork Lấy kích thước(số đỉnh) mạng Đặt băng thông cho cạnh int getCapacityOfEdge(int x, int y) Lấy băng thông cạnh void setDemandOfNode(int y, int k) Đặt yêu cầu cho đỉnh int getDemandOfNode(int y) Lấy yêu cầu đỉnh void readData() Đọc liệu từ file dạng text void WriteData() Ghi liệu file dạng text void AppendLastData(string v, string u, Thêm liệu (cạnh) vào file string x) dạng text void InsertDemandData(string v, string Thêm liệu (yêu cầu) vào file de) dạng text void FordFulkerson() Chạy thuật tốn tìm luồng cực đại BuildResidualGraph() Xây dựng mạng thặng dư void FindAugmentingPath() Tìm đường tăng luồng void DFS(int v) Tìm kiếm theo chiều sâu 70 void Augment(int delta) Tăng giá trị luồng theo delta int GetFlowValue() Tính giá trị luồng cực đại int GetDemandValue() Tính giá trị nhu cầu void SetLocation () Đặt toạ độ cho đỉnh void OffCapacity() Tắt cạnh void OffIndex() Tắt số void OffPointVector() Tắt đường cạnh void ShowDemands() Hiển thị yêu cầu đỉnh void ShowIndexs() Hiển thị số đỉnh void ShowFlow() Hiển thị giá trị luồng cực đại cạnh void DrawLineOfNode() Vẽ cạnh đồ thị void DrawLine(int x1, int y1, int x2, int Vẽ đường thẳng theo toạ độ y2) cho trước void ShowBackground() void OffBackground() Hiển thị hình đồ TP Cần Thơ Tắt hình đồ TP Cần Thơ void btnInsertCap_Click(object sender, Xử lý chức nút Thêm EventArgs e) cung void btnInsertDemand_Click(object Xử lý chức nút Thêm sender, EventArgs e) nhu cầu void btnViewData_Click(object sender, Xử lý chức nút Xem EventArgs e) liệu 71 void btnLoadData_Click(object sender, Xử lý chức nút Tải EventArgs e) liệu void btnSaveData_Click(object sender, Xử lý chức nút Lưu EventArgs e) liệu void btnAuthor_Click(object sender, Xử lý chức nút Tác EventArgs e) giả ... sau: (i) Nghiên cứu tổng quan toán luồng cực đại mạng (ii) Nghiên cứu thuật toán Ford – Fulkerson (iii) Nghiên cứu toán ứng dụng luồng cực đại (iv) Cài đặt thử nghiệm thuật toán Ford – Fulkerson. .. tượng đưa vào từ toán là: Giải toán dựa thuật toán Ford – Fulkerson 11 Nội dung nghiên cứu - Nghiên cứu tổng quan lý thuyết đồ thị, luồng toán luồng cực đại - Nghiên cứu thuật toán Ford – Fulkerson. .. hiệu thuật toán 10 Đối tượng phạm vi nghiên cứu 3.1 Đối tượng nghiên cứu (a) Nghiên cứu lý thuyết - Nghiên cứu lý thuyết đồ thị; - Nghiên cứu thuật toán Ford – Fulkerson để giải toán luồng cực đại

Ngày đăng: 01/08/2021, 11:42

Từ khóa liên quan

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

Tài liệu liên quan