BG Ly Thuyet Do Thi_TRI

97
 1 GII THIU MÔN HC Tên môn hc: Lý thuyết đồ th  Stiết: 45 LT  Hình thc đánh giá: -Thi giữ a kỳ : 20% -Bài tp lớ n: 20% -Thi cui kỳ : 50% Giáo viên : Hunh Minh Trí  

Transcript of BG Ly Thuyet Do Thi_TRI

Page 1: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 1/9711

GIỚI THIỆU MÔN HỌCTên môn học: Lý thuyết đồ thị  Số tiết: 45 LT

Hình thức đánh giá:-Thi giữ a kỳ : 20% 

-Bài tập lớ n: 20% 

-Thi cuối kỳ : 50% 

Giá o viên : Huỳnh Minh Trí  

Page 2: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 2/9722

Nội dung

Lịch Sử Của Lý Thuyết Đồ Thị 

CHƯƠNG 1: CÁC KHÁI NIỆM CƠ BẢN

CHƯƠNG 2: BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNHCHƯƠNG 3: CÁC THUẬT TOÁN DUYỆT ĐỒ THỊ 

CHƯƠNG 4: ĐỒ THỊ EULER VÀ ĐỒ THỊ HAMILTON

CHƯƠNG 5: CÂYCHƯƠNG 6: BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT

Page 3: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 3/97

33

LỊCH SỬ LÝ THUYẾT ĐỒ THỊ 

Bài toán bảy cây cầu Euler 

Bài toán bảy cây cầu Euler , còn gọi là Bảy cầu ởKönigsberg nảy sinh từ nơi chốn cụ thể. Thành phốKönigsberg, Đức (nay là Kaliningrad, Nga) nằm trênsông Prege

Page 4: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 4/97

44

LỊCH SỬ LÝ THUYẾT ĐỒ THỊ (TT) 

Câu hỏi đặt ra là có thể đi theo một tuyến đường mà đi quamỗi cây cầu đúng một lần rồi quay lại điểm xuất phát haykhông. Năm 1736, Leonhard Euler đã chứng minh rằngđiều đó là không thể được. 

Page 5: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 5/97

LỊCH SỬ LÝ THUYẾT ĐỒ THỊ (TT) 

Lời giải của Euler  Để chứng minh kết quả, Euler đã phát biểu bài toán bằng

các thuật ngữ của lý thuyết đồ thị. Ông loại bỏ tất cả cácchi tiết ngoại trừ các vùng đất và các cây cầu, sau đóthay thế mỗi vùng đất bằng một điểm, gọi là đỉnh hoặc

nút, và thay mỗi cây cầu bằng một đoạn nối, gọi là cạnh hoặc liên kết. Cấu trúc toán học thu được được gọi làmột đồ thị.

Page 6: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 6/97

66

LỊCH SỬ LÝ THUYẾT ĐỒ THỊ (TT) 

•  Ý nghĩa của bài toán đối với lịch sử toán học • Trong lịch sử toán học, lời giải của Euler cho bài toán

bảy cây cầu ở Königsberg được coi là định lý đầu tiêncủa lý thuyết đồ thị, ngành nghiên cứu mà nay được coilà một nhánh của toán học tổ hợp (combinatorics ), tuy

các bài toán tổ hợp đã được quan tâm đến từ sớm hơnrất nhiều. Ngoài ra, nhận xét của Euler rằng thông tinquan trọng là số cây cầu và danh sách các vùng đất ởđầu cầu (chứ không phải vị trí chính xác của chúng) đã

là dấu hiệu cho sự phát triển của ngành tôpô học. Sựkhác biệt giữa sơ đồ thực và sơ đồ đồ thị là một ví dụ tốtrằng tôpô học không quan tâm đến hình thù cứng nhắccủa các đối tượng 

Page 7: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 7/97

77

CHUƠNG 1: CÁC KHÁI NIỆM CƠ BẢN

Định nghĩạ đồ thị:• Một đồ thị ký hiệu là G=(V,E), trong đó 

V: tập đỉnh

E={(u,v) | u,v∈V}: tập cạnhn=|V| gọi là cấp của đồ thị • Đồ thị vô hướng: Là đồ thị gồm các cạnh vô hướng

(không thứ tự): (u,v) ∈ E; (v,u) ∈ E

2

1

3

4

V={1,2,3,4}

E={(1,2), (1,3), (2,3), (3,4)}

Page 8: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 8/97

88

Định nghĩ a đồ thị 

• Đồ thị có hướng: là đồ thị gồm các cạnh có thứ tựđược gọi là cung.

• Đơn đồ thị: Mỗi cặp đỉnh chỉ có duy nhất một cạnh (cung)

V={1,2,3,4,5}

E={(1,2),(2,3),(3,1),(5,3)}

2

1

3

45

2

1

3

4 5

2

1

3

4 5

Page 9: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 9/97

99

• Đa đồ thị: mỗi cặp đỉnh có thể có một hay nhiều cạnh(cung)

• Đồ thị có trọng số: trên mỗi cạnh (cung) được gắn mộtgiá trị gọi là trọng số 

2

1

3

4 5

2

1

3

4 5

2

1

3

4 5

3 1

-2

52

3

2

1

3

4 5

1

2

1

3

Định nghĩ a đồ thị 

Page 10: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 10/97

1010

Một số khái niệm

Một số khái niệm:• Khuyên: cạnh (cung) gọi là khuyên nếu đỉnh đầu trùng

với đỉnh cuối.

• Cạnh (cung) lặp: là hai cạnh (cung) cùng tương  ứng với một cặp đỉnh. 

1

1 2 1 2

• Đỉnh kề: nếu (u,v) là cạnh (cung) của đồ thị thì v gọi là kề của u. Trong đồ thị vô hướng nếu v kề u thì u cũng kề v.

Page 11: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 11/97

1111

• Cạnh liên thuộc: cạnh e=(u,v) gọi là cạnh liên thuộc với hai đỉnh u, v.

• Bậc của đỉnh: số cạnh liên thuộc với v gọi là bậc của đỉnh v, kí hiệu là d(v). Bậc  của  đỉnh có khuyên được 

cộng thêm 2 cho mỗi khuyên.

2

1

3

4 5

d(1)=1

d(2)=3

d(3)=2

d(4)=3

d(5)=3

Một số khái niệm

Page 12: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 12/97

1212

• Đỉnh cô lập,  đỉnh treo: Đỉnh bậc 0 gọi là đỉnh cô lập, đỉnh bậc 1 gọi là đỉnh treo.

2

1

3

4 5

Đỉnh cô lập: 4

Đỉnh treo: 5

• Cung vào, ra: cung e=(u,v) gọi là cung ra khỏi u và là

cung vào v.1 2 Cung (1,2) là cung ra của 1 và là

cung vào của 2

