48
TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM MÔN HỌC: TOÁN ỨNG DỤNG Bài 1: CƠ SỞ LOGIC Bài 2: BÀI TOÁN ĐẾM VÀ BÀI TOÁN TỒN TẠI Bài 3: LÝ THUYẾT ĐỒ THỊ Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM Bài 5: CÂY VÀ CÁC ỨNG DỤNG

MÔN HỌC: TOÁN ỨNG DỤNG

  • Upload
    shepry

  • View
    56

  • Download
    0

Embed Size (px)

DESCRIPTION

MÔN HỌC: TOÁN ỨNG DỤNG. Bài 1: CƠ SỞ LOGIC Bài 2: BÀI TOÁN ĐẾM VÀ BÀI TOÁN TỒN TẠI Bài 3: LÝ THUYẾT ĐỒ THỊ Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM Bài 5: CÂY VÀ CÁC ỨNG DỤNG. Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM. 1. BIỂU DIỄN ĐỒ THỊ - PowerPoint PPT Presentation

Citation preview

Page 1: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

MÔN HỌC: TOÁN ỨNG DỤNG

Bài 1: CƠ SỞ LOGICBài 2: BÀI TOÁN ĐẾM VÀ BÀI TOÁN TỒN TẠIBài 3: LÝ THUYẾT ĐỒ THỊ

Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM Bài 5: CÂY VÀ CÁC ỨNG DỤNG

Page 2: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

Bài 4: BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. BIỂU DIỄN ĐỒ THỊ 1.1 Danh sách liền kề 1.2 Ma trận kề 1.3 Ma trận trọng số 1.4 Ma trận liên thuộc

2. BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT 2.1 Giới thiệu bài toán 2.2 Thuật toán Dijkstra 2.3 Thuật toán Floyd

3. CÁC THUẬT TOÁN TÌM KIẾM 3.1 Giới thiệu 3.2 Duyệt đồ thị theo chiều sâu 3.3 Duyệt đồ thị theo chiều rộng

1. BIỂU DIỄN ĐỒ THỊ 1.1 Danh sách liền kề 1.2 Ma trận kề 1.3 Ma trận trọng số 1.4 Ma trận liên thuộc

2. BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT 2.1 Giới thiệu bài toán 2.2 Thuật toán Dijkstra 2.3 Thuật toán Floyd

3. CÁC THUẬT TOÁN TÌM KIẾM 3.1 Giới thiệu 3.2 Duyệt đồ thị theo chiều sâu 3.3 Duyệt đồ thị theo chiều rộng

Page 3: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.1 Danh sách liền kề

- Danh sách liền kề là một cách biểu diễn đồ thị không có cạnh bội bằng cách liệt kê tất cả các đỉnh nối với mỗi đỉnh của đồ thị

Page 4: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.1 Danh sách liền kề

Ví dụ: Danh sách liền kề của đồ thị vô hướng G

Đỉnh Đỉnh liền kề

1

2

3

4

5

6

3,2

1,3,5

1,2,4

3,5,6

2,4,6

4,5

Page 5: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.1 Danh sách liền kề

Ví dụ: Danh sách liền kề của đồ thị có hướng G1

Đỉnh đầu Đỉnh cuối

1

2

3

4

5

6

2,3

2

3

4,6

5

Page 6: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận liền kề

Xét đơn đồ thị vô hướng G=(V,E), với tập đỉnh V={v1, v2, ...,vn } và

tập cạnh E={e1, e2, ..., em }. Ma trận liền kề AG của đồ thị G là ma

trận 0-1 vuông cấp nxn.

AG= (aij), trong đó:

1, nếu (vi,vj) là một cạnh của G

0,nếu không có cạnh nối đỉnh vi với vj

aij =

Page 7: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận liền kề

Ví dụ: Ma trận liền kề của đơn đồ thị vô hướng G

0 1 1 0 1 0

1 0 1 1 0 0

1 1 0 0 1 0

0 1 0 0 1 1

1 0 1 1 0 1

0 0 0 1 1 0

1 2 3 4 5 6

1

2

3

4

5

6

1

3

6

42

5

1- Ma trận liền kề của đơn đồ thị vô hướng G có dòng, cột đối xứng qua đường chéo2- Tổng giá trị trên một dòng (hoặc cột) bằng số bậc của đỉnh i.

Page 8: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận liền kề

Ví dụ: Ma trận liền kề của đa đồ thị vô hướng G

1

3

6

42

0 1 1 0 0 0

1 0 2 2 0 0

1 2 0 0 1 0

