53
BÀI 9 BÀI TOÁN ĐƯỜNG ĐI NGN NHT TRÊN ĐỒ TH1 Giáo viên: TS. Nguyn Văn Hiu Email: [email protected] CuuDuongThanCong.com https://fb.com/tailieudientucntt

BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT TRÊN ĐỒ THỊ

Embed Size (px)

Citation preview

BÀI 9

BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT TRÊN ĐỒ THỊ

1

Giáo viên: TS. Nguyễn Văn Hiệu

Email: [email protected]

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nội dung

q Giới thiệuq Bài toánq Thuật toán Dijkstraq Thuật toán Bellman-Fordq Thuật toán Floyd – Warshallq Ứng dụng

Nguyễn Văn Hiệu, 2014, Discrete Mathematics 2CuuDuongThanCong.com https://fb.com/tailieudientucntt

Giới thiệu

qĐồ thị trọng số (weighted graph) là đồ thịcó gắn một số (số nguyên hay số thực) chomỗi cạnh hoặc mỗi cung

qSố nguyên hay số thực cho mỗi cạnh:ü cự ly,ü thời gianü chi phí, ü tốc độ.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 3CuuDuongThanCong.com https://fb.com/tailieudientucntt

Bài toán

q Cho đồ thị trọng số G =(V,E,W). Ký hiệuw(u,v) là trọng số của cạnh (u,v)

q Độ dài đường đid=𝑣$ → 𝑣& →…. → 𝑣'($ → 𝑣'

là tổng trọng số𝐿 𝑑 = ∑ 𝑤(𝑣/, 𝑣/1$)'($

/3$

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 4CuuDuongThanCong.com https://fb.com/tailieudientucntt

Bài toán

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 5

Bài toán 1:Tìm đường đi ngắn nhất từ đỉnha và đỉnh z

Bài toán 2: Tìm đường đi ngắn nhất từđỉnh a đến tất cả các đỉnh còn lại

Bài toán 3: Tìm đường đi ngắn nhất giữamọi cặp đỉnh

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Bài toán

q Để chắc chắn tìm được đường đi ngắnnhất thì điều kiệnq Phải tồn tại đường đi

q Đồ thị vô hướng liên thông, đồ thị có hướng liênthông mạnh

q Không tồn tại chu trình âm:q Đồ thị vô hướng không tồn tại cạnh âm

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 6CuuDuongThanCong.com https://fb.com/tailieudientucntt

Bài toán

qĐường đi ngắn nhất từ Etna đến Oldtown là:Etna – Bangor – Orono – OldTown

qĐường đi ngắn nhất từ Hermae đến Etna là:Hermae – Hampdea – Bangor - Etna

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 7CuuDuongThanCong.com https://fb.com/tailieudientucntt

Bài toán

If ( d[v] > d[u] + c[u,v]) {d[v] = d[u] + c[u,v];T[v] = u;

}CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Dijkstra

q Mục tiêu: Tìm đường đi ngắn nhất từđỉnh a đến đỉnh z

q Điều kiện: Trọng số của cạnh w(u,v)>0 với mọi cạnh (u,v)

q L(u) - chiều dài ngắn nhất từ a đến u.q Thuật toán kết thúc thì L(z) – chiều dài

ngắn nhất từ a đến z.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 9CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Dijkstra

q Input: G = (V,E,W), w(i,j)>0,∀(𝑖, 𝑗) ∈E,𝑎, 𝑧 ∈ V,

qOutput: L(z),đường đi từ a đến z (nếu có)

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 10CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Dijkstra

Step 1L(a)=0, L(x)=∞,∀𝑥 ≠ 𝑎,T=V, P(x) =∅.

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 11

Step 2m = min {L(u),u∈ 𝑇}

§ Nếu m=+∞ → 𝐾𝑇, ∄đườ𝑛𝑔đ𝑖𝑡ừ𝑎đê𝑛𝑧§ Nếu m<+∞ →

- chọn v ∈ 𝑇: 𝐿 𝑣 = 𝑚,- T = T- {v}- step 3

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Dijkstra

