TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
K
H
TN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
Đ
H
TẠ TRƯỜNG ĐỨC ANH - NGUYỄN NHẬT QUỲNH
–
NGHIÊN CỨU MỘT SỐ VẤN ĐỀ CỦA LÝ
C
N
TT
THUYẾT ĐỒ THỊ ỨNG DỤNG TRONG GIẢI
K
H
O
A
QUYẾT MỘT SỐ BÀI TOÁN THỰC TẾ
LUẬN VĂN CỬ NHÂN TIN HỌC
TP.HỒ CHÍ MINH, 2004
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
K
H
TN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
TẠ TRƯỜNG ĐỨC ANH _0012007
NGUYỄN NHẬT QUỲNH_0012082
Đ
H
NGHIÊN CỨU MỘT SỐ VẤN ĐỀ CỦA LÝ
THUYẾT ĐỒ THỊ ỨNG DỤNG TRONG GIẢI
C
N
TT
–
QUYẾT MỘT SỐ BÀI TOÁN THỰC TẾ
LUẬN VĂN CỬ NHÂN TIN HỌC
K
H
O
A
GIÁO VIÊN HƯỚNG DẪN
T.S DƯƠNG ANH ĐỨC
NIÊN KHÓA 2000 - 2004
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
K
H
TN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
H
……………………………………………………………………………………
……………………………………………………………………………………
Đ
……………………………………………………………………………………
–
……………………………………………………………………………………
……………………………………………………………………………………
C
N
TT
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
K
H
O
A
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
K
H
TN
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
H
……………………………………………………………………………………
……………………………………………………………………………………
Đ
……………………………………………………………………………………
–
……………………………………………………………………………………
……………………………………………………………………………………
C
N
TT
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
K
H
O
A
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
LỜI CẢM ƠN
Luận văn của chúng em sẽ rất khó hoàn thành nếu không có sự truyền đạt
kiến thức quí báu và sự hướng dẫn tận tình của Thầy Dương Anh Đức và thầy Lê
Thụy Anh. Chúng em xin chân thành cám ơn sự chỉ bảo của các thầy.
Chúng con xin gửi tất cả lòng biết ơn, sự kính trọng đến ông bà, cha mẹ,
K
H
TN
cùng toàn thể gia đình, những người đã nuôi dạy, đã cho chúng con niềm tin và
nghị lực để vượt qua mọi khó khăn.
Chúng em xin trân trọng cám ơn quý Thầy cô trong Khoa Công nghệ thông
tin trường Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng dạy,
truyền đạt những kiến thức quý báu và tạo điều kiện cho chúng em được thực hiện
luận văn này.
H
Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của
Đ
các anh chị đi trước và tất cả bạn bè. Các anh chị, các bạn luôn có mặt trong những
được luận văn.
–
thời điểm khó khăn nhất, tiếp thêm động lực và ý chí, giúp chúng tôi hoàn thành
C
N
TT
Mặc dù đã cố gắng nỗ lực hết sức mình, song chắc chắn luận văn không
khỏi còn nhiều thiếu sót. Chúng em rất mong nhận được sự thông cảm và chỉ bảo
K
H
O
A
tận tình của quý Thầy cô và các bạn.
Tp.HCM, 7/2004
Nhóm sinh viên thực hiện
Tạ Trường Đức Anh
Nguyễn Nhật Quynh
MỤC LỤC
CHƯƠNG 1 :
1.1.
1.2.
MỞ ĐẦU ....................................................................................1
Ý nghĩa và mục tiêu của đề tài..........................................................................1
Nội dung của luận văn .......................................................................................2
CHƯƠNG 2 :
TỔNG QUAN VỀ BÀI TOÁN LUỒNG TRÊN MẠNG........3
K
H
TN
2.1.
Một số khái niệm................................................................................................3
2.1.1.
Đồ thị ...........................................................................................................3
2.1.2.
Các phép biến đổi đồ thị ..............................................................................3
2.2.
Các bài toán luồng trên mạng...........................................................................4
2.3.
Một số ứng dụng cho bài toán luồng trên mạng .............................................4
2.3.1.
Đường đi ngắn nhất......................................................................................4
2.3.2.
Luồng cực đại ..............................................................................................4
2.3.3.
Luồng có chi phí cực tiểu.............................................................................6
2.3.4.
Phân công và xếp cặp...................................................................................7
2.4.
Tóm tắt chương 2 ...............................................................................................7
LUỒNG CỰC ĐẠI ....................................................................8
H
CHƯƠNG 3 :
K
H
O
A
C
N
TT
–
Đ
3.1.
Định nghĩa và ký hiệu .......................................................................................8
3.2.
Luồng và lát cắt..................................................................................................8
3.2.1.
Mạng thặng dư .............................................................................................9
3.2.2.
Lát cắt s-t......................................................................................................9
3.2.3.
Độ thông qua thặng dư của một lát cắt s-t .................................................10
3.2.4.
Luồng qua một lát cắt s-t ...........................................................................10
3.3.
Thuật toán đường tăng trưởng .......................................................................11
3.4.
Thuật toán gán nhãn và định lý lát cắt tối thiểu ...........................................12
3.4.1.
Độ phức tạp của thuật toán gán nhãn.........................................................14
3.4.2.
Hạn chế của thuật toán gán nhãn ...............................................................14
3.5.
Luồng có chặn dưới .........................................................................................15
3.5.1.
Xác định luồng cực đại ..............................................................................16
3.5.2.
Xây dựng luồng khả thi..............................................................................16
3.5.3.
Mô tả đặc điểm của luồng khả thi trên mạng lưu thông ............................17
3.6.
Cải tiến thuật toán đường tăng trưởng..........................................................19
3.6.1.
Các nhãn khoảng cách ...............................................................................20
3.6.2.
Thuật toán tỉ lệ với độ thông qua ...............................................................21
3.6.3.
Thuật toán đường đi tăng trưởng ngắn nhất...............................................23
3.6.4.
Thuật toán đẩy luồng .................................................................................25
3.7.
Tóm tắt chương 3 .............................................................................................27
CHƯƠNG 4 :
LUỒNG VỚI CHI PHÍ CỰC TIỂU ......................................28
4.1.
Giới thiệu ..........................................................................................................28
4.1.1.
Các giả thiết ...............................................................................................28
4.1.2.
Đồ thị thặng dư ..........................................................................................29
4.2.
Các điều kiện tối ưu cho bài toán ...................................................................29
4.2.1.
Các điều kiện tối ưu về chu trình âm .........................................................29
4.2.2.
Các điều kiện tối ưu về chi phí rút gọn......................................................29
4.2.3.
Các điều kiện tối ưu bổ sung......................................................................31
4.3.
Liên hệ các luồng tối ưu và các khả năng tối ưu của đỉnh ...........................31
4.4.
Thuật toán khử chu trình âm và tính chất nguyên.......................................33
4.5.
Thuật toán đường đi ngắn nhất liên tiếp .......................................................35
4.6.
Thuật toán Primal-dual...................................................................................39
4.7.
Các thuật toán cải tiến.....................................................................................42
4.7.1.
Cải tiến thuật toán đường đi ngắn nhất liên tiếp ........................................43
4.7.2.
Một số cách cải tiến khác...........................................................................43
4.8.
Tóm tắt chương 4 .............................................................................................46
CHƯƠNG 5 :
SỰ PHÂN CÔNG VÀ XẾP CẶP ...........................................48
C
N
TT
–
Đ
H
K
H
TN
5.1.
Giới thiệu ..........................................................................................................48
5.1.1.
Các cạnh bắt cặp và các nút bắt cặp...........................................................48
5.1.2.
Đường đi xen kẽ và chu trình xen kẽ .........................................................48
5.1.3.
Đường tăng trưởng.....................................................................................49
5.1.4.
Sự khác biệt đối xứng ................................................................................50
5.2.
Bài toán bắt cặp lớn nhất trên đồ thị phân đôi .............................................50
5.2.1.
Chuyển về bài toán luồng cực đại trong mạng đơn giản ...........................50
5.2.2.
Thuật toán bắt cặp lớn nhất trên đồ thị phân đôi .......................................51
5.3.
Bài toán bắt cặp có trọng số trên đồ thị phân đôi .........................................55
5.3.1.
Thuật toán đường đi ngắn nhất liên tiếp ....................................................55
5.3.2.
Thuật toán Hungary ...................................................................................55
5.3.3.
Thuật toán tỉ lệ theo chi phí .......................................................................56
5.4.
Bài toán bắt cặp trên đồ thị tổng quát ...........................................................56
5.4.1.
Các khó khăn gặp phải trong thuật toán bắt cặp trên mạng phân đôi ........57
5.4.2.
Hoa và nụ ...................................................................................................58
5.4.3.
Sự thu nhỏ nụ .............................................................................................59
5.4.4.
Thuật toán bắt cặp trên đồ thị không phân đôi...........................................60
5.5.
Tóm tắt chương 5 .............................................................................................64
CHƯƠNG 6 :
LUỒNG TỔNG QUÁT ...........................................................65
K
H
O
A
6.1.
Giới thiệu ..........................................................................................................65
6.2.
Các cấu trúc rừng tăng trưởng.......................................................................66
6.2.1.
Luồng trên đường đi ..................................................................................66
6.2.2.
Luồng trên chu trình...................................................................................68
6.2.3.
Cây tăng trưởng và rừng tăng trưởng.........................................................69
6.2.4.
Các cấu trúc rừng tăng trưởng và các điều kiện tối ưu ..............................71
6.3.
Xác định các khả năng và luồng cho một cấu trúc rừng tăng trưởng ........73
6.3.1.
Xác định khả năng của đỉnh cho một cấu trúc rừng tăng trưởng...............73
6.3.2.
Xác định luồng cho một cấu trúc rừng tăng trưởng ...................................75
6.4.
Tóm tắt chương 6 .............................................................................................80
CHƯƠNG 7 :
XÂY DỰNG ỨNG DỤNG DISTRIBUTION........................81
7.1.
Yêu cầu thực tế và lý do xây dựng ứng dụng ................................................81
7.2.
Mục tiêu của ứng dụng ....................................................................................81
7.3.
Tiếp cận bài toán..............................................................................................82
7.3.1.
Phát biểu bài toán.......................................................................................82
7.3.2.
Mô hình toán học .......................................................................................82
7.3.3.
Nhận xét .....................................................................................................83
7.3.4.
Hướng tiếp cận của luận văn......................................................................83
7.4.
Phân tích ...........................................................................................................89
7.4.1.
Yêu cầu chức năng.....................................................................................89
K
H
O
A
C
N
TT
–
Đ
H
K
H
TN
7.4.2.
Mô hình Use Case......................................................................................90
7.5.
Thiết kế .............................................................................................................97
7.5.1.
Thiết kế dữ liệu ..........................................................................................97
7.5.2.
Thiết kế xử lý ...........................................................................................102
7.5.3.
Thiết kế giao diện.....................................................................................105
7.6.
Biểu đồ tương tác ...........................................................................................111
7.6.1.
Xem thông tin các đại lý ..........................................................................111
7.6.2.
Thay đổi nhu cầu của các đại lý...............................................................113
7.6.3.
Xem thông tin các phương tiện................................................................115
7.6.4.
Thay đổi thông tin về các phương tiện ....................................................117
7.6.5.
Tìm phương pháp vận chuyển tối ưu .......................................................119
7.6.6.
Tìm đường đi ngắn nhất từ nhà cung cấp đến các đại lý .........................121
7.6.7.
Xuất lịch giao hàng ..................................................................................122
7.7.
Cài đặt .............................................................................................................123
7.8.
Hướng dẫn sử dụng .......................................................................................124
7.8.1.
Di chuyển bản đồ đến vị trí khác : ...........................................................124
7.8.2.
Phóng to, thu nhỏ bản đồ : .......................................................................124
7.8.3.
Để tìm đường đi ngắn nhất từ nhà cung cấp đến các đại lý:....................125
Để tìm đường đi ngắn nhất từ nhà cung cấp đến 1 đại lý nào đó:.....................125
7.8.4.
Để tính toán các đường đi có chi phí thấp nhất thỏa mãn nhu cầu của các
đại lý: 126
7.8.5.
Xem thông tin và cập nhật nhu cầu của tất cả các đại lý .........................127
7.8.6.
Xem, cập nhật thông tin hoặc thêm các phương tiện chuyên chở mới: ...129
7.8.7.
Xem lịch giao hàng trong ngày của các phương tiện...............................130
7.9.
Tổng kết ..........................................................................................................132
7.9.1.
Kết luận....................................................................................................132
7.9.2.
Hướng phát triển ......................................................................................132
DANH SÁCH CÁC ĐỊNH LÝ, TÍNH CHẤT, MỆNH ĐỀ
K
H
O
A
C
N
TT
–
Đ
H
K
H
TN
Tính chất 3.1. .....................................................................................................................11
Tính chất 3.2 ......................................................................................................................11
Định lý 3.3: định lý Ford – Fullkerson về lát cắt nhỏ nhất ................................................14
Định lý 3.4: định lý về đường tăng trưởng ........................................................................14
Định lý 3.5: định lý về tính nguyên ...................................................................................14
Định lý 3.6: Định lý lát cắt nhỏ nhất mở rộng ...................................................................16
Định lý 3.7: điều kiện tồn tại luồng khả thi trên mạng lưu thông......................................19
Định lý 3.8 .........................................................................................................................19
Tính chất 3.9 ......................................................................................................................21
Tính chất 3.10 ...................................................................................................................21
Định lý 4.1: Các điều kiện tối ưu về chu trình âm.............................................................29
Tính chất 4.2 .....................................................................................................................30
Định lý 4.3: Các điều kiện tối ưu với chi phí rút gọn ........................................................30
Định lý 4.4 :Các điều kiện tối ưu bổ sung .........................................................................31
Định lý 4.5: Tính chất nguyên ...........................................................................................35
Bổ đề 4.6 ...........................................................................................................................36
Bổ đề 4.7 ............................................................................................................................36
Định lý 5.1: định lý về đường tăng trưởng ........................................................................49
Tính chất 5.2 ......................................................................................................................50
Tính chất 5.3 ......................................................................................................................58
Tính chầt 5.4 ......................................................................................................................59
Bổ đề 5.5 ............................................................................................................................64
Tính chất 6.1 ......................................................................................................................67
Tính chất 6.2 ......................................................................................................................68
Tính chất 6.3 ......................................................................................................................69
Tính chất 6.4 ......................................................................................................................69
Định lý 6.5: Các điều kiện tối ưu về luồng tổng quát ........................................................71
Tính chất 6.6: Các điều kiện tối ưu về cấu trúc rừng tăng trưởng .....................................72
DANH SÁCH CÁC HÌNH
K
H
O
A
C
N
TT
–
Đ
H
K
H
TN
Hình 2-1 ...............................................................................................................................6
Hình 3-1 Mô tả mạng thặng dư............................................................................................9
Hình 3-2 Ví dụ về một lát cắt s – t.....................................................................................10
Hình 3-3 Ví dụ về một mạng tăng trưởng ....................................................................11
Hình 3-4: Bài toán luồng cực đại không có luồng tương thích..........................................15
Hình 3-5 Minh họa đồ thị thặng dư ...................................................................................22
Hình 4-1 Minh họa thuật toán Khử chu trình âm..............................................................34
Hình 4-2 Minh họa thuật toán đường đi ngắn nhất liên tiếp..............................................39
Hình 4-3 Minh họa thuật toán Primal - dual ......................................................................42
Hình 5-1 Minh họa sự bắt cặp gồm 2 phần tử ...................................................................48
Hình 5-2 Minh họa sự bắt cặp gồm 3 phần tử ...................................................................49
Hình 5-3: Chuyển đổi bài toán bắt cặp các thành phần thành bài toán luồng cực đại .......51
Hình 5-4 Phát triển 1 cây xen kẽ........................................................................................52
Hình 5-5 Hai vì dụ về hoa..................................................................................................58
Hình 5-6 Sự thu gọn hoa....................................................................................................59
Hình 5-7 Xác định 1 luồng tăng trưởng trong mạng thu gọn ............................................63
Hình 5-8 Xác định 1 đường tăng trưởng trong mạng ban đầu...........................................64
Hình 6-1: Luồng trên đường đi trong 1 đồ thị tổng quát ...................................................67
Hình 6-2 Ví dụ về cây tăng trưởng và luồng tăng trưởng..................................................70
Hình 6-3 Minh họa tính toán các khả năng của đỉnh .........................................................75
Hình 6-4 Tính luồng trên các cung thuộc cây....................................................................76
Hình 6-5 Minh họa quá trình tính luồng cho 1 cây tăng trưởng ........................................78
Hình 7-1 Mô hình bài toán phân phối hàng .......................................................................85
Hình 7-2 Biểu đồ Use Case................................................................................................90
Hình 7-3 Sơ đồ các lớp dữ liệu ..........................................................................................97
Hình 7-4 Mô tả dữ liệu tính toán .....................................................................................102
Hình 7-5 Sơ đồ lớp sử lý..................................................................................................102
Hình 7-6 Sơ đồ các màn hình ..........................................................................................105
Hình 7-7 Thực đơn của ứng dụng ....................................................................................105
Hình 7-8 Thanh công cụ của ứng dụng............................................................................106
Hình 7-9 Màn hình chính.................................................................................................108
Hình 7-10 Màn hình thay đổi nhu cầu của một đại lý .....................................................108
Hình 7-11 Màn hình thay đổi nhu cầu của tất cả các đại lý.............................................109
Hình 7-12 Màn hình xem thông tin, cập nhật thêm mới phương tiện .............................110
Hình 7-13 Màn hình xem lịch giao hàng tối ưu về chi phí ..............................................110
Hình 7-14 Sequence Diagram: Xem thông tin các đại lý ................................................111
Hình 7-15 Collaboration Diagram: Xem thông tin các đại lý..........................................112
Hình 7-16 Sequence Diagram: Thay đổi nhu cầu của các đại lý .....................................113
Hình 7-17 Collaboration Diagram: Thay đổi nhu cầu của các đại lý ..............................114
Hình 7-18 Sequence Diagram: Xem thông tin các phương tiện ......................................115
Hình 7-19 Collaboration Diagram: Xem thông tin các phương tiện ...............................116
Hình 7-20 Sequence Diagram: Thay đổi thông tin về các phương tiện...........................117
Hình 7-21 Collaboration Diagram: Thay đổi thông tin về các phương tiện ....................118
Hình 7-22 Sequence Diagram: Tìm phương pháp vận chuyển tối ưu .............................119
Hình 7-23 Collaboration Diagram: Tìm phương pháp vận chuyển tối ưu.......................120
Hình 7-24 Sequence Diagram: Tìm đường đi ngắn nhất từ nhà cung cấp đến các đại lý121
Hình 7-25 Collaboration Diagram: Tìm đường đi ngắn nhất từ nhà cung cấp đến các đại
lý ......................................................................................................................................121
K
H
O
A
C
N
TT
–
Đ
H
K
H
TN
Hình 7-26 Sequence Diagram: Xuất lịch giao hàng ........................................................122
Hình 7-27 Collaboration Diagram: Xuất lịch giao hàng..................................................123
Hình 7-28 Màn hình chính..............................................................................................124
Hình 7-29 Đường đi ngắn nhất từ nhà cung cấp đến các đại lý.......................................125
Hình 7-30 Đường đi ngắn nhất từ nhà cung cấp đến một đại lý......................................126
Hình 7-31 Đường đi có chi phí thấp nhất ........................................................................127
Hình 7-32 Màn hình cập nhật thông tin các đại lý...........................................................128
Hình 7-33 Màn hình cập nhật nhu cầu cho 1 đại lý .........................................................129
Hình 7-34 Màn hình thêm mới, cập nhật thông tin cho các phương tiện ........................130
Hình 7-35 Màn hình hiển thị lịch giao hàng ....................................................................131
Hình 7-36 Lịch giao hàng dưới dạng văn bản .................................................................131
BẢNG TỪ ANH_VIỆT
Tiếng Anh Tiếng Việt
Admissible path Đường đi có thể chấp nhận
Advance Tiến tới
Alternating tree Cây xen kẽ
K
H
TN
Alternating Xen kẽ
Assigment Sự phân công
Augmented forest structures Các cấu trúc rừng tăng trưởng
Augmenting path algorithm Thuật toán đường tăng trưởng
Bucket Ngăn
H
Capacity Độ thông qua
Composite cost Chi phí kết hợp
Đ
Cut Lát cắt
–
Cycle-canceling Khử chu trình
Decomposition Sự phân rã
C
N
TT
Distance label Nhãn khoảng cách
Feasible flow Luồng khả thi
Feasible solution Lời giải khả thi
Flower and blossom Hoa và nụ
K
H
O
A
Flows with lower bound Luồng có chặn dưới
Generalized flow Luồng tổng quát
Label-correcting algorithm Thuật toán hiệu chỉnh nhãn
Label-setting algorithm Thuật toán gán nhãn
Matching Sự bắt cặp
Network flows Luồng trên mạng
Nonsaturating Chưa bão hòa
NP-complete NP-đầy đủ
ε -optimal flows Luồng tối ưu ε
Priority list Danh sách ưu tiên
Pseudoflow Luồng giả
Reduced cost Chi phí rút gọn
Residual capacity Độ thông qua thặng dư
Residual network Mạng thặng dư
Retreat Quay lui
∆ -scaling phase Pha tỉ lệ ∆
K
H
TN
Saturating Bão hòa
K
H
O
A
C
N
TT
–
Đ
H
Symmetric difference Sự khác biệt đối xứng
CHƯƠNG 1: MỞ ĐẦU
CHƯƠNG 1 :
1.1.
MỞ ĐẦU
Ý nghĩa và mục tiêu của đề tài
Lý thuyết đồ thị là ngành khoa học xuất hiện từ lâu nhưng lại có nhiều ứng
dụng hiện đại. Những ý tưởng cơ bản của nó được đưa ra từ thế kỷ 18 bởi nhà toán
K
H
TN
học Thụy Sĩ Leonhard Euler. Ông đã dùng đồ thị để giải quyết bài toán cây cầu
Konigsberg nổi tiếng. Từ đó lý thuyết đồ thị ngày càng khẳng định được vị trí
quan trọng của mình trong việc áp dụng để giải các bài toán thực tế nhờ vào việc
tìm ra ngày càng nhiều của các định lý, công thức và thuật toán.
Một bộ phận quan trọng của lý thuyết đồ thị là dạng bài toán luồng trên
H
mạng, xuất hiện từ những nghiên cứu của Gustav Kirchhoff, và được những nhà
nghiên cứu tiên phong như Lester Ford và Ray Fulkerson phát triển thành một lĩnh
Đ
vực khoa học độc lập. Bài toán này có nhiều biến thể như: bài toán luồng có chi
–
phí cực tiểu, bài toán đường đi ngắn nhất, bài toán luồng cực đại, bài toán vận
chuyển, bài toán luồng tổng quát, bài toán luồng nhiều mặt hàng…
C
N
TT
Với sự xuất hiện ngày càng nhiều của các hệ thống mạng như: hệ thống
mạng điện, mạng sản xuất và phân phối hàng hóa, mạng giao thông …, và phổ
biến nhất hiện nay là mạng internet đã làm nảy sinh ra nhu cầu vận chuyển các
chất liệu trên các mạng này sao cho đạt hiệu quả cao nhất; chất liệu ở đây có thể là
dòng điện, dữ liệu, hàng hóa…; hiệu quả ở đây có thể xét theo tiêu chuẩn về thời
K
H
O
A
gian, độ dài quãng đường, chi phí tiền bạc, mức độ an toàn…, bài toán luồng trên
mạng ngày càng khẳng định được tính quan trọng của nó trong các ngành khoa học
hiện đại. Sự phát triển mạnh mẽ của ngành công nghệ thông tin cùng với khả năng
tính toán rất nhanh của máy tính đã giúp việc giải quyết các bài toán luồng trên
mạng hiệu quả hơn và đem lại nhiều ứng dụng thực tiễn hơn.
Với sự hướng dẫn của Tiến sĩ Dương Anh Đức, chúng em đã tập trung thực
hiện đề tài “NGHIÊN CỨU MỘT SỐ VẤN ĐỀ CỦA LÝ THUYẾT ĐỒ THỊ
ỨNG DỤNG TRONG VIỆC GIẢI QUYẾT BÀI TOÁN THỰC TẾ” nhằm tìm
hiểu, thử nghiệm và ứng dụng các thuật toán của bài toán luồng trên mạng, nhất là
bài toán luồng có chi phí cực tiểu, dạng tổng quát nhất của bài toán luồng trên
1
CHƯƠNG 1: MỞ ĐẦU
mạng, trong đó bao gồm việc xây dựng ứng dụng Distribution phục vụ cho việc
lập kế hoạch giao hàng của nhà phân phối đến các đại lý với chi phí tối thiểu.
1.2.
Nội dung của luận văn
Luận văn gồm 7 chương:
Chương 1: Mở đầu giới thiệu tổng quan về đề tài.
K
H
TN
Chương 2: Tổng quan về lý thuyết đồ thị giới thiệu một số khái niệm,
phép biến đổi được sử dụng trong bài toán luồng trên mạng và một số lớp bài toán
luồng trên mạng cùng ứng dụng của chúng.
Chương 3: Bài toán luồng cực đại mô tả bài toán luồng cực đại, giới thiệu
khái niệm lát cắt cùng với thuật toán tổng quát, và đưa ra một số thuật toán cải tiến
H
để giải bài toán này.
Chương 4: Bài toán luồng có chi phí cực tiểu định nghĩa bài toán luồng
Đ
có chi phí cực tiểu, các điều kiện tối ưu của bài toán, các thuật giải tổng quát và
–
một số cải tiến nhằm tối ưu hóa thời gian chạy của thuật toán.
Chương 5: Bài toán phân công và bắt cặp giới thiệu 3 dạng tiêu biểu là
C
N
TT
bài toán bắt cặp lớn nhất trên đồ thị phân đôi, bài toán bắt cặp có trọng số trên đồ
thị phân đôi, bài toán bắt cặp trên đồ thị tổng quát. Chương này cũng đưa ra một ví
dụ và các thuật toán để giải các bài toán này.
Chương 6: Luồng tổng quát tập trung vào các cấu trúc cây tăng trưởng và
rừng tăng trưởng, cách xác định khả năng và luồng cho một cấu trúc rừng tăng
K
H
O
A
trưởng.
Chương 7: Xây dựng ứng dụng Distribution trình bày về thuật toán cơ
bản để xây dựng nên chương trình, cơ sở dữ liệu, hướng dẫn sử dụng chương trình.
2
CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ
CHƯƠNG 2 :
TỔNG QUAN VỀ BÀI TOÁN
LUỒNG TRÊN MẠNG
2.1.
Một số khái niệm
đổi đồ thị sẽ được sử dụng trong luận văn:
2.1.1.
Đồ thị có hướng và vô hướng.
Đỉnh đầu và đỉnh cuối.
Bậc của đỉnh.
Đường đi.
Chu trình.
Sự liên thông.
Lát cắt.
–
Đ
H
C
N
TT
2.1.2.
Đồ thị
K
H
TN
Trong phần này, chúng ta liệt kê một số khái niệm cơ bản và các phép biến
Cây.
Mạng thặng dư.
Các phép biến đổi đồ thị
Một số phép biến đổi đồ thị được sử dụng nhằm biến đổi một đồ thị tổng
K
H
O
A
quát thành một đồ thị đơn giản, nhờ đó, ta có thể áp dụng các thuật toán vào những
đồ thị này. Đó là các phép biến đổi:
Loại bỏ chặn dưới khác 0 của cạnh.
Loại bỏ chặn trên của cạnh.
Đảo cạnh.
Tách nút.
3
CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ
2.2.
Các bài toán luồng trên mạng
Các bài toán thuộc lớp bài toán luồng trên mạng:
Bài toán luồng có chi phí cực tiểu (minimum cost flow
problem).
Bài toán đường đi ngắn nhất (shortest path problem).
Bài toán luồng cực đại (maximum flow problem).
Bài toán phân công (assignment problem).
Bài toán vận tải (transportation problem).
Bài toán lưu thông (circulation problem).
Bài toán luồng đa hàng hóa (multicommodity flow problem).
Bài toán cây khung tối tiểu (minimum spanning tree
H
K
H
TN
problem).
Đ
Một số ứng dụng cho bài toán luồng trên mạng
–
2.3.
Bài toán cặp ghép (matching problem).
2.3.1.
C
N
TT
Bài toán luồng trên mạng có rất nhiều ứng dụng trong thực tế. Có những bài toán
ta dễ dàng nhận thấy sự hiện diện của mạng, nhưng cũng có những bài toán mạng
bị che khuất bởi phát biểu của nó. Để áp dụng được các thuật toán luồng trên mạng
ta phải thiết lập được mô hình mạng cho các bài toán này. Sau đây là một số ứng
dụng thực tế, được trình bày theo các lớp bài toán luồng trên mạng.
Đường đi ngắn nhất
K
H
O
A
Bài toán chở hàng trên tàu.
Lập lịch cho tổng đài viên.
Xếp sách trong thư viện.
Bài toán đổi tiền (có thể ứng dụng với máy bán hàng tự động).
2.3.2.
Luồng cực đại
2.3.2.1.
Ứng dụng 1 : Luồng khả thi
Bài toán luồng khả thi là bài toán xác định một luồng trên mạng thỏa mãn
các ràng buộc sau :
∑
{ j:(i , j )∈A}
xij −
∑ xij = b(i)∀i ∈ N
(2.1)
{ j:( j ,i )∈A}
4
CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ
0 ≤ xij ≤ u ij ∀(i, j ) ∈ A
(2.2)
∑ b(i) = 0
Trong đó :
i∈N
Ta có thể giải bài toán luồng khả thi bằng cách tìm luồng cực đại trên một
mạng G’ như sau: ta thêm vào hai nút mới, một nút nguồn s và một nút đích t. Với
mỗi nút có b(i) > 0, ta thêm vào cung (s,i) với độ thông qua là b(i), và với mỗi nút
K
H
TN
b(i) có b(i) < 0, ta thêm vào cung (i,t) với độ thông qua là –b(i). Sau đó giải bài
toán luồng cực đại truyền từ s đến t trên mạng này. Nếu tất cả các cung (s,i) và (j,t)
đều bão hoà (nghĩa là xsi = usi và xjt = ujt ) thì bài toán có luồng khả thi, ngược lại là
không có luồng khả thi.
Bài toán luồng khả thi có một số ứng dụng thực tế, chẳng hạn: ứng dụng về
H
phân phối hàng hoá. Trên một mạng lưới các hải cảng một số cảng có hàng hoá
khác mà những cảng khác cần. Ta biết lượng hàng có tại các cảng, biết nhu cầu về
Đ
các loại hàng hoá này cũng như biết khả năng vận chuyển tối đa trên mỗi tuyến
C
N
TT
cấp trong mạng hay không.
–
đường. Ta cần biết liệu có thể đáp ứng được mọi nhu cầu dựa trên các nguồn cung
2.3.2.2.
Ứng dụng 2 : Bài toán bầu chọn đại biểu
Một thị trấn có r cư dân : R1 , R2 , …, Rr; q câu lạc bộ : C1 , C2 ,…, Cq; và p
đảng phái chính trị : P1 , P2 , …, Pp.
Mỗi người dân tham gia ít nhất 1 CLB và theo duy nhất một đảng. Mỗi
K
H
O
A
CLB phải chọn 1 trong số các thành viên của nó làm đại diện cho hội đồng thị trấn
sao cho số thành viên hội đồng của một đảng Pk không quá uk người.
Bài toán đặt ra nhằm trả lời: có thể tìm đựơc một hội đồng đáp ứng được
yêu cầu trên hay không?
Giả sử r = 7 , q = 4 , p = 3 .
Ta biểu diễn bài toán trên như sau :
5
Đ
H
K
H
TN
CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ
C
N
TT
Ri biểu diễn cho cư dân i
–
Hình 2-1
Cj biểu diễn cho câu lạc bộ j
Pk biểu diễn cho tổ chức chính trị k
Cạnh (Ci, Rj) cho biết cư dân Rj là thành viên của câu lạc bộ Cj.
Cạnh (Rj, Pk) cho biết cư dân Rj tham gia đảng Pk.
K
H
O
A
Cạnh (Pk, t) có trọng lượng là uk đơn vị .
Các cạnh còn lại có trọng lượng 1 đơn vị .
Bài toán trên giải bằng cách giải bài toán luồng cực đại từ đỉnh s đến đỉnh t.
Nếu luồng cực đại có giá trị bằng q thì ta có lời giải tối ưu .
2.3.3.
Luồng có chi phí cực tiểu
Ứng dụng của bài toán luồng có chi phí cực tiểu là bài toán giao hàng từ
một nhà phân phối đến các đại lý sẽ được mô tả chi tiết trong phần chương trình
ứng dụng.
6
CHƯƠNG 2: TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ
2.3.4.
Phân công và xếp cặp
Trong một số trường hợp, chúng ta muốn phân bổ con người với các công
việc, phòng ở hoặc với một người khác. Mỗi sự phân công này đều được đánh giá
mức độ hợp lý và chúng ta mong muốn phân công sao cho đạt được mức đánh giá
cao nhất. Sau đây là một số ứng dụng về phân công nhân sự. Ví dụ:
K
H
TN
Một công ty cần thuê n nhân viên cho n chỗ làm dựa trên các cuộc kiểm tra
về khả năng , điểm tốt nghiệp và thư giới thiệu. Dùng chỉ số uij biểu diễn sự phân
công nhân viên i vào công việc j. Giá trị của uij là sự đánh giá cho sự phân công
này. Mục tiêu của chúng ta là xác định một cách phân công sao cho tổng chỉ số uij
là lớn nhất.
Một huấn luyện viên bơi lội phải lựa chọn từ 8 vận động viên xuất sắc nhất
H
một đội bơi tiếp sức gồm 4 người. Mỗi người sẽ bơi một kiểu (bơi sấp, bơi ngửa,
Đ
bơi bướm, bơi tự do). Huấn luyện viên biết rõ thời gian cho mỗi vận động viên
thực hiện kiểu bơi của mình. Vấn đề đặt ra là phải tìm ra một đội với các vận động
–
viên và thứ tự bơi phù hợp sao cho tổng thời gian tiếp sức giữa hai kiểu bơi là ít
C
N
TT
nhất. Nhận thấy bài toán phân công này có |N1|>|N2|. Tuy nhiên, chúng ta có thể
thêm vào một số các nút giả nhằm làm cho |N1| = |N2| .
2.4.
Tóm tắt chương 2
Trong chương 2, chúng em liệt kê một số khái niệm, và một số phép biến
đổi đồ thị mà chúng em sẽ dùng trong luận văn này. Ngoài ra, chúng em cũng mô
K
H
O
A
tả sơ lược về một số ứng dụng của bài toán luồng trên mạng trong thực tế. Các
thuật toán để giải các bài toán này sẽ được chúng em trình bày trong các chương
sau.
7
- Xem thêm -