* Bài 3:Cho đồ thị có trọng số như hình dưới đây.Hãy tìm đường đi ngắn nhất từ đỉnh A đến đỉnh N... * Bài 6:Giải bài toán mạng vận tải sau bằng thuật toán Ford-Fulkerson với luồng vận tả
Trang 1BÀI TẬP TOÁN RỜI RẠC
-&0& CHƯƠNG 4:
MỘT SỐ BÀI TOÁN TỐI ƯU
TRÊN ĐỒ THỊ
Giảng viên : Nguyễn Mậu Hân
Sinh viên thực hiện : Nguyễn Thị Diệu Hằng
Lớp : Tin K30D
Trang 2* Bài 1:
Dùng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh a đến các đỉnh khác trong đồ thị sau:
Lời giải:
b
a
k
h
c
e
g
d
4
4
2 1
11
5
7
12
2
7
3
4
5
Trang 3* Bài 2:
Dùng thuật toán Dijkstra tìm đường đi ngắn nhất từ đỉnh a đến các đỉnh trong đồ thị sau:
Lời giải:
a
c
b
g
d
i
f
h
e
k
1 10
6
3
2 4
10
4
1 4 1 3 6 8
5
3
2
8 5
Trang 4* Bài 3:
Cho đồ thị có trọng số như hình dưới đây.Hãy tìm đường đi ngắn nhất
từ đỉnh A đến đỉnh N
Lời giải:
L(A) L(B) L(C) L(D) L(E) L(F) L(G) L(H) L(I) L(J) L(K) L(L) L(M) L(N)
* Bài 4:
A
F
J
K
B
L
C
M
D
N
E
Trang 5Tìm đường đi ngắn nhất từ B đến các đỉnh khác của đồ thị có ma trận trọng số là:
Lời giải:
Từ ma trận trọng số trên, ta có thể vẽ ra đồ thị tương ứng như sau:
Ta có thể giải bài toán theo 2 cách:
• Cách 1: (Dùng thuật toán Dijkstra)
• Cách 2: (Dùng thuật toán Floyd)
Ta có ma trận trọng số của đồ thị:
B
A a
G
E C
6
4
1
4
2
2
1
4 4
Trang 6A B C D E F G
Áp dụng thuật toán Floyd ta có:
W1
W2
W3
Trang 7A 6 3 5 6 8 7 10
W4
W5=W6
W7=W*
* Bài 5:
Tìm W* bằng cách áp dụng thuật toán Floyd vào đồ thị sau:
Trang 8Lời giải:
Ta có ma trận trọng số của đồ thị trên là: (những ô trống là ∞)
D
W
Áp dụng thuật toán Floyd ta có:
D
W0=W1=W
A
E
F
D 3
1
2 0
8
6 13 4
3
5
8 2
Trang 9A B C D E F
D
W2
D
W3
D
W4=W5
D
W6=W*
Trang 10* Bài 6:
Giải bài toán mạng vận tải sau bằng thuật toán Ford-Fulkerson với luồng vận tải khởi đầu bằng 0:
φ
( Khả năng thông qua của các cung là các số màu xanh)
Lời giải:
Luồng φ có đường đi (V0, V1), (V1, V5), (V5, V7) gồm các cung chưa bão hòa Nâng luồng φ lên 4 đơn vị để có luồng φ1:
φ1
Xét xích α=(V0, V1, V4, V2, V6, V7) Nâng luồng φ1 lên 2 đơn vị ta có được luồng φ2:
V
3
V
4
V
0
V
2
V
6
V
7
V
1
V
5
8
4
2
6
4
6
8
2
4
3 4
V
3
V
4
V
0
V
2
V
6
V
7
V
5
8
4
2
6
4
6
8
2
4
3 4
V
1
+5 4
4
4 0
Trang 11Xét xích β=(V0, V1, V5, V3, V4, V7) Nâng luồng φ2 lên 2 đơn vị ta có luồng φ3:
φ3
V
3
V
4
V
0
V
2
V
6
V
7
V
5
8
4
2
6
4
6
8
2
4
3 4
V
1
+0
+1
+4
6
4
4
+2
0
2
2 2
2
V
1
V
4
V
2
V
6
V
0
V
7
Xích α
0
+0
+2
+6
0+2
0+2 4+2
V
3
V
4
V
0
V
2
V
6
V
7
V
5
8
4
2
6
4
6
8
2
4
3 4
V
1
+0
+1
+4
8
6
4
+2
0
2
2
2 2
2
2
2
Trang 12Xét xích γ=(V0, V3, V6, V7) Nâng luồng φ3 lên 2 đơn vị ta có luồng
φ4:
φ4
Xét xích θ=(V0, V2, V6, V7) Nâng luồng φ4 lên 4 đơn vị ta có luồng φ5
V
1
V
5
V
4
V
0
V
7
0
+0
+3
+4 4 6+2
4+2
0+2
Xích β
V
3
V
4
V
0
V
2
V
6
V
7
V
5
8
4
2
6
4
6
8
2
4
3 4
V
1
+0
+1
+4
8
6
4
+2
0
2
2
2 2
2
2
4
2
2
V
0
V
3
V
6
V
7
Xích γ
Trang 13Tiếp theo ta chỉ có thể đánh dấu được V0 nên quá trình nâng luồng kết thúc và ta được giá trị của luồng cực đại là:
φ5=8+4+2=14
* Bài 7:
Giải bài toán mạng vận tải sau bằng thuật toán Ford-Fulkerson với luồng vận tải khởi đầu được cho kèm theo:
(giá trị thông qua là các số màu đỏ)
V
3
V
4
V
0
V
2
V
6
V
7
V
5
8
4
2
6
4
6
8
2
4
3 4
V
1
+0
+1
+4
8
6
4
+2
0
2
2
2
2 2
6
8
2
2 4
V
1
V
9
V
8
V
7
V
6
V
4
V
3
V
5
V
0
V
2
10
4
6
10
5
8
28
15 20
10
30 6
15
15
12
3
1 4
20
2
6
7
8
8
6
6 8
2
0
16
2
16
8
2
0
0
2
0
3
25
7 2
0 0
2 0
Trang 14Lời giải:
Luồng φ có đường đi (V0, V1), (V1, V3), (V3, V7), (V7, V10), (V10, V9), (V9, V11) bao gồm các cung chưa bão hòa Ta có thể nâng luồng φ lên 2 đơn
vị để có luồng φ1:
φ1
Xét xích α=(V0, V5, V8, V9, V11) Nâng luồng φ1 lên 2 đơn vị ta được luồng φ2:
V
1
V
11
V
9
V
8
V
7
V
6
V
4
V
3
V
5
V
0
V
2
10
4
6
10
5
8
28
15 20
10
30 6
15
15
12
3
1 4
20
2
6
7
8
10
6
6 8
16
2
16
8
2
0
0
2
2
3
25
7 2
2 0
0 2
0
+0
+1
+3
+7
-10
+9
V
0
V
5
V
8
V
9
V 11
0
+0
+5
+8
+9
Xích α
2+2
2+2
Trang 15Xét xích β=(V0, V6, V7, V3, V4, V11).Nâng luồng φ2 lên 2 đơn vị ta được φ3:
V
1
11
V
9
V
8
V
7
V
6
V
4
V
3
V
5
V
0
V
2
10
4
6
10
5
8
28
15 20
10
30 6
15
15
12
3
1 4
20
2
6
7
8
10
6
6 8
16
4
16
8
4
0
0
4
2
3
25
7 2
2 0
0 4
0
+0
+8
+9 +5
V
0
V
6
V
3
V
4
V
11
0
+0
+6
-7
+3
+4
Xích β
16+2
16+2
25+2
Trang 16Tiếp theo ta chỉ có thể đánh dấu V0 nên quá trình nâmg luồng kết thúc
và ta có giá trị luồng cực đại là:
* Bài 8:
Hãy giải bài toán người du lịch với 6 thành phố có số liệu cho trong
ma trận trọng số sau:
22 11 ∞ 33 7 0
23 14 27 ∞ 20 21
14 44 29 46 ∞ 3
25 3 4 7 8 ∞
V
1
11
V
9
V
8
V
7
V
6
V
4
V
3
V
5
V
0
V
2
10
4
6
10
5
8
28
15 20
10
30 6
15
15
12
3
1 4
20
2
6
7
8
10
6
6 8
18
4
18
8
4
0
0
4
0
3
27
7 2
2 0
0 4
+4 +6
+0
Trang 17Lời giải:
Ma trận trọng số M:
* Ma trận rút gọn M’:
Tổng hằng số rút gọn s=49
Trong M’ có m’14=m’21=m’24=m’36=m’42=m’56=m’62=m’63=m’65=0
θ14=10 θ21=2 θ24=0 θ36=2 θ42=1 θ56=4
θ62=0 θ63=12 θ65=1
Ta thấy θ63=12là lớn nhất Vậy chọn ô (6,3) để phân nhánh Cận dưới của nhánh không chứa (6,3) là s+θ63=49+12=61.Xóa dòng 6 cột 3 rồi đặt m'36=∞
Tập các hành trình
Cận dưới =49
Cận dưới=49 Cận dưới=61
Trang 18* Ma trận rút gọn M'':
Tổng hằng số rút gọn s''=2
m''14=m''21=m''24=m''35=m''42=m''56=0
Ta thấy θ56=11 là lớn nhất Vậy chọn ô (5,6) để phân nhánh.Cận dưới của nhánh chứa (5,6) là 49+2=51.Cận dưới của nhánh không chứa cạnh (5,6) là 51+11=62.Xóa dòng 5 cột 6, sau đó đặt m''35=∞
Hành trình chứa (6,3)
Cận dưới=49
Cận dưới=51 Cận dưới =62
* Ma trận rút gọn M''': Tổng hằng số rút gọn s'''=10
Trong ma trận trên có m'''14=m'''21=m'''24=m'''42=0
Trang 19Ta thấy θ45=12 là lớn nhất Vậy chọn ô (4,5) để phân nhánh.Cận dưới của nhánh chứa (4,5) là 51+10=61.Cận dưới của nhánh không chứa cạnh (4,5) là 61+12=73 Xóa dòng 4 cột 5, sau đó đặt m'''34 = ∞
Hành trình chứa (5,6)
Cận dưới=51
Cận dưới=61 Cận dưới=73
* Ma trận rút gọn M'''':
Trong ma trận trên có:
Tổng hằng số rút gọn s''''=0
m''''21=m''''32 =m''''14 =m''''24 =0
Ta thấy θ32=15 là lớn nhất nên ta chọn ô (3,2) để tiếp tục phân nhánh.Cận dưới của nhánh chứa (3,2) là 61 Xóa dòng 3 cột 2 , sau đó đặt m''''24=∞ Cận dưới của nhánh không chứa (3,2) là 61+15=76
Hành trình chứa (1,4)
Cận dưới=51
Cận dưới=61 Cận dưới=76
* Ma trận rút gọn M''''': Tổng hằng số rút gọn s'''''=0
Trang 201 4
Hai cạnh còn lại của chu trình không phải chọn nữa mà được đưa vào chu trình
Ở đây ta có các cạnh (6,3), (5,6), (4,5), (3,2), (1,4), (2,1)
Vậy ta được chu trình: 6, 3, 2, 1, 4, 5, 6 với chi phí 61 là tối ưu