Một số khái niệm

Page 13: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 13/97

1313

• Bán bậc của đỉnh:  – Số cung vào của đỉnh v gọi là bán bậc vào của v, kí

hiệu d –(v) – Số cung ra của đỉnh v gọi là bán bậc ra của v, kí hiệu 

d+(v)

2

1

3

4 5

d –(1)=1; d+(1)=0

d –(2)=2; d+(2)=3

d –(3)=2; d+(3)=1

d –(4)=1; d+(4)=3

d –(5)=1; d+(5)=0

Một số khái niệm

Page 14: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 14/97

1414

Định lý: Trong đồ thị vô hướng:Tổng bậc các đỉnh = 2 lần số cạnh. 

Chứng minh:

Gọi m là số cạnh, thì cần chứng minhMỗi cạnh e=(u,v) được tính một  lần trong d(u) và một  lần trong d(v) trong tổng bậc của các đỉnh, mỗi cạnh được tínhhai lần  tổng bậc bằng 2m.

∑∈

=V v

mvd  2)(

2

1

3

4 5

Số cạnh: 5

Tổng bậc các đỉnh: 10

Một số khái niệm

Page 15: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 15/97

1515

Do ∀v ∈ U, deg(v) chẵn nên chẵn ⇒  chẵn

Do ∀v ∈ O,deg(v) lẻ mà tổng  chẵn, nên tổng này phải gồm một số chẵn các số hạng ⇒ số đỉnh có bậc lẻ là một số chẵn (đpcm).

Hệ quả: Trong đồ thị vô hướng thì:Số đỉnh bậc lẻ là một số chẵn

mvd vd vd 

U vOvV v

2)()()( =+= ∑∑∑∈∈∈

Chứng minh:Gọi O là tập các đỉnh có bậc là số lẻ, và U là tập các đỉnh có bậc là số chẵn.Ta có:

∑∈U vvd  )( ∑∈Ov

vd  )(

∑∈Ov

vd  )(

Một số khái niệm

Page 16: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 16/97

1616

Định lý 2: Trong đồ thị có hướng: Tổng bán bậc ra = tổng bán bậc vào = số cung

Chứng minh:

Gọi m là số cung thì cần cm:

Hiển nhiên vì mỗi cung (u,v) ra ở đỉnh u và vào ở đỉnh vnên được tính một lần trong bậc ra của u và một lần trong

bậc vào của v nên suy ra đpcm.

mvd vd 

V vV v

==∑∑∈

+

− )()(

Một số khái niệm

Page 17: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 17/97

1717

Đường đi, chu trình, liên thông:• Đường đi: Đường đi có độ dài n từ đỉnh v0 đến đỉnh vn 

là dãy v0, v1, …,vn-1, vn ; với (vi,vi+1)∈E, i=0,…,n-1. Đường đi có thể biểu diễn bằng một dãy n cạnh (cung): (v0,v1),

(v1,v2),…, (vn-1, vn). Đỉnh v0 gọi là đỉnh đầu, đỉnh vn gọi làđỉnh cuối của đường đi.

2

1

3

4 5

Dãy các đỉnh sau là đường đi:

1,3,4,5,3,25,3,4,1,2

2,3,1,4,5,3

Một số khái niệm

Page 18: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 18/97

1818

• Chu trình: là đường đi có đỉnh đầu trùng với đỉnh cuối.Đường đi (hay chu trình) gọi là đơn nếu không có cạnh (cung) bị lặp lại; gọi là sơ cấp nếu không có đỉnh nào bị lặp lại

2

1

3

4 5

Dãy các đỉnh trên đồ thị vô hướng sau đây là cácchu trình:

1,2,3,5,4,3,1 (chu trình đơn) 2,3,4,1,2 (chu trình sơ cấp)1,3,4,1,3,2,1 (không đơn) 

2

1

3

4 5

Dãy các đỉnh trên đồ thị có hướng sau đây làcác chu trình:

1,2,4,3,2,4,1 (không đơn) 

1,2,4,3,5,4,1 (chu trình đơn) 

Một số khái niệm

Page 19: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 19/97

1919

• Đối chu trình: Cho G=(V,E) và A⊂V, đối chu trình xácđịnh bởi A được định nghĩ a là:w(A)={e ∈ E | e có một đỉnh ở trong A} 

• Đối chu trình sơ cấp: Cho G liên thông đối chu trìnhw=w(A) được gọi là sơ cấp (hay tập cắt) nếu: G – w không liên thông và ∀ w’⊂ w thì G - w’ liên thông

Một số khái niệm

1 2 3

4567

e1 

e2 

e3 

e4 

e5 

e6 

e7 

e8 

e9 

e10 

e11 A={2,7} thì w(A)={e1,e2, e4, e5, e6} không sơ cấp

A={1,7} thì w(A)={e2, e3, e4} sơ cấpA={3,5,6}, w(A)=?

A={2,5}, w(A)=?

Page 20: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 20/97

2020

• Đồ thị liên thông: Một đồ thị được gọi là liên thông nếu hai đỉnh bất kỳ luôn có đường đi.

Một số khái niệm

2

1

3

4 5

2

1

3

4 5

2

1 3

2

1 3

Liên thông

Không liên thông

Liên thông

Không liên thông

1

2 3

4 5

Liên thông

Page 21: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 21/97

2121

• Đồ  thị liên thông mạnh: là đồ thị có hướng liên thông• Đồ  thị liên thông yếu: là đồ  thị có hướng không liênthông, nhưng đồ thị vô hướng tương ứng liên thông

• Đồ thị vô hướng liên thông gọi là định hướng được: nếu có thể định hướng các cạnh để thu được đồ  thị có

hướng liên thông.2

1 3

Liên thông mạnh2

1 3

Liên thông yếu

2

1 3

Vô hướng liên thôngđịnh hướng được

2

1 3

Vô hướng liên thôngđịnh hướng được

Vô hướngliên thôngkhông địnhhướngđược

Một số khái niệm

Page 22: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 22/97

2222

• Trong trường hợp đồ thị là không liên thông, nó sẽ rã ra

thành một số đồ thị con liên thông đôi một không có đỉnh chung. Những đồ thị con liên thông như vậy ta sẽ gọi làcác thành  phần liên thông  của đồ thị. 

• Đỉnh rẽ nhánh: Đỉnh v gọi là đỉnh rẽ nhánh nếu việc loại 

bỏ v cùng với các cạnh liên thuộc  với nó làm tăng  số thành phần liên thông.

• Cạnh cầu: Cạnh e gọi là cầu nếu việc loại bỏ e làm tăng số thành phần liên thông.

2

1

3

4 5

Đỉnh 3,4 gọi là đỉnh rẽ nhánh

Cạnh (3,4), (3,5) gọi là cạnh cầu

Một số khái niệm

Page 23: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 23/97

2323

• Đồ thị đủ cấp n: Là đơn đồ thị vô hướng có n đỉnh, ký

hiệu bởi Kn, mà giữa hai đỉnh bất kỳ của nó luôn có cạnh nối. Kn có số cạnh là: n(n-1)/2

Một số đồ thị đặc biệt

• Đồ  thị vòng: Đồ  thị vòng Cn,n≥3 gồm n đỉnh v1,v2,...,vn 

và các cạnh (v1,v2), (v2,v3) . . . (vn-1,vn), (vn,v1).

C3  C4  C5  C6 

K3 K4 K5

K4

Page 24: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 24/97

2424

• Đồ  thị bánh xe: Đồ  thị bánh xe Wn thu được  từ đồ  thị vòng Cn bằng cách bổ sung vào một đỉnh mới nối với tất cả các đỉnh của Cn 

W3  W4  W5  W6 

Một số đồ thị đặc biệt

• Đồ thị lập phương: Đồ thị lập phương Qn là đồ thị với 

các đỉnh biểu diễn 2n

xâu nhị phân độ dài n.

000 001

010 011

100 101

110 111

0 1

00 01

10 11

Q1  Q2  Q3 

Page 25: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 25/97

2525

• Đồ thị lưỡng phân(hai phía): Đơn đồ thị G=(V,E) được gọi là lưỡng phân(hai phía) nếu như  tập đỉnh V của nócó thể phân hoạch thành hai tập X và Y sao cho mỗi cạnh của đồ  thị chỉ nối một đỉnh trong X với một đỉnh trong Y. Ký hiệu G=(X∪Y, E)

Một số đồ thị đặc biệt

1

2 3

4

1

2

4

3

1

2 3

4

5

6 1

2

4

3

56

Page 26: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 26/97

2626

• Đồ  thị  lưỡng phân đủ: Đồ  thị  lưỡng phân G=(X,Y, E)với |X|= m, |Y| = n được gọi là đồ thị lưỡng phân đủ, kýhiệu là Km,n nếu mỗi đỉnh trong tập X được nối với tất cả các đỉnh trong tập Y.

Một số đồ thị đặc biệt

K2,2K2,3

K4,3

Định lý: G là đồ  thị  lưỡng phân nếu G không có chu trìnhđộ dài lẻ 

Page 27: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 27/97

2727

• Đồ thị con: Cho hai đồ thị G=(V,E) và G’(V’, E’). G’ là đồ thị con của G nếu V’⊆ V và E’⊆ E. Nếu V’=V thì G’ gọi làđồ thị bộ phận hay đồ thị khung của G.

2

1

3

4 5

2

1

3

4

2

1

3

4 5

G Đồ thị bộ phậncủa GĐồ thị con của G

Một số đồ thị đặc biệt

Page 28: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 28/97

2828

• Đồ  thị bù: Cho Kn

=(V,E) và G=(V,E1

) là đồ  thị khungcủa Kn. =(V,E2) gọi là đồ thị bù của G nếu E2=E-E1 

Một số đồ thị đặc biệt

G

G  G

• Đồ thị đẳng cấu: Hai đồ thị đơn vô hướng G1=(V1,E1)và G2(V2,E2) được gọi là đẳng cấu nếu có một song

ánh f: V1→

V2 sao cho với (u,v)∈

E1 ⇔

(f(u),f(v))∈

E2 

G1  G2 

A

B

C D E

1 2 3

4 5

Song ánh f:

f(A)=5; f(B)=4; f(C)=3;f(D)=2; f(E)=1

Page 29: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 29/97

2929

Các cặp đồ  thị sau có đẳng cấu không?. Nếu có thì hãyxây dựng một song ánh f?

A

B

C

D

E

F

6

4 5

1

2 3G1  G2 

Một số đồ thị đặc biệt

Đồ thị Petersen

Đồ thị Herschel

Page 30: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 30/97

30

• Đồ thị đồng cấu:Phép chia cạnh (u,v) của đồ thị là việc  loại bỏ cạnh nàykhỏi đồ thị và thêm vào đồ  thị một đỉnh mới w cùng với hai cạnh (u,w), (w, v) .Hai đồ thị G=(V,E) và H=(W,F) được gọi là đồng cấu nếu chúng có thể thu được  từ cùng một đồ  thị nào đó nhờ phép chia cạnh.

Một số đồ thị đặc biệt

Page 31: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 31/97

31

•  Đồ thị phẳng:Bài toán 3 căn hộ: 

Cần xây dựng  một hệ  thống cung cấp điện, hơi  đốt và nước cho ba căn hộ sao cho mỗi  căn hộ đều được  nối  với các nguồn cung cấp trên và đường  dẫn của chúng không cắt nhau 

31

Một số đồ thị đặc biệt

?

?

?

điện

Hơi đốt

nước

Để giải quyết bài toán trên, ta sẽ sử dụng khái niệm đồ thịphẳng. 

Page 32: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 32/97

32

Định lý Kuratowski:(dùng kiểm tra một đồ thị có là phẳng hay không) 

Đồ  thị G là phẳng ⇔ G không chứa đồ  thị con đồng cấuvới K3,3 hoặc K5 

32

K4K4

Định nghĩ a: Đồ thị được gọi là đồ thị phẳng nếu ta có thể vẽ nó trên mặt phẳng sao cho các cạnh của nó không cắt nhau ngoài ở đỉnh. Cách vẽ như vậy sẽ được gọi là biểu diễn phẳng của đồ thị.

Một số đồ thị đặc biệt

Page 33: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 33/97

33

K3,3 K5

Một số đồ thị đặc biệt

Page 34: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 34/97

34

Định lý: (Công thức Euler)G là đồ  thị phẳng liên thông, G có n đỉnh, m cạnh, r là số miền của mặt phẳng bị chia bởi biểu diễn phẳng của G. Tacó: r = m - n + 2

r1 r2 

r3 

r4 r5 

Số đỉnh: 7

Số cạnh: 10

Số miền: 10 – 7 + 2 = 5

Một số đồ thị đặc biệt

ắ ố ồ

Page 35: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 35/97

35

Sắc số của đồ thị 

ắ ố ồ

Page 36: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 36/97

36

Sắc số của đồ thị 

ắ ố ồ

Page 37: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 37/97

37

Định nghĩ a:Tô màu một đồ  thị vô hướng là một sự gán màu cho cácđỉnh sao cho hai đỉnh kề nhau phải khác màu nhau.Số màu (sắc số) của một đồ thị là số màu tối thiểu cần thiết 

để tô màu đồ thị này.Thuật toán tô màu Welch-PowellB1: Sắp xếp danh sách các đỉnh theo thứ tự bậc giảm dầnB2: Chọn đỉnh v chưa tô trên danh sách theo thứ tự từ trái

sang phải, chọn một màu để tô đỉnh v và các đỉnh không kề với vB3: Lặp lại B2 đến khi tất cả các đỉnh đều được tô.

Sắc số của đồ thị 

ắ ố ồ

Page 38: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 38/97

38

Sắc số của đồ thị 

Đỉnh 4 3 5 6 1 2

Bậc 3 3 2 2 2 2

Màu 1 2 2 1 2 11

2 3

4 6

5

1

2 3

4 5

6

Đỉnh 1 5 2 6 3 4Bậc 4 4 3 3 2 2

Màu 1 2 2 3 3 1

3 4

1

25

6

7

89

10 1

2

4 73 6

8 105 9

11

Ể Ễ Ồ

Page 39: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 39/97

3939

• Ma trận kề: 

Cho G=(V,E), V={1,2,3,…,n}, ma trận kề A=(Ai,j) của Glà ma trận vuông cấp n xác định bởi:Ai,j=số cạnh (cung) từ i đến j

CHƯƠNG 2: BIỂU DIỄN ĐỒ THỊ 

2

1

3

4 5

1 2 3 4 5

1 0 1 1 2 0

2 1 0 1 0 0

3 1 1 0 1 1

4 2 0 1 0 1

5 0 0 1 1 1

Ai,j=

2

1

3

4

5

1 2 3 4 51 0 1 1 0 0

2 0 0 1 0 0

3 0 0 0 1 0

4 1 0 0 0 1

5 0 1 1 0 0

Ai,j=

Page 40: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 40/97

4040

Ma trận trọng số 

• Ma trận trọng số:Cho G=(V,E) là một đồ thị có trọng số, nghĩ a là mỗi cạnh(i,j) ∈ E đều có một giá trị c(i,j) gọi là trọng số của cạnh.

trọng số cạnh|cung (i,j) nếu (i,j) ∈ E

θ nếu (i,j) E Trong đó là một trong các giá trị: 0, ∞, +∞, -∞ 

Ma trận trọng số Ai,j =

2

1

3

4

5

2

4

132

-2

7

1 2 3 4 5

1 0 2 ∞  4 ∞ 

2 2 0 -2 1 23 ∞  -2 0 3 7

4 4 1 3 0 ∞ 

5 ∞  2 7 ∞  0

ế

Page 41: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 41/97

41

• Ma trận liên kết (ma trận liên thuộc đỉnh-cạnh):Cho G=(V,E) với V={1,2,3,…,n}; E=(e1, e2,…, em). Ma trậnliên kết của G là ma trận A=(Ai,j) có n dòng, m cột đượcđịnh nghĩ a như sau:

1 nếu đỉnh i kề với cạnh e j

0 nếu ngược lại

41

Nếu G vô hướng thì Ai,j=

Nếu G có hướng thì Ai,j=1 nếu e j rời khỏi đỉnh i

-1 nếu e j đi đến đỉnh i

0 nếu e j không kề với đỉnh i

Ma trận liên kết

ế

Page 42: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 42/97

4242

a b c d e f g1 1 0 0 0 1 0 0

2 1 1 1 1 0 0 0

3 0 1 0 0 0 1 1

4 0 0 0 1 1 1 0

5 0 0 1 0 0 0 1

2

1

3

4

5

a

e

d

fc

b

g

2

1

3

4

5

a

e

d

fc

b

g

a b c d e f g

1 1 0 0 0 1 0 0

2 -1 -1 1 1 0 0 0

3 0 1 0 0 0 -1 -1

4 0 0 0 -1 -1 1 0

5 0 0 -1 0 0 0 1

Ma trận liên kết

Page 43: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 43/97

4343

• Danh sách cạnh(cung):Trong trường hợp số cạnh ít hơn nhiều so với số cạnhthì người ta thường dùng danh sách cạnh(cung) để  lưu trữ đồ thị. Mỗi cạnh được biểu diễn bởi đỉnh đầu và đỉnhcuối.

Danh sách cạnh (cung)

2

1

3

45

Đầu Cuối

1 2

1 4

2 3

2 42 5

3 4

3 5

D h á h ề

Page 44: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 44/97

4444

• Danh sách kề:Danh sách kề là danh sách lưu các đỉnh kề của một đỉnhnào đó. Nếu đồ thị có n đỉnh thì sẽ lưu trữ với n danhsách kề 

2

1

3

4

5

4 nilDS 1

DS 2

DS 3

2

43 5 nil

∅ 

3 nilDS 4

DS 5 3 nil

Danh sách kề 

Page 45: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 45/97

45

Nhận xét 

Lưu trữ  Ưu điểm  Khuyết điểm Ma trận kề 

-Truy xuấtnhanh các đỉnhkề 

- Luôn sử dụng 2n đơn vị bộ nhớcho dù số cạnh rất ít 

Ma trận liên kết 

- Tiết kiệm bộ

nhớ đối với đồthị có ít cạnh - Tìm đỉnh kề khó khăn 

Danh sách cạnh-Tiết kiệm bộnhớ đối với đồthị có ít cạnh

-Thực hiện nhiều phép so sánh khitìm đỉnh kề -Trong trường hợp đồ thị có trọngsố phải thêm đơn vị bộ nhớ 

Danh sách kề 

- Phân nhómđỉnh kề rõ ràngthành các danhsách

-Thực hiện thao tác chậm do phảitruy xuất tuần tự -Tìm một đỉnh là kề của những đỉnhnào phải duyệt hết các danh sách

Biể diễ đồ thị ê á í h

Page 46: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 46/97

4646

• Viết chương trình đọc một đồ thị vào máy tính bằng: – Ma trận kề  – Ma trận liên kết  – Danh sách cạnh  – Danh sách kề

Biểu diễn đồ thị trên máy tính

2

1 3

4

5

6

• Viết chương trình chuyển đổi qua lại giữa các hình thức

lưu trữ trên• Viết chương trình tìm các đỉnh có đỉnh kề là k với k

nhập vào từ bàn phím và đồ thị được lưu trữ bằng danhsách kề 

CHUƠNG 3: CÁC THUẬT TOÁN DUYỆT VÀ TÌM

Page 47: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 47/97

4747

1) Tìm theo chiều sâu(Depth First Search - DFS)2) Tìm theo chiều rộng(Breadth First Search - BFS)

