1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

74 219 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 2,01 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong số các mô hình toán học đã được áp dụng có nhiều mô hình tối ưu, nhiều bài toán qui hoạch tuyến tính có thể qui về bài toán làm cực tiểu cước phí vận chuyển hàng trong một ma

Trang 1

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 trên mạng và ứng dụng” là công trình nghiên cứu thực sự của bản thân, được

thực hiện trên cơ sở nghiên cứu lý thuyết và cài đặt ứng dụng dưới sự hướng dẫn khoa học của Tiến sĩ Trương Hà Hải, Trường Đại học Công nghệ Thông tin và Truyền thông - Đại học Thái Nguyên

Tôi xin chịu trách nhiệm về lời cam đoan này

Thái Nguyên, ngày tháng 9 năm 2015

Tác giả

Nông Thị Lý

Trang 2

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 và Truyền thông – Đại học Thái Nguyên, Phòng Đào tạo, các 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 và giúp đỡ tác giả trong 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ả trong suốt quá trình làm luận

văn

Tác giả xin cảm ơn các cán bộ, giảng viên đồng nghiệp Trường Đại học Hùng Vương đã luôn giúp đỡ, động viên, khích lệ tác giả trong suốt quá trình nghiên cứu

Mặc dù đã rất cố gắng song nội dung bản luận văn không thể tránh khỏi những thiếu sót Tác giả rất mong nhận được sự góp ý quý báu của các thầy cô

và cá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 9 năm 2015

Tác giả

Nông Thị Lý

Trang 3

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 1

CHƯƠNG 1 3

MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ 3

1.1 Một số định nghĩa và ký hiệu 3

1.1.1 Định nghĩa đồ thị 3

1.1.2 Các loại đồ thị 4

1.1.3 Các khái niệm liên quan 6

1.2 Biểu diễn đồ thị trên máy tính 9

1.2.1 Biểu diễn bằng ma trận kề 9

1.2.2 Biểu diễn bằng 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ố bài toán tối ưu trên đồ thị 14

1.3.1 Các bài toán kinh điển 14

1.3.2 Các bài toán NP-khó 16

1.4 Kết luận chương 1 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 bài toán 22

2.1.1 Mạng và luồng trên mạng 22

2.1.2 Bài toán luồng cực đại trên mạng 24

Trang 4

2.1.3 Lát cắt, định lý Ford – Fulkerson 24

2.2 Các thuật toán giải bài toán luồng trên mạng 25

2.2.1 Các thuật toán hiệ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ế của bài 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 2 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 về thăm đền Hùng trong dịp lễ hội .37

3.2 Phát biểu bài toán 39

3.3 Mô hình hóa bài toán bằng đồ thị và các bước giải bà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 về thăm đền Hùng năm 2015 52

3.5.1 Thực nghiệm 1: Tính toán trong ngày thứ nhất (06/03 âm lịch) 53

3.5.2 Thực nghiệm 2: Tính toán trong ngày thứ hai (10/03 âm lịch) 56

3.5.3 Tổng hợp các kết quả thử nghiệm 59

3.6 Kết luận chương 3 60

KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU 61

TÀI LIỆU THAM KHẢO 63 PHỤ LỤC

Trang 5

DANH MỤC CÁC BẢNG

Bảng 2.1 Các thuật toán giải bài toán luồng cực đại 31

Bảng 3.1 Bảng chỉ số các tỉnh thành trên bản đồ 46 Bảng 3.2 So sánh kết quả tính toán và dữ liệu thực tế 71

Trang 6

DANH MỤC CÁC HÌNH VẼ

Hình 1.1 Bài toán bảy cây cầu ở Konigsberg 4

Hình 1.2 Các loại đồ thị 6

Hình 1.3 Các dạng đồ thị đặc biệt 7

Hình 1.4 Minh họa các khái niệm liên quan đến đồ thị 7

Hình 1.5 Minh họa đỉnh rẽ nhánh và cầu 9

Hình 1.6 Minh họa đồ thị con và đồ thị đẳng cấu 10

Hình 1.7 Biểu diễn đồ thị bằng ma trận kề 11

Hình 1.8 Biểu diễn đồ thị bằng ma trận liên thuộc 12

Hình 1.9 Biểu diễn đồ thị bằng danh sách cạnh 13

Hình 1.10 Biểu diễn đồ thị bằng danh sách kề 14

Hình 2.1 Mạng và luồng trên mạng 23

Hình 2.2 Luồng cực đại trên 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 bằng 0 28

Hình 2.6 Xây dựng mạng còn 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 3

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 của bộ dữ liệu #1 42

Hình 3.3 Khởi tạo luồng bằng 0 của bộ dữ liệu #1 43

Trang 7

Hình 3.4 Xây dựng mạng còn dư của bộ dữ liệu #1 43

Hình 3.5 Tăng luồng theo đường 𝑷𝒇𝟏 của bộ dữ liệu #1 44

Hình 3.6 Tăng luồng theo đường 𝑷𝒇𝟐 của bộ dữ liệu #1 44

Hình 3.7 Tăng luồng theo đường 𝑷𝒇𝟑 của bộ dữ liệu #1 45

Hình 3.8 Tăng luồng theo đường 𝑷𝒇𝟒 Pf4của bộ dữ liệu #1 45

Hình 3.9 Tăng luồng theo đường 𝑷𝒇𝟓 của bộ dữ liệu #1 46