0 2 0 0 1 1

0 0 1 1 0 3

0 0 0 1 3 0

1 2 3 4 5 6

1

2

3

4

5

6

5

aij = k - tổng số cạnh nối hai đỉnh

Page 9: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận liền kề

Ví dụ: Ma trận liền kề của đơn đồ thị có hướng G*

1 2

543

0 1 1 0 0

0 0 0 1 1

0 0 0 1 0

0 0 0 0 0

1 0 0 0 0

1 2 3 4 5

1

2

3

4

5

Ma trận liền kề của đơn đồ thị có hướng G không có dòng, cột đối xứng

Page 10: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

- Trong thực tế chúng ta thường giải quyết những tình huống như sau: từ địa điểm A đến địa điểm B trong thành phố, chúng ta chọn đường đi ngắn nhất (xét đến độ dài), có lúc lại cần chọn đường đi nhanh nhất (xét đến thời gian) và có lúc phải cân nhắc để chọn đường đi có chi phí thấp nhất, v.v...

- Khi chúng ta gán một giá trị số thực dương cho mỗi cạnh của đồ thị G thì chúng ta có đồ thị có trọng số.

- Chúng ta có thể xem đồ thị G bất kỳ là đồ thị có trọng số mà tất cả các cạnh có trọng số bằng 1.

Page 11: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

Page 12: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

- Đồ thị G = (V,E) gọi là đồ thị có trọng số nếu mỗi cạnh (hay cung) e được gán với một số thực w(e), gọi là trọng số của e (hay chiều dài, trọng lượng của cạnh e).

v1

v2

v6

v5v3

v4

3

7

3

9

5

86

6

Page 13: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

- Mỗi đường đi m(u,v) từ đỉnh u đến đỉnh v, có trọng số bằng tổng trọng số các cạnh mà nó đi qua.

- Khoảng cách d(u,v) giữa hai đỉnh u và v là đường đi có trọng số nhỏ nhất trong các đường đi từ u đến v.

d(u,v)=min(m(u,v))

Page 14: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

Ma trận trọng số D= d(ij) , xác định như sau:

0, khi đỉnh trùng w(i,j), trọng số của cạnh nối giữa hai đỉnh

, nếu không có cạnh nối giữa hai đỉnh

dij =

Page 15: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.3 Ma trận trọng số

Ví dụ: Vẽ ma trận trọng số biểu diễn đồ thị vô hướng G

0 3 7

3 0 6 6

7 6 0 3

6 0 8 5

3 8 0 9

5 9 0

v1 v2 v3 v4 v5 v6

v1

v2

v3

v4

v5

v6

v1

v2

v6

v5v3

v4

3

7

3

9

5

86

6

Page 16: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

Ví dụ: Lập ma trận trọng sốbiểu diễnđồ thị có hướng G

Page 17: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.2 Ma trận trọng số

Ví dụ:

0 5 31 40

0 27 73

26 0 8 49 25 38

0 16

70 0 9

23 0 12

10 0

D

Page 18: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.3 Ma trận liên thuộcMa trận liên thuộc biểu diễn quan hệ giữa cạnh liên thuộc

và đỉnh kề.

Ma trận M= (mij), xác định như sau:

1 nếu cạnh ej nối với đỉnh vi

0 nếu cạnh ej không nối với đỉnh vi

mij =

Page 19: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

1. Biểu diễn đồ thị

1.3 Ma trận liên thuộc

Ví dụ: Xây dựng ma trận liên thuộc cho đồ thị G dưới đây

e1 e2 e3 e4 e5 e6

v1

v2

v3

v4

v5

Page 20: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.1 Giới thiệu bài toán

Cho đơn đồ thị liên thông, có trọng số dương G=(V,E). Bài toán 1:

Tìm đường đi ngắn nhất từ một đỉnh u đến mỗi đỉnh v của đồ thị G.

Bài toán 2:

Tìm đường đi ngắn nhất giữa mỗi cặp đỉnh của đồ thị G.

1

5

3

DB

C E

A Z

2

1 28

6

10

Page 21: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.2 Thuật toán DijkstraThuật toán tìm đường đi ngắn nhất từ đỉnh u đến mỗi đỉnh v của đồ thị G, được nhà toán học người Hà Lan E. Dijkstra đề xuất vào năm 1959. Thuật toán thực hiện theo cách gán nhãn tại mỗi đỉnh. Thuật ngữ:w(x,y) : trọng số dương của cạnh (x,y); w(x,y) là ∞ (vô cùng lớn) nếu hai đỉnh không kề nhau.d(v) : độ dài đường đi từ đỉnh xuất phát tới đỉnh v.p(v) : đỉnh đứng ngay trước đỉnh v trên đường đi từ đỉnh xuất phát đến đỉnh v.Nhãn của đỉnh v : gồm cặp (d(v), p(v))T : Tập các nút mà đường đi ngắn nhất đã được xác định.