CHUƠNG 3: CÁC THUẬT TOÁN DUYỆT VÀ TÌMKIẾM TRÊN ĐỒ THỊ 

Th ật t á DFS

Page 48: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 48/97

4848

Ý tưởng:• Từ  đỉnh v1 nào đó  chưa  thăm,  thăm v1  rồi tìm đỉnh v2 

(chưa thăm) kề với v1, thăm v2 …• Nếu tại một đỉnh vi nào đó không còn đỉnh kề chưa thăm 

thì quay trở  lại tìm đỉnh kề chưa  thăm khác của vi-1 vàthăm đỉnh này.• Thuật toán lặp lại việc thăm cho đến khi tất cả các đỉnh

đều được thăm.

Thuật toán DFS

Nếu bắt đầu từ đỉnh 1 thì thứ tự duyệtcó thể là: 1, 3, 2, 5, 4

3

1

2

4

5

Th ật t á DFS

Page 49: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 49/97

4949

Thuật toán:

void DFS1(v)//duyệt một thành phần liên thông chứa v {

Tham_Dinh(v);tham[v]=1; //ghi nhận là đã thăm v để về sau không thăm nữa. For (u ∈ Ke(v)) // xét tất cả các đỉnh u kề với v 

If (!tham[u]) DFS1(u); //neu u chua thăm, thăm u }void DFS() //duyệt tất cả các thành phần liên thông 

{ for (v∈V) tham[v]=0; //ban đầu tất cả các đỉnh đều chưa thăm. for (v∈V) //xét tất cả các dinh 

if (!tham[v]) DFS1(v); // neu đỉnh v chua tham thi tham v }

Thuật toán DFS

Th ật t á BFS

Page 50: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 50/97

5050

Thuật toán BFS

Ý tưởng:• Từ đỉnh v nào đó chưa thăm, cất v vào hàng đợi.

• Lấy từ hàng đợi một đỉnh v, thăm v, rồi cất các đỉnh uchưa thăm kề với v vào hàng đợi…

• Lặp lại cho tới khi hàng đợi rỗng.

3

1

2

4

5

1 2 3 4 5

1

3 4

4 2 52 5

5

Thứ tự duyệt theo BFS là: 1, 3, 4, 2, 5

Th ật t á BFS

Page 51: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 51/97

5151

Thuật toán:

void BFS1(v) //duyệt một thành phần liên thông  {

queue=∅; //khoi tạo hàng đợi rỗng  

push(queue,v); //cất v vào hàng đợi  

tham[v]=1; //ghi nhận là đã thăm v để về sau không thăm nữa. while (queue <>∅) // trong khi hàng đợi còn khác rỗng  {

v=pop(queue); //lay mot dinh v từ hàng đợi  for (u ∈Ke(v)) // xét các đỉnh u kề với v  

if(!tham[u]) //nếu u chưa thăm 

{push(queue,u); //cất u vào hàng đợi  tham[u]=1; //ghi nhan u tham roi  

}}

}