Hình 3.10 Tăng luồng theo đường 𝑷𝒇𝟔 của bộ dữ liệu #1 46

Hình 3.11 Tăng luồng theo đường 𝑷𝒇𝟕 của bộ dữ liệu #1 47

Hình 3.12 Luồng cực đại của bộ dữ liệu #1 47

Hình 3.13 Giao diện của chương trình 49

Hình 3.14 Mô phỏng với bộ dữ liệu #1 trên chương trình 52

Hình 3.15 Chạy chương trình với bộ dữ liệu #1 53

Hình 3.16 Chạy chương trình với bộ dữ liệu #2 56

Hình 3.17 Biểu đồ so sánh kết quả tính toán và dữ liệu thực tế 57

Trang 8

MỞ ĐẦU

Để giải quyết các vấn đề phát sinh từ các bài toán thực tế cần có được sự hợp tác chặt chẽ giữa các chuyên gia trong lĩnh vực chuyên môn, các chuyên gia Toán, Toán ứng dụng và các chuyên gia Tin học, kỹ sư lập trình Điều này đặc biệt cần thiết khi giải quyết các bài toán cho các hệ thống lớn Việc thiết lập được một mô hình hợp lý, phản ánh được bản chất của bài toán thực tế đồng thời khả thi về phương diện tính toán luôn là điều đáng được quan tâm

Trong số các mô hình toán học đã được áp dụng có nhiều mô hình tối ưu, nhiều bài toán qui hoạch tuyến tính có thể qui về bài toán làm cực tiểu cước phí vận chuyển hàng trong một mạng (gồm các nút và các cung đường) sao cho đảm bảo được các nhu cầu ở một số nút sau khi biết nguồn cung cấp tại một số nút khác, hoặc đưa về bài toán xác định cường độ dòng lớn nhất của dòng vận tải giữa hai nút của một bản đồ giao thông, bài 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 của một hệ thống đường ống dẫn dầu, Các bài toán như vậy được gọi là các bài toán luồng trên mạng hay bài toán

chuyển vận (TransShipment Problem) Đây là lớp bài toán quan trọng nhất và

hay gặp nhất trong qui hoạch toán học Lớp này bao gồm các bài toán quen thuộc trong thực tế như: Bài toán vận tải, bài toán mạng điện, bài toán mạng giao thông, bài toán quản lý, bài toán phân bổ vật tư, bài toán kế hoạch tài chính, bài toán đường ngắn nhất, bài toán luồng lớn nhất

Vì là một bài toán qui hoạch tuyến tính nên các bài toán luồng trên mạng có thể giải được bằng bất kỳ thuật toán nào giải được bài toán qui hoạch tuyến tính, chẳng hạn bằng thuật toán cổ điển của qui hoạch tuyến tính như thuật toán đơn hình Mặt khác, bằng cách tận dụng những cấu trúc đặc biệt của các bài toán luồng trên mạng thông qua việc mô hình hóa bài toán thành cấu trúc đồ thị (mô hình gồm các đỉnh và các cạnh nối các đỉnh đó) thì bài toán trên có thể đưa

về bài toán tìm luồng trên mạng của một đồ thị

Trang 9

Vì những ứng dụng thực tế rất ý nghĩa của lớp bài toán này, cùng với thế mạnh và niềm yêu thích về toán học, tin học, thuật toán, trong phạm vi luận văn, tác giả tập trung nghiên cứu về lớp bài toán luồng trên mạng, phương pháp giải bài toán luồng trên mạng bằng lý thuyết đồ thị và ứng dụng giải bài toán trong thực tế

Luận văn được trình bày thành 3 phần bao gồm: Phần mở đầu, phần nội dung và phần kết luận

Phần mở đầu:

Giới thiệu khái quát về đề tài, mục tiêu, đối tượng, phạm vi nghiên cứu,

ý nghĩa khoa học và xã hội mang lại thông qua việc giải quyết các vấn đề được nêu trong đề tài

Phần nội dung:

Chương 1: Trình bày một số kiến thức cơ bản về Lý thuyết đồ thị: đỉnh, cạnh, bậc của đồ thị, các loại đồ thị, cách biểu diễn đồ thị trên máy tính và một số bài toán cơ bản trên đồ thị Các kiến thức này là cơ sở để trình bày các nội dung quan trọng trong chương 2 và 3

Chương 2: Luận văn trình bày khái niệm mạng, khái niệm luồng trên

mạng, bài toán luồng cực đại trên mạng, phát biểu các dạng bài toán luồng cực

đại trên mạng, trình bày một số thuật toán giải bài toán luồng trên mạng

Chương 3 Tìm hiểu một bài toán thực tế về lưu lượng du khách về thăm đền Hùng tỉnh Phú Thọ trong dịp lễ hội thuộc lớp bài toán luồng cực đại trên mạng, xây dựng chương trình thử nghiệm mô phỏng tính toán số lượt du khách

về thăm đền Hùng tỉnh Phú Thọ trong 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 được và hướng phát

triển cho mô hình mà luận văn đã đề xuất

Trang 10

CHƯƠNG 1 MỘT SỐ KHÁI NIỆM CƠ BẢN CỦA LÝ THUYẾT ĐỒ THỊ

Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứng dụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm đầu của thế kỷ XVIII bởi nhà toán học lỗi lạc người Thụy sỹ Leonhard Euler Nội dung cơ bản của chương trình bày các kiến thức cơ sở về