2. Bài toán đường đi ngắn nhất

Page 22: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.2 Thuật toán DijkstraGán T = ø; p(v) = NULL với mọi đỉnh vd(a)=0; /* a là đỉnh xuất phátVới mỗi đỉnh v còn lại thì d(v) = ∞; Repeat u =(uT | d(u) là bé nhất); T = T ∪ {u}; for ((v là đỉnh kề của u) và vT) if d(v) > d(u) + w(u,v) then

d(v) = d(u) + w(u,v) p(v) = u

Until (T=V)

2. Bài toán đường đi ngắn nhất

Page 23: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1: Tìm đường đi ngắn nhất từ A đến mỗi đỉnh khác của đồ thị

G dưới đây

15

3

10

DB

C E

A Z

6

2

1 28

Page 24: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1:

1 5

3

10

DB

C E

A Z

6

2

1 28

1 5

3

10

DB

C E

A Z

6

2

1 28

(0,-)

(∞,-) (∞,-)

(∞,-) (∞,-)

(∞,-)

(0,-)*

(∞,-)

(2,a)

(∞,-)

(∞,-)

(∞,-)

(1,a)

(∞,-)

d(D) =∞ = d(A)+w(A,D)=0+∞=∞d(E) =∞ = d(A)+w(A,E)=0+∞=∞d(Z) =∞ = d(A)+w(A,Z)=0+∞=∞

d(B) =∞ > d(A)+w(A,B)=0+1=1d(C) =∞ > d(A)+w(A,C)=0+2=2

Page 25: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1:

1 5

3

10

D

E

A Z

6

2

1 28

C

B

(0,-)*

(1,a)*

(2,a)

(6,b)

(∞,-)

(∞,-)

1 5

3

10

D

E

A Z

6

2

1 28

B

C(0,-)*

(1,a)*

(2,a)*

(6,b)

(∞,-)

(12,c)

d(C) =2 = d(B)+w(B,C)=1+1=2d(D) =∞ > d(B)+w(B,D)=1+5=6d(E) =∞ = d(B)+w(B,E)=0+∞=∞d(Z) =∞ = d(B)+w(B,Z)=0+∞=∞

d(D) =6 > d(C)+w(C,D)=2+8=10d(E) =∞ > d(C)+w(C,E)=2+10=12d(Z) =∞ = d(C)+w(C,Z)=0+∞=∞

(∞,-)

(∞,-)

Page 26: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1:

1 5

3

10E

A Z

6

2

1 28

B

C

D

(0,-)*

(1,a)*

(2,a)*

(6,b)*

(12,d)

(8,d) (12,c)

d(E) =12 > d(D)+w(D,E)=6+2=8d(Z) =∞ = d(D)+w(D,Z)=6+6=12 d(Z) =12 >d(E)+w(E,Z)=8+3=11

1 5

3

10

A Z6

2

12

8

B

C

D

E(0,-)*

(1,a)*

(2,a)*

(6,b)* (12,d)

(8,d)*

(11,e)

Page 27: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1:

1 5

3

10

A6

2

1 28

B

C

D

E

Z

(0,-)*

(1,a)*

(2,a)*

(6,b)*

(8,d)*

(11,e)*

Page 28: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1: Lập bảng để giải bài toán tìm đường đi ngắn nhất

Bước Tập T a b d c e z

0 ø (0,-) (,-) (,-) (,-) (,-) (,-)

1 a (0,-)* (1,a) (,-) (2,a) (,-) (,-)

2 ba - (1,a)* (6,b) (2,a) (,-) (,-)

3 cba - - (6,b) (2,a) * (12,c) (,-)

4 dcba - - (6,b)* - (8,d) (12,d)

5 edcba - - - - (8,d)* (11,e)

6 zedcba - - - - - (11,e)*

Page 29: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 1: Nhận xét bảng kết quả đã thu được. 1/. Độ dài đường đi ngắn nhất từ A đến các đỉnh là

->B: 1->C: 2->D: 6 ->E: 8->Z: 11

2/. Để vẽ đường đi ngắn nhất từ A đến đỉnh Z, chúng ta sử dụng cách đi ngược từ Z về A. Cụ thể là Z <- E <- D <- B <- A. 3/. Đường đi ngắn nhất từ A đến Z không đi qua C. Vậy đường đi ngắn nhất không đi qua tất cả các đỉnh của đồ thị.

Page 30: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.2 Thuật toán Dijkstra

Ví dụ 2:

Tìm đường đi ngắn nhất giữa A và W trong đồ thị G dưới đây

a

yx

wv

z

2

2

13

1

1

2

5

3

5

2. Bài toán đường đi ngắn nhất

Page 31: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.2 Thuật toán Dijkstra

Ví dụ 2:Do bài toán chỉ cần tìm đường đi ngắn nhất từ A đến W trong đồ thị G nên chúng ta đổi điều kiện kết thúc thuật toán Dijkstra như sau:

...Repeat u =(uT | d(u) là bé nhất); T = T ∪ {u}; for ((v là đỉnh kề của u) và vT) if d(v) > d(u) + w(u,v) then

d(v) = d(u) + w(u,v) p(v) = u

Until ( đỉnh đích chứa trong tập T)

2. Bài toán đường đi ngắn nhất

Page 32: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.2 Thuật toán Dijkstra

Ví dụ 2:

Tìm đường đi ngắn nhất giữa A và W trong đồ thị G

2. Bài toán đường đi ngắn nhất

Bước Tập T a v x y w z

0 ø (0.-) (,-) (,-) (,-) (,-) (,-)

1 a (0,-)* (2,a) (1,a) (,-) (5,a) (,-)

2 xa - (2,a) (1,a)* (2,x) (4,x) (,-)

3 yxa - (2,a) - (2,x)* (3,y) (4,y)

4 vyxa - (2,a)* - - (3,y) (4,y)

5 wvyxa - - - - (3,y)* (4,y)

6 Kết thúc vì đỉnh đến w chứa trong tập T

Page 33: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 3: Cho đồ thị có trọng số G.

Tìm đường đi

ngắn nhất từ

A đến mỗi đỉnh

của đồ thị. 12

10

9

9

5

4

9

9

9

9

6 4

A

B

D

C

E

F

G

H

KZ

2

2

8

41

3

3

8

Page 34: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 4: Cho đồ thị có trọng số G = (V, E), tìm đường đi ngắn nhất

giữa A và H.

6

A

GD

E

b

B

K

32

3

5

4

3

2

2

4

C

4

H

4

4

Page 35: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2. Bài toán đường đi ngắn nhất

2.2 Thuật toán Dijkstra

Ví dụ 5: v1 v2 v3 v4 v5 v6 v7

v1 0 5 30 40 v2 0 27 73 v3 26 0 8 40 25 38v4 0 16 20v5 70 0 20 12v6 22 22 12 v7 50 10

Tìm đường đi ngắn nhất từ v1 đến các đỉnh khác của đồ thị có trọng số được biểu diễn trong ma trận M hình bên.

Page 36: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.3 Thuật toán Floyd

Giới thiệuĐể tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh của đồ thị G=(V,E), chúng ta sử dụng thuật toán Floyd được công bố năm 1962.

Việc tìm đường đi ngắn nhất dựa trên nguyên tắc sau:" Nếu k là đỉnh nằm trên đường đi ngắn nhất từ i đến j thì đoạn đường từ i đến k và từ k đến j cũng ngắn nhất"

Ak[i,j]=min(Ak-1[i,j], Ak-1[i,k]+Ak-1[k,j])

2. Bài toán đường đi ngắn nhất

Page 37: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

2.3 Thuật toán Floyd BEGIN for i := 1 to n do for j := 1 to n do begin D[i,j] := C[i,j] ; P[i,j] := 0 end ; for k := 1 to n do for i := 1 to n do for j := 1 to n do

if D[i,k] + D[k,j] < D[i,j] then begin

D[i,j] := D[i,k] + D[k,j] ; P[i,j] := k end END.

2. Bài toán đường đi ngắn nhất

Page 38: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

2.3 Thuật toán Floyd

Ví dụ:

2. Bài toán đường đi ngắn nhất

W = D0 =40 5

2 0

3 0

1 2 3

1

2

3

00 0

0 0 0

0 0 0

1 2 3

1

2

3

P =

1

2

3

5

3

24

Page 39: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

2. Bài toán đường đi ngắn nhất

D1 =40 5

2 0 7

3 0

1 2 3

1

2

3

00 0

0 0 1

0 0 0

1 2 3

1

2

3

P =

1

2

3

5

3

24

D1[2,3] = min( D0[2,3], D0[2,1]+D0[1,3] )

= min (, 7)

= 7

P[2,3]=1

D1[3,2] = min( D0[3,2], D0[3,1]+D0[1,2] )

= min (3,)

= 3

40 5

2 0

3 0

1 2 3

1

2

3

D0 =

k = 1

Page 40: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

2. Bài toán đường đi ngắn nhất

D2[1,3] = min( D1[1,3], D1[1,2]+D1[2,3] )

= min (5, 4+7)

= 5

D2[3,1] = min( D1[3,1], D1[3,2]+D1[2,1] )

= min (, 3+2)

= 5

P[3,1] = 2

D2 =40 5

2 0 7

5 3 0

1 2 3

1

2

3

00 0

0 0 1

2 0 0

1 2 3

1

2

3

P =

1

2

3

5

3

24

D1 = 40 5

2 0 7

3 0

1 2 3

1

2

3

k = 23

Page 41: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

BIỂU DIỄN ĐỒ THỊ VÀ CÁC THUẬT TOÁN TÌM KIẾM

D3 =40 5

2 0 7

5 3 0

1 2 3

1

2

3

00 0

0 0 1

2 0 0

1 2 3

1

2

3

P =

D3[1,2] = min(D2[1,2], D2[1,3]+D2[3,2] )

= min (4, 5+3))

= 4

D3[2,1] = min(D2[2,1], D2[2,3]+D2[3,1] )

= min (2, 7+ 5)

= 2

D2 =40 5

2 0 7

5 3 0

1 2 3

1

2

3

1

2

3

5

3

24 k = 3

2. Bài toán đường đi ngắn nhất

Page 42: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.1 Giới thiệuVới một đồ thị có nhiều nút, việc kiểm tra tính liên thông của

đồ thị là bài toán lớn, cần có cách thức để thực hiện nhanh, chính xác.

Hai cách duyệt đồ thị phổ biến được áp dụng:

1. Duyệt đồ thị theo chiều sâu (Depth First Search - DFS)

2. Duyệt đồ thị theo chiều rộng (Breadth First Search - BFS)

3. Duyệt đồ thị

BFSDFS

Page 43: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.2 Duyệt đồ thị theo chiều sâuXuất từ một đỉnh v bất kỳ của đồ thị G, chúng ta thực hiện như sau: Bước 1: đánh dấu v đã được duyệt.Bước 2: thực hiện đánh dấu đã duyệt với mỗi đỉnh w chưa duyệt kề với v, Bước 3: làm lại bước 2 cho đến khi tất cả các đỉnh được duyệt.

3. Duyệt đồ thị

DFS

Page 44: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.2 Duyệt đồ thị theo chiều sâuVí dụ:Thực hiện duyệt đồ thị theo chiều sâu trên đồ thị G dưới đây:

3. Duyệt đồ thị

v1 v2

v6

v3 v4

v7 v8v5

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8

v1 v2 v6 v3 v4 v8 v7 v5Bảng duyệt

Page 45: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.3 Duyệt đồ thị theo chiều rộngXuất từ một đỉnh v bất kỳ của đồ thị G, chúng ta thực hiện như sau: Bước 1: đánh dấu đã duyệt cho một đỉnh v bất kỳ.Bước 2: chọn đỉnh v đã được duyệt nhưng có đỉnh kề chưa được duyệt. Việc chọn đỉnh v được xét ưu tiên cho các đỉnh được đánh dấu duyệt sớm.Bước 3: thực hiện đánh dấu đã duyệt với tất cả các đỉnh w kề với v, Bước 4: làm lại bước 2 cho đến khi tất cả các đỉnh được duyệt.

3. Duyệt đồ thị

BFS

Page 46: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.3 Duyệt đồ thị theo chiều rộng

3. Duyệt đồ thị

Page 47: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.3 Duyệt đồ thị theo chiều rộngVí dụ:Thực hiện duyệt đồ thị theo chiều rộng trên đồ thị G dưới đây:

3. Duyệt đồ thị

v1 v2

v6

v3 v4

v7 v8v5

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8

v1 v2 v5 v6 v3 v7 v4 v8Bảng duyệt

Page 48: MÔN HỌC: TOÁN ỨNG DỤNG

TRƯỜNG CAO ĐẲNG NGHỀ CNTT iSPACE Website: http://www.ispace.edu.vn

3.3 Duyệt đồ thị theo chiều rộngVí dụ:Thực hiện duyệt đồ thị theo chiều rộng trên đồ thị G dưới đây:

3. Duyệt đồ thị

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9