1

TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CNTT & TRUYỀN THÔNG BỘ MÔN KHOA HỌC MÁY TÍNH

TOÁN RỜI RẠC (DISCRETE MATHEMATICS)

GV: Trần Nguyễn Minh Thư (tnmthu@ctu.edu.vn)

08/2013

2

ĐẠI CƯƠNG VỀ ĐỒ THỊ

ĐỒ THỊ VÔ HƯỚNG

3

 G = (X,U), trong đó:  X: tập hợp các đỉnh  U: tập hợp các cạnh u=(i, j) = (j,i)  Đỉnh kề: chung cạnh (vd đỉnh 1,2)  Cạnh kề: chung đỉnh (vd cạnh u1, u3) u5

4 1

5 u6 u1 Đỉnh cô lập u3

u10

3 2

6 Đỉnh treo

ĐỒ THỊ VÔ HƯỚNG

4

 Đa đồ thị: tồn tại cặp đỉnh phân biệt (i,j) có nhiều hơn

một cạnh và không có khuyên

 Đồ thị đơn (đơn đồ thị): tất cả các cặp đỉnh (i,j) phân

biệt có nhiều nhất một cạnh và không có khuyên

u4

u1

u7

u6

u3

1

2 4

u8

u5

u2

6

3 5

ĐỒ THỊ VÔ HƯỚNG

 Đồ thị đầy đủ là đồ thị luôn tồn tại cung/cạnh nối hai

đỉnh bất kỳ

 Đồ thị con

 A là tập hợp con của X  Đồ thị con GA của đồ thị G sinh ra bởi A có đỉnh là A có cung/cạnh là cung/cạnh của G mà đỉnh của chúng thuộc A.

5

ĐỒ THỊ VÔ HƯỚNG

6

 Đồ thị bộ phận

 V là tập hợp con của U  Đồ thị bộ phận sinh ra bởi V là đồ thị có đỉnh thuộc X

và các cung/cạnh là V

 Đồ thị bộ phận con là đồ thị vừa là đồ thị con vừa là

đồ thị bộ phận

Đồ thị bộ phận của G Đồ thị đầy đủ G Đồ thị con của G

ĐỒ THỊ VÔ HƯỚNG

 Đường đi và chu trình:

 Đường đi (vô hướng): một dãy các cạnh kề nhau

 Đỉnh đầu: đỉnh bắt đầu của đường đi  Đỉnh cuối: đỉnh kết thúc của đường đi  Độ dài: số cạnh trên đường đi

 Đường đi sơ cấp: đường đi có các đỉnh khác nhau từng đôi

một

a 

b 

c 

a - b - e - f - b - c: đường đi a - d - e - f - b: đường đi sơ cấp

 e

 f

 d

7

ĐỒ THỊ VÔ HƯỚNG

 Đường đi và chu trình:

 Chu trình: một đường đi có đỉnh đầu và đỉnh cuối trùng

nhau

 Chu trình sơ cấp: một chu trình có các đỉnh khác nhau từng

đôi một, trừ đỉnh đầu và đỉnh cuối a 

b 

c 

 e

 f

 d

a - b - c - f - b - e - a: chu trình b - c - d - e - a - b: chu trình sơ cấp

ĐỒ THỊ VÔ HƯỚNG

 Xét đồ thị vô hướng G = (X, U)  Đồ thị liên thông: với mỗi cặp đỉnh i, j bất kỳ thì

luôn tìm được đường đi từ i đến j Nhận xét: đồ thị vô hướng G = (X, U) 1. Đồ thị G là liên thông khi và chỉ khi G chỉ có một

bộ phận liên thông

2. Mỗi bộ phận liên thông là một đồ thị liên thông 3. Mỗi đỉnh cô lập là một bộ phận liên thông

ĐỒ THỊ VÔ HƯỚNG

 Đồ thị vô hướng có 9 đỉnh, 6 cạnh và 4 bộ phận

liên thông

4 1 6

9

8 3 7 2 5