lý thuyết đồ thị, các loại đồ thị, cách biểu diễn đồ thị trên máy tính và trình bày một số bài toán cơ bản trên đồ thị Chương 1 là cơ sở lý thuyết làm tiền đề để trình bày các nội dung trong chương 2 và chương 3

1.1 Một số định nghĩa và ký hiệu

1.1.1 Định nghĩa đồ thị

Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh

đó Người ta thường ký hiệu đồ thị G = (V,E), trong đó V là tập hợp các đỉnh (Verterx), E là tập hợp các cạnh (Edge) [1]

Ví dụ, một bản đồ địa lý có thể mô hình hóa thành một đồ thị bằng cách biểu diễn các địa điểm định trước bằng đỉnh và con đường nối giữa các địa điểm đó bằng cạnh Lý thuyết đồ thị có nhiều ứng dụng quan trọng trong cuộc sống, được phát triển trong khoảng 4 thế kỉ gần đây Có hai bài toán nổi tiếng được nhiều người biết đến như là các bài toán khai sinh ra lý thuyết đồ thị, đó là:

chu

Trang 11

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 kể điểm xuất phát hay điểm tới) Năm 1736, Leonhard Euler đã chứng minh rằng điều đó là không thể được

Bài toán 2: Vấn đề này lần đầu tiên được đề cập vào năm 1852 bởi

Francis Guthrie khi ông thử tô màu bản đồ nước Anh và ông nhận ra rằng chỉ cần bốn màu khác nhau là đủ Ông đã đem vấn đề này hỏi người anh trai là Fredrick, lúc đó đang là sinh viên của trường Đại học Học viện London (UCL) Fredrick đã đưa vấn đề này hỏi thầy của mình là nhà toán học Augustus De Morgan nhưng người thầy cũng chưa biết rõ vấn đề này Người đầu tiên giới thiệu vấn đề ra trước công chúng là nhà toán học Arthur Cayley vào năm 1878 tại Hội Toán học London, ông đã chỉ ra người đề cập vấn đề là De Morgan

1.1.2 Các loại đồ thị

Chúng ta sẽ dựa vào các đặc điểm sau của cạnh để phân biệt các dạng đồ thị:

- Cạnh e 1 = (u, v) và cạnh e 2 = (t, k) trên đồ thị G được gọi là cạnh lặp nếu

u t và v k

- Các cạnh e E được gọi là có hướng nếu trên đồ thị G ta quan tâm tới thứ tự hai đỉnh trên một cạnh: phân biệt hai cạnh e 1 = (u, v) và e 2 = (v, u)

Từ đó ta có các dạng đồ thị cơ bản:

Trang 12

Ta có hình minh họa các loại đồ thị trên

Hình 1.2 Các loại đồ thị

Một số dạng đơn đồ thị vô hướng đặc biệt:

Đồ thị đầy đủ K n (compelte graph): Là đơn đồ thị vô hướng mà giữa

hai đỉnh bất kì của nó luôn tồn tại cạnh nối

Đồ thị vòng C n (cycle graph): Là đơn đồ thị vô hướng G = (V,E) với tập

đỉnh 𝑉 = {1,2, 3,… , 𝑛} và tập cạnh

𝐸 = {(1, 2); (2, 3); … ; (𝑛 − 1, 𝑛); (𝑛, 1)}

Đồ thị bánh xe W n (wheel graph): là đơn đồ thị vô hướng thu được từ

đồ thị C n-1 bằng cách thêm một đỉnh n nối với n-1 đỉnh của đồ thị C n-1

Đơn đồ thị có hướng Đơn đồ thị vô hướng

Đa đồ thị có hướng Đa đồ thị vô hướng

Trang 13

Đồ thị hai phía K m,n (bipartite graph): là đồ thị có tập đỉnh phân hoạch

thành hai tập con không giao nhau V=X Y sao cho mọi cạnh thuộc 𝐸 đều nối

một đỉnh thuộc X với một đỉnh thuộc Y

Hình 1.3 Các dạng đồ thị đặc biệt

1.1.3 Các khái niệm liên quan

Cho đồ thị G=(V, E): V={1, 2, 3, …, n} và E={e 1 , e 2 ,…, e n }

Các khái niệm được trình bày dưới đây có thể dùng cho cả đồ thị có hướng và

vô hướng hoặc từng dạng đồ thị cụ thể

Trang 14

Hình 1.4 Minh họa các khái niệm liên quan đến đồ thị

Gọi bán bậc ra (vào) của đỉnh trong đồ thị có hướng là số cạnh của đồ thị

đi ra (vào) đỉnh đó và kí hiệu là deg + (v) hay deg - (v) Ví dụ trong hình 1.4 đỉnh

2 của G 1 có bán bậc vào là 1: hay deg (2)=1và bán bậc ra là 2: deg 2- (2)=2

Đường đi (path)

Một đường đi từ đỉnh u đến đỉnh v trên đồ thị G là một dãy đỉnh u 1 , u 2 ,

…, u i , v mà các cạnh (u , u 1 ), (u 1, u 2 ), …, (u i , v)E, i là số lượng cung trên đường

đi được gọi là độ dài của đường đi

Đường đi đơn

Một đường đi đơn trên đồ thị là một đường đi mà trên đó không có cạnh nào lặp lại

Trang 15

Hai đỉnh liên thông