Thuật toán BFS

Th ật t á BFS

Page 52: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 52/97

5252

void BFS() //duyệt tất cả các thành phần liên thông  

{for (v ∈V) tham[v]=0; //ban đầu tất cả các đỉnh đều chưa thăm. 

for (v ∈V) //xét tất cả các dinh 

if (!tham[v]) BFS1(v); // neu đỉnh v chua tham thi tham v  

}

Thuật toán BFS

Dùng thuật toán DFS và BFS duyệt đồ thị sau:

8

1

2

4

73

6

5

9

10 11 13

12

Tìm ố thành hần liên thông

Page 53: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 53/97

53

Tìm số thành phần liên thông

Hãy cho biết đồ thị có bao nhiêu thành phần liên thông vàmỗi thành phần liên thông gồm những đỉnh nào?

Ý tưởng: 

Do số thành phần liên thông bằng số lần DFS() gọi DFS1()hoặc BFS() gọi BFS1(), nên ta dùng biến stplt để đếm số thành phần liên thông, mỗi  lần DFS() gọi DFS1() hoặc BFS() gọi BFS1() ta tăng biến stplt lên 1.Khi thăm v thay vì gán thăm[v] = true (=1) ta gán thăm[v] =stplt (số hiệu thành phần liên thông chứa v).

Tìm số thành phần liên thông

Page 54: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 54/97

5454

Thuật toán:

void DFS1(v) //duyệt một thành phần liên thông { Tham_Dinh(v); tham[v]=stplt; //ghi nhận là đã thăm v để về sau không thăm nữa. For (u ∈ Ke(v)) // xét tất cả các đỉnh u kề với v If(!tham[u])

DFS1(u); //neu u chua thăm, thăm u }void DFS() //duyệt tất cả các thành phần liên thông { for (v ∈V) tham[v]=0; //ban đầu tất cả các đỉnh đều chưa thăm. 

stplt=0; 

for (v∈

V) //xét tất cả các dinh if (!tham[v]) {stplt++; DFS1(v); // neu đỉnh v chua tham thi tham v 

}}

Tìm số thành phần liên thông

Tìm số thành phần liên thông

Page 55: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 55/97

55

void BFS1(v) //duyệt một thành phần liên thông {queue=∅; //khoi tạo hàng đợi rỗng push(queue,v); //cất v vào hàng đợi tham[v]=stplt; //ghi nhận là đã thăm v để về sau không thăm nữa. 

while (queue) // trong khi hàng đợi còn khác rỗng { v=pop(queue); //lay v từ hàng đợi 

Tham_Dinh(v);for (u ∈ Ke(v)) // xét các đỉnh u kề với v 

if (!tham[u]) //nếu u chưa thăm

{ push(queue,u); //cất u vào hàng đợi tham[u]=stplt; //ghi nhan u tham roi

}}

}

Tìm số thành phần liên thông

Bài tậ

Page 56: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 56/97

56

Bài tập

• Viết chương trình duyệt đồ thị với thuật toán DFS dùngcấu trúc stack

• Viết chương trình duyệt đồ  thị bằng thuật toán DFS vàBFS với đồ thi được lưu trữ bằng danh sách kề.

CHUƠNG 4: ĐỒ THỊ EULER VÀ ĐỒ THỊ HAMILTON

Page 57: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 57/97

57

William Rowan Hamilton (04/08/1805 – 02/09/1865), người Ireland, là mộtnhà toán học, vật lý và thiên văn học 

Leonhard Euler (15/04/1707 -18/09/1783)

Người Thuỵ Sĩ , là nhà toán học, vật lý học

CHUƠNG 4: ĐỒ THỊ EULER VÀ ĐỒ THỊ HAMILTON

Đồ thị Euler

Page 58: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 58/97

58

Bản đồ Königsberg thời Euler, mô tả vị  trí  thực  của bay cây cầu và sông Pregel.

Bài toán bảy cây cầu:Có thể bắt đầu từ một điểm và đi qua mỗi cây cầu đúng một lần rồiquay lại điểm xuất phát hay không ? 

Năm 1736 Leonhard Euler đã chứng minh rằng điều đó là không thể được.

Đồ thị Euler

Đồ thị Euler

Page 59: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 59/97

59

• Đường đi Euler:

Đường đi qua tất cả các cạnh của đồ thị, mỗi cạnh đúngmột lần gọi là đường đi Euler. 

• Chu trình Euler: Chu trình đi qua tất cả các cạnh của đồ thị, mỗi cạnh

đúng một lần gọi là chu trình Euler.• Đồ thị Euler, nửa Euler:

Đồ thị có chu trình Euler gọi là đồ thị Euler, đồ thị cóđường đi Euler gọi là đồ thị nửa Euler. 

G1 

G2  G3 

Đồ thị Euler

Đồ thị Euler

Page 60: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 60/97

60

Định lý Euler  a/ G là đồ thị vô hướng liên thông.

G là đồ thị Euler ⇔ mọi đỉnh của G đều có bậc chẵn. 

b/ G là đồ thị có hướng liên thông.G là đồ thị Euler ⇔ bậc vào và bậc ra của mỗi đỉnhlà bằng nhau 

Đồ thị Euler

Định lý nửa Euler  Cho đồ thị vô hướng liên thông G.

G là nửa Euler  G có không quá 2 đỉnh bậc lẻ(có 0 đỉnh bậc lẻ hoặc có 2 đỉnh bậc lẻ). 

Đồ thị Euler

Page 61: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 61/97

61

Thuật toán tìm chu trình Euler 

void Euler(){ stack= ∅; CE= ∅; // CE là tập chứa các đỉnh của chu trình Euler

Chọn một đỉnh x bất kỳ, cất x vào stack //x gọi là đỉnh xuất phát. While (stack ≠ ∅){ x = phần tử ở đỉnh stack ;

if (x còn đỉnh kề) {chọn y kề x, cất y vào stack; loại bỏ cạnh (x,y) 

}

else //x khong con dinh ke{lấy x ra khỏi stack ; cất x vào tập CE } 

}}xuất tập CE; 

}

Đồ thị Euler

Đồ thị Euler

Page 62: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 62/97

62

1 2

3

4 5

6

7

5  5  5  2 

1  4  4  4  4  4  7  7  7 

3  3  3  3  3  3  3  3  3  6  6  6  6  6 2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 

1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 

CE = {1, 3, 5, 4, 3, 2, 7, 6, 2, 1}

Chu trình Euler:1->3->5->4->3->2->7->6->2->1

Đồ thị Euler7

Đồ thị Hamilton

Page 63: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 63/97

63

• Đường đi Hamilton:Là đường đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh

đúng một lần gọi là đường đi Hamilton. • Chu trình Hamilton:

Là chu trình qua tất cả các đỉnh của đồ thị, mỗi đỉnhđúng một lần gọi là chu trình Hamilton. 

Đồ thị Hamilton

G1  G2  G3 

Đồ thị Hamilton

Page 64: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 64/97

64

Định lý Dirak: a/ G là đơn đồ thị vô hướng có n đỉnh (n>2).

∀ đỉnh u, deg(u) ≥ n/2 ⇒ G là đồ thị Hamilton 

b/ G là đơn đồ thị có hướng liên thông với n đỉnh.

∀ đỉnh u, deg+(u) ≥n/2, deg –(u) ≥ n/2, ⇒ G là đồ thịHamilton.

Đồ thị Hamilton

Đồ thị Hamilton

Page 65: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 65/97

65

Thuật toán liệt kê các chu trình và đường đi Hamilton:

void Timdinh(i) //tìm đỉnh thứ i trên chu trình hamilton {

for (j ∈ kề(x[i – 1])){

if (i=n+1) và (j=v0) {

Xuất chu trình x[1], x[2],…,x[1]else

if(! Tham[j]) {x[i]=j; // Chọn j làm đỉnh thứ i trong chu trình tham[j]=1;

Timdinh(i+1);tham[j]=0;

}}

}

Đồ thị Hamilton

Đồ thị Hamilton

Page 66: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 66/97

66

void Hamilton()