ĐỒ THỊ CÓ HƯỚNG

 Ví dụ: Đồ thị có hướng: G = (X,U)

Khuyên u8

5

u5 u7

1 4

u9 u2 u6

u1 u4

2

3 u3 Đỉnh cô lập

u10 7 Cung treo

Đỉnh treo 6

11

ĐỒ THỊ CÓ HƯỚNG

 G = (X,U), trong đó :  X: tập hợp các đỉnh  U: tập hợp các cặp đỉnh có thứ tự u=(i, j) - cung  Khuyên: Cung u=(i, i)  Đỉnh treo: chỉ có một cung duy nhất (đi tới hoặc đi ra từ)

đỉnh đó

 Cung treo: cung duy nhất (đi tới hoặc đi ra từ) đỉnh treo  Đỉnh cô lập: không có cung nào từ đỉnh đó đi ra và cũng

không có cung nào đi tới đỉnh đó

12

ĐỒ THỊ CÓ HƯỚNG

 Đa đồ thị: tồn tại cặp đỉnh có thứ tự (i,j) có nhiều hơn

một cung và có thể có khuyên

 Đồ thị đơn (đơn đồ thị): tất cả các cặp đỉnh có thứ tự

(i, j) có nhiều nhất một cung

 Đồ thị có hướng: G = (X,U), cung u=(i, j)  U

13

ĐỒ THỊ CÓ HƯỚNG

 Nửa bậc

 Nửa bậc trong của đỉnh x, ký hiệu là

, là số cung

có ngọn là x, là số cung đi vào x

 Nửa bậc ngoài của đỉnh x, ký hiệu là

, là số cung

có gốc là x, là số cung từ x đi ra

 Bậc là số cung/cạnh chứa x

14

ĐỒ THỊ CÓ HƯỚNG

 Đường đi và chu trình

 Đường đi (có hướng): một dãy liên tiếp các cung

 Đỉnh đầu: đỉnh bắt đầu của đường đi  Đỉnh cuối: đỉnh kết thúc của đường đi  Độ dài: số cung trên đường đi

 Đường đi sơ cấp: đường đi có các đỉnh khác nhau từng

a 

b 

c 

đôi một

 e

 f

 d

15

a - d - c - f - e: đường đi sơ cấp

ĐỒ THỊ CÓ HƯỚNG

 Đường đi và chu trình

 Chu trình: một đường đi có đỉnh đầu và đỉnh cuối

trùng nhau

 Chu trình sơ cấp: một chu trình có các đỉnh khác nhau

từng đôi một, trừ đỉnh đầu và đỉnh cuối

a 

b 

c 

 e

 f

 d

b - c - f - e - d - a - b: chu trình sơ cấp

ĐỒ THỊ CÓ HƯỚNG

 Đồ thị có hướng liên thông Xét đồ thị có hướng G = (X, U)  Đồ thị liên thông yếu: đồ thị vô hướng tương ứng

với G là liên thông

 Đồ thị liên thông một chiều: nếu với hai đỉnh i , j bất kỳ hoặc là tồn tại đường đi từ i đến j , hoặc là tồn tại đường đi từ j đến i

 Đồ thị liên thông mạnh: nếu với hai đỉnh i và j bất kỳ tồn tại đường đi đi từ đỉnh i đến đỉnh j và ngược lại

BIỂU DIỄN ĐỒ THỊ

 Biểu diễn đồ thị bằng ma trận  Ma trận đỉnh – cung

 Ma trận đỉnh – cạnh

 Ma trận đỉnh – đỉnh

 Ma trận trọng số

BIỂU DIỄN ĐỒ THỊ

Biểu diễn đồ thị bằng ma trận  Ma trận đỉnh – cung

u4

u1 2 u7 4

u6

u3 6 1 u8

u5

u1 1

1

u2 1

u3 0

u2 u4 0 3 u5 0

u6 0

5 u7 0

u8 0

-1

2

0

1

1

0

0

0

0

0

3

-1

-1

0

1

0

0

0

0

4

0

0

-1

0

1

