Bài toán luồng trên mạng và ứng dụng

74 218 0
Bài toán luồng trên mạng 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

i LỜI CAM ĐOAN Tôi xin cam đoan: Luận văn thạc sĩ Khoa học máy tính “ Bài toán luồng mạng ứng dụng” công trình nghiên cứu thực bản thân, thực sở nghiên cứu lý thuyết cài đặt ứng dụng hướng dẫn khoa học Tiến sĩ Trương Hà Hải, Trường Đại học Công nghệ Thông tin Truyền thông - Đại học Thái Nguyên Tôi xin chịu trách nhiệm lời cam đoan Thái Nguyên, ngày tháng năm 2015 Tác giả Nông Thị Lý ii LỜI CẢM ƠN Để hoàn thành luận văn, tác giả xin chân thành cảm ơn Trường Đại học Công nghệ Thông tin Truyền thông – Đại học Thái Nguyên, Phòng Đào tạo, thầy, cô giáo giảng dạy lớp cao học Khoa học máy tính K12E quan tâm, tạo điều kiện thuận lợi, tận tình giảng dạy giúp đỡ tác giả thời gian theo học tại trường Đặc biệt, tác giả xin bày tỏ lòng biết ơn sâu sắc đến cô hướng dẫn TS Trương Hà Hải tận tình hướng dẫn tác giả suốt trình làm luận văn Tác giả xin cảm ơn cán bộ, giảng viên đồng nghiệp Trường Đại học Hùng Vương giúp đỡ, động viên, khích lệ tác giả suốt trình nghiên cứu Mặc dù rất cố gắng song nội dung bản luận văn tránh khỏi những thiếu sót Tác giả rất mong nhận góp ý quý báu thầy cô bạn đồng nghiệp để luận văn thêm hoàn thiện Xin trân trọng cảm ơn Thái Nguyên, ngày tháng năm 2015 Tác giả Nông Thị Lý iii MỤC LỤC LỜI CAM ĐOAN I LỜI CẢM ƠN II MỤC LỤC III DANH MỤC CÁC BẢNG V DANH MỤC CÁC HÌNH VẼ VI MỞ ĐẦU CHƯƠNG MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ 1.1 Một số định nghĩa ký hiệu 1.1.1 Định nghĩa đồ thị 1.1.2 Các loại đồ thị 1.1.3 Các khái niệm liên quan 1.2 Biểu diễn đồ thị máy tính 1.2.1 Biểu diễn ma trận kề 1.2.2 Biểu diễn ma trận liên thuộc 11 1.2.3 Danh sách cạnh 12 1.2.4 Danh sách kề .13 1.2.5 Đồ thị trọng số 14 1.3 Một số toán tối ưu đồ thị .14 1.3.1 Các toán kinh điển .14 1.3.2 Các toán NP-khó 16 1.4 Kết luận chương 20 CHƯƠNG 2: BÀI TOÁN LUỒNG CỰC ĐẠI TRÊN MẠNG VÀ CÁC THUẬT TOÁN 22 2.1 Phát biểu toán .22 2.1.1 Mạng luồng mạng 22 2.1.2 Bài toán luồng cực đại mạng 24 iv 2.1.3 Lát cắt, định lý Ford – Fulkerson 24 2.2 Các thuật toán giải toán luồng mạng .25 2.2.1 Các thuật toán có 25 2.2.2 Thuật toán Ford – Fulkerson 26 2.2.3 Thuật toán Edmonds–Karp 32 2.2.4 Thuật toán Dinits 32 2.2.5 Các thuật toán khác 33 2.3 Một số ứng dụng thực tế toán .33 2.3.1 Bài toán tìm công suất bơm dầu 33 2.3.2 Bài toán xét ứng cử viên vô địch 34 2.3.3 Bài toán tìm luồng giao thông cực đại 35 2.4 Kết luận chương 36 CHƯƠNG 3: BÀI TOÁN ỨNG DỤNG THỰC TẾ VÀ CHƯƠNG TRÌNH THỬ NGHIỆM 37 3.1 Vấn đề tính toán số lượt du khách thăm đền Hùng dịp lễ hội 37 3.2 Phát biểu toán .39 3.3 Mô hình hóa toán đồ thị bước giải toán 40 3.4 Xây dựng chương trình .50 3.4.1 Môi trường cài đặt 50 3.4.2 Giao diện chương trình 51 3.5 Kết quả thực nghiệm tính số lượt người thăm đền Hùng năm 2015 52 3.5.1 Thực nghiệm 1: Tính toán ngày thứ nhất (06/03 âm lịch) 53 3.5.2 Thực nghiệm 2: Tính toán ngày thứ hai (10/03 âm lịch) 56 3.5.3 Tổng hợp kết quả thử nghiệm 59 3.6 Kết luận chương 60 KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU 61 TÀI LIỆU THAM KHẢO 63 PHỤ LỤC v DANH MỤC CÁC BẢNG Bảng 2.1 Các thuật toán giải toán luồng cực đại 31 Bảng 3.1 Bảng số tỉnh thành bản đồ 46 Bảng 3.2 So sánh kết quả tính toán dữ liệu thực tế 71 vi DANH MỤC CÁC HÌNH VẼ Hình 1.1 Bài toán bảy cầu Konigsberg Hình 1.2 Các loại đồ thị Hình 1.3 Các dạng đồ thị đặc biệt Hình 1.4 Minh họa khái niệm liên quan đến đồ thị Hình 1.5 Minh họa đỉnh rẽ nhánh cầu Hình 1.6 Minh họa đồ thị đồ thị đẳng cấu 10 Hình 1.7 Biểu diễn đồ thị ma trận kề 11 Hình 1.8 Biểu diễn đồ thị ma trận liên thuộc 12 Hình 1.9 Biểu diễn đồ thị danh sách cạnh 13 Hình 1.10 Biểu diễn đồ thị danh sách kề 14 Hình 2.1 Mạng luồng mạng 23 Hình 2.2 Luồng cực đại mạng 24 Hình 2.3 Lát cắt hẹp nhất mạng 25 Hình 2.4 Mạng ban đầu 28 Hình 2.5 Khởi tạo luồng 28 Hình 2.6 Xây dựng mạng dư 29 Hình 2.7 Tăng luồng theo đường 𝑷𝒇𝟏 Pf1 29 Hình 2.8 Tăng luồng theo đường 𝑷𝒇𝟐 30 Hình 2.9 Tăng luồng theo đường 𝑷𝒇𝟑 30 Hình 2.10 Tính toán luồng cực đại từ mạng tăng luồng cực đại 31 Hình 2.11 Bài toán tìm công suất bơm dầu 33 Hình 2.12 Bài toán loại bỏ ứng cử viên vô địch 34 Hình 2.13 Bài toán tìm luồng giao thông cực đại Hình 3.1 Bài toán tính số lượt du khách tới thăm Đền Hùng - Phú Thọ 40 Hình 3.2 Mạng dữ liệu #1 42 Hình 3.3 Khởi tạo luồng dữ liệu #1 43 vii Hình 3.4 Xây dựng mạng dư dữ liệu #1 43 Hình 3.5 Tăng luồng theo đường 𝑷𝒇𝟏 dữ liệu #1 44 Hình 3.6 Tăng luồng theo đường 𝑷𝒇𝟐 dữ liệu #1 44 Hình 3.7 Tăng luồng theo đường 𝑷𝒇𝟑 dữ liệu #1 45 Hình 3.8 Tăng luồng theo đường 𝑷𝒇𝟒 Pf4 dữ liệu #1 45 Hình 3.9 Tăng luồng theo đường 𝑷𝒇𝟓 dữ liệu #1 46 Hình 3.10 Tăng luồng theo đường 𝑷𝒇𝟔 dữ liệu #1 46 Hình 3.11 Tăng luồng theo đường 𝑷𝒇𝟕 dữ liệu #1 47 Hình 3.12 Luồng cực đại dữ liệu #1 47 Hình 3.13 Giao diện chương trình 49 Hình 3.14 Mô với dữ liệu #1 chương trình 52 Hình 3.15 Chạy chương trình với dữ liệu #1 53 Hình 3.16 Chạy chương trình với dữ liệu #2 56 Hình 3.17 Biểu đồ so sánh kết quả tính toán dữ liệu thực tế 57 MỞ ĐẦU Để giải vấn đề phát sinh từ toán thực tế cần có hợp tác chặt chẽ giữa chuyên gia lĩnh vực chuyên môn, chuyên gia Toán, Toán ứng dụng chuyên gia Tin học, kỹ sư lập trình Điều đặc biệt cần thiết giải toán cho hệ thống lớn Việc thiết lập mô hình hợp lý, phản ánh bản chất toán thực tế đồng thời khả thi phương diện tính toán điều đáng quan tâm Trong số mô hình toán học áp dụng có nhiều mô hình tối ưu, nhiều toán qui hoạch tuyến tính có thể qui toán làm cực tiểu cước phí vận chuyển hàng mạng (gồm nút cung đường) cho đảm bảo nhu cầu số nút sau biết nguồn cung cấp tại số nút khác, hoặc đưa toán xác định cường độ dòng lớn nhất dòng vận tải giữa hai nút bản đồ giao thông, toán tìm luồng dầu lớn nhất có thể bơm từ tàu chở dầu vào bể chứa hệ thống đường ống dẫn dầu, Các toán gọi toán luồng mạng hay toán chuyển vận (TransShipment Problem) Đây lớp toán quan trọng nhất hay gặp nhất qui hoạch toán học Lớp bao gồm toán quen thuộc thực tế như: Bài toán vận tải, toán mạng điện, toán mạng giao thông, toán quản lý, toán phân bổ vật tư, toán kế hoạch tài chính, toán đường ngắn nhất, toán luồng lớn nhất Vì toán qui hoạch tuyến tính nên toán luồng mạng có thể giải bất kỳ thuật toán giải toán qui hoạch tuyến tính, chẳng hạn thuật toán cổ điển qui hoạch tuyến tính thuật toán đơn hình Mặt khác, cách tận dụng những cấu trúc đặc biệt toán luồng mạng thông qua việc mô hình hóa toán thành cấu trúc đồ thị (mô hình gồm đỉnh cạnh nối đỉnh đó) toán có thể đưa toán tìm luồng mạng đồ thị Vì những ứng dụng thực tế rất ý nghĩa lớp toán này, với mạnh niềm yêu thích toán học, tin học, thuật toán, phạm vi luận văn, tác giả tập trung nghiên cứu lớp toán luồng mạng, phương pháp giải toán luồng mạng lý thuyết đồ thị ứng dụng giải toán thực tế Luận văn trình bày thành phần bao gồm: Phần mở đầu, phần nội dung phần kết luận Phần mở đầu: Giới thiệu khái quát đề tài, mục tiêu, đối tượng, phạm vi nghiên cứu, ý nghĩa khoa học xã hội mang lại thông qua việc giải vấn đề nêu đề tài Phần nội dung: Chương 1: Trình bày số kiến thức bản Lý thuyết đồ thị: đỉnh, cạnh, bậc đồ thị, loại đồ thị, cách biểu diễn đồ thị máy tính số toán bản đồ thị Các kiến thức sở để trình bày nội dung quan trọng chương Chương 2: Luận văn trình bày khái niệm mạng, khái niệm luồng mạng, toán luồng cực đại mạng, phát biểu dạng toán luồng cực đại mạng, trình bày số thuật toán giải toán luồng mạng Chương Tìm hiểu toán thực tế lưu lượng du khách thăm đền Hùng tỉnh Phú Thọ dịp lễ hội thuộc lớp toán luồng cực đại mạng, xây dựng chương trình thử nghiệm mô tính toán số lượt du khách thăm đền Hùng tỉnh Phú Thọ dịp lễ hội năm 2015 Phần kết luận: Trình bày kết quả mà luận văn đạt hướng phát triển cho mô hình mà luận văn đề xuất CHƯƠNG MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ Lý thuyết đồ thị lĩnh vực nghiên cứu có từ lâu có nhiều ứng dụng đại Những tư tưởng bản lý thuyết đồ thị đề xuất vào những năm đầu kỷ XVIII nhà toán học lỗi lạc người Thụy sỹ Leonhard Euler Nội dung bản chương trình bày kiến thức sở lý thuyết đồ thị, loại đồ thị, cách biểu diễn đồ thị máy tính trình bày số toán bản đồ thị Chương sở lý thuyết làm tiền đề để trình bày nội dung chương chương 1.1 Một số định nghĩa ký hiệu 1.1.1 Định nghĩa đồ thị Đồ thị cấu trúc rời rạc bao gồm đỉnh cạnh nối đỉnh đó Người ta thường ký hiệu đồ thị G = (V,E), đó V tập hợp đỉnh (Verterx), E tập hợp cạnh (Edge) [1] Ví dụ, bản đồ địa lý có thể mô hình hóa thành đồ thị cách biểu diễn địa điểm định trước đỉnh đường nối giữa địa điểm đó cạnh Lý thuyết đồ thị có nhiều ứng dụng quan trọng sống, phát triển khoảng kỉ gần Có hai toán tiếng nhiều người biết đến toán khai sinh lý thuyết đồ thị, đó là: chu 53 3.5.1 Thực nghiệm 1: Tính toán ngày thứ (06/03 âm lịch) Khi chạy thực tế chương trình, ta có đỉnh với khả vận chuyển hành khách tại Hình 3.4 Các tỉnh minh họa ô tròn màu xanh nước biển tỉnh Phú Thọ minh họa ô tròn màu xanh với kích thước lớn nhất Chỉ số đỉnh hiển thị màu xanh nước biển Băng thông khả vận chuyển giữa đỉnh hiển thị màu xanh cô-ban Khi cập nhật xong thông tin mạng, chương trình tự động chạy thuật toán tìm luồng cực đại hiển thị tại Hình 3.4 đó số lượng du khách muốn thăm đền Hùng hiển thị màu đỏ số khách thực tế có thể thăm hiển thị màu xanh Rõ ràng, số lượt du khách thăm đền Hùng dữ liệu 7+8+9+4=28 Trong ngày 06/03 âm lịch, địa phương gửi thông tin nhu cầu đến thăm đền Hùng khả vận chuyển hành khác giữa tỉnh số tỉnh lân cận Do đó, có dữ liệu giả định #1 sau: Chỉ số Tỉnh Nhu cầu Tuyên Quang 15 Yên Bái Sơn La 10 Vĩnh Phúc 11 Thái Nguyên - 19 Hòa Bình Ngoài có khả vận tải hành khách giữa tỉnh sau: Đường Tỉnh đầu Chỉ số Khả Chỉ số Tỉnh cuối thông qua Sơn La → Yên Bái 15 Sơn La → 19 Hòa Bình 13 54 Yên Bái → Tuyên Quang Tuyên Quang → 10 Vĩnh Phúc Tuyên Quang → 11 Thái Nguyên Thái Nguyên 11 → 10 Vĩnh Phúc Tuyên Quang → 26 Phú Thọ Yên Bái → 26 Phú Thọ Vĩnh Phúc 10 → 26 Phú Thọ Hòa Bình 19 → 26 Phú Thọ 55 Hình 3.14 Mô với liệu #1 chương trình 56 Hình 3.15 Chạy chương trình với liệu #1 3.5.2 Thực nghiệm 2: Tính toán ngày thứ hai (10/3 âm lịch) Trong ngày 10.3 âm lịch, địa phương gửi thêm thông tin nhu cầu đến thăm đền Hùng khả vận chuyển hành khác giữa tỉnh số tỉnh lân cận Do đó, có dữ liệu giả định #2 sau: 57 Chỉ số Tỉnh Nhu cầu Tuyên Quang 15 Yên Bái Sơn La 10 Vĩnh Phúc 11 Thái Nguyên 16 Bắc Giang 10 18 Sơn Tây 19 Hòa Bình Ngoài có khả vận tải hành khách giữa tỉnh sau: Đường Tỉnh đầu Chỉ số Khả Chỉ số Tỉnh cuối thông qua Sơn La → Yên Bái 15 Sơn La → 19 Hòa Bình 13 Yên Bái → Tuyên Quang Tuyên Quang → 10 Vĩnh Phúc Tuyên Quang → 11 Thái Nguyên Thái Nguyên 11 → 10 Vĩnh Phúc Bắc Giang 16 → 11 Thái Nguyên Bắc Giang 16 → 18 Sơn Tây Sơn Tây 18 → 19 Hòa Bình 12 Tuyên Quang → 26 Phú Thọ Yên Bái → 26 Phú Thọ Vĩnh Phúc 10 → 26 Phú Thọ Sơn Tây 18 → 26 Phú Thọ Hòa Bình 19 → 26 Phú Thọ 58 Từ đó chương trình chạy dữ liệu #2 cho kết quả số lượt du khách thăm đền Hùng 4+6+7+8+9=34 Hình 3.16 Chạy chương trình với liệu #2 59 3.5.3 Tổng hợp kết thử nghiệm Tổng hợp kết quả thử nghiệm tính lượng du khách thăm Đền Hùng ngày lễ hội Đền Hùng năm 2015: từ ngày 06/03 đến 10/03 âm lịch thể bảng sau: Bảng 3.2 So sánh kết tính toán và liệu thực tế Ngày Lượng du khách tính toán (trăm nghìn người) Lượng du khách thực tế (trăm nghìn người) 06/03/2015 28 28 07/03/2015 28.5 28.9 08/03/2015 28.5 29 09/03/2015 29 30 10/03/2015 34 34.7 Biểu đồ so sánh 40 35 30 Số lượt khách 25 Số lượt du khách tính toán (trăm nghìn người) Số lượt du khách thực tế (trăm nghìn người) 20 15 10 06/03/2015 07/03/2015 08/03/2015 09/03/2015 10/03/2015 Ngày Hình 3.17 Biểu đồ so sánh kết tính toán và liệu thực tế 60 Nhận xét kết thực nghiệm So sánh kết quả thực nghiệm chương trình kết quả thực tế 10 ngày hội lễ hội Đền hùng năm 2015 thấy phần mềm đưa kết quả tốt, tương đối xác, có khả ứng dụng thực tế 3.6 Kết luận chương Chương xây dựng chương trình ứng dụng sử dụng thuật toán FordFulkerson để thực toán tính toán số lượt du khách thăm Đền Hùng dịp lễ hội 2015; mô toán toán luồng cực đại mạng Kết quả thực nghiệm cho thấy chương trình tính toán tương đối xác, hợp lý, mang tính xác thực có thể ứng dụng vào thực tế 61 KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU Luận văn đề cập tới toán luồng mạng hay toán chuyển vận (TransShipment Problem) lớp toán quan trọng nhất hay gặp nhất qui hoạch toán học Lớp bao gồm toán quen thuộc thực tế như: Bài toán vận tải, toán mạng điện, toán mạng giao thông, toán quản lý, toán phân bổ vật tư, toán kế hoạch tài chính, toán đường ngắn nhất, toán luồng lớn nhất Những kết đạt Luận văn trình bày cách tổng quan lý thuyết đồ thị số toán bản đồ thị Trình bày khái niệm bản mạng, khái niệm luồng mạng, điều kiện cân luồng giá trị luồng Đồ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 toán số ứng dụng thực tế toán tìm luồng cực đại Tìm hiểu toán thực tế, luận văn trình bày ứng dụng thuật toán Ford-Fullkerson để giải vấn đề mô tính toán số lượt du khách viếng thăm đền Hùng tỉnh Phú Thọ dịp lễ hội Từ vấn đề toán thực tế, tác giả mô hình toán đồ thị, từ đó xây dựng chương trình thử nghiệm tính toán lượt du khách thăm Đền Hùng dịp lễ hội năm 2015 Bài toán biến thể đó mạng có nhiều đinh phát đỉnh thu nhằm tính toán lượt khách thăm viếng đền Hùng dịp lễ hội Kết quả đó 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 du lịch thập phương dự lễ hội đền Hùng 62 Hạn chế Do thời gian nghiên cứu tương đối hạn hẹp trình độ học viên hạn chế nên ứng dụng chương trình phạm vi nhỏ Hướng nghiên cứu Có thể xem luận văn bước tìm hiểu ban đầu việc ứng dụng lý thuyết vào giải toán thực tế Tác giả hy vọng thời gian tới có dịp nghiên cứu tìm hiểu sâu những toán ứng dụng thực tế Lý thuyết đồ thị Xây dựng chương trình với quy mô, phạm vi lớn 63 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Nguyễn Đức Nghĩa, Nguyễn Tô Thành (2009), Toán rời rạc, Nxb Đại học Quốc gia Hà Nội Tiếng Anh: [2] Schwartz B L (1966) Possible winners in partially completed tournaments SIAM Review, 8(3), 302-308 [3] Ford L R & Fulkerson D R (1956) Maximal flow through a network Canadian journal of Mathematics, 8(3), 399-404 [4] Edmonds J & Karp R M (1972) Theoretical improvements in algorithmic efficiency for network flow problems Journal of the ACM (JACM), 19(2), 248-264 [5] Dinits E A (1970) Algorithm of solution to problem of maximum flow in network with power estimates Doklady Akademii Nauk SSSR, 194(4), 754 [6] Karzanov A V (1974) Determining the maximal flow in a network by the method of preflows [7] Cherkasky B V (1977) Algorithm of construction of maximal flow in networks with complexity of O(𝑉 √𝐸) operations Mathematical Methods of Solution of Economical Problems, 7(0977), 117-125 [8] Sleator D D K (1981) An O(𝑛𝑚 log(𝑛)) algorithm for maximum network flow [9] Galil Z (1980) An O(𝑛53 𝑚23 ) algorithm for the maximal flow problem Acta Informatica, 14(3), 221-242 [10] Galil Z & Naamad, A (1980) An O(𝑛𝑚 log (𝑛)) algorithm for the maximal flow problem Journal of Computer and System Sciences, 21(2), 203-217 64 Trang web: [11] [12] http://luanvan.net.vn/luan- van/luan-van-bai-toan- luong-tren- mang-64172/ hhttp://voer.edu.vn/m/bai-toan- luong-cuc-dai-trong-mang/1ea96ed5 PHỤ LỤC Chương trình gồm lớp: - Network: cài đặt mạng - DrawablePanel: thiết kế giao diện chương trình - MainClass_HungTempleProblem: lớp để chạy chương trình 65 Lớp Network Gồm thủ tục: Phương thức Mô tả Network() Phương thức khỏi tạo lớp setCapacityOfEdge(int, int, int): void Đặt băng thông cho cạnh 66 getCapacityOfEdge(int, int): int Lấy băng thông cạnh setDemandOfNode(int, int): void Đặt yêu cầu cho đỉnh getDemandOfNode(int): int Lấy yêu cầu đỉnh getMaxFlowValue(): int Lấy giá trị luồng cực đại mạng getMaxFlowOfEdge(int, int): int Lấy giá trị luồng cực đại cạnh getSizeOfNetwork(): int Lấy kích thước (số đỉnh) mạng DFS(): int Tìm kiếm sâu calculateMaxFlow(): void Chạy thuật toán tìm luồng cực đại getSelectedFile(): File Lựa chọn file dữ liệu readData(): void Đọc dữ liệu từ file writeData(): void Viết dữ liệu file Lớp DrawablePanel Phương thức Mô tả DrawablePanel () Phương thức khỏi tạo lớp paintComponent(Graphics): void Phương thức vẽ đối tượng setNetwork(Network): void Phương thức nhận thực thể Network để chạy chương trình setIndex(): void Xác nhận hiển thị số đỉnh setDemand(): void Xác nhận hiển thị yêu cầu đỉnh setCapacity(): void Xác nhận hiển thị băng thông cạnh setFlow(): void Xác nhận hiển thị luồng cực đại cạnh showBackground(): void Xác nhận hiển thị hình 67 notShowBackground(): void Xác nhận không hiển thị hình showDemand(Graphics): void Hiển thị yêu cầu đỉnh showIndex(Graphics): void Hiển thị số đỉnh showCapacity(Graphics): void Hiển thị băng thông cạnh showFlow(Graphics): void Hiển thị luồng cực đại cạnh drawVector(Graphics, int, int, int, int): void Vẽ cạnh mạng drawThickLine(Graphics, int, int, int, int, int, Color): void Vẽ đường thẳng Lớp MainClass_HungTempleProblem Gồm thủ tục: Phương thức Mô tả MainClass_HungTempleProblem Phương thức khỏi tạo lớp () main(Sting[1]): void Phương thức main() Java initialize(): void Khởi tạo chương trình chạy ButtonViewFile(): void Xử lý chức nút Xem dữ liệu ButtonAddDemand(): void Xử lý chức nút Thêm yêu cầu ButtonAddRoute(): void Xử lý chức nút Thêm cạnh ButtonLoad(): void Xử lý chức nút Tải dữ liệu ButtonSave(): void Xử lý chức nút Lưu dữ liệu ButtonAuthor(): void Xử lý chức nút Tác giả [...]... BÀI TOÁN LUỒNG CỰC ĐẠI TRÊN MẠNG VÀ CÁC THUẬT TOÁN Chương 2 đề cập tới bài toán luồng cực đại trên mạng và các thuật toán giải chúng, trình bày các khái niệm về mạng và luồng trên mạng, điều kiện cân bằng luồng, giá trị của luồng Nghiên cứu một số thuật toán giải bài toán luồng trên mạng như: thuật toán Ford – Fulkerson, thuật toán Dinits, thuật toán Edmonds–Karp…, phân tích các thuật toán làm... Edmonds–Karp…, phân tích các thuật toán làm cơ sở để lựa chọn thuật toán giải bài toán trong chương 3, phát biểu bài toán luồng cực đại trên mạng Nội dung của chương được tham khảo chủ yếu từ các tài liệu [2], [3], [4], [5], [6], [11], [12] 2.1 Phát biểu bài toán 2.1.1 Mạng và luồng trên mạng Trước hết chúng ta đến với khái niệm về mạng và luồng Mạng (network) Mạng (network) là một đồ thị có hướng G=(V,... bài toán tối ưu trên đồ thị 1.3.1 Các bài toán kinh điển 15 Bài toán duyệt đồ thị Bài toán duyệt đồ thị được phát biểu như sau: Cho đồ thị G=(V, E) Hãy duyệt tất cả các đỉnh của G, mỗi đỉnh đúng một lần Hiện có hai thuật toán kinh điển giải quyết bài toán này: thuật toán tìm kiếm theo chiều sâu (Depth First Search) và thuật toán tìm kiếm theo chiều rộng (Breadth First Search) Cả hai thuật toán. .. thuật toán kinh điển giải quyết bài toán này: thuật toán Kruskal hữu hiệu với những đồ thị thưa tức là: |𝐸| ≈ |𝑉|(|𝑉| − 1) 2 và thuật toán Prim hữu hiệu với những đồ thị dày Bài toán tìm đường đi ngắn nhất Bài toán đặt ra ở đây là tìm đường đi ngắn nhất, tức đường đi có tổng trọng số nhỏ nhất, trên đồ thị có trọng số cho trước Chúng ta có ba thuật toán kinh điển giải các bài toán này:... thị và các khái niệm có liên quan Trong đó, có nhiều cách biểu diễn đồ thị trên máy tính như: biểu diễn đồ thị bằng ma trận liền kề, ma trận liên thuộc, danh sách cạnh, danh sách kề, và đặc biệt là biểu diễn đồ thị bằng ma trận trọng số Một số bài 21 toán trên đồ thị cũng được nghiên cứu và trình bày trong chương này bao gồm các bài toán kinh điển và các bài toán NP- khó 22 CHƯƠNG 2 BÀI TOÁN... 𝑓(4,6) = ∑ 𝑓(4, 𝑤) - Khi đó, giá trị của luồng 𝑓 là: ∑ 𝑓 (𝑠, 𝑣) = 𝑓(1,2) + 𝑓(1,3) = 2 + 2 = 4 = 3 + 1 = 𝑓(4,6) + 𝑓(5,6) = ∑ 𝑓(𝑢, 𝑡) 2.1.2 Bài toán luồng cực đại trên mạng Bài toán luồng cực đại được phát biểu như sau Cho mạng G = (V, E) Trên G, hãy tìm luồng f có giá trị lớn nhất Ta có Hình 2.2 minh họa luồng cực đại trên mạng ở ví dụ trước Giá trị của luồng cực đại này là ∑ 𝑓(1, 𝑢) = 𝑓(1,2)... số thuật toán chính để giải bài toán luồng trên mạng 2.2.2 Thuật toán Ford – Fulkerson Thuật toán Ford-Fulkerson được giới thiệu năm 1956 dựa trên khái niệm về đường tăng luồng Ta có các khái niệm sau: Mạng còn dư (residual network): Cho mạng G=(V, E) và luồng f Mạng còn dư 𝐺𝑓 = (𝑉, 𝐸𝑓 ) là mạng với khả năng thông qua 𝑐𝑓 (𝑢, 𝑣) = 𝑐 (𝑢, 𝑣) − 𝑓(𝑢, 𝑣) và 𝑐𝑓 (𝑣, 𝑢) = 𝑓(𝑢, 𝑣) Đường tăng luồng: Cho...4 Hình 1.1 Bài toán bảy cây cầu ở Konigsberg Bài toán 1: Bài toán bảy cây cầu của Euler, còn gọi là Bảy cầu ở Konigsberg Nguồn gốc bài toán là từ thành phố Konigsberg, Đức (nay là Kaliningrad, Nga) nằm trên sông Pregel, bao gồm hai hòn đảo lớn nối với nhau và với đất liền bởi bảy cây cầu Bài toán đặt ra là tìm một tuyến đường mà đi qua mỗi cây cầu một lần và chỉ đúng một lần (bất... (Capacity Constraint): luồng trên mỗi cung e  E không vượt quá khả năng thông qua của nó: 0f(e) c(e) - Điều kiện 2 Cân bằng luồng (Flow Conversion): tổng luồng trên các cung vào đỉnh v bằng tổng luồng trên các cung đi ra khỏi đỉnh v, nếu v s, t Giá trị của một luồng được tính bằng tổng giá trị trên các cung đi ra từ đỉnh phát s, cũng chính bằng tổng giá trị trên các cung đi vào đỉnh thu t 2/6... Các thuật toán giải bài toán luồng trên mạng 2.2.1 Các thuật toán hiện có Hiện có rất nhiều thuật toán giải quyết bài toán luồng cực đại Bảng 2.1 dưới đây liệt kê các thuật toán và độ phức tạp của chúng, chú ý |𝑉 | = 𝑛 và |𝐸 | = 𝑚 Bảng 2.1 Các thuật toán giải bài toán luồng cực đại Tên thuật toán Độ phức tạp Ford–Fulkerson [3] O(𝑚 max|𝑓|) Edmonds–Karp [4] O(𝑛𝑚2 ) 26 O(𝑛2 𝑚) Dinits [5] Karzanov

Ngày đăng: 12/05/2016, 10:45

Từ khóa liên quan

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

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

Tài liệu liên quan