Đỉnh p và q được gọi là liên thông với nhau trên đồ thị G nếu có một đường đi từ p đến q trên đồ thị đó

Đồ thị liên thông

Một đồ thị được gọi là liên thông nếu mọi cặp đỉnh của đồ thị đều liên thông

Thành phần liên thông

Đồ thị G không liên thông sẽ phân rã thành một số hữu hạn đồ thị con

liên thông đôi một không có đỉnh chung Các đồ thị con này được gọi là các thành phần liên thông của đồ thị

Hình 1.5 Minh họa đỉnh rẽ nhánh và cầu

Trang 16

Đỉnh rẽ nhánh

Đỉnh u được gọi là đỉnh rẽ nhánh của đồ thị G nếu việc loại bỏ đỉnh đó

cùng các cạnh liên thuộc với nó làm tăng số thành phần liên thông của đồ thị

Cầu

Cạnh e được gọi là cầu của đồ thị G nếu việc loại bỏ cạnh đó làm tăng

số thành phần liên thông của đồ thị

Hình 1.6 Minh họa đồ thị con và đồ thị đẳng cấu

Trang 17

- Đánh số các đỉnh thuộc V từ 1n

- Ma trận kề A biểu diễn G là một ma trận vuông n  n có các phần tử nhận

giá trị 0 hoặc 1: a ij =1 nếu tồn tại một cung định hướng từ v i đến vj

Ta có Hình 1.7 minh họa biểu diễn đồ thị có hướng có trọng số bằng

ma trận kề

Hình 1.7 Biểu diễn đồ thị bằng ma trận kề

Chúng ta có các nhận xét:

- Cách biểu diễn bằng ma trận kề có thể dùng cho cả đồ thị có hướng và

vô hướng Dễ thấy ma trận biểu diễn đồ thị vô hướng đối xứng qua đường chéo chính

- Nếu đồ thị là có trọng số thì các phần tử ma trận kề có thể nhận giá trị là trọng số của cung

Trang 18

- Có thể lựa chọn hai giá trị 0 và 1 để phân biệt sự khác nhau giữa cặp đỉnh có cạnh nối và cặp đỉnh không có cạnh nối Trong thực tế cài đặt, tùy thuộc vào thuật toán mà có thể sử dụng các bộ giá trị khác vẫn đảm bảo sự phân biệt

- Ưu điểm: tốc độ truy xuất thông tin về cạnh cao

- Nhược điểm:

 Đồ thị thưa có hiệu suất sử dụng tài nguyên thấp

 Tình huống cập nhật đồ thị bằng thao tác thay đổi kích thước tập đỉnh rất phức tạp: buộc phải khai báo một ma trận với kích thước mới và hủy bỏ ma trận đã sử dụng ban đầu

1.2.2 Biểu diễn bằng ma trận liên thuộc

Cách biểu diễn đồ thị bằng ma trận liên thuộc:

- Đánh số các đỉnh thuộc V từ 1n

- Đánh số các cạnh thuộc E từ 1m

- Ma trận liên thuộc A biểu diễn G là một ma trận nm có các phần tử nhận giá trị 0, 1 hoặc -1:

 a ij = 1 nếu đỉnh i là đỉnh đầu của cạnh e j

 a ij = -1 nếu đỉnh i là đỉnh cuối của cạnh e j

 a ij = 0 nếu đỉnh i không là đầu mút của cạnh e j

Trang 19

Hình 1.8 Biểu diễn đồ thị bằng ma trận liên thuộc

Hình 1.8 minh họa biểu diễn đồ thị có hướng không có trọng số bằng

ma trận liên thuộc Chúng ta có các nhận xét:

- Ma trận liên thuộc chủ yếu dùng biểu diễn đồ thị có hướng

- Có thể lựa chọn ba giá trị 0, 1 và -1 để phân biệt sự khác nhau giữa đỉnh i

và cạnh e j Trong thực tế cài đặt, tùy thuộc vào thuật toán mà có thể sử

dụng các bộ giá trị khác vẫn đảm bảo sự phân biệt

Trang 20

Hình 1.9 Biểu diễn đồ thị bằng danh sách cạnh

Cách biểu diễn đồ thị bằng danh sách cạnh:

- Đánh số các đỉnh thuộc V từ 1n

- Đánh số các cạnh thuộc E từ 1m

- Thực hiện lưu trữ đồ thị G bằng cách lưu trữ thông tin về các cạnh: đỉnh

đầu, đỉnh cuối và trọng số (nếu có)

Trang 21

- Danh sách thứ i trong L chứa các đỉnh kề với đỉnh i của đồ thị

Nhận xét:

- Đối với đồ thị vô hướng, khi cài đặt nên lưu trữ danh sách theo qui cách: các đỉnh trong danh sách sẽ có số thứ tự lớn hơn đỉnh tương ứng với danh sách đó Qui cách này sẽ giúp đảm bảo việc số ô nhớ dùng để lưu trữ đúng bằng số cạnh của đồ thị mà không bị mất mát thông tin

1.2.5 Đồ thị trọng số

Ma trận trọng số là được dùng để biểu diễn đồ thị

Xét đồ thị G=(X, U) (có hướng hay vô hướng)

Giả sử tập X gồm n đỉnh và được sắp thứ tự X={x 1 , x 2 , , x n }, tập U gồm

n cạnh và được sắp thứ tự U={u 1 , u 2 , , u n }

1.3 Một số bài toán tối ưu trên đồ thị