{for i=1 to n

tham[i]=0; //gán tất cả các đỉnh là chưa thăm x[1]=v0;tham[v0]=1;

timdinh(2); // gọi hàm tìm đỉnh thứ 2}

Đồ thị Hamilton

Đồ thị Hamilton

Page 67: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 67/97

67

Đồ thị Hamilton

1

2

3

4

5

1

2 4

3 5

4 5

5 4

1

3 4

4

13

3 5

2 5

52

1

2 3

32

1

Cây đường đi và chu trình Hamilton 

Bài tập

Page 68: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 68/97

68

Bài tập

• Viết chương trình kiểm tra đồ thị Euler, đồ thị Hamilton• Viết chương trình tìm chu trình Euler và đường đi Euler• Viết chương trình tìm chu trình Hamilton và đường đi 

hamilton

CHƯƠNG 5: CÂY

Page 69: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 69/97

69

CHƯƠNG 5: CÂY

Định nghĩ a:• Cây là một đồ thị liên thông không có chu trình• Rừng là một đồ 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.

T1 T2 T3 

Rừng gồm 3 cây T1, T2, T3 

CHƯƠNG 5: CÂY

Page 70: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 70/97

70

Định lý: Cho T là một đồ thị có n≥2 đỉnh. Những điềusau đây tương đương • T là cây 

• T không có chu trình và có n – 1 cạnh 

• T liên thông và có n – 1 cạnh 

• T liên thông và mỗi cạnh là một cầu 

T

Cây T có 9 đỉnh, 8 cạnh

CHƯƠNG 5: CÂY

CHƯƠNG 5: CÂY

Page 71: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 71/97

71

Hệ luận: Nếu G là một rừng n đỉnh, p cây thì số cạnhcủa G là: m=n-p

T1 T2 T3 

Rừng có số đỉnh: 16

Số cây: 3

Số cạnh: 16-3=13

CHƯƠNG 5: CÂY

Cây khung của đồ thị

Page 72: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 72/97

72

Định nghĩ a cây khung:

Cho G=(V,E) là đồ thị vô hướng liên thông. Cây khung củaG là cây T=(V,F) với F⊂E

Cây khung của đồ thị 

Thuật toán tìm cây khung

Page 73: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 73/97

73

Thuật toán tìm cây khung

Thuật toán DFS:

void DFS1(v){tham[v]=1; //ghi nhận là đã thăm v để về sau không thăm nữa. For (u ∈ Ke(v)) // xét tất cả các đỉnh u kề với v if (!tham[u])

{  //T la tap chua cac canh cua cay khungT=T∪(v,u);  //them canh (v,u) vao tap TDFS1(u); //neu u chua thăm, thăm u 

}}void DFS(){

for (v ∈ V) tham[v]=0;T=∅; // T là tập cạnh của cây khung, khởi trị ban đầu là rỗng DFS1(dxp); // dxp la mot dinh xuat phat nao do cua do thị xuất tập T;

}

Thuật toán tìm cây khung

Page 74: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 74/97

74

Thuật toán tìm cây khung

Thuật toán BFS:

void BFS1(v){ queue=∅; push(queue,v); tham[v]=1;while (queue ≠ ∅) {

v=pop(queue);for (u ∈ Ke(v))

If (!tham[u]) {push(queue,u); tham[u]=1;T=T∪(v,u); //them canh (v,u) vao tap T

}}

}void BFS(){ for (v ∈ V) tham[v]=0;

T=∅; // T là tập cạnh của cây khung BFS1(dxp); //dxp la mot dinh xuât phát nào đó của đồ thị xuat tap T;

}

Cây khung ngắn nhất

Page 75: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 75/97

75

Cây khung ngắn nhất

Bài toán xây dựng hệ thống đường sắt:Cần xây dựng một hệ  thống đường sắt nối n thành phố sao cho giữa 2 thành phố bất kỳ luôn có đường đi và tổngchi phí xây dựng là nhỏ nhất.

C

B

D

A

E

Cây khung ngắn nhất

Page 76: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 76/97

76

Định nghĩ a cây khung ngắn nhất:

Cho một đồ thị vô hướng G, trên mỗi cạnh của G đuợc gánmột trọng số c(i,j). Cây khung T của G được gọi là câykhung ngắn nhất nếu tổng trọng số các cạnh của T là nhỏ nhất

Cây khung ngắn nhất

12

3 4

51

34

1

6

5

2

12

3 4

51

3

1

2

Thuật toán tìm cây khung ngắn nhất

Page 77: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 77/97

77

Thuật toán tìm cây khung ngắn nhất

Thuật toán Kruskal:Ý tưởng:Bước 1: Sắp các cạnh theo thứ tự không giảm của trọng

số, T=∅ 

Bước 2: Lần lượt duyệt trong danh sách cạnh đã sắp xếptheo thứ  tự  trọng số  từ nhỏ đến lớn, chọn cạnhbổ sung vào tập T với điều kiện việc bổ sung nàykhông tạo thành chu trình.

Bước 3: Tiếp tục thực hiện bước 2 cho đến khi T có n-1cạnh thì dừng.

Thuật toán Kruskal

Page 78: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 78/97

78

Thuật toán Kruskal

12

34

51

44

1

2

5

3

Cạnh (1,3) (1,5) (3,5) (4,5) (1,2) (2,5) (3,4)Trọng số  1 1 2 3 4 4 5

Sắp các cạnh theo thứ tự không giảm của trọng số 

Bổ sung vào T cạnh (1,3)

1

3

51

1

Bổ sung vào T cạnh (1,5)

1

3

1

Bổ sung vào T cạnh (4,5)

1

3 4

51

1

3

Bổ sung vào T cạnh (1,2)

12

3 4

51

4

1

3

T=∅ 

Thuật toán Kruskal

Page 79: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 79/97

void Kruskal(){

T=∅ ;

while ((|T| < n-1) && (E ≠ ∅)) //T chưa đủ n-1 cạnh và còn cạnh để chọn 

{

Chọn e là cạnh có độ dài nhỏ nhất trong E; 

E = E\ {e}; //loại e khỏi tập cạnh 

if (T ∪ {e} không chứa chu trình)

T= T ∪ {e} ; //thêm e vào T

}

if (|T| < n-1) đồ thị không liên thông; 

else Xuất cây T

}79

Thuật toán Kruskal

Thuật toán Prim

Page 80: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 80/97

 Ý tưởng:Bước 1: Gọi T là tập chứa các cạnh của cây khung; T=∅.

S là tập chứa các đỉnh của cây khung; S={x} (với xlà đỉnh bắt kỳ thuộc đồ thị)

Bước 2: Tìm cạnh (x,y) ∈ w(s) sao cho cạnh này có trọngsố bé nhất trong w(s).T=T∪(x,y); S=S∪{y}

Bước 3: Lặp bước 2 đến khi T có n-1 cạnh thì dừng.

80

Thuật toán Prim

Thuật toán Prim

Page 81: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 81/97

81

1 2

34

51

4 4

1

2

5

3

Thuật toán PrimT=∅, S={1},w(s)={(1,2), (1,3), (1,5)}

chọn (1,3)T=T∪(1,3)={(1,3)}

1

3

1

S={1,3}w(s)={(1,2), (1,5), (3,4),(3,5)}chọn (1,5)

T=T∪(1,5)={(1,3), (1,5)}1

3

51

1

S={1,3,5},w(s)={(1,2), (2,5), (3,4), (4,5)}

chọn (4,5)T=T∪(4,5)={(1,3), (1,5), (4,5)}

1

34

51

1

3

S={1,3,5,4},w(s)={(1,2), (2,5)}

chọn (1,2)

T=T∪(1,2)={(1,3), (1,5), (4,5),(1,2)}

12

34

51

4

1

3

Thuật toán Prim

Page 82: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 82/97

void Prim()

{ //bước khởi tạo chon s la mot dinh nao do cua do thi;VH={s} ; T= ∅ ; d[s]=0; near[s]=s;for (v ∈ V \VH)

{ d[v]=c[v,s]; near[v]=s;}

 // buoc lapstop=false;while (! stop){

Tim u ∈ V \VH thoa man:d[u] =min{d[v]: v ∈ V \VH } ;VH= VH∪ { u} ; T = T ∪ { (u, near[u])} ;

82

Thuật toán Prim

Thuật toán Prim

Page 83: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 83/97

83

if (| VH| ==n)

{ H=( VH,T) la cay khung nho nhat cua do thi;stop:=true;

}else

for (v∈

V\ VH)if (d[v]>c[v,u]) //neu v gan dinh u moi ket nap vao caykhung

{d[v]=c[v,u]; //cap nhat lai nhannear[v]=u;

} }

}

Thuật toán Prim

CHƯƠNG 6: ĐƯỜNG ĐI NGẮN NHẤT

Page 84: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 84/97

Một số khái niệm:Cho G=(V,E) là một đồ thị có hướng được biểu diễn bởima trận trọng số A• Trọng số của một cung (u,v) ký hiệu là a[u,v] là giá trị của ma trận

trọng số tại dòng u cột v.

1 2 3 4 5

1 0 2 ∞  ∞  ∞ 

2 ∞  0 -2 1 ∞ 

3 ∞  ∞  0 3 74 4 ∞  ∞  0 ∞ 

5 ∞  2 ∞  ∞  0

2

1

3

4

5

2

4

1

32

-2

7

Một số khái niệm:

Page 85: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 85/97

• Đường di ngắn nhất từ đỉnh s đến đỉnh v là đường đi có độ dàinhỏ nhất từ s đến v, ký hiệu là d[s,v] hay d[v] (được hiểu ngầmtừ s đến v)

us v

2030

đỉnhxuấtphát d[v]=d[s,v]=20+30 =50