1

0

0

5

0

0

0

-1

-1

0

1

0

6

0

0

0

0

0

-1

-1

BIỂU DIỄN ĐỒ THỊ

u4

u1

u7

Biểu diễn đồ thị bằng ma trận  Ma trận đỉnh – cạnh

u6

u3

2 4

u8

u5

u2

1 6

3 5

u5 0

u6 0

u7 0

u8 0

u1 1

1

u2 1

u3 0

u4 0

0

0

0

0

1

2

0

1

1

1

0

0

0

0

3

1

1

0

0

1

1

0

0

4

0

0

1

1

1

0

1

0

5

0

0

0

0

0

1

1

0

6

0

0

0

BIỂU DIỄN ĐỒ THỊ

u4

Biểu diễn đồ thị bằng ma trận  Ma trận kề đỉnh – đỉnh

u1 2 u7 4

u6

1

u3 6 u8

u5 u2 3 5

5

4

6

1

2

3

0

0

0

0

1

1

1

0

1

0

0

2

0

1

1

0

0

0

3

0

0

1

0

1

0

4

0

0

0

0

1

0

5

0

0

0

0

0

0

6

0

0

BIỂU DIỄN ĐỒ THỊ

u4

Biểu diễn đồ thị bằng ma trận  Ma trận kề đỉnh – đỉnh

u1 2 u7 4

u6

1

u3 6 u8

u5 u2 3 5

5

4

6

1

2

3

0

0

0

0

1

1

1

0

1

0

0

2

0

1

1

0

0

0

3

0

0

1

0

1

0

4

0

0

0

0

1

0

5

0

0

0

0

0

0

6

0

0

BIỂU DIỄN ĐỒ THỊ

4

7

Biểu diễn đồ thị bằng ma trận  Ma trận trọng số

2 1 4

6

8

5

3 6 1

3

2 5

1

5

6

3

4

2

2

1

1

3

2

3

4

7

4

5

6

8

5

6

24

ĐỒ THỊ EULER, HAMILTON

tnmtnhu@cit.ctu.edu.vn 8/2/2015

Đồ thị Euler và nửa Euler

mỗi cạnh của đồ thị đúng một lần  Đồ thị Euler: Đồ thị có chu trình Euler

 Chu trình Euler: chu trình trong đồ thị G đi qua

cạnh của nó đúng một lần

 Đường đi Euler: đường đi đơn trong G đi qua mỗi

  Đồ thị nửa Euler: Đồ thị có đường đi Euler   Mọi đồ thị Euler đều là đồ thị nửa Euler

Đồ thị Hamilton và nửa Hamilton

26

 Chu trình bắt đầu tại một đỉnh v nào đó qua tất cả các đỉnh còn lại mỗi đỉnh đúng một lần sau đó quay trở lại v được gọi là chu trình Hamilton. => Đồ thị được gọi là đồ thị Hamilton nếu nó chứa chu trình Hamilton.

 Đường đi qua tất cả các đỉnh của đồ thị mỗi đỉnh

đúng một lần được gọi là đường đi Hamilton. => Đồ thị chứa đường đi Hamilton được gọi là đồ thị nửa Hamilton.

 Như vậy, đồ thị Hamilton bao giờ cũng là đồ thị nửa Hamilton nhưng điều ngược lại không luôn luôn đúng.

Đồ thị Hamilton và nửa Hamilton

 Ví dụ. Xét các đồ thị G1, G2, G3 trong hình sau:

a

b

c

d

G3

Ta có: đồ thị nửa Hamilton G2, Hamilton G1 và G3

27

28

ĐƯỜNG ĐI NGẮN NHẤT

tnmtnhu@cit.ctu.edu.vn 8/2/2015

BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT

29

 Đường đi ngắn nhất: Xét đồ thị có hướng G=(X, U)  Với mỗi cung u=(i,j)=l(u) hay lij  R: độ dài cung hay