1.3.1 Các bài toán kinh điển

Trang 22

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 đều có độ phức tạp O(|V|+|E|)

Bài toán cây khung nhỏ nhất

Trước hết đến với khái niệm về cây khung Cho đồ thị vô hướng

G=(V,E) Cây T=(V, F) được gọi là cây khung của đồ thị nếu nó là đồ thị con của G, tức là FE Trọng số của cây khung T được định nghĩa là:

𝑐(𝑇) = ∑ 𝑐(𝑒)

𝑒∈𝐸

(1)

Từ đó ta có bài toán cây khung nhỏ nhất:

Cho đồ thị vô hướng G=(V, E) với trọng số của cạnh e là c(e) Hãy tìm cây khung T của đồ thị có trọng số nhỏ nhất

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 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:

Trang 23

- Thuật toán Ford Bellman tìm đường đi ngắn nhất từ đỉnh s đến tất cả các đỉnh còn lại trên đồ thị có hướng không có chu trình âm (tức chu trình có tổng trọng số trên các cạnh là âm)

- Thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh s đến tất cả các đỉnh còn lại trên đồ thị vô hướng có trọng số không âm

- Thuật toán Floyd tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh trên

đồ thị có trọng số

Bài toán ghép cặp

Trước hết có khái niệm phép ghép cặp Cho đồ thị G=(V, E) Phép ghép cặp M là một phép chọn ra một tập FE sao cho không có hai cạnh nào có chung đầu mút Khi đó, số lượng cạnh trong F được gọi là kích thước của cặp ghép M Bài toán ghép cặp được trình bày như sau

Cho đồ thị G=(V, E) Hãy tìm cặp ghép M có kích thước lớn nhất

Hiện tại, bài toán ghép cặp trên đồ thị hai phía đã có thuật toán hữu hiệu

để giải quyết Với đồ thị tổng quát, chúng ta đã có được các thuật toán xấp xỉ hiệu quả để giải quyết

1.3.2 Các bài toán NP-khó

Là nhóm các bài toán không có giải thuật hữu hiệu, tức giải thuật có độ phức tạp tính toán là đa thức theo thời gian, để giải quyết

Bài toán hoàn thiện đồ thị Hamilton

Trước hết có khái niệm đường đi và chu trình Hamilton Cho đồ thị

G=(V, E) Đường đi đi qua tất cả các đỉnh của G, mỗi đỉnh đúng một lần được gọi là đường đi Hamilton Đường đi Hamilton có đỉnh đầu trùng đỉnh cuối gọi

là chu trình Hamilton Khi đó, một đồ thị có chứa chu trình Hamilton sẽ được

Trang 24

gọi là đồ thị Hamilton Bài toán hoàn thiện đồ thị Hamilton (Hamilton Completion Problem) đặt ra như sau

Cho đồ thị G=(V, E) Hãy tìm số cạnh ít nhất bổ sung vào G để G trở

thành đồ thị Hamilton

Bài toán người du lịch

Bài toán người du lịch (Travelling Salesman Problem) được phát biểu như sau

Cho đồ thị có trọng số G=(V, E) Hãy tìm chu trình đi qua tất cả các đỉnh

của đồ thị với trọng số nhỏ nhất

Bài toán số phủ đồ thị con hai phía đầy đủ

Một đồ thị hai phía đầy đủ là một đồ thị G=(V, E) trong đó V=XY và với mọi cặp đỉnh x X, y Y thì (x, y E Khi đó, bài toán số phủ đồ thị con

hai phía đầy đủ (Biclique Cover Number Problem) được phát biểu như sau:

Cho đồ thị vô hướng G=(V, E) Hãy tìm số nhỏ nhất các đồ thị con hai phía đầy đủ của G sao cho mỗi cạnh của G đều nằm trong ít nhất 1 đồ thị con

Bài toán quyết định ghép cặp 3 chiều

Cho ba tập giao nhau bằng rỗng X, Y và Z Xét tập T= X  Y  Z gồm

các bộ ba t=(x, y, z) trong đó x X, y Y, z Z Khi đó, MT được gọi là một phép ghép cặp 3 chiều nếu với mỗi 2 bộ m 1 = (x 1 , y 1 , z 1 ) và m 2 = (x 2 , y 2 , z 2 )

thuộc M, ta luôn có: x1x2, y1y2, z1z2 Bài toán ghép cặp 3 chiều Dimensional Matching Decision Problem) được phát biểu như sau:

