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ướcphí vận chuyển hàng trong một mạng gồm c
Trang 1Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NÔNG THỊ LÝ
BÀI TOÁN LUỒNG TRÊN MẠNG VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái nguyên - 2015
Trang 2Đặc biệt, t xin bày tỏ lòng biết ơn sâu sắc đến TS Trương Hà Hải
Trang 3Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
4
MỤC LỤC LỜI CAM ĐOAN .II LỜI CẢM ƠN III MỤC LỤC IV DANH MỤC CÁC BẢNG VI DANH MỤC CÁC HÌNH VẼ VII 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 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 .
10 1.2.1 Biểu diễn bằng ma trận kề 10
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 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ẠNGVÀ CÁC THUẬT TOÁN 22
Trang 4Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
5 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 5Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
6
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: 37
3.1 Vấn đề tnh toán số lượt du khách về thăm đền Hùng trong dịp lễ hội 37
3.2 39
3.3 M 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
Trang 6Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
7 PHỤ LỤC
Trang 7Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
71
Trang 8Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
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 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
Trang 9Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
Hình 3.3.Khởi tạo luồng bằng 0 của bộ dữ liệu #1 43
Trang 10Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
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 củ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ình3.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ình3.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 11MỞ ĐẦ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ácchuyê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ánthực tế đồng thời khả thi về phương diện tính toán luôn là điều đáng đượcquan 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ướcphí vận chuyển hàng trong một mạng (gồm các nút và các cung đường) saocho đảm bảo được các nhu cầu ở một số nút sau khi biết nguồn cung cấp tạimột số nút khác, hoặc đưa về bài toán xác định cường độ dòng lớn nhấtcủ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ồngdầ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àybao 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àitoá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ánluồ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
Trang 12toá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 bài toán tìm luồng trên mạng của một đồ thị.
Trang 13Vì 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ậnvăn, tập trung nghiên cứu về lớp bài toán luồng trên mạng, phươngphá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àitoá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ộidung và phần kết luận
Phần mở đầu:
Giới thiệu khái quát về đề tài, mục tê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
Chương 3 Tìm hiểu thực tế 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 đạitrên mạng, xây dựng chương trình thử nghiệm mô phỏng tnh 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
Trang 14Phầ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 15CHƯƠ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 ứngdụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vàonhữ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
Chương 1 là cơ sở lý thuyết làm tền
đề để trình bày các nội dung trong chương 2 và chương 3
:
chu
Trang 16Hì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ớinhau và với đất liền bởi bảy cây cầu Bài toán đặt ra là 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áthay đ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ọcAugustus 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 Cayleyvà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ạnhe 2 = (t, k) trên đồ thị Gđược gọi là cạnh lặp nếu
Trang 17Ta có hình minh họa các loại đồ thị trên
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 và tập cạnh
Đồ 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 đỉnhn nối với n-1 đỉnh của đồ thị C n-1
Trang 18Đồ thị hai phíaK 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 19Gọ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đỉnh2 củaG 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 đỉnhu 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
Trang 20- Đường đi: abcfebc
- Đường đi đơn: abcfeb
- Chu trình: bcfeb
Hai đỉnh liên thông
Đỉnhp 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 đếnq trên đồ thị đó.
Đồ thị liên thông
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à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ácthành phần liên thông của đồ thị
Trang 21Đỉnhu đượ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ạnhe đượ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ị
Trang 22Hai đồ thịG 1 = (U 1 , V 1 ) và G 2 =(U 2 , V 2 ) được gọi là đồng cấu nếu tồn tại
một song ánh f:V 1 V 2 sao cho (u, v) E 1 khi và chỉ khi (f(u), f(v)) E 2
1.2 Biểu diễn đồ thị trên máy tính
Trang 23- 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
- Có thể lựa chọn hai giá trị và để 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ùythuộ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 đỉnhrấ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 đỉnhi là đỉnh cuối của cạnh e j
a ij = 0 nếu đỉnhi không là đầu mút của cạnh e j
Trang 24Hì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ạnhe 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
1.2.3 Danh sách cạnh
Trang 25b
c a
d
6 1
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 tn về các cạnh:
đỉnh đầu, đỉnh cuối và trọng số (nếu có)
Trang 26b
c a
d
6 1
Hình 1.10 Biểu diễn đồ thị bằng danh sách kề
- 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 quicách: các đỉnh trong danh sách sẽ có số thứ tự lớn hơn đỉnh tương ứngvới danh sách đó Qui cách này sẽ giúp đảm bảo việc số ô nhớ dùng để lưutrữ đúng bằng số cạnh của đồ thị mà không bị mất mát thông tn
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 trên đồ thị
1.3.1 Các bài toán kinh điển
Trang 27Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
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
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à:
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
Trang 28Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
Bài toán đặt ra ở đây là tìm đường đi ngắn nhất, tức đường đi có tổngtrọng số nhỏ nhất, trên đồ thị có trọng số cho trước Chúng ta có ba thuậttoán kinh điển giải các bài toán này:
Trang 29Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
17
- 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 tm đườ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ặpM 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ánhữu hiệu để giải quyết Với đồ thị tổng quát, chúng ta đã có được cácthuậ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 , mỗi đỉnh đúng một lần được
Trang 30Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
18gọ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 31Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
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ểunhư sau
Cho đồ thị có trọng số G=(V, E) Hãy tm 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ướngG=(V, E) Hãy tm 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ó: x1x2, y1y2, z1z2 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
M T 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 32Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
20
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ậpI 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à Vi V j không là tập độc lập i, j haykhô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ậpthố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 33Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
21
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 ConstrainedSpanning 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ươngk 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
Trang 34Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
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 PathProblem) đượ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áckhái niệm có liên quan Trong đó, có nhiều cách biểu diễn đồ thị trên máy tính
Trang 35Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
23
như: biểu diễn đồ thị bằng ma trận liền kề, ma trận liên thuộc, danh sáchcạ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 toán trên đồ thị cũng được nghiên cứu và trình bày trong chươngnày bao gồm các bài toán kinh điển và các bài toán NP- khó
Trang 36Số hóa bởi Trung tâm Học liệu - ĐHTN ht t p : / / www lr c - tnu.edu v n/
24
CHƯƠNG 2 BÀI TOÁN LUỒNG CỰC ĐẠI TRÊN MẠNG VÀ CÁC
Mạng (network) là một đồ thị có hướngG=(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 37Giả sử cho mạng G=(V, E) Ta gọi luồng f trong mạng là ánh xạ
f:E R + gán cho mỗi cung e=(u, v) E một số thực không âmf(e) thoả mãn
các điều kiện:
- Điều kiện 1 Ràng buộc khả năng thông qua (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ó:0f(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/5 1 2/5
2 0/3 1/3 3
2/6
1/1
4 3/6 6 1/6 5
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ồngf 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.
Trang 38- Điều kiện cân bằng luồng: Ví dụ với đỉnh 4: .
- Khi đó, giá trị của luồng là:
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ồngf 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à
5/5 1 4/5
2 2/3 3/3 3
3/6
1/1
4 6/6 6 3/6 5
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ôngqua của lát cắt là:
(2)
Định lý Ford-Fulkerson.
Trang 39Giá trị luồng cực đại trong mạng không vượt quá khả năng thông quacủ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à minhhọ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à:
, đúng bằng giá trịluồng cực đại ở trên
5/5 1 4/5
2 2/3 3/3 3
3/6
1/1
4 6/6 6 3/6 5
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.1dướ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]
Edmonds–Karp[4]
Trang 402.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ư G f =(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:
- Chú ý rằng, mỗi khi có cạnh nào có trọng số bằng 0 thì sẽ bị loại khỏi
Khi đó ý tưởng thuật toán như sau: