TOÁN R I R C NG D NG TRONG TIN H C

Ờ Ạ Ọ

KHÁI NI M C B N V CÂY

Ệ Ơ Ả

1

M t s khái ni m c b n

ộ ố

ơ ả

 Đ nh nghĩa:

 Cây ị

ngướ , liên thông và không có ộ ồ ị vô h

 Cây là m t đ th chu trình s c p  Cây không có c nh b i và khuyên ạ ộ  Cây là m t đ n đ th ồ ị

ộ ơ

 Ví dụ

G

G1

G2

G3

G4

Ch

ng 2. Cây

ươ

2

ơ ấ

M t s khái ni m c b n

ộ ố

ơ ả

 R ngừ

 Đ nh nghĩa: ừ

 R ng là m t đ th  R ng có th có nhi u thành ph n liên thông ề  M i thành ph n liên thông là m t cây

ng ộ ồ ị vô h ướ

ừ ỗ

 Ví dụ

G

Ch

ng 2. Cây

ươ

3

và không có chu trình ầ ộ

M t s khái ni m c b n

ộ ố

ơ ả

ướ

ế

 Đ nh lý (Đi u ki n đ c a cây) ệ ộ ồ ị ỉ i m t đ ơ ấ

ủ ủ  N u m i c p đ nh c a m t đ th vô h ủ ng đi s c p thì G là m t cây ộ ườ

ề ọ ặ ồ ạ

ng G ộ

 SV tham kh o tài li u

luôn t n t  Ch ng minh ứ ả

Ch

ng 2. Cây

ươ

4

M t s khái ni m c b n

ộ ố

ơ ả

ượ ố

 Cây có g cố  Đ nh nghĩa ị  M t cây v i m t đ nh đ ọ ớ ộ  Đ nh h ng các c nh trên cây t ị

a

 Ví dụ

e

d

a

f

b

b

f

g

e

d

e

c

b

c

a

h

d

g

c

h

g

f

h

 Cùng m t cây, n u ch n g c khác nhau thì cây có g c thu ố

ế

đ

c s khác nhau

ộ ẽ

ượ

Ch

ng 2. Cây

ươ

5

g c đi ra ộ ỉ ạ ướ c ch n làm g c ừ ố

M t s khái ni m c b n

ộ ố

ơ ả

 Cây có g cố

 M t s khái ni m

ộ ố  Cha  Anh em  T tiên ổ  Con cháu

 Lá  Đ nh trong ỉ  Cây con  M cứ  Chi u cao ề

Ch

ng 2. Cây

ươ

6

M t s khái ni m c b n

ộ ố

ơ ả

 Đ nh lý Daisy Chain

ng đ

ng:

T là đ th có n đ nh. Các m nh đ t ỉ

ồ ị

ề ươ

ươ

ề ầ

1. T là m t cây 2. T không có chu trình và có n-1 c nhạ 3. T liên thông, m i c nh đ u là c u ọ ạ 4. Gi a hai đ nh b t kỳ c a T luôn t n t ấ ữ s c p duy nh t ấ ơ ấ

5. T không có chu trình và T U {e} có chu trình 6. T liên thông và có n-1 c nh ạ

Ch

ng 2. Cây

ươ

7

i m t đ ng đi ủ ỉ ồ ạ ộ ườ

M t s khái ni m c b n

ộ ố

ơ ả

 Cây m-phân  Đ nh nghĩa

m con

 Cây m-phân  Cây có g cố  T t c các đ nh trong có không quá ấ ả

 Cây m-phân đ y đầ

 T t c các đ nh trong có không quá

m con

ấ ả

 m=2: Cây nh phân

ỉ ị

Ch

ng 2. Cây

ươ

8

M t s khái ni m c b n

ộ ố

ơ ả

 Cây m-phân

 Ví dụ

T2

T1

T3

ầ ủ

 T1: Cây nh phân đ y đ ị  T2: Cây tam phân đ y đầ  T3: Cây t ứ

Ch

ng 2. Cây

ươ

9

phân (không đ y đ ) ủ ầ

M t s tính ch t c a cây

ấ ủ

ộ ố

 Tính ch t 1ấ

 Cây n đ nh (n

2) có ít nh t 2 đ nh treo ấ

 Tính ch t 2ấ

 Cây m-phân đ y đ v i

ủ ớ i đ nh trong có ỉ n = m.i + 1

 Tính ch t 3ấ  i = (n -1)/m  l = [(m - 1)n + 1] / m  l = (m - 1)i + 1  n = l + i

Ch

ng 2. Cây

ươ

10

Phép duy t Cây nh phân

 Li