• Nếu G có chu trình độ dài âm trên đường đi từ i đến j thì đườngđi từ i đến j không tồn tại

i u j20 30

-5

ộ ệ

Thuật toán Ford-Bellman

Page 86: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 86/97

Điều kiện: Đồ thị không có chu trình âmThuật toán:Dữ liệu vào:

Đồ thị có hướng G=(V,E) với n đỉnh,

s là đỉnh xuất phát, a[u,v] là ma trận trọng số thực; Giả thiết: Đồ thị không có chu trình âm. 

Dữ liệu ra:d[v] là khoảng cách từ đỉnh s đến tất cả các đỉnh v còn lại

Trước[v] ghi nhận đỉnh đi trước v trong đường đi ngắn nhất từ s đến v. 

Thuật toán Ford-Bellman

Page 87: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 87/97

void Ford_Bellman()

{ // Khởi tạofor (v ∈ V){

d[v]=a[s,v]; Truoc[v]=s; //s là đỉnh xuất phát}

d[s]=0;for (k=1;k<= n-2;k++) // số bước lặp

for (v ∈ V\{s})for (u ∈ V)

if (d[v]>d[u] +a[u,v]){

d[v]=d[u]+a[u,v];Truoc[v]=u;

}}

Thuật toán Ford-Bellman

Page 88: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 88/97

Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh khác:

2

1 3

4

5

2

6

1

3

5

-27

21

34

2

2

1 35 -4

21

34

2

3

15 -4

4

21

34

5

35

1 5

2

27

66

3

Thuật toán Dijkstra

Page 89: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 89/97

ậ j

Điều kiện: Đồ thị không trọng số âmThuật toán:Dữ liệu vào:

Đồ thị có hướng G=(V,E) với n đỉnh,

s là đỉnh xuất phát, a[u,v] >=0Dữ liệu ra:Khoảng cách từ đỉnh s đến tất cả các đỉnh còn lại d[v] Truoc[v], đỉnh đi trước v trong đường đi ngắn nhất từ s đến v

Thuật toán Dijkstra

Page 90: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 90/97

void Dijkstra(){for (v ∈ V) // Khởi tạo {

d[v]=a[s,v]; Truoc[v]=s;}

d[s]=0; T:=V\{s}; // T là tập các đỉnh có nhãn tạm thời while (T !=∅){

Tìm đỉnh u ∈ T thoả mãn d[u]=min {d[z]: z ∈ T} ;T=T\ {u} ; // Cố định nhãn của đỉnh u for (v ∈ T)

if (d[v]>d[u]+a[u,v]){d[v]=d[u]+a[u,v]; Truoc[v]=u;

}}

}

ậ j

Thuật toán Dijkstra

Page 91: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 91/97

91

ậ j

Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh khác:

21

4

3

3

2 5

27

5

1 6

1

42

53

6

5

4 5

4

8

6

7

6 51

2

3 7

6

2

1

4

3

35

2

6

251

61 64

3 2 1

Thuật toán Floyd

Page 92: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 92/97

• Tìm đường đi giữa tất cả các cặp đỉnh• Có thể giải bài toán tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh của đồ  thị  bằng cách sử  dụng n lần  thuật toán mô tả ở  phần trước, trong đó ta sẽ chọn s lần lượt là các đỉnh của đồ thị. Khi đó ta thu được thuật toán với độ phức tạp O(n4) (Ford_Bellman) hoặc O(n3) (Dijkstra)

Ta có thuật toán Floyd tốt hơn với độ phức tạp O(n3)

Dữ liệu vào:Đồ thị cho bởi ma trận trọng số a[i,j], i, j =1, 2,. . ,n.

Dữ liệu ra:Ma trận đường đi ngắn nhất giữa các cặp đỉnh: d[i,j] cho độ dài

đường đi ngắn nhất từ đỉnh i đến đỉnh j. Ma trận ghi nhận đường đi: q[i,j] ghi nhận đường đi ngắn nhất từ i đến

 j.

y

Thuật toán Floyd

Page 93: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 93/97

 Ý tưởng:

- Tìm đường đi giữa tất cả các cặp đỉnh của G- Sử dụng 2 ma trận Di,j (lưu trọng số)và Qi,j (lưu đường đi) - Bước khởi tạo (bước 1) tính:

D1 = Di,j là ma trận trọng số của G

Q1 = Qi,j = j nếu (i,j)∈ E0 nếu (i,j) ∉E

- Tại bước lặp thứ k ta tính Dk và Qk như sau: Dk(i,j) = Dk-1 (i,k) + Dk-1 (k,j) nếu Dk-1 (i,j) > Dk-1 (i,k) + Dk-1 (k,j)

Dk-1 (i,j) nếu ngược lạiQk(i,j) = Qk-1 (i,k) nếu Dk-1 (i,j) > Dk-1 (i,k) + Dk-1 (k,j)

Qk-1 (i,j) nếu ngược lại

- Thuật toán dừng khi đã thực hiện n bước lặp 93

y

Thuật toán Floyd

Page 94: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 94/97

94

Xét bước lặp thứ k = 6 

y

1 2 3 4 k 6 7

1 0 6 4 7 ∞ 9 ∞ 

2 8 0 4

3 ∞ 9 74 2 9

k 2 ∞ 8 1 0 ∞ 5

6 6 4 ∞ 1 5 0

7 1 6 0

1 2 3 4 5 6 7

1 0 6 4 7 ∞ 9 ∞ 

2 6 0 4

3 ∞ 8 74 2 9

5 2 ∞ 8 1 0 ∞ 5

6 4 5

7 1 6

K=5 K=6

D5 =  D6 = 

Thuật toán Floyd

Page 95: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 95/97

95

1 2 3 4 k 6 7

1

2 3 4

3 6 74

k

6

7

Q5 = 

1 2 3 4 5 6 7

1

2 4

3 7

4

5

6

7

K=5 K=6

Q6 = 

y

Thuật toán Floyd

Page 96: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 96/97

void Floyd(){for i=1 to nfor j=1 to n // Bước khởi tạo{

d[i][j]=a[i][j];

if (d[i][j] = ∞ hay d[i][j] = 0)q[i][j]=0;else q[i][j]=j;

}for k=2 to n // bước lặp

for i=1 to n

for j=1 to nif (d[i][j]>d[i][k]+d[k][j]){

d[i][j]=d[i][k]+d[k][j]; q[i][j]=q[i][k];}

}

Thuật toán Floyd

Page 97: BG Ly Thuyet Do Thi_TRI

5/17/2018 BG Ly Thuyet Do Thi_TRI - slidepdf.com

http://slidepdf.com/reader/full/bg-ly-thuyet-do-thitri 97/97

Tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh:

21

34

6

5

1

2

3 4 57

52

1

3

4

2

91

2

12

4

57

3 66

38

7