là trọng số của cung.

 Độ dài l của đường đi (có hướng) đi từ đỉnh i đến đỉnh j là tổng của tất cả các độ dài của các cung nằm trên đường đi đó.

 Bài toán đường đi ngắn nhất là: với hai đỉnh i và j của

đồ thị hãy xác định đường đi ngắn nhất từ i đến j.  Ứng dụng thực tiễn: độ dài cung được hiểu cụ thể

như là độ dài, chi phí, thời gian, lưu lượng ….

Giải thuật Moore – Dijkstra

30

 Giải thuật Moore-Dijkstra tìm đường đi ngắn nhất từ

một đỉnh chọn trước s đến các đỉnh còn lại.  G=(X,U) là đồ thị liên thông có trọng số dương

 lij là độ dài của cung u= (i,j) với uU.  *(i) là độ dài đường đi ngắn nhất từ đỉnh s đến đỉnh i.  *(s)= 0

 Giải thuật lặp n-1 lần (n: số đỉnh)  Với mỗi đỉnh iX người ta gán cho i nhãn (i) theo cách

như sau: 

thì (i) = *(i) thì (i) = min {(k) +lki , kS}.

Giải thuật Moore - Dijkstra

31

 Khởi tạo  Thực hiện bước lặp:

Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại của đồ thị sau:

4

7

5

2

2 4

1

5

3

1

7

5 1

2

3 6

Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại của đồ thị sau

33

4

5

7

2

2 4

1

5

 Khởi tạo : S = {1}

3

1

= {2, 3, 4, 5, 6}

3

7

5 1

2

6

4 4 4 4

5 5 5 5

1 1 1 1

G G G G

2 2 2 2

3 3 3 3

6 6 6 6

2,3 2,3 2,3

4,6 4,6 4,6

2,5,6 2,5,6 2,5,6

5 5 5

 2,4  2,4  2,4

i i i i

0 0

(i) (i) (i) (i)

7 7

1 1

 

 

 

p(i) p(i) p(i) p(i)

1

1

4

2 4

2

3

5

4

7

5

2

1

5

5 1

6 1 2,3 4,6 2,5,6  2,4 5 0   

3

34

G i (i) p(i)

7 1

1 1

1

7

2

3 6

4

5

2

3

6 1 2,3 4,6 2,5,6  2,4 5 8 0 3

 3 3

G i (i) p(i)

6 3

1 1

1)- Với Chọn i có  (i) nhỏ nhất => i = 3 Tập đỉnh cần cập nhật khoảng cách 

 (2) = min {(2), (3) + l32} = min {7,1+5} = 6  (5) = min {(5), (3) + l35} = min {, 1+2} = 3  (6) = min {(6), (3) + l36} = min {, 1+7} = 8

4

2 4

3

7

5

2

1

5 1

1 2,3 0

5

3

35

5 4 2,5,6  2,4 3  3

6 5 8 3

G i (i) p(i)

2 4,6 6 3

1 1

1

7

2

3 6

3

1 2,3 0

5 4 2,5,6  2,4 3 8 3 5

6 5 8 3

2 4,6 5 5

1 1

G 2)- Với i Chọn i có  (i) nhỏ nhất (i) => i = 5 p(i) Tập đỉnh cần cập nhật khoảng cách 

 (2) = min {(2), (5) + l52} = min {6,3+2} = 5  (4) = min {(4), (5) + l54} = min {, 3+5} = 8

4

2 4

3

7

5

2

1

5 1

1 2,3 0

5

3

36

5 4 2,5,6  2,4 3 8 3 5

6 5 8 3

G i (i) p(i)

2 4,6 5 5

1 1

1

7

2

3 6

3

1 2,3 0

5 4 2,5,6  2,4 3 8 3 5

6 5 6 2

G i (i) p(i)

2 4,6 5 5

1 1

3)- Với Chọn i có  (i) nhỏ nhất => i = 2 Tập đỉnh cần cập nhật khoảng cách 

 (4) = min {(4), (2) + l24} = min {8,5+4} = 8  (6) = min {(6), (2) + l26} = min {8, 5+1} = 6

4