ộ ứ ự xác đ nh, ị

c đ nh nghĩa đ quy cho các cây con ượ

 Th  3 ph

ỉ m i đ nh m t l n ộ ầ ng đ ỉ ệ ng pháp duy t cây

 Đ nh nghĩa  Duy t cây ệ t kê các đ nh theo m t th t ệ ỗ ỉ ườ ươ  Duy t ti n t ệ ề ự  Duy t trung t ệ  Duy t h u t ệ ậ ự

Ch

ng 2. Cây

ươ

11

(Pre-Oder) (In-Oder) ự (Post-Oder)

Phép duy t Cây nh phân

 Đ nh nghĩa  Duy t ti n t

1

ệ ề ự 1. Duy t nút g c ố ệ 2. Duy t ti n t ệ ề ự 3. Duy t ti n t ệ ề ự

2

3

Ch

ng 2. Cây

ươ

12

con trái con ph i ả

Phép duy t Cây nh phân

 Đ nh nghĩa

2

 Duy t trung t ự ệ 1. Duy t trung t ự ệ 2. Duy t nút g c ố ệ 3. Duy t trung t ự ệ

con trái

1

3

Ch

ng 2. Cây

ươ

13

con ph i ả

Phép duy t Cây nh phân

3

 Đ nh nghĩa  Duy t h u t ệ ậ ự 1. Duy t h u t ệ ậ ự 2. Duy t h u t ệ ậ ự 3. Duy t nút g c ố ệ

1

2

Ch

ng 2. Cây

ươ

14

con trái con ph i ả

Phép duy t Cây nh phân

 Đ nh nghĩa

ị  Ví dụ

A

C

B

E

F

D

 Duy t ti n t ự ệ ề  A B D E C F  Duy t trung t ệ  D B E A C F  Duy t h u t ệ ậ ự  D E B F C A

Ch

ng 2. Cây

ươ

15

Ký pháp ngh ch đ o Ba Lan ị

 Cây bi u th c s h c ố ọ

 Bi u di n cho bi u th c

ể  Là cây nh phân  M i nút trong bi u di n cho toán t ể ể

q 2 ngôi ỗ ử

q E2 ứ

 Con trái bi u di n cho bi u th c E ễ

1  Con ph i bi u di n cho bi u th c E ễ

 M i nút lá bi u di n cho m t toán h ng ễ

ễ ứ E1 ể

2 ạ

Ch

ng 2. Cây

ươ

16

ể ỗ ộ

Ký pháp ngh ch đ o Ba Lan ị

 Cây bi u th c s h c ố ọ

 Ví dụ

E = (2 + 3)*2 – (4 – 1)*(15/5)

Ch

ng 2. Cây

ươ

17

Ký pháp ngh ch đ o Ba Lan ị

 Cây bi u th c s h c ố ọ  Duy t cây bi u th c ứ

ứ ể  Bi u th c ti n t ứ ề ố  Bi u th c trung t ứ  Bi u th c h u tô ứ

ệ ể ể ể

Ch

ng 2. Cây

ươ

18

Ký pháp ngh ch đ o Ba Lan ị

 Cây bi u th c s h c ố ọ ả

ứ  Ký pháp ngh ch đ o Ba Lan ị

(Reverse Polish Notation – RPN)  Bi u th c d ng h u t ể

 S d ng đ tính giá tr bi u th c trên máy tính

ậ ố

ứ ở ạ  Ví d : ụ 5 1 2 + 4 * + 3 – ể ị ể ứ

ử ụ

ế

Ch

ng 2. Cây

ươ

19

ử ụ  Tính t trái qua ph i ả  Không s d ng d u ngo c ặ ấ ử ụ  S d ng Stack (ngăn x p)

Ký pháp ngh ch đ o Ba Lan ị

 Cây bi u th c s h c ố ọ ả

ứ  Ký pháp ngh ch đ o Ba Lan ị

(Reverse Polish Notation – RPN)  Thu t toán tính giá tr bi u th c RPN

ị ể ứ

ộ ố

 Đ c m t ký hi u (token)  N u ký hi u là m t s ệ  Đ y vào Stack ệ

 Ng 

đ i v i 2 toán h ng

i, ký hi u là m t toán t c l ộ ượ ạ Stack L y ra 2 toán h ng t ừ ấ  Tính giá tr theo toán t ử ố ớ ị  Đ y k t qu vào Stack

ế

Ch

ng 2. Cây

ươ

20

ậ ọ ế

Ký pháp ngh ch đ o Ba Lan ị

 Cây bi u th c s h c ố ọ ả

ứ  Ký pháp ngh ch đ o Ba Lan ị

(Reverse Polish Notation – RPN)  Ví d : Tính giá tr bi u th c

Ch

ng 2. Cây

ươ

21

ứ ị ể 5 1 2 + 4 * + 3 -

Cây khung (Spanning Tree)

 Đ nh nghĩa

ồ ị

ơ

 Cây khung c a đ n đ th G ủ ủ

 Đ th con c a G ồ ị  Ch a t ứ ấ ả

ộ ồ ị

 Ví dụ

Ch

ng 2. Cây

ươ

22

t c các đ nh c a G ỉ  M t đ th có th có nhi u cây khung ể

Cây khung (Spanning Tree)

 Đ nh lý ị

 M t đ n đ th là liên thông khi và ch khi nó có

ồ ị

ộ ơ cây khung  Ch ng minh

Ñôn giaûn

Ch

ng 2. Cây

ươ

23

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

 Đ nh nghĩa

ấ ộ ồ

ị ọ ổ ố

 Cây khung nh nh t trong m t đ th liên thông, có ỏ tr ng s là m t cây khung có t ng tr ng s trên các ố ọ ộ c nh là nh nh t ấ ạ  Đ nh lý ị

 Cho G = (V, E), X (cid:204)  e là c nh có tr ng s nh nh t n i gi a X và V\X. ỏ

Ch

ng 2. Cây

ươ

24

(cid:222) V ố e là m t c nh trong cây khung nh nh t. ấ ố ữ ấ ỏ ạ ộ ạ

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

ỏ  Thu t toán Prim

 Phân ho ch t p đ nh ạ

ậ ậ

ỉ ỉ

 Ch n m t đ nh ch a thu c cây mà có kho ng cách g n

 Xây d ng cây ự ộ ỉ ọ

ư

c ượ

ự  Ghép vào cây c nh ng n nh t tìm đ ấ ạ c n-1 c nh  Thu t toán d ng khi đ

cây đang xây d ng nh t ấ ắ ượ

Ch

ng 2. Cây

ươ

25

ỉ  T p các đ nh thu c cây đang xây d ng ộ i  T p các đ nh còn l ạ

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

ỏ  Thu t toán Prim

ồ ậ

 Tìm đ nh

 Cho T là t p đ nh g m m t đ nh x ỉ  Trong khi T có ít h n ơ n đ nh, th c hi n vi c sau ự ớ

thêm đ nh thêm c nh ạ

u vào T uv vào cây v i ớ v ˛

T là đ nh g n ỉ

ầ u nh t ấ

Ch

ng 2. Cây

ươ

26

ộ ỉ ỉ ệ u trong V \ T mà g n v i T nh t ấ ỉ

Ch

ng 2. Cây

ươ

27

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

ỏ  Thu t toán Prim

ậ  Ph ươ

ấ ậ

ng pháp lân c n g n nh t (Gán nhãn) ầ  Kho ng cách ả

 d(v, X) = min { d(v, x) | x ˛

X

X } v i v ớ

 M i đ nh v ta g n m t nhãn d

 Nhãn c a đ nh ủ ỗ ỉ

 dv = d(v, T) v i T là t p đ nh c a cây đang xây d ng ỉ

T}

 M i b

c ta tìm đ nh

ỗ ướ

v ậ ủ u mà du = min {dv | v ˇ

˛

 Ghép uv vào cây T  C p nh t l

T

ậ ạ v v i v ớ i d

Ch

ng 2. Cây

ươ

28

ˇ

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

ỏ  Thu t toán Prim

;

ậ  Ph ươ Kh i t o  B c 1: ở ạ ướ  VT = {s}; T = ˘  ds = 0; dv = w(s, v)

VT} {uv}

 B c 3: ướ

ng pháp lân c n g n nh t (Gán nhãn) ầ ấ ậ

