Professional Documents
Culture Documents
Toan-Roi-Rac Nguyen-Van-hieu c9 TRR 17 DD - (Cuuduongthancong - Com)
Toan-Roi-Rac Nguyen-Van-hieu c9 TRR 17 DD - (Cuuduongthancong - Com)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
1
Nội dung
q Giới thiệu
q Bài toán
q Thuật toán Dijkstra
q Thuật toán Bellman-Ford
q Thuật toán Floyd – Warshall
q Ứng dụng
q Input:
G = (V,E,W),
w(i,j)>0,∀ (𝑖, 𝑗) ∈ E,
𝑎, 𝑧 ∈ V,
qOutput:
L(z),
đường đi từ a đến z (nếu có)
Step 2
m = min {L(u),u∈ 𝑇}
§ Nếu m=+∞ → 𝐾𝑇, ∄ đườ𝑛𝑔 đ𝑖 𝑡ừ 𝑎 đê𝑛 𝑧
§ Nếu m<+∞ →
- chọn v ∈ 𝑇: 𝐿 𝑣 = 𝑚,
- T = T- {v}
- step 3
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
11
Thuật toán Dijkstra
Step 3
§ Nếu v = z → 𝐾𝑇 và L(z), P(z)
(𝑧$ = 𝑃 𝑧 , 𝑧& = 𝑃 𝑧$ ,…., 𝑧' = 𝑃 𝑧'($ , 𝑎 = 𝑃(𝑧' ))
§ Nếu v ≠ z → Step 4
Step 4:
∀𝑢 ∈ 𝑇, 𝑘ề 𝑘ề 𝑠𝑎𝑢 𝑣
𝑁ế𝑢 𝐿 𝑢 > 𝐿 𝑣 + 𝑤 𝑣, 𝑢 , 𝑡ℎì
𝐿 𝑢 = 𝐿 𝑣 + 𝑤 𝑣, 𝑢
P(u) = v
→ Step 2.
∞,∅ ∞,∅
b c b c
5 5
6 6
4 4
1 z 1 z ∞,∅
a 8 2 a 8 2
2 3 0,∅ 2 3
d e d e
10 10
∞,∅ ∞,∅
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ thuật toán Dijkstra(2)
e d e
d 10
10 2,a ∞,∅
∞,∅ ∞,∅
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ thuật toán Dijkstra (3)
b c b c
5 5
6 6
4 4
1 z ∞,∅ 1 z ∞,∅
a 2 a 8 2
8
0,∅ 0,∅ 2 3
2 3
d e d e
10 10
2,a ∞,∅ 2,a 12,d
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ thuật toán Dijkstra (4)
3,d 8,b
3,a 10,d
b c
b c 5
5
6
6 4
4 1 z ∞,∅
1 z ∞,∅ a 8 2
a 8 2
0,∅ 2 3
0,∅ 2 3
d e
d e 10
10 2,a 12,d
2,a 12,d
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ thuật toán Dijkstra(5)
3,d 8,b
3,a 8,b
b c
b c 5
5
6
6 4
4 1 z 14, 𝑐
1 z ∞,∅ a 8 2
a 8 2
0,∅ 2 3
0,∅ 2 3
d e
d e 10
10 2,a 10,𝑐
2,a 12,d
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ thuật toán Dijkstra (6)
3,d 8,b
3,a 8,b
b c
b c 5
5
6
6 4
4 1 z 13, 𝑒
1 z 14, 𝑐 a 8 2
a 8 2
0,∅ 2 3
0,∅ 2 3
d e
d e 10
10 2,a 10,𝑐
2,a 10,c
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phương pháp lập bảng ghi nhãn
- - - - 10.c 14,c e
- - - - - 13,e z
- - - - - -
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ lập bảng tính nhãn (2)
2 3
5
1
7 6
1 2
1 1
4 2
2
4 3 5
k 1 2 3 4 5 6
0,o oo,o oo,o oo,o oo,o oo,o
1 - 1,1 oo,o 2,1 oo,o oo,o
2 - 6,2 2,1 oo,o 8,2
3 3,4 - 6,4 8,2
4 - 6,4 4,3
6,4 -
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ lập bảng tính nhãn (3)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Thuật toán Bellman-Ford
s z
2
q Input:
G = (V,E,W),
s ∈ V,
qOutput:
L(v),
P(v) – đỉnh kề trước v (s---v)
Đồ thị có chu trình âm qua đỉnh khả
nối với s
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
25
Thuật toán Bellman-Ford
Step 1
L(s)=0, L(v)=+∞, ∀ 𝑣 ≠ 𝑠,
P(v) = nil, ∀ 𝑣 ∈ 𝑉,
Step 2
For i:=1 to n do // |V| = n
For (u,v) ∈ 𝐸 𝑑𝑜
if L(v)>L(u)+w(u,v) then {
L(v)=L(u)+w(u,v);
P(v)= u;
}
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
26
Thuật toán Bellman-Ford
Step 3
If ∃ 𝑢, 𝑣 ∈ 𝐸: 𝐿 𝑣 > 𝐿 𝑢 + 𝑤 𝑢, 𝑣 𝑡ℎ𝑒𝑛
→ 𝐾𝐿 (1)
Else
{
L(v); P(v);
}
s z
2
Bước s b z
1 0 +∞,nil +¥ ,nil
2 0 3,s 2 ,s
0 3,s 1,b
3 ∄ 𝑢, 𝑣 ∈ 𝐸: 𝐿 𝑣 > 𝐿 𝑢 + 𝑤 𝑢, 𝑣
3 4
5 4
k 1 2 3 4 5
1 0,1 1,1 ¥ ,0 ¥ ,0 3,1
2 0,1 1,1 4,2 4,2 3,1
3 0,1 1,1 4,2 4,2 -1,3
5 0,1 1,1 4,2 3,5 -1,3
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ thuật toán Bellman-Ford
k 1 2 3 4 5 6
0,1 1,1 ¥ ,1 ¥ ,1 ¥,1 ¥,1
1 0,1 1,1 6 ,2 3 ,2 7,4 7,3
2 0,1 1,1 4 ,4 3 ,2 7,4 5,3
3 0,1 1,1 4 ,4 3 ,2 6,6 5,3
S=1
4 0,1 1,1 4 ,4 3 ,2 6,6 5,3
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Thuật toán Floyd- Warshall
Step 1
𝑤 𝑖, 𝑗 , ∃ (𝑖, 𝑗) ∈ 𝐸
D0 = {d0 [i,j]} , d0 [i,j] = p
+ ∞, 𝑖, 𝑗 ∉ 𝐸
𝑗, ∃ (𝑖, 𝑗) ∈ 𝐸
P0 = {p0 [i,j]}, p0 [i,j] = p
∄, 𝑖, 𝑗 ∉ 𝐸
2 4
1 4
7
1
7 11
5
3
1 2 3 4
1 2 3 4
1 é¥ 7 5 ¥ ù 1 é¥ 2 3 ¥ ù
2
ê¥ ¥ 7 6 ú ê¥ ¥ 3 4 ú
ê ú 2
ê ú
3 ê¥ ¥ ¥ 11ú 3 ê¥ ¥ ¥ 4 ú
4 ê ú ê ú
ë 4 1 ¥ ¥ û 4
ë 1 2 ¥ ¥û
Ma trận D0
Ma trận P0
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
36
Ví dụ thuật toán Floyd- Warshall (2)
Cập nhật qua đỉnh 1 6
2 4
1 4
7
1
7 11
5
3
1 2 3 4
1 2 3 4
1 é¥ 7 5 ¥ ù 1 é¥ 2 3 ¥ ù
2
ê¥ ¥ 7 6 ú ê¥ ¥ 3 4 ú
ê ú 2
ê ú
3 ê¥ ¥ ¥ 11ú 3 ê¥ ¥ ¥ 4 ú
4 ê ú ê ú
ë 4 1 9 ¥ û 4
ë 1 2 1 ¥û
Ma trận D1
Ma trận P1
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
37
Ví dụ thuật toán Floyd- Warshall(3)
Cập nhật qua đỉnh 2 6
2 4
1 4
7
1
7 11
5
3
1 2 3 4
1 2 3 4
1 é¥ 7 5 13ù 1 é¥ 2 3 2 ù
2
ê¥ ¥ 7 6 ú ê¥ ¥ 3 4 ú
ê ú 2
ê ú
3 ê¥ ¥ ¥ 11ú 3 ê¥ ¥ ¥ 4ú
4 ê ú ê ú
ë 4 1 8 7 û 4
ë 1 2 2 2û
Ma trận D2
Ma trận P2
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
38
Ví dụ thuật toán Floyd- Warshall (4)
Cập nhật qua đỉnh 3 6
2 4
1 4
7
1
7 11
5
3
1 2 3 4
1 2 3 4
1 é¥ 7 5 13ù 1 é¥ 2 3 2 ù
2
ê¥ ¥ 7 6 ú ê¥ ¥ 3 4 ú
ê ú 2
ê ú
3 ê¥ ¥ ¥ 11ú 3 ê¥ ¥ ¥ 4ú
4 ê ú ê ú
ë 4 1 8 7 û 4
ë 1 2 2 2û
Ma trận D3
Ma trận P3
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
39
Ví dụ thuật toán Floyd- Warshall (5)
Cập nhật qua đỉnh 4 6
2 4
1 4
7
1
7 11
5
3
1 2 3 4
1 2 3 4
1 é17 7 5 13ù 1 é2 2 3 2ù
ê10 7 7 6 ú ê4
2
ê ú 2
ê 4 3 4 úú
3 ê15 12 19 11ú ê4
ê ú 3 4 4 4ú
4 ê ú
ë 4 1 8 7 û 4
ë1 2 2 2û
Ma trận D4
Ma trận P4
CuuDuongThanCong.com Nguyễn Văn Hiệu, 2012, Discrete Mathematics
https://fb.com/tailieudientucntt
40
Ví dụ thuật toán Floyd- Warshall (6)
6
2 4
1 4
7
1
7 11
5
3
1 2 3 4
1 2 3 4
1 é17 7 5 13ù Kết quả: 4 → 3
ê10 7 7 6 ú 1 é2 2 3 2ù
+8 ê4
2
ê ú + 4 –2 --3 2
ê 4 3 4 úú
3 ê15 12 19 11ú ê4
ê ú p(4,3) = 2 3 4 4 4ú
4 ê ú
ë 4 1 8 7 û p(2,3) = 3 4
ë1 2 2 2û
1
4 3
1 2 3 4 1 2 3 4
1 é ¥ 10 6 2 ù 1 é¥ 2 3 4ù
ê10 ¥ 5 3 ú 2
ê1 ¥ 3 4 úú
2
ê ú ê
3 ê 6 5 ¥ 1ú 3 ê1 2 ¥ 4ú
ê ú ê ú
4 ë 2 3 1 ¥û 4
ë1 2 3 ¥û
Ma trận D0
Ma trận P0
1
4 3
1 2 3 4 1 2 3 4
1 é ¥ 10 6 2 ù 1 é¥ 2 3 4ù
ê10 ¥ 5 3 ú 2
ê1 ¥ 3 4 úú
2
ê ú ê
3 ê 6 5 ¥ 1ú 3 ê1 2 ¥ 4ú
ê ú ê ú
4 ë 2 3 1 ¥û 4
ë1 2 3 ¥û
Ma trận D1
Ma trận P1
1
4 3
1 2 3 4 1 2 3 4
1 é ¥ 10 6 2 ù 1 é¥ 2 3 4ù
ê10 ¥ 5 3 ú 2
ê1 ¥ 3 4 úú
2
ê ú ê
3 ê 6 5 ¥ 1ú 3 ê1 2 ¥ 4ú
ê ú ê ú
4 ë 2 3 1 ¥û 4
ë1 2 3 ¥û
Ma trận D2
Ma trận P2
1
4 3
1 2 3 4 1 2 3 4
1 é ¥ 10 6 2 ù 1 é¥ 2 3 4ù
ê10 ¥ 5 3 ú 2
ê1 ¥ 3 4 úú
2
ê ú ê
3 ê 6 5 ¥ 1ú 3 ê1 2 ¥ 4ú
ê ú ê ú
4 ë 2 3 1 ¥û 4
ë1 2 3 ¥û
Ma trận D3
Ma trận P3
1
4 3
1 2 3 4 1 2 3 4
1 é¥ 5 3 2 ù 1 é¥ 4 4 4ù
ê5 ¥ 4 3ú 2
ê4 ¥ 4 4 úú
2
ê ú ê
3 ê3 4 ¥ 1ú 3 ê4 4 ¥ 4ú
ê ú ê ú
4 ë 2 3 1 ¥ û 4
ë1 2 3 ¥û
Ma trận D4
Ma trận P4
1
4 3
1 2 3 4 1 2 3 4
1 é¥ 5 3 2 ù 1 é¥ 4 4 4ù
ê5 ¥ 4 3ú 2
ê4 ¥ 4 4 úú
2
ê ú ê
3 ê3 4 ¥ 1ú 3 ê4 4 ¥ 4ú
ê ú ê ú
4 ë 2 3 1 ¥ û 4
ë1 2 3 ¥û
Ma trận D4
Ma trận P4
qBài toán chọn địa điểm đặt cơ sở dịch vụ, sao cho
hiệu quả nhất về mặt kinh tế
qBài toán cực tiểu tổng
§ Tìm vị trí để đặt cơ sở sao cho khoảng cách giữa các vùng đến
cơ sở là nhỏ nhất
§ Vị trí đặt trường học, bưu điện, bệnh viện.
qBài toán cực tiểu trị lớn nhất
§ Tìm vị trí đặt cơ sở sao cho khoảng cách từ cơ sở đến điểm xa
nhất của cộng đồng là nhỏ nhất
§ Vị trí đặt cơ quan phòng cháy chữa cháy.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ứng dụng
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ứng dụng
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ứng dụng
6
1
1 1 1 1
1 2 3 4 5
1 2 3 4 5 6 7
7
1 é0 1 2 3 4 4 4ù
ê1 0 1 2 3 3 3ú
2
ê ú
- Đỉnh 4 là đỉnh cực tiểu 3 ê2 1 0 1 2 2 2ú
- Đỉnh 3 là tâm đồ thị ê ú
4
ê3 2 1 0 1 1 1ú
5 ê4 3 2 1 0 2 2ú
6
ê ú
ê4 3 2 1 2 0 2ú
7 ê4 3 2 1 2 2 0ú
ë û
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bài tập
What NEXT?
CuuDuongThanCong.com https://fb.com/tailieudientucntt