2 4

3

7

5

2

1

5

5 1

1 2,3 0

3

37

5 4 2,5,6  2,4 3 8 3 5

6 5 6 2

G i (i) p(i)

2 4,6 5 5

1 1

1

7

2

4)- Với Chọn i có  (i) nhỏ nhất => i = 6 Tập đỉnh cần cập nhật khoảng cách 

3 6

4

2 4

3

7

5

2

1

5

5 1

1 2,3 0

3

38

5 4 2,5,6  2,4 3 8 3 5

6 5 6 2

G i (i) p(i)

2 4,6 5 5

1 1

1

7

2

5)- Với Chọn i có  (i) nhỏ nhất => i = 4 Tập đỉnh cần cập nhật khoảng cách 

3 6

4

7

5

2 4

3

2

1

5

5 1

39

3

1 2,3 0

1

3

5 4 2,5,6  2,4 3 8 3 5

6 5 6 2

G i (i) p(i)

2 4,6 5 5

1 1

7

2

6

1

1

3

2

5

2 5

2 4

1

6

BÀI TẬP

40

Xét đồ thị vô hướng có trọng lượng, được cho bởi ma trận kề gia trọng như bảng sau, Tìm đường đi ngắn nhất từ đỉnh A đến các đỉnh còn lại

Đề thi năm 2012, lần 2

BÀI TẬP

41

Đề thi năm 2012, lần 2

 Khởi tạo  S = {A}  X = {A,B,C,D,E,F,G,H}  = X – S = {B,C,D,E,F,G,H}

E

F

G

H

A

B

C

D

B,C,D B,D,E C,E,F C, F, G B,C,F,H B,D,E,G,H D, F, H E,F,G

6 0 8 3    

i (i) p(i)

A A A

BÀI TẬP

42

A

B

C

D

E

F

G

H

B,C,D B,D,E C,E,F C, F, G B,C,F,H B,D,E,G,H D, F, H E,F,G

8 8 7 0 7 3 4 5

i (i) p(i)

C A C C B D E

BÀI TẬP

43

Đề thi năm 2011, lần 1

BÀI TẬP

44

Đề thi năm 2011, lần 1

 Khởi tạo  S = {A}  X = {A,B,C,D,E,F,G,H,K}  = X – S = {B,C,D,E,F,G,H,K}

A

B

C

D

E

F

G

H

K

i

G, H, K D,K D,F D,E,G,H B, F, H B,D,F,G, B,C,D,H

B,C, K C,E, F, H, K K

0 1 1 4     

(i) p(i)

A A A

BÀI TẬP

Đề thi năm 2011, lần 1

45

A B C D E F G H K

G, H, K D,K D,F D,E,G,H B, F, H B,D,F,G, i B,C,D,H

B,C, K C,E, F, H, K K

(i) 6 7 6 8 3 0 1 1 3

p(i)

A

A

K

D

H

H

B

C

Đề thi năm 2013, đợt 1

BÀI TẬP

46

 Tìm đường đi ngắn nhất từ đỉnh A đến các đỉnh còn lại của đồ thị được cho bởi ma trận trọng số sau

BÀI TẬP

47

Đề thi năm 2013, đợt 1

 Khởi tạo  S = {A}  X = {A,B,C,D,E,F,G,H,K}  = X – S = {B,C,D,E,F,G,H,K}

A

B

C

D

E

F

G

H

K

B,F,G C,G,H B,D,H,K C,E,K D,F,H,K E,G,H B, F, H B,C,E,F,G,K C,D,E,H

1 7 0 2     

i (i) p(i)

A A A

BÀI TẬP

Đề thi năm 2013, lần 1

48

F

G

H

K

A

B

C

D

E

B,F,G C,G,H B,D,H,K C,E,K D,F,H,K E,G,H B, F, H B,C,E,F,G,K C,D,E,H

1 5 3 6 8 11 9 0 2

i (i) p(i)

A B B H A B C F

8

F E 1

C

A 3

D 6 2

3

G B

1 3

K H