BG Ly Thuyet Do Thi_TRI
-
Upload
nguyen-ngoc-thao-linh -
Category
Documents
-
view
494 -
download
1
Transcript of BG Ly Thuyet Do Thi_TRI
![Page 1: BG Ly Thuyet Do Thi_TRI](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/1.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/2.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/3.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/4.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/5.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/6.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/7.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/8.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/9.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/10.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/11.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/12.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/13.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/14.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/15.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/16.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/17.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/18.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/19.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/20.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/21.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/22.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/23.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/24.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/25.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/26.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/27.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/28.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/29.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/30.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/31.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/32.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/33.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/34.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/35.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/36.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/37.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/38.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/39.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/40.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/41.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/42.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/43.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/44.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/45.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/46.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/47.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/48.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/49.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/50.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/51.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/52.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/53.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/54.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/55.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/56.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/57.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/58.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/59.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/60.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/61.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/62.jpg)
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
3
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/63.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/64.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/65.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/66.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/67.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/68.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/69.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/70.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/71.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/72.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/73.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/74.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/75.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/76.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/77.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/78.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/79.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/80.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/81.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/82.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/83.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/84.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/85.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/86.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/87.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/88.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/89.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/90.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/91.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/92.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/93.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/94.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/95.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/96.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022020803/557200aa49795991699fd7c5/html5/thumbnails/97.jpg)
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