Tìm c nhạ  B c 2: ướ  Tìm u mà du = min {dv | v ˇ  VT = VT ¨ T = T ¨ {u}; T ” V thì d ngừ  N u Vế C p nh t nhãn ậ ậ  dv = min{ dv, w(u, v) } v i V ớ

VT

Ch

ng 2. Cây

ươ

29

ˇ

Ch

ng 2. Cây

ươ

30

Cây khung (Spanning Tree)

 Phân ho ch t p đ nh ạ

 Cây khung nh nh t ấ  Thu t toán Kruskal ỉ  T p các đ nh liên thông v i m t đ nh đ

c ch n trong cây

ộ ỉ

ượ

đang xét

 T p các đ nh còn l

i ạ

 Xây d ng cây ự ọ

 Ch n 1 c nh e = uv  N u uv không liên thông v i nhau trong cây đang xây d ng

ế

ạ  Thu t toán d ng khi đ

c n-1 c nh

thì ghép c nh này vào cây ừ

ượ

Ch

ng 2. Cây

ươ

31

Cây khung (Spanning Tree)

 S p x p các c nh c a đ th G theo th t ủ

tăng d n ồ ị ứ ự ạ ầ

˘

 Cây khung nh nh t ấ  Thu t toán Kruskal ậ ế ắ c a tr ng s . ố ọ ủ  Kh i t o t p c nh T = ở ạ ậ  V i m i c nh ỗ ạ

 N u các đ u mút c a ầ

ủ e không liên thông v i nhau

ế

trong T thì  Thêm e vào T.

 Cây khung nh nh t là T

ạ e l y theo th t : ấ ớ ứ ự

Ch

ng 2. Cây

ươ

32

ấ ỏ

Ch

ng 2. Cây

ươ

33

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

 Ví d : Tìm cây khung nh nh t c a đ th sau

ấ ủ

ồ ị

5

2

4

2

20

1

6

20

1

3

5

4

Ch

ng 2. Cây

ươ

34

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

ỏ  Ví d : Tìm cây khung nh nh t ấ

Ch

ng 2. Cây

ươ

35

Cây khung (Spanning Tree)

 Cây khung nh nh t ấ

 So sánh Prim và Kruskal

 Prim ch n c nh có tr ng s nh nh t liên thu c v i

ấ ớ ộ ỏ ố ọ ạ

 Kruskal ch n c nh có tr ng s nh nh t mi n là ọ

ộ ỉ

ễ ấ ố ỏ ộ ạ

 Thu t toán Prim hi u qu h n đ i v i các đ th dày

ọ m t đ nh đã thu c cây ọ không t o ra chu trình ạ

ố ớ ả ơ ồ ị ệ

Ch

ng 2. Cây

ươ

36

(s c nh nhi u) ậ ố ạ ề

Cây khung (Spanning Tree)

 M t s bài toán ng d ng ệ

ộ ố ố

 N i dây đi n ặ

ộ ể

ồ ầ

 Trong m t m t ph ng to đ cho N + 1 đi m, đi m ể c coi là ngu n đi n ệ đó ta n i dây c p đi n cho các n i ơ

ộ ượ ấ ẳ ố ọ ố

ệ ạ ể

ể ể i có to đ là (Xi, ạ ộ ặ ứ ể ỗ

n i c p đi n ban đ u hay gián ti p qua ầ ế

 Yêu c u đ a ra ph ươ ề

ng án n i đi n gi a các đi m đ ể ữ ể ố

ệ ổ ề

Ch

ng 2. Cây

ươ

37

ạ ộ đ u tiên chính là g c t a đ đ duy nh t mà t ừ ấ khác. Đi m th i trong N đi m còn l ứ Yi), là đi m đ t máy th i. M i đi m đ t máy có th ể ặ l y tr c ti p t ệ ự ế ừ ơ ấ ấ m t đi m đ t máy khác. ặ ể ư ầ m i n i đ t máy đ u có đi n và t ng chi u dài dây ọ ơ ặ ệ c n thi ế ầ t là ng n nh t. ắ ấ

Cây khung (Spanning Tree)

ộ ố  Theo thi

t tr ế ướ

ồ ự ế ừ

ế

nút ắ ạ c K tuy n đ

ượ

ế

ng hai chi u tr c ti p t ề ng khác nhau không c t nhau t ệ  Bài toán : H th ng đ ườ

 M t s bài toán ng d ng ứ t k , m t m ng giao thông g m N nút. Bi ạ ế ế ộ chi phí đ xây d ng đ ườ ự ể nút j. Hai tuy n đ ườ không là đ u mút. Hi n đã xây d ng đ ự ư

ệ ố ấ

ế

ng đã

ườ

c i đ n ế i đi m ể ng. ườ ng đã xây d ng đã b o đ m s đi ự l i gi a hai nút b t kỳ ch a? N u ch a, hãy ch n m t s ạ ữ ộ ố ư ng c n xây d ng thêm sao cho: tuy n đ ầ ườ ế  Các tuy n đ ườ ế xây d ng b o đ m s đi l ả

ng s xây d ng thêm cùng v i các đ ả  T ng kinh phí xây d ng các tuy n đ

ng thêm vào là ít

ự i gi a hai nút b t kỳ. ạ ữ ườ

ự ự

ế

ổ nh t. ấ

Ch

ng 2. Cây

ươ

38