BÀI TẬP TOÁN RỜI RẠC
---&0&--
CHƯƠNG 4:
MỘT SỐ BÀI
MỘT SỐ BÀI
TOÁN TỐI ƯU
TOÁN TỐI ƯU
TRÊN ĐỒ THỊ
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
* 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:
L(a) L(b) L(c) L(d) L(e) L(g) L(h) L(k)
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ a
- 4 ∞ ∞ ∞ 11 2 ∞ b
- 4 ∞ 7 ∞ 9 - 3 c
- 4 5 7 15 9 - - d
- - 5 7 15 9 - - e
- - - 7 15 8 - - g
- - - - 14 8 - - h
- - - - 13 - - - k
b
a
k
h
c
e
g
d
4
3
2
4
2
1
11
5
7
12
2
7
3
4
5
* 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:
L(a) L(b) L(c) L(d) L(e) L(f) L(g) L(h) L(i) L(k)
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ a
- 1 10 6 3 ∞ ∞ ∞ ∞ ∞ b
- - 10 6 3 5 ∞ ∞ ∞ ∞ c
- - 10 5 - 5 ∞ 9 11 ∞ d
- - 9 - - 5 ∞ 8 11 ∞ e
- - 6 - - - 7 7 11 10 f
- - 6 - - - - 7 11 9 g
- - 6 - - - - - 11 9 h
- - - - - - - - 10 9 i
10 - k
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
5
2
8
5
* 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)
0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞
A
- 7 ∞ ∞ ∞ 4 ∞ ∞ ∞ 1 ∞ ∞ ∞ ∞
B
- 7 ∞ ∞ ∞ 3 ∞ ∞ ∞ - 3 ∞ ∞ ∞
C
- 6 ∞ ∞ ∞ - ∞ ∞ ∞ - 3 ∞ ∞ ∞
D
- 6 ∞ ∞ ∞ - 7 ∞ ∞ - - 12 ∞ ∞
E
- - 9 ∞ ∞ - 7 ∞ ∞ - - 12 ∞ ∞
F
- - 9 ∞ ∞ - - ∞ ∞ - - 12 ∞ ∞
G
- - - 17 ∞ - - 15 ∞ - - 11 ∞ ∞
H
- - - 17 ∞ - - 14 ∞ - - - 16 ∞
I
- - - 16 ∞ - - - ∞ - - - 16 ∞
J
- - - - 19 - - - 18 - - - 16
K
- - - - 19 - - - 18 - - - - 23
L
- - - - 19 - - - - - - - - 20
M
- - - - - - - - - - - - - 20
N
* Bài 4:
A
F
J
G H I
K
B
L
C
M
D
N
E
7 3 8 3
2 9 5 7
1 4 2 2 3
4 3 2 2 5 2 2 5
2
3
4
5 3 4 3 2
Tì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à:
A B C D E F G
A 3 6
B 3 2 4
C 6 2 1 4 2
D 4 1 2 4
E 4 2 2 1
F 2 2 4
G 4 1 4
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)
L(A) L(B) L(C) L(D) L(E) L(F) L(G)
∞ 0 ∞ ∞ ∞ ∞ ∞ A
3 - 2 4 ∞ ∞ ∞ B
3 - - 3 6 4 ∞ C
- - - 3 6 4 ∞ D
- - - - 5 4 6 E
- - - - 5 - 6 F
- - - - - - 6 G
• Cách 2: (Dùng thuật toán Floyd)
Ta có ma trận trọng số của đồ thị:
B
A
a
D F
G
EC
6
3
2
4
1
4
2
2
1
4
4
A B C D E F G
A 3 6
B 3 2 4
C 6 2 1 4 2
D 4 1 2 4
E 4 2 2 1
F 2 2 4
G 4 1 4
W=W
0
Áp dụng thuật toán Floyd ta có:
A B C D E F G
A 3 6
B 3 6 2 4
C 6 2 12 1 4 2
D 4 1 2 4
E 4 2 2 1
F 2 2 4
G 4 1 4
W
1
A B C D E F G
A 6 3 5 7
B 3 6 2 4
C 5 2 4 1 4 2
D 7 4 1 8 2 4
E 4 2 2 1
F 2 2 4
G 4 1 4
W
2
A B C D E F G
A 6 3 5 6 9 7
B 3 4 2 3 6 4
C 5 2 4 1 4 2
D 6 3 1 2 2 3 4
E 9 6 4 2 8 2 1
F 7 4 2 3 2 4 4
G 4 1 4
W
3
A B C D E F G
A 6 3 5 6 8 7 10
B 3 4 2 3 5 4 7
C 5 2 2 1 3 2 5
D 6 3 1 2 2 3 4
E 8 5 3 2 4 2 1
F 7 4 2 3 2 4 4
G 10 7 7 4 1 4 8
W
4
A B C D E F G
A 6 3 5 6 8 7 9
B 3 4 2 3 5 4 6
C 5 2 2 1 3 2 4
D 6 3 1 2 2 3 3
E 8 5 3 2 4 2 1
F 7 4 2 3 2 4 3
G 9 6 4 3 1 3 2
W
5
=W
6
A B C D E F G
A 6 3 5 6 8 7 9
B 3 4 2 3 5 4 6
C 5 2 2 1 3 2 4
D 6 3 1 2 2 3 3
E 8 5 3 2 2 2 1
F 7 4 2 3 2 4 3
G 9 6 4 3 1 3 2
W
7
=W
*
* Bài 5:
Tìm W
*
bằng cách áp dụng thuật toán Floyd vào đồ thị sau:
Lời giải:
Ta có ma trận trọng số của đồ thị trên là: (những ô trống là ∞)
A B C D E F
A 3 1 20
B 8 2
C 6 8
D
E 4 3
F 5 13
W
Áp dụng thuật toán Floyd ta có:
A B C D E F
A 3 1 20
B 8 2
C 6 8
D
E 4 3
F 5 13
W
0
=W
1
=W
A
E
F
B C
D
3
1
2
0
8
6
13
43
5
8
2