(3-Cho tập T và một số nguyên k Hỏi có tồn tại phép ghép cặp 3 chiều

MT nào có kích thước lớn hơn k hay không?

Bài toán quyết định tìm nhóm

Trang 25

Cho đồ thị vô hướng G=(V, E) Một nhóm (clique) C là một đồ thị con đầy đủ của G Khi đó bài toán quyết định tìm nhóm (Clique Decision Problem)

được phát biểu như sau:

Cho đồ thị vô hướng G=(V, E) và một số nguyên k Hỏi có tồn tại nhóm

C G nào có kích thước lớn hơn k hay không?

Bài toán tập độc lập

Cho đồ thị vô hướng G=(V, E) Một tập độc lập I Vlà tập các đỉnh sao cho G

không có cạnh nối giữa hai đỉnh bất kì Khi đó bài toán tập độc lập (Independent Set Problem) được phát biểu như sau:

Cho đồ thị vô hướng G=(V, E) Hãy tìm tập độc lập của 𝐺 có kích

thước lớn nhất

Bài toán quyết định tô màu đầy đủ

Bài toán quyết định tô màu đầy đủ (Complete Coloring Decision

Problem) được phát biểu như sau

Cho đồ thị vô hướng G=(V, E) và số nguyên dương 𝑘 Hỏi có tồn tại cách

phân chia v thành k hoặc nhiều hơn tập con giao nhau bằng rỗng V = V 1 V 2

V k sao cho V i là tập độc lập i và V i V j không là tập độc lập i, j hay

không?

Bài toán quyết định tập thống trị

Cho đồ thị vô hướng G=(V, E) 𝐷 ⊆ 𝑉 được gọi là tập thống trị nếu mọi đỉnh 𝑣 ∈ 𝑉 ∖ 𝐷 đều kề với ít nhất một đỉnh của 𝐷 Bài toán quyết định tập thống trị (Dominating Set Decision Problem) được phát biểu như sau:

Cho đồ thị vô hướng G=(V, E) và số nguyên dương 𝑘 Hỏi có tập thống trị 𝐷 nào của 𝐺 có kích thước nhỏ hơn hoặc bằng 𝑘 hay không?

Trang 26

Bài toán băng thông đồ thị

Cho đồ thị vô hướng G=(V, E), trong đó gán cho mỗi đỉnh v V, một số nguyên dương f(v) [1, n] Khi đó băng thông của đồ thị là max(|f(v i - f(v j )|) với v i , v j V Bài toán băng thông đồ thị (Graph Bandwidth Problem) được

phát biểu như sau

Cho đồ thị vô hướng G=(V, E) Hãy tìm một phép gán nhãn 𝑓 cho các

đỉnh sao cho băng thông của G là nhỏ nhất

Bài toán quyết định cây khung với các đỉnh có bậc bị chặn

Bài toán cây khung với các đỉnh có bậc bị chặn (Degree Constrained Spanning Tree Decision Problem) phát biểu như sau

Cho đồ thị vô hướng G=(V, E) và số nguyên dương k Hỏi G có cây khung nào trong đó không có đỉnh nào có bậc lớn hơn hoặc bằng k hay không?

Bài toán quyết định tập đỉnh phản hồi

Cho đồ thị vô hướng G=(V, E) Tập đỉnh phản hồi của G là một tập chứa

ít nhất một đỉnh của mỗi chu trình trong G, tức nếu loại bỏ tập đỉnh này thì đồ

thị sẽ không còn chu trình Bài toán quyết định tập đỉnh phản hồi (Feedback Vertex Set Decision Problem) được phát biểu như sau

Cho đồ thị vô hướng G=(V, E) và số nguyên dương k Hỏi G có tồn tại tập đỉnh phản hồi nào có kích thước nhỏ hơn hoặc bằng k hay không?

Bài toán tập cạnh phản hồi

Cho đồ thị vô hướng G=(V, E) Tập cạnh phản hồi của G là một tập chứa

ít nhất một cạnh của mỗi chu trình trong G, tức nếu loại bỏ tập cạnh này thì đồ

thị sẽ không còn chu trình Bài toán tập đỉnh phản hồi (Feedback Arc Set Problem) được phát biểu như sau

Trang 27

Cho đồ thị vô hướng G=(V, E) và số nguyên dương k Tìm tập cạnh phản hồi của G có kích thước nhỏ nhất

Bài toán quyết định đồ thị đẳng cấu

Cho các đồ thị vô hướng G=(V, E) và G'=(V', E') G và G được gọi là đẳng cấu nếu tồn tại ánh xạ đẳng cấu f:VV' sao cho (u, v)E khi và chỉ khi (f(u), f(v)E' Bài toán quyết định đồ thị đẳng cấu (Graph Homomorphism

Decision Problem) được phát biểu như sau:

Cho hai đồ thị vô hướng G=(V, E) và G'=(V', E') Hỏi G và G' có đẳng

cấu hay không?

Bài toán tô màu đồ thị

Cho đồ thị vô hướng G=(V, E) Số sắc tố của G là số màu tối thiểu để tô các đỉnh của G sao cho không có cạnh nào nối hai đỉnh cùng màu Bài toán tô

màu đồ thị (Graph Coloring Problem) được phát biểu như sau

Cho đồ thị vô hướng G=(V, E) Hãy tìm số sắc tố của G

Bài toán đường đi dài nhất

Cho đồ thị vô hướng G=(V, E) Đường đi đơn trên G là một đường đi

không đi qua đỉnh nào 2 lần Bài toán đường đi dài nhất (Longest Path Problem) được phát biểu như sau

Cho đồ thị vô hướng G=(V, E) Hãy tìm đường đi đơn dài nhất của G

1.4 Kết luận chương 1

Chương 1 trình bày một số định nghĩa cơ bản về lý thuyết đồ 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

Trang 28

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ó

Trang 29

CHƯƠNG 2 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 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, E) trong đó:

- Có duy nhất một đỉnh 𝑠 không có cung đi vào, gọi là đỉnh phát (source)

- Có duy nhất một đỉnh 𝑡 không có cung đi ra, được gọi là đỉnh thu (sink)

- Mỗi cạnh e=(u, v)E được gán một số nguyên không âm c (e) gọi là

khả năng thông qua của cung đó (capacity)

Từ đó có khái niệm về luồng như sau

Luồng (flow)

Trang 30

Giả sử cho mạng G=(V, E) Ta gọi luồng f trong mạng là ánh xạ f:ER + gán cho mỗi cung e=(u, v) E một số thực không âm f(e) thoả mãn các điều

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

Hình 2.1 Mạng và luồng trên mạng

Chúng ta có Hình 2.1 minh họa mạng G=(V, E) và luồng f trên mạng đó Mỗi cạnh của đồ thị có 2 trọng số kí hiệu là f/c Xét mạng G:

- Đỉnh phát là 1

- Đỉnh thu là 6

- Mỗi cạnh được gán trọng số 𝑐 là khả năng thông qua của cạnh đó

Xét luồng f với các điều kiện ràng buộc:

- Điều kiện ràng buộc khả năng thông qua: f(v) c(v), v V

2/6

3/6 2/5

1/3 2/5

1/1

1/6

Trang 31

- Điều kiện cân bằng luồng: ∑ 𝑓(𝑢, 𝑣) = ∑ 𝑓(𝑣, 𝑤) , ∀𝑣 ∈ 𝑉\{𝑠, 𝑡} Ví dụ với đỉnh 4: ∑ 𝑓(𝑢, 4) = 𝑓(2,4) + 𝑓(3,4) = 2 + 1 = 3 = 𝑓(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) + 𝑓(1,3) = 5 + 4 = 9

Hình 2.2 Luồng cực đại trên mạng

2.1.3 Lát cắt, định lý Ford – Fulkerson

Định nghĩa Lát cắt (cut)

Cho mạng 𝐺 = (𝑉, 𝐸) Lát cắt (𝑋, 𝑋 ∗ ) là một phép chia tập đỉnh 𝑉 thành hai tập giao nhau bằng rỗng 𝑋 và 𝑋 ∗ trong đó 𝑠 ∈ 𝑋 và 𝑡 ∈ 𝑋 ∗ Khả năng thông qua của lát cắt là:

𝑐(𝑋, 𝑋∗) = ∑ 𝑐(𝑣, 𝑤)

𝑣∈𝑋 𝑤∈𝑋∗

3/6

6/6 5/5

3/3 4/5

1/1

3/6

Trang 32

Giá trị luồng cực đại trong mạng không vượt quá khả năng thông qua của lát cắt hẹp nhất trong mạng

Trở lại với ví dụ trên, ta có lát cắt hẹp nhất sẽ là ({1,3}, {2,4,5,6}) minh họa bởi đường nét đứt trong Hình 2.3 Khả năng thông qua của lát cắt là: 𝑐({1,3}, {2,4,5,6}) = 𝑐(1,2) + 𝑐(3,4) + 𝑐(3,5) = 5 + 3 + 1 = 9, đúng bằng giá trị luồng cực đại ở trên

Hình 2.3 Lát cắt hẹp nhất mạng

2.2 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

Ford–Fulkerson [3] O(𝑚 max|𝑓|)

3/6

6/6 5/5

3/3 4/5

1/1

3/6

Trang 33

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 mạng G=(V, E) và mạng còn dư Gf =(V, E f )

Đường tăng luồng 𝑃𝑓 là một đường đi từ đỉnh 𝑠 đến đỉnh 𝑡 trong 𝐺𝑓

Phép tăng luồng: Cho mạng còn dư 𝐺𝑓 = (𝑉, 𝐸𝑓) Phép tăng luồng dọc theo đường tăng luồng 𝑃𝑓 của mạng còn dư 𝐺𝑓 thực hiện các công việc sau:

- Tìm 𝛿 là trọng số của cạnh có trọng số nhỏ nhất trên 𝑃𝑓:

Trang 34

- Khởi tạo một luồng f bằng 0 trên mọi cạnh của đồ thị

- Ở mỗi thời điểm, luồng trên cạnh luôn nhỏ hơn hoặc bằng khả năng thông qua của cạnh đó Việc giá trị của luồng có thể tăng lên được hay không phụ thuộc vào còn tồn tại đường tăng luồng, tức đường đi từ đỉnh phát đến đỉnh thu mà mọi cạnh đều có luồng nhỏ hơn thực sự khả năng thông qua hay không

Mô tả thuật toán Ford-Fulkerson như sau:

Input: mạng G=(V, E) với khả năng thông qua cij cho mỗi cạnh (i,j)

Output: luồng f trên G có giá trị cực đại

Thuật toán:

1 Khởi tạo luồng bằng 0:

𝑓(𝑖, 𝑗) = 0, ∀𝑖, 𝑗

2 Xây dựng mạng còn dư G f

3 Tăng luồng tối đa trên G f bằng cách:

While (điều kiện dừng chưa đạt){

if(có đường đi u 1 , u 2 , …, u k từ s=u 1 đến t=u k trên G f)

{Chọn m= min (c f (u i , u i+1 )}; 𝑖 = 1, 𝑘 − 1̅̅̅̅̅̅̅̅̅̅

for(i = 1; i<=k-1;i++)

{𝑐𝑓(𝑢𝑖, 𝑢𝑖+1) = 𝑐𝑓(𝑢𝑖, 𝑢𝑖+1) − 𝑚

𝑐𝑓(𝑢𝑖+1, 𝑢𝑖) = 𝑐𝑓(𝑢𝑖+1, 𝑢𝑖) + 𝑚} }

else

dừng vòng lặp}

4 Từ mạng còn dư G f sau khi tăng luồng tối đa và mạng G ban đầu,

tính toán luồng cực đại

Chú ý rằng lát cắt hẹp nhất có thể thu được bằng cách sau: duyệt mạng còn dư sau khi tăng luồng tối đa (tức không còn đường tăng luồng nào nữa)

Trang 35

bằng thuật toán tìm kiếm sâu, bắt đầu từ đỉnh s Khi đó, lát cắt sẽ bao gồm 2

tập, 1 tập gồm các đỉnh đã thăm và một tập gồm các đỉnh chưa thăm

Ta có ví dụ minh họa thực hiện thuật toán Ford-Fulkerson tìm luồng cực đại của mạng trong Hình 2.4 với trọng số là khả năng thông qua của cạnh

Đường đi từ đỉnh s đến đỉnh t trên đồ thị tăng luồng được tìm bằng thuật toán

tìm kiếm sâu

Hình 2.4 Mạng ban đầu

- Bước 1: Khởi tạo luồng bằng 0 trên các cạnh như tại Hình 2.5 Trọng

số của các cạnh có dạng 𝑓/𝑐 trong đó 𝑓 là luồng và 𝑐 là khả năng thông qua

Hình 2.5 Khởi tạo luồng bằng 0

- Bước 2: Xây dựng mạng còn dư 𝐺𝑓 như tại Hình 2.6 Trọng số của các cạnh chính là khả năng thông qua của mạng còn dư 𝐺𝑓

0/6

0/6 0/5

0/3 0/5

0/1

0/6

Trang 36

Hình 2.6 Xây dựng mạng còn dư

- Bước 3: Tìm đường tăng luồng 𝑃𝑓1 trên mạng còn dư 𝐺𝑓 và thực hiện phép tăng luồng dọc theo đường này như tại Hình 2.7.

- Bước 4: Tìm đường tăng luồng 𝑃𝑓2 trên mạng còn dư 𝐺𝑓 và thực hiện phép tăng luồng dọc theo đường này như tại Hình 2.8

Trang 37

Hình 2.8 Tăng luồng theo đường 𝑷𝒇𝟐

- Bước 5: Tìm đường tăng luồng 𝑃𝑓3 trên mạng còn dư 𝐺𝑓 và thực hiện phép tăng luồng dọc theo đường này như tại Hình 2 Sau bước tăng này, mạng còn dư đã tăng luồng cực đại, tức không tồn tại đường đi từ đỉnh 1 đến đỉnh 6

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

HÌNH ẢNH LIÊN QUAN

Hình  1.3. Các dạng đồ thị đặc biệt - Bài toán luồng trên mạng và ứng dụng
nh 1.3. Các dạng đồ thị đặc biệt (Trang 13)
Hình  1.4. Minh họa các khái niệm liên quan đến đồ thị - Bài toán luồng trên mạng và ứng dụng
nh 1.4. Minh họa các khái niệm liên quan đến đồ thị (Trang 14)
Hình  1.10. Biểu diễn đồ thị bằng danh sách kề - Bài toán luồng trên mạng và ứng dụng
nh 1.10. Biểu diễn đồ thị bằng danh sách kề (Trang 21)
Hình  2.119. Bài toán tìm công suất bơm dầu - Bài toán luồng trên mạng và ứng dụng
nh 2.119. Bài toán tìm công suất bơm dầu (Trang 41)
Hình  3.3. Khởi tạo luồng bằng 0 của bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.3. Khởi tạo luồng bằng 0 của bộ dữ liệu #1 (Trang 51)
Hình  3.2. Mạng của bộ dữ liệu #1  Bước 1: Khởi tạo luồng bằng 0 trên tất cả các cạnh - Bài toán luồng trên mạng và ứng dụng
nh 3.2. Mạng của bộ dữ liệu #1 Bước 1: Khởi tạo luồng bằng 0 trên tất cả các cạnh (Trang 51)
Hình  3.4. Xây dựng mạng còn dư của bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.4. Xây dựng mạng còn dư của bộ dữ liệu #1 (Trang 52)
Hình  3.7. Tăng luồng theo đường ? ??  của bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.7. Tăng luồng theo đường ? ?? của bộ dữ liệu #1 (Trang 53)
Hình  3.6. Tăng luồng theo đường  ? ??  của bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.6. Tăng luồng theo đường ? ?? của bộ dữ liệu #1 (Trang 53)
Hình  3.10. Tăng luồng theo đường  ? ??  của bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.10. Tăng luồng theo đường ? ?? của bộ dữ liệu #1 (Trang 55)
Hình  3.11. Tăng luồng theo đường  ? ??  của bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.11. Tăng luồng theo đường ? ?? của bộ dữ liệu #1 (Trang 56)
Hình  3.14. Mô phỏng với bộ dữ liệu #1 trên chương trình - Bài toán luồng trên mạng và ứng dụng
nh 3.14. Mô phỏng với bộ dữ liệu #1 trên chương trình (Trang 62)
Hình  3.15. Chạy chương trình với bộ dữ liệu #1 - Bài toán luồng trên mạng và ứng dụng
nh 3.15. Chạy chương trình với bộ dữ liệu #1 (Trang 63)
Hình  3.16. Chạy chương trình với bộ dữ liệu #2 - Bài toán luồng trên mạng và ứng dụng
nh 3.16. Chạy chương trình với bộ dữ liệu #2 (Trang 65)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w