Professional Documents
Culture Documents
Mô Hình M NG Lư I
Mô Hình M NG Lư I
Bài toán quãng đường ngắn nhất liên quan tới tìm
đường ngắn nhất trong một mạng lưới từ một đỉnh
(node) (hoặc một tập đỉnh) tới một đỉnh (hoặc một
tập đỉnh khác).
Nếu tất cả các cạnh của mạng có các giá trị không
âm thì thuật toán gắn nhãn có thể được sử dụng để
tìm quãng đường ngắn nhất từ một đỉnh tới tất cả
các đỉnh khác trong mạng lưới.
Tiêu chí tối thiểu của bài toán quãng đường ngắn
nhất không hạn chế là khoảng cách thậm chí thông
qua thuật ngữ “ngắn nhất” được sử dụng mô tả
trong thủ tục. Các tiêu chí khác bao gồm thời gian
và chi phí. (Thời gian và cả chi phí không nhất thiết
có quan hệ tuyến tính với khoảng cách.)
1
Thuật toán quãng đường ngắn nhất
Bước 2: Tính nhãn tiếp theo (d,n), cho các đỉnh có thể
nối tới trực tiếp tới đỉnh 1. d = khoảng cách trực tiếp
từ đỉnh 1 tới đỉnh đang xét – được gọi là giá trị
khoảng cách. n chỉ đỉnh ngay trước trên tuyến
đường từ đỉnh 1 – được gọi là giá trị của đỉnh trước
đó.
2
Thuật toán quãng đường ngắn nhất
3
Ví dụ: Con đường ngắn nhất
4 6
3
2
7 3 7
1 3
5 1 2
6
4 6
8
Vòng lặp 1
• Bước 1: Gán cho Đỉnh 1 nhãn cố định [0,S].
• Bước 2: Do các Đỉnh 2, 3, và 4 nối trực tiếp với
Đỉnh 1, gán nhãn dự kiến (4,1) cho Đỉnh 2; (7,1)
cho Đỉnh 3; và (5,1) cho Đỉnh 4.
4
Ví dụ: Con đường ngắn nhất
(4,1)
5
2 5
4 6
3 2
7 3 7
[0,S] 1 3 (7,1)
5 1 2
6
(5,1) 4 6
8
[4,1]
5
2 5
4 6
3 2
7 3 7
[0,S] 1 3 (7,1)
1
5 6 2
(5,1) 4 6
8
5
Ví dụ: Con đường ngắn nhất
[4,1] (9,2)
5
2 5
4 6
3 2
7 3 7
[0,S] 1 3 (7,1)
1
5 6 2
(5,1) 4 6
8
[4,1] (9,2)
5
2 5
4 6
3 2
7 3
[0,S] 1 3 (6,4) 7
1
5 6 2
[5,1] 4 6
8
6
Ví dụ: Con đường ngắn nhất
[4,1] (9,2)
5
2 5
4 6
3 2
7 3
[0,S] 1 3 (6,4) 7
1
5 6 2
[5,1] 4 6 (13,4)
8
Vòng lặp 3
• Bước 3: Đỉnh 3 có khoảng cách nhỏ nhất trong
nhãn dự kiến (6). Nó trở thành nhãn cố định mới.
7
Ví dụ: Con đường ngắn nhất
[4,1] (9,2)
5
2 5
4 6
3 2
7 3
[0,S] 1 3 [6,4] 7
1
5 6 2
[5,1] 4 6 (13,4)
8
[4,1] (8,3)
5
2 5
4 6
3 2
7 3 7
[0,S] 1 3 [6,4]
1
5 6 2
[5,1] 4 6 (12,3)
8
8
Ví dụ: Con đường ngắn nhất
[4,1] [8,3]
5
2 5
4 6
3 2
7 3 7
[0,S] 1 3 [6,4]
1
5 6 2
[5,1] 4 6 (12,3)
8
Vòng lặp 4
• Bước 4: Với mỗi đỉnh có nhãn dự kiến được nối
với đỉnh 5 bằng chỉ một cung, tính tổng chiều dài
cung cộng với giá trị khoảng cách của đỉnh 5 (là 8).
Đỉnh 6: 3 + 8 = 11 (thay nhãn dự kiến bằng
(11,5) do 11 < 12, khoảng cách hiện tại.)
Đỉnh 7: 6 + 8 = 14 (Gán nhãn dự kiến (14,5)
cho đỉnh 7 do đỉnh này chưa có nhãn).
9
Ví dụ: Con đường ngắn nhất
[4,1] [8,3]
5
2 5
6
4 3 (14,5)
2
7 3 7
[0,S] 1 3 [6,4]
1
5 6 2
[5,1] 4 6 (11,5)
8
[4,1] [8,3]
5
2 5
6
4 3 (14,5)
2
7 3 7
[0,S] 1 3 [6,4]
1
5 6 2
[5,1] 4 6 [11,5]
8
10
Ví dụ: Con đường ngắn nhất
[4,1] [8,3]
5
2 5
6
4 3 (13,6)
2
7 3 7
[0,S] 1 3 [6,4]
5 1 2
6
[5,1] 4 6 [11,5]
8
11
Bài toán Minimal Spanning Tree
Một cây là một tập các cành (cung) nối với nhau và
không hình thành vòng kín.
Một spanning tree là một cây nối tất cả các đỉnh trong
mạng.
Bài toán minimal spanning tree tìm kiếm giá trị nhỏ
nhất của tổng chiều dài các cung cần thiết để nối tất cả
các đỉnh của mạng.
Tiêu chí để tối thiểu hoá trong bài toán minimal
spanning tree không giới hạn bằng khoảng cách thậm
chí bởi khái niệm “gần nhất“ được sử dụng để mô tả
thủ tục. Các tiêu chí khác bao gồm thời gian và chi phí.
(Thời gian và chi phí không cần thiết phải là tuyến tính
so với khoảng cách.)
Bước 1: Bắt đầu tại một đỉnh bất kỳ và nối nó với đỉnh
gần nhất. Hai đỉnh được gọi là được kết nối, và các
đỉnh còn lại là các đỉnh không kết nối.
Bước 2: Xác định các đỉnh chưa được kết nối gần nhất
với một trong các đỉnh kết nối (nếu gần như nhau
chọn tuỳ ý). Lấy thêm đỉnh vào tập đỉnh kết nối. Lặp
quá trình đến khi tất cả các đỉnh được kết nối.
Lưu ý: Một bài toán có n đỉnh cần nối sẽ cần n - 1
vòng lặp các bước ở trên.
12
Ví dụ: Minimal Spanning Tree
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
13
Ví dụ: Minimal Spanning Tree
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
14
Ví dụ: Minimal Spanning Tree
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
15
Ví dụ: Minimal Spanning Tree
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
3 60
45 9
20 30
50
1 45
4 6
40 40
35
30
5 15
25 20
7
10
2 35
30
25
50 8
16
Ví dụ : Minimal Spanning Tree
3 60
45 9
20 30
50
1 45
4 6
40 40
30 35
5 15
25
7 20
10
2 35
30
50 25
8
Bài toán dòng lớn nhất liên quan tới xác định lượng
lớn nhất có thể chuyển từ một đỉnh (gọi là nguồn –
source) tới một đỉnh khác (gọi là điểm tiêu thụ - sink.
Trong bài toán dòng lớn nhất, mỗi cung có khả năng
vận chuyển lớn nhất hạn chế dòng đi qua cung.
17
Ví dụ: Dòng lớn nhất
Mô hình mạng
3
2 5
3
4 2 3 2
Source 3 4 Sink
4 3
1 4 7
3 1
3 5 1 5
3 6
6
18
Ví dụ: Dòng lớn nhất
Mô hình LP
(như bài toán Capacitated Transshipment)
• Mỗi cung có một biến.
• Mỗi đỉnh có một ràng buộc; Dòng ra phải bằng
dòng vào.
• Có một ràng buộc cho mỗi cung (trừ cung mới
thêm); dung lượng cung không được vượt.
• Mục tiêu là để tối đa hoá dòng chảy qua cung mới
thêm, sink-to-source arc.
19
Bài toán dòng lớn nhất
Mô hình LP
(như bài toán Capacitated Transshipment)
Mô hình LP
• 18 biến (cho 17 cung gốc và 1 cung thêm)
• 24 ràng buộc
• 7 ràng buộc bảo toàn dòng chảy tại đỉnh
• 17 ràng buộc dung lượng cung (cho các cung ban
đầu)
20
Ví dụ: Dòng tối đa
Mô hình LP
• Hàm mục tiêu
Max x71
• Các ràng buộc bảo toàn dòng chảy tại đỉnh
x71 - x12 - x13 - x14 = 0 (dòng vào & ra tại đỉnh 1)
x12 + x42 + x52 – x24 - x25 = 0 (đỉnh 2)
x13 + x43 – x34 – x36 = 0 (etc.)
x14 + x24 + x34 + x54 + x64 – x42 - x43 - x45 - x46 - x47 = 0
x25 + x45 – x52 – x54 - x57 = 0
x36 + x46 - x64 - x67 = 0
x47 + x57 + x67 - x71 = 0
21
Ví dụ: Dòng tối đa
2
2 5
3 1 2
Source Sink
4 3
1 4 7
1
3 1 5
10 3 6
4
22