Step 3§ Nếu v = z → 𝐾𝑇và L(z), P(z)

(𝑧$ = 𝑃 𝑧 , 𝑧& = 𝑃 𝑧$ ,…., 𝑧' = 𝑃 𝑧'($ , 𝑎 = 𝑃(𝑧'))

§ Nếu v ≠ z → Step 4

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 12

Step 4: ∀𝑢 ∈ 𝑇, 𝑘ề 𝑘ề𝑠𝑎𝑢 𝑣𝑁ế𝑢𝐿 𝑢 > 𝐿 𝑣 + 𝑤 𝑣, 𝑢 , 𝑡ℎì

𝐿 𝑢 = 𝐿 𝑣 + 𝑤 𝑣, 𝑢P(u) = v

→ Step 2.

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Dijkstra

G – đồ thị liên thông có trọng số với n đỉnhf(n) – số lần thuật toán Dijkstra khảo sát mộtcạnh của G:

f(n) = 0(n*n)

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 13

Thuật toán Dijkstra là tối ưuKn - có số cạnh là n(n-1)/2Tìm đường đi ngắn nhất từ a đến z phải khảo sátqua mỗi cạnh một lần.Thuật giải khảo sát ít nhất 0(n*n)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

8 a

b c

z

d e

41

2

56

32

10

80,∅

∞,∅ ∞,∅

∞,∅ ∞,∅

∞,∅

Ví dụ thuật toán Dijkstra (1)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

80,∅

∞,∅ ∞,∅

∞,∅ ∞,∅

∞,∅ a

b c

z

d e

41

2

56

32

10

80,∅

4,a ∞,∅

2,a ∞,∅

∞,∅

Ví dụ thuật toán Dijkstra(2)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

80,∅

4,a ∞,∅

2,a ∞,∅

∞,∅ a

b c

z

d e

41

2

56

32

10

80,∅

3,d 10,d

2,a 12,d

∞,∅

Ví dụ thuật toán Dijkstra (3)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

80,∅

3,d 8,b

2,a 12,d

∞,∅a

b c

z

d e

41

2

56

32

10

80,∅

3,a 10,d

2,a 12,d

∞,∅

Ví dụ thuật toán Dijkstra (4)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

80,∅

3,d 8,b

2,a 10,𝑐

14, 𝑐a

b c

z

d e

41

2

56

32

10

80,∅

3,a 8,b

2,a 12,d

∞,∅

Ví dụ thuật toán Dijkstra(5)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

80,∅

3,d 8,b

2,a 10,𝑐

13, 𝑒a

b c

z

d e

41

2

56

32

10

80,∅

3,a 8,b

2,a 10,c

14, 𝑐

Ví dụ thuật toán Dijkstra (6)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Phương pháp lập bảng ghi nhãn

q Bản chất là thuât toán Dijkstraq Các cột tương ứng với các đỉnhq Các hàng tương ứng với số lần tính nhãn

(bước 4)q Các nhãn “gạch dưới” tương ứng với

nhãn nhỏ nhất ở (bước 2)q Số đỉnh được cố định chính là số đỉnh

loại ra (bước 2)

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 20CuuDuongThanCong.com https://fb.com/tailieudientucntt

a

b c

z

d e

41

2

56

32

10

8

Ví dụ lập bảng tính nhãn (1)

a b c d e z

𝟎, ∅ ∞, ∅ ∞, ∅ ∞, ∅ ∞, ∅ ∞, ∅ a

𝟒, 𝒂 ∞, ∅ 𝟐, 𝒂 ∞, ∅ ∞, ∅ d

- 3,d 10,d - 12,d ∞, ∅ b

- - 8,b - 12,d ∞, ∅ c

- - - - 10.c 14,c e

- - - - - 13,e z

- - - - - -

CuuDuongThanCong.com https://fb.com/tailieudientucntt

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 -

Ví dụ lập bảng tính nhãn (2)

1

2 3

6

4 5

1

1

2

5

3

12

4

7

2

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

q Dijkstra cho kết quả sai nếu đồ thị có trọng sốâm

q Bellman-Ford khắc phục kết quả trênq Belman-Ford giúp xác định đồ thị có chu trình

âm hay không

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 24

s

b

z

3

2

-2

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Bellman-Ford

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 25

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 https://fb.com/tailieudientucntt

Step 1L(s)=0, L(v)=+∞,∀𝑣 ≠ 𝑠,P(v) = nil, ∀𝑣 ∈ 𝑉,

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 26

Step 2For 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;

}

Thuật toán Bellman-Ford

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Step 3If ∃ 𝑢, 𝑣 ∈ 𝐸: 𝐿 𝑣 > 𝐿 𝑢 + 𝑤 𝑢, 𝑣 𝑡ℎ𝑒𝑛

→ 𝐾𝐿(1)Else {

L(v); P(v);}

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 27

Thuật toán Bellman-Ford

Độ phức tạp của thuật toán Bellman – Ford0(n*m)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Bellman-Ford

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 28

s

b

z

3

2

-2

Bước s b z1 0 +∞,nil +¥ ,nil

2 0 3,s 2 ,s

0 3,s 1,b3 ∄ 𝑢, 𝑣 ∈ 𝐸: 𝐿 𝑣 > 𝐿 𝑢 + 𝑤 𝑢, 𝑣

CuuDuongThanCong.com https://fb.com/tailieudientucntt

k 1 2 3 4 51 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

Ví dụ thuật toán Bellman-Ford

1

2 3

4

1 2

3

3

4

-58 31

5

CuuDuongThanCong.com https://fb.com/tailieudientucntt

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

4 0,1 1,1 4 ,4 3 ,2 6,6 5,3S = 1

Ví dụ thuật toán Bellman-Ford

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Thuật toán Floyd- Warshall

q Mục tiêu: Tìm đường đi ngắn nhất giữamọi cặp đỉnh của đồ thị (có hướng) cótrọng số

q Giải pháp– Dijkstra nhiều lần– Floyd- Warshall

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 31CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 32

q Input: G = (V, E, W), V = {1,2,…,n}

qOutput: D = {d[i,j]}nxn,

d[i,j] độ dài đường đi ngắn nhất từ i đến j

P = {p[i,j]}nxn,,p[i,j] – đỉnh đi trước j trên đường đi

ngắn nhất từ i đến j

Thuật toán Floyd- Warshall

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Step 1

D0 = {d0 [i,j]} , d0 [i,j] = p𝑤 𝑖, 𝑗 , ∃(𝑖, 𝑗) ∈ 𝐸+∞, 𝑖, 𝑗 ∉ 𝐸

P0 = {p0 [i,j]}, p0 [i,j] = p𝑗, ∃(𝑖, 𝑗) ∈ 𝐸∄, 𝑖, 𝑗 ∉ 𝐸

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 33

Thuật toán Floyd- Warshall

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 34

Step 2For k:=1 to n do // |V| = n

// Tính Dk và Pk theo Dk-1, Pk-1For n:=1 to n do

For m:=1 to n do if dk -1[i,j]> dk -1[i,k]+ dk -1[k,j] then {

dk[i,j]=dk -1[i,k]+dk -1[k,j];pk[i,j]= pk -1[i,k];

}else {

dk[i,j]=dk -1[i,j]; pk[i,j]= pk -1[i,j];}

Thuật toán Floyd- Warshall

//∀ i, j ∈ 𝐸

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 35

Step 3D = DnP = Pn

// Phương pháp xác định đường đi ngắn nhất từ i đến j// Đường đi ngắn nhất từ i đến j là các đỉnh:

i→ 𝑖$ → 𝑖& → ⋯ → 𝑖v → 𝑖v1$ → 𝑖' → 𝑗 :𝑖$ = 𝑝 𝑖, 𝑗 , 𝑖& = p(𝑖$, j),…., 𝑖v1$ = p(𝑖v, j),

𝑗 = p(𝑖v1$, j),

Thuật toán Floyd- Warshall

Độ phức tạp của thuật Floyd Warshall0(n*n*n)

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 36

Ví dụ thuật toán Floyd- Warshall (1)

1

2 4

3

7

117

4

5

6

1

7 57 611

4 1

¥ ¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê ú¥ ¥ë û

1 2 3 4

1

2

34

2 33 4

41 2

¥ ¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê ú¥ ¥ë û

1 2 3 4

1

2

34

Ma trận D0 Ma trận P0CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 37

Ví dụ thuật toán Floyd- Warshall (2)

1

2 4

3

7

117

4

5

6

1

7 57 611

4 1 9

¥ ¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê ú¥ë û

1 2 3 4

1

2

34

2 33 4

41 2 1

¥ ¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê ú¥ë û

1 2 3 4

1

2

34

Cập nhật qua đỉnh 1

Ma trận D1 Ma trận P1CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 38

Ví dụ thuật toán Floyd- Warshall(3)

1

2 4

3

7

117

4

5

6

1

7 5 137 611

4 1 8 7

¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê úë û

1 2 3 4

1

2

34

2 3 23 44

1 2 2 2

¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê úë û

1 2 3 4

1

2

34

Cập nhật qua đỉnh 2

Ma trận D2 Ma trận P2CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 39

Ví dụ thuật toán Floyd- Warshall (4)

1

2 4

3

7

117

4

5

6

1

7 5 137 611

4 1 8 7

¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê úë û

1 2 3 4

1

2

34

2 3 23 44

1 2 2 2

¥é ùê ú¥ ¥ê úê ú¥ ¥ ¥ê úë û

1 2 3 4

1

2

34

Cập nhật qua đỉnh 3

Ma trận D3 Ma trận P3CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 40

Ví dụ thuật toán Floyd- Warshall (5)

1

2 4

3

7

117

4

5

6

1

17 7 5 1310 7 7 615 12 19 114 1 8 7

é ùê úê úê úê úë û

1 2 3 4

1

2

34

2 2 3 24 4 3 44 4 4 41 2 2 2

é ùê úê úê úê úë û

1 2 3 4

1

2

34

Cập nhật qua đỉnh 4

Ma trận D4 Ma trận P4CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 41

Ví dụ thuật toán Floyd- Warshall (6)

1

2 4

3

7

117

4

5

6

1

17 7 5 1310 7 7 615 12 19 114 1 8 7

é ùê úê úê úê úë û

1 2 3 4

1

2

34

2 2 3 24 4 3 44 4 4 41 2 2 2

é ùê úê úê úê úë û

1 2 3 4

1

2

34

Kết quả: 4 → 3+ 8+ 4 –2 --3p(4,3) = 2p(2,3) = 3

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 42

10

2

1

563

10 6 210 5 36 5 12 3 1

¥é ùê ú¥ê úê ú¥ê ú¥ë û

2 3 41 3 41 2 41 2 3

¥é ùê ú¥ê úê ú¥ê ú¥ë û

Ma trận D0

Ví dụ thuật toán Floyd- Warshall (2.1)

Ma trận P0

1 2

34

1 2 3 4

1

2

3

4

1 2 3 4

1

2

3

4

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 43

10

2

1

563

10 6 210 5 36 5 12 3 1

¥é ùê ú¥ê úê ú¥ê ú¥ë û

2 3 41 3 41 2 41 2 3

¥é ùê ú¥ê úê ú¥ê ú¥ë û

Ví dụ thuật toán Floyd- Warshall (2.2)

1 2

34

1 2 3 4

1

2

3

4

1 2 3 4

1

2

3

4

Ma trận D1 Ma trận P1

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 44

10

2

1

563

10 6 210 5 36 5 12 3 1

¥é ùê ú¥ê úê ú¥ê ú¥ë û

2 3 41 3 41 2 41 2 3

¥é ùê ú¥ê úê ú¥ê ú¥ë û

Ví dụ thuật toán Floyd- Warshall(2.3)

1 2

34

1 2 3 4

1

2

3

4

1 2 3 4

1

2

3

4

Ma trận D2 Ma trận P2

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 45

10

2

1

563

10 6 210 5 36 5 12 3 1

¥é ùê ú¥ê úê ú¥ê ú¥ë û

2 3 41 3 41 2 41 2 3

¥é ùê ú¥ê úê ú¥ê ú¥ë û

Ví dụ thuật toán Floyd- Warshall(2.4)

1 2

34

1 2 3 4

1

2

3

4

1 2 3 4

1

2

3

4

Ma trận D3 Ma trận P3

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 46

10

2

1

563

5 3 25 4 33 4 12 3 1

¥é ùê ú¥ê úê ú¥ê ú¥ë û

4 4 44 4 44 4 41 2 3

¥é ùê ú¥ê úê ú¥ê ú¥ë û

Ví dụ thuật toán Floyd- Warshall(2.5)

1 2

34

1 2 3 4

1

2

3

4

1 2 3 41

2

3

4

Ma trận D4 Ma trận P4

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 47

10

2

1

563

5 3 25 4 33 4 12 3 1

¥é ùê ú¥ê úê ú¥ê ú¥ë û

4 4 44 4 44 4 41 2 3

¥é ùê ú¥ê úê ú¥ê ú¥ë û

Ví dụ thuật toán Floyd- Warshall(2.6)

1 2

34

1 2 3 4

1

2

3

4

1 2 3 41

2

3

4

Ma trận D4 Ma trận P4

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Ứng dụng

qBài toán chọn địa điểm đặt cơ sở dịch vụ, sao chohiệ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 đếncơ 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

qBài toán cực tiểu tổngG=(V, E, W), V={1,2,…,n},w(i,j)>0,∀(𝑖, 𝑗) ∈ 𝐸D={d[i,j]} là ma trận khoảng cách ngắn nhất của G (Floyd-Warshall)∀𝑖 ∈ 𝑉, 𝑠 𝑖 − 𝑡ổ𝑛𝑔𝑐á𝑐𝑝ℎầ𝑛𝑡ử𝑡𝑟ê𝑛 hàng i của ma trận DĐỉnh j gọi là cực tiểu tổng nếu 𝑠 𝑗 ≤ 𝑠 𝑖 , ∀𝑖 ∈ 𝑉.q Tập tất cả các đỉnh tâm gọi là tâm đồ thị

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Ứng dụng

qBài toán cực tiểu trị lớn nhấtG=(V, E, W), V={1,2,…,n},w(i,j)>0,∀(𝑖, 𝑗) ∈ 𝐸D={d[i,j]} là ma trận khoảng cách nhỏ nhất của G (Floyd-Warshall)∀𝑖 ∈ 𝑉, 𝑒 𝑖 − 𝑝ℎầ𝑛𝑡ử𝑙ớ𝑛𝑛ℎấ𝑡(độ𝑙ệ𝑐ℎ𝑡â𝑚)𝑡𝑟ê𝑛ℎà𝑛𝑔i của ma trận DĐỉnh j gọi là đỉnh tâm tổng nếu e 𝑗 ≤ 𝑒 𝑖 , ∀𝑖 ∈ 𝑉

CuuDuongThanCong.com https://fb.com/tailieudientucntt

Ứng dụng

1 1

1

11 2 431 5

6

70 1 2 3 4 4 41 0 1 2 3 3 32 1 0 1 2 2 23 2 1 0 1 1 14 3 2 1 0 2 24 3 2 1 2 0 24 3 2 1 2 2 0

é ùê úê úê úê úê úê úê úê úê úë û

1 2 3 4 5 6 7

1

2

3

4

5

6

7

- Đỉnh 4 là đỉnh cực tiểu- Đỉnh 3 là tâm đồ thị

CuuDuongThanCong.com https://fb.com/tailieudientucntt

q Lập trình thực hiện các thuật toán mô tả:q Thuật toán Dijkstraq Thuật toán Floyd-Warshallq Thuật toán Bellman-Ford

q Xác định độ phức tạp của 3 thuật toán trên

Nguyễn Văn Hiệu, 2012, Discrete Mathematics 52

Bài tập

CuuDuongThanCong.com https://fb.com/tailieudientucntt

THAT’S ALL; THANK YOU

What NEXT?

CuuDuongThanCong.com https://fb.com/tailieudientucntt