Professional Documents
Culture Documents
Baigiang TRRC 5
Baigiang TRRC 5
ĐỒ THỊ VÀ CÂY
5.1 Định nghĩa, các khái niệm về đồ thị
5.2 Biểu diễn đồ thị
5.3 Một số thuật ngữ, tính chất của đồ thị
5.4 Đường đi Euler, đường đi ngắn nhất
5.5 Cây - Định nghĩa và tính chất
5.6 Cây khung nhỏ nhất, một số thuật toán tìm kiếm 1
5.1 ĐỊNH NGHĨA VÀ CÁC THUẬT NGỮ VỀ ĐỒ THỊ
*Khái niệm
X là một tập không rỗng và U X X; ở đó U={(a,b): a,b X}
Bộ G=<X,U> đƣợc gọi là một đồ thị với X là tập đỉnh, U là tập
các cung. Nếu (a,b) được sắp thứ tự, bộ G=<X,U> đƣợc gọi là đồ
thị có hƣớng (nếu a,b không sắp thứ tự thì G là đồ thị vô hƣớng).
*Các khái niệm khác
G=<X,U> là đồ thị hữu hạn nếu tập đỉnh X hữu hạn.
Hai đỉnh a,b X (ab) đƣợc gọi là hai đỉnh kề nhau nếu (a,b) là
một cạnh (cung) của đồ thị.
2
*Các khái niệm khác
Hai cạnh (hai cung) đƣợc gọi là hai cạnh (hai cung) kề nhau nếu
chúng có một đỉnh chung.
Nếu cạnh (cung) có bắt đầu và xuất phát tại cùng một đỉnh đƣợc
gọi là một nút hay khuyên.
Nếu cung đi từ đỉnh a đến đỉnh b thì a gọi là đỉnh đầu còn b là đỉnh
cuối của cung.
Nếu cặp đỉnh (a,b) có từ hai cạnh (hai cung cùng hƣớng) thì cặp
(a,b) gọi là cạnh (cung) bội. 3
5.2 BIỂU DIỄN ĐỒ THỊ
*Phương pháp hình học
Biểu diễn G=<X,U> theo nguyên tắc:
Với mỗi x X đặt tƣơng ứng với một điểm, dùng ngay ký hiệu x để
ghi nhãn cho điểm đó và gọi nó là đỉnh của đồ thị.
Nếu u=(x,y) U là một cạnh thì từ x đến y đƣợc nối bởi một đoạn
thẳng hoặc một đƣờng cong.
Nếu u=(x,y)U là một cung có đỉnh đầu x, đỉnh cuối y thì từ x đến y
đƣợc nối bởi một đoạn thẳng (hoặc cong) có hƣớng từ x tới y.
Nếu u=(x,x)U thì tại đỉnh x có một khuyên. Khi xX nhƣng
(x,x) U hoặc không có y X nào để (x,y) U thì x là đỉnh cô lập.
4
*Ví dụ:
X={x1,x2,x3,x4} U={(x1,x2); (x2,x3); (x3,x4) ;(x1,x1)}
G=<X,U> có hướng
2
x2
x1
Khuyên
5
1
x4
3 x3
Mũi tên chỉ
Đỉnh Đồ thị vô hướng
cô lập hướng
5
5.2 BIỂU DIỄN ĐỒ THỊ
*Phương pháp ma trận kề
Biểu diễn G=<X,U> vô hƣớng với X={x1,x2,..,xn}theo nguyên tắc:
Dùng ma trận vuông cấp n để biểu diễn
Phần tử ij ở hàng i, cột j là d nếu cặp đỉnh xi, xj có d cạnh nối chúng.
Ngƣợc lại, nếu cặp xi, xj không có cạnh nào nối thì ij = 0.
x1 x2 x3 x4
x1 x2 0 1 1 0
x1
x2 1 0 1 2
x3 1 1 0 0
x3
x4
x4 0 2 0 0
6
5.2 BIỂU DIỄN ĐỒ THỊ
*Phương pháp ma trận kề
Biểu diễn G=<X,U> có hƣớng với X={x1,x2,..,xn}theo nguyên tắc:
Dùng ma trận vuông cấp n để biểu diễn
Phần tử ij ở hàng i, cột j là d nếu cặp đỉnh (xi, xj) có d cung cùng
hướng nối chúng.
Ngƣợc lại, thì ij = 0.
x1 x2 x1 x2 x3 x4
x1 0 0 2 0
x2 1 0 1 1
x3 x3 0 0 0 0
x4 7
x4 0 1 0 0
*Một số dạng đồ thị thường gặp
Đồ thị đơn: đồ thị vô hướng G=<X,U> là đồ thị đơn nếu mỗi cặp
đỉnh khác nhau a, b X đƣợc nối với nhau bởi không quá 1 cạnh,
mọi đỉnh đều không có khuyên.
Đa đồ thị : G=<X,U> vô hướng và tồn tại hai đỉnh khác nhau đƣợc
nối lại bởi hai cạnh trở lên, mỗi đỉnh đều không có khuyên
Giả đồ thị: G=<X,U> là giả đồ thị nếu nó là đa đồ thị có khuyên.
2 2
x1 x2
5 5
x3
x4 Đơn đồ thị
Giả đồ thị
8
3 3
Đa đồ thị
*Một số dạng đồ thị thường gặp
Đơn đồ thị có hƣớng: đồ thị G=<X,U> có hƣớng và với mỗi cặp
đỉnh a, b X khác nhau đƣợc nối với nhau bởi không quá 1 cung,
(đỉnh có thể có khuyên hoặc không).
Đa đồ thị có hƣớng: G=<X,U> có hƣớng và tồn tại một cặp đỉnh
khác nhau đƣợc nối lại bởi hai cung (cùng hƣớng) trở lên, (mỗi đỉnh
có thể có khuyên hoặc không).
2
2
5
5
9
3
3 Đơn đồ thị có hướng Đa đồ thị có hướng
*Một số dạng đồ thị đặc biệt
Đồ thị đầy đủ: đồ thị đầy đủ n đỉnh, ký hiệu là Kn là đơn đồ thị vô
hƣớng mà giữa hai đỉnh bất kỳ đều có cạnh nối. (đồ thị đầy đủ Kn
sẽ có tất cả n(n-1)/2 cạnh, là đơn đồ thị nhiều cạnh nhất)
Nếu G=<X,U> có hƣớng thì gọi m+(x) là số các cung vào đỉnh x,
m-(x) là số các cung ra khỏi x. Khi đó m+(x) là bậc vào của x, m-(x) là
bậc ra của x.
- Nếu m+(x) = m-(x)=0 thì đỉnh x cô lập;
- Nếu m+(x)=0 và m-(x)=1 hoặc m+(x)=1 và m-(x)=0 x là đỉnh treo
13
*Một số thuật ngữ
Đường đi và chu trình trong đồ thị: Giả sử G=<X,U> (có hƣớng
hoặc vô hƣớng) thì một đƣờng đi trong đồ thị là một dãy xi1ui1xi2ui2…
xijuij… xikuikxik+1 trong đó xij là các đỉnh, uij là các cạnh sao cho j
{1,2,…,k} thì xij và xij+1 là hai đỉnh kề nhau của cạnh uij
Độ dài của đƣờng đi bằng số các cạnh (cung) trong đƣờng đi đó.
Chu trình là một đƣờng đi có đỉnh xuất phát và kết thúc trùng nhau
Chu trình (đƣờng) đƣợc gọi là chu trình (đƣờng) đơn nếu nó đi qua
mỗi cạnh đúng một lần.
Chu trình (đƣờng) đƣợc gọi là chu trình (đƣờng) sơ cấp nếu nó đi qua
14
mạnh; còn nếu có đƣờng đi (không xét hƣớng) thì liên thông yếu.)
*Một số tính chất
Trong G=<X,U> ta luôn có số bậc của G gấp đôi số cạnh.
Nếu G=<X,U> vô hƣớng thì m(G)=2|U| với |U| là số cạnh
Nếu G=<X,U> có hƣớng thì m+(x)=m-(x)=|U|
Nếu G=<X,U> là một đa đồ thị có n đỉnh thì số đỉnh bậc lẻ luôn là
một số chẵn.
Nếu G=<X,U> có đúng hai đỉnh bậc lẻ thì hai đỉnh này phải liên
thông.
Giả sử G=<X,U> là một đồ thị vô hướng với số đỉnh n>=3; nếu
mỗi đỉnh đều có số bậc từ 2 trở lên thì G có một chu trình sơ cấp.
16
*Một số tính chất
Đồ thị G=<X,U> là liên thông khi và chỉ khi nó có một thành phần
liên thông.
Đồ thị vô hướng G=<X,U> có số đỉnh 4, với mọi đỉnh mà bậc 3
trở lên thì trong G có chu trình sơ cấp độ dài chẵn.
Mọi cặp đỉnh phân biệt của một đồ thị hữu hạn, vô hướng, liên
thông luôn luôn có đường đi đơn .
Đồ thị đơn G=<X,U> với số đỉnh |X|=n 2 mà tổng bậc của hai
đỉnh khác nhau tuỳ ý đều không nhỏ hơn n là đồ thị liên thông.
17
5.4 ĐƢỜNG ĐI NGẮN NHẤT
5.4.1 Một số chu trình đặc biệt *Chu trình Euler
Một chu trình trong đồ thị G=<X,U> đƣợc gọi là chu trình Euler
nếu nó đi qua tất cả các cạnh của G và qua mỗi cạnh đúng một lần.
Đồ thị vô hƣớng G=<X,U> có chu trình Euler khi và chỉ khi G liên
thông và bậc của tất cả các đỉnh đều chẵn.
Đồ thị có hƣớng G=<X,U> có chu trình Euler khi và chỉ khi G liên
thống yếu, bậc vào và bậc ra của mỗi đỉnh đều bằng nhau.
x1 x2
u1 u2 u4 u5
u3 Chu trình Euler:
x3 x4 x5 x6
u9 u6
u8 u7
x7 x3u1x1u2x4u3x5u4x2u5x6u6x5u7x7u8x4u9x3
*Thuật toán tìm chu trình Euler
Bước 1: Kiểm tra xem G=<X,U> có liên thông hay không?
Nếu G liên thông thì chuyển sang bƣớc 2
Nếu G không liên thông thì kết luận không có chu trình và dừng.
Bước 2: Kiểm tra xem tất cả các đỉnh của G có bậc chẵn hay không?
Nếu đúng thì chuyển bƣớc 3
Ngƣợc lại kết luận không có chu trình và dừng.
Bước 3: Xây dựng các chu trình đơn trong G sao cho tất cả các cạnh
đều có chu trình đơn đi qua và mỗi cạnh chỉ qua 1 lần.Ghép các chu
trình đơn ở trên tại các đỉnh chung nhau, ta có chu trình Euler.
19
* Đường đi Euler
Đƣờng đi Euler trong đồ thị G=<X,U> là đƣờng đi qua tất cả các
cạnh của G và qua mỗi cạnh đúng một lần.
Nhận thấy chu trình Euler là đƣờng đi Euler đóng.
Điều kiện cần và đủ để đồ thị vô hƣớng G=<X,U> có đƣờng đi Euler
nhƣng không có chu trình Euler là G liên thông và số đỉnh bậc lẻ
trong đồ thị là 2.
Điều kiện cần và đủ để đồ thị có hƣớng G=<X,U> có đƣờng đi Euler
nhƣng không có chu trình là G liên thông yếu, bậc vào và bậc ra của
mỗi đỉnh đều bằng nhau; trừ 2 đỉnh đặc biệt (một đỉnh bậc vào lớn
hơn bậc ra 1 đơn vị, một đỉnh bậc ra lớn hơn bậc vào 1 đơn vị)
*Thuật toán tìm đường đi Euler
Bước 1: Kiểm tra xem G=<X,U> có liên thông hay không?
Nếu G liên thông thì chuyển sang bƣớc 2
Nếu không liên thông thì kết luận không có đƣờng đi Euler và dừng.
Bước 2: Kiểm tra xem mọi đỉnh của G có bậc chẵn hay không?
Nếu đúng thì chuyển bƣớc 4
Ngƣợc lại chuyển bƣớc 3.
Bước 3: Kiểm tra xem số đỉnh bậc lẻ có bằng 2 hay không? Nếu có
thì chuyển bƣớc 4, nếu không thì dừng và kết luận không có đƣờng đi
Bước 4: Xây dựng đƣờng đi Euler trong G
21
CHU TRÌNH HAMILTON, ĐƢỜNG ĐI HAMILTON
*Chu trình Hamilton
Một chu trình trong đồ thị G=<X,U> đƣợc gọi là chu trình
Hamilton nếu nó đi qua tất cả các đỉnh của G và qua mỗi đỉnh đúng
một lần.
Đơn đồ thị liên thông G=<X,U> có bậc ở mỗi đỉnh không nhỏ hơn
nửa số đỉnh của đồ thị thì tồn tại chu trình Hamilton. (số đỉnh 3)
xX luôn có m(x) |X|/2 với |X| là số đỉnh của đồ thị G
x1 u3
u1 u2 x7
Chu trình Hamilton:
u4 u3x1u1x3u5x4u4x7u3
x3 x4
u5
* Đường đi Hamilton
Đƣờng đi Hamilton trong đồ thị G=<X,U> là đƣờng đi qua tất cả các
đỉnh của G và qua mỗi đỉnh đúng một lần.
Định lý: Đồ thị G=<X,U> có hƣớng và đầy đủ thì luôn luôn tồn tại
đƣờng đi Hamilton.
Nếu thay cung bởi cạnh ta có đồ thị vô hƣớng đầy đủ nên có hệ quả:
Giả sử G=<X,U> là đồ thị đầy đủ với |X| 3 khi đó luôn tồn tại chu
trình Hamilton. Đồ thị đầy đủ x1 x4
x1 x2 và có chu trình
Hamilton
Đồ thị không trọng số: Đồ thị G=<X,U> mà trên cạnh không gắn
giá trị là đồ thị không trọng số.
Đường đi ngắn nhất: Cho G=<X,U> không trọng số và a, b X là
hai đỉnh bất kỳ, đƣờng đi ngắn nhất từ a đến b là đƣờng đi mà đi qua
số cạnh ít nhất.
x1 x4 x7 x9
a x3 x6 b
x2 x5 x8 x10
* Cách tìm đường đi ngắn nhất
Ghi chỉ số cho các đỉnh: theo quy nạp
Đỉnh xuất phát a có nhãn 0. Tập các đỉnh nhãn 0 là A(0)={a}
Các đỉnh có cạnh đi từ a đến thì nhãn 1 tập A(1)={x1, x2, x3}
Cứ thế cho đến khi đỉnh b bị gán nhãn thì dừng. có A(2)={x4, x5,
x6} và A(3)= {x7, x8, b}
Xác định đƣờng đi ngắn nhất: dò ngƣợc từ b cũng theo quy nạp
Giả sử lúc đó b có nhãn là m thì ta tìm tất cả các đỉnh nhãn (m-1) tức
là tìm đỉnh trong tập A(m-1). ở đây b nhãn 3 nên dò A(2)=, A(1)
Cứ nhƣ vậy đến khi thấy đỉnh có nhãn 0 (đỉnh a) thì dừng có
đƣờng đi ngắn nhất.
*Ví dụ đường đi ngắn nhất với đồ thị không trọng số
Đỉnh xuất phát nhãn 0 nên A(0)={a} tập A(1)={x1, x2, x3}
Có tập A(2)={x4, x5, x6} và A(3)= {x7, x8, b}dừng bƣớc 1
1 3
2
x1 x4 x7 x9
0 1 2 3
a x3 x6 b
3
x2 x5 x8 x10
1 2
Xác định đƣờng ngắn nhất: từ b là đỉnh có nhãn 3 thì tìm các đỉnh
nhãn 2 mà có hƣớng đến b Xét A(2) tìm đƣợc x6 xét tiếp tập
A(1) mà có đỉnh hƣớng đến x6 thì tìm đƣợc x3 đƣờng ngắn nhất
5.5.2 Đường đi ngắn nhất với đồ thị có trọng số
Đồ thị có trọng số: Đồ thị G=<X,U> . Với mỗi cạnh u U ta đặt
tƣơng ứng một số thực l(u) và gọi nó là trọng số của u. Khi đó đồ thị
có các cạnh mang trọng số nhƣ vậy đƣợc gọi là đồ thị có trọng số.
Đường đi ngắn nhất: Cho G=<X,U> là đồ thị đơn liên thông có
trọng số và a, b X là hai đỉnh bất kỳ, đƣờng đi ngắn nhất từ a đến b
là đƣờng đi mà có trọng số bé nhất.
5 6
x3 x4 b
4
1 2
x5
a 9
2 3
x2 9 x6
* Thuật toán Dijkstra tìm đường đi ngắn nhất (trọng số >0)
Bƣớc 1: đánh trọng số các đỉnh
Đỉnh xuất phát a có trọng số 0. Các đỉnh khác ta đặt cho nó trọng số đủ lớn
(thoả mãn lớn hơn trọng số các đỉnh từ a tới nó).
Bƣớc 2: Giảm trọng số các đỉnh
Giả sử tại x có (x). Nếu y (ở đây y nối sang x) mà có (x)> (y) + l(y,x)
thì thay (x) bởi ’(x)= (y)+l(y,x) ngƣợc lại thì giữ nguyên (x). Cứ nhƣ
vậy đến khi tất cả các đỉnh có trọng số cực tiểu.
Bƣớc 3: xác định đƣờng đi ngắn nhất:
Xuất phát từ b, ta đi về đỉnh kề với b là xi thoả mãn : (b)= (xi) + l(xi,b).
Nếu không có xi nhƣ vậy thì về đỉnh kề với b mà trọng số từ đỉnh đó tới b
là bé nhất. về đến a có trọng số 0
* Ví dụ:
Bƣớc 1: đánh trọng số các đỉnh
x3 5 x4
6
b
4 2
1
x5
0 a 9
3
2
x2 x6
9
Bƣớc 2: 5 6
x3 x4 b
4
Giảm trọng số các đỉnh 1 2
x5
a 9
3
2
x2 x6
9
* Ví dụ:
Bƣớc 2: Giảm trọng số các đỉnh
4 5
6
x3 x4 b
4 1 2
0 a x5
9
3
2
x2 x6
2 9
9
4 5 6
x3 x4 b
4 1 2
a x5
0 9
5
3
2 x2 x6 11
2 9
* Ví dụ:
Bƣớc 2: Giảm trọng số các đỉnh
4 5 9 6
x3 x4 b
4 2
1
0 x5
a 5 9
3
2
x2 x6
2 9 11
9 15
5 6
4 x3 x4 b
4 1 2
x5 7 20
0 a 9
5
3
2
x2 x6
2 9 11
* Ví dụ:
Bƣớc 2: Giảm trọng số các đỉnh
* 7 * *13
5 6
4 x3 x5 b
*
4 1 * 2
x4
0 a 9
3 5
2
x2 x3 11
2 9
Bài 2:
Tìm đƣờng đi ngắn nhất từ a
đến d
5.5 CÂY –TÍNH CHẤT
*Cây
Một đồ thị đơn, liên thông và không có chu trình đƣợc
gọi là một cây.
Đồ thị vô hƣớng gồm k thành phần liên thông mà mỗi
thành phần này là một cây đƣợc gọi là rừng (cây)
x1 Cây x1
y1
x3 x4 x3 x4
x2 x2 y2
Rừng y4
x5 x6 x5 x6 y3
*Cây có gốc:
Một đồ thị có hướng với gốc là đỉnh không có bậc vào,
còn lá là đỉnh không có bậc ra.
Với các đỉnh khác trong cây mà không phải là đỉnh gốc,
cũng không phải là đỉnh lá thì gọi là đỉnh trong.
Lấy một đỉnh trong làm gốc thì ta đƣợc một cây con.
x1
*Chiều cao của cây: Gốc: x1
Chiều cao của cây là mức lớn
nhất hay độ dài đƣờng đi lớn x2 x3 x4 Đỉnh trong: x4
nhất từ gốc đến lá.
Chiều cao: 2 x5 x6
Lá: x2, x3, x5, x6
*Cây m phân:
Cây có gốc đƣợc gọi là cây m phân nếu tất cả các đỉnh
đều có không quá m con.
Cây m phân đầy đủ là cây m phân mà mỗi đỉnh trong
(kể cả gốc) đều có đúng m con.
Cây m phân đƣợc gọi là cân đối nếu tất cả các lá đều ở
mức h hoặc h-1 (với h là chiều cao của cây). x1
x1 Cây 3 – phân đầy đủ
Cây 3 - phân
x2 x3 x4
x2 x3 x4
x8 x5 x6 x7
x13 x12 x11 x10
x5 x6 x9
Chiều cao h=2
*Cây nhị phân: Mức 1 x1
Là cây m phân với m =2. Mức 2
x2 x3 x4
x2 x4
x3 x5 x5 x6
- Ví dụ: Xác định đƣờng đi từ A đến M và tập đỉnh sẽ xét với thuật
DFS. Ta đƣợc tập đỉnh xét lần lƣợt hiển thị ở cột 2.
- Qúa trình xác định đường đi từ A đến M ta làm ngược lên, để liên
thông cần có cạnh nối nên sẽ có đường đi là A C H M
* THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ
*Tìm kiếm theo chiều sâu (Depth First Search)
Lần Đỉnh Open (kề với đỉnh đang xét) Close (đỉnh đã duyệt)
A*
0 A
1 A (*) B, C, D [A]
D 2 B E, C, D A, B
B
C 3 E C, D A, B, E
I 4 C (*) G,H, D A, B, E, C
E
5 G K, L, H, D A, B, E, C, G
G H
6 K L, H, D A, B, E, C, G, K
7 L H, D A, B, E, C, G, K, L
K L M* 8 H (*) M, D A, B,E, C, G, K, L, H
9 M (*) D A, B, E, C, G, K, L, H, M
* THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ
*Tìm kiếm theo chiều rộng (Breadth First Search)
- Xuất phát từ một đỉnh v0 tùy ý, một đỉnh đƣợc coi là duyệt xong
ngay sau khi tất cả các đỉnh kề với nó đã đƣợc xét.
- Đỉnh nào đƣợc thăm trƣớc thì các đỉnh kề với nó cũng đƣợc
duyệt trƣớc. Nhƣ vậy lƣu trữ các đỉnh nằm chờ ở DFS là
ngăn xếp Stack thì ở BFS là hàng đợi Queue
- Qúa trình xác định đường đi từ A đến K ta đi ngược lên (khi có
cạnh nối liên thông với đỉnh đang xét) sẽ có đường đi là A
C G K
* THUẬT TOÁN TÌM KIẾM TRÊN ĐỒ THỊ
*Tìm kiếm theo chiều rộng (Breadth First Search)
Lần Đỉnh Open (kề với đỉnh đang xét) Close (đỉnh đã duyệt)
A*
0 A
1 A (*) B, C, D [A]
D 2 B C, D, E A, B
B
C 3 C D, E, G, H A, B, C
I 4 D E, G,H, I A, B, C, D
E
5 E G,H, I A, B, C, D, E
G H
6 G H, I, K, L A, B, C, D, E, G
7 H I, K, L, M A, B, C, D, E, G, H
K L M 8 I K, L, M A, B, C, D, E, G, H, I
9 K (*) L, M A, B, C, D, E, G, H, I, K
* Khái niệm về cây khung
Giả sử G=(X,U) là một đồ thị vô hƣớng, liên thông, khi đó ta có cây
T=(X, F) đƣợc gọi là một cây khung của G nếu F U.
Điều này có nghĩa là cây này chứa tất cả các đỉnh của đồ thị ban đầu,
còn số cạnh thì đã lược bớt sao cho đảm bảo tính chất của một cây.
*ví dụ
*Định lý
Số cây khung của đồ thị đầy đủ Kn là nn-2
*Bài toán cây khung nhỏ nhất
Cho G=(X,U) là một đồ thị vô hƣớng liên thông với tập gồm n đỉnh
X (x1, x2, …, xn), tập cạnh U gồm m cạnh. Với mỗi cạnh u, ta gán
cho nó một giá trị số thực là c(u), coi nhƣ đây là độ dài cạnh u. Giả
sử T=(X,F) là một cây khung của G, độ dài c(T) của cây khung T
chính là tổng độ dài tất cả các cạnh của cây khung.
C(T)= 𝑢𝜖𝑇 𝑐(𝑢)
Cây khung nhỏ nhất là cây khung có độ dài nhỏ nhất trong tất cả
các cây khung T của đồ thị G.
* Thuật toán tìm cây khung nhỏ nhất
Thuật toán Kruskal Thuật toán Prim
Sắp xếp các cạnh của G theo - Bắt đầu từ đỉnh s tùy ý, nối s
thứ tự độ dài c(u) giảm dần với y gần nhất (tức là cạnh có độ
Khởi tạo T= dài bé nhất mà xuất phát từ s)
Bổ sung các cạnh vào T, nhỏ Lặp quá trình: Trong số các cạnh
ƣu tiên trƣớc nhƣng phải thỏa kề với s và y, tìm cạnh min để đi
mãn không đƣợc tạo ra chu tới đỉnh z nhƣng cũng không tạo
trình chu trình.
Kết thúc khi T có (n-1) cạnh Tiếp tục quá trình lặp và dừng
khi có đủ (n-1) cạnh.
*Ví dụ Tìm cây khung nhỏ nhất của đồ thị Cạnh Độ dài
(c,d) 1
sau theo Kruskal: (e,i) 1
(m,n) 1
Số đỉnh của đồ thị n=12 kết thúc (f,k) 1
2 3 1 (c,g) 2
a b c d (f,g) 2
(g,h) 2
3 2 2 5 (b,c) 3
4 2 2
e f g h (a,e) 3
(i,k) 3
1 1 4 3 (k,m) 3
3 3 1 (h,n) 3
i k m n
(e,f) 4
(g,m) 4
(d,h) 5
*Ví dụ Cạnh Độ dài
(c,d) 1
2 3 1 (c,g) 2
a b c d (f,g) 2
(g,h) 2
3 2 2 5 (b,c) 3
4 2 2
e f g h (a,e) 3
(i,k) 3
1 1 4 3 (k,m) 3
3 3 1 (h,n) 3
i k m n
(e,f) 4
(g,m) 4
(d,h) 5
*Ví dụ Tìm cây khung nhỏ nhất của đồ thị Cạnh Độ dài
(c,d) 1
sau theo Prim: (c,g) 2
(g,h) 2
Số đỉnh của đồ thị n=12 kết thúc (g,f) 2
2 3 1 (a,b) 2
a b c d (a,e) 3
(e,i) 1
3 2 2 5 (f,k) 1
4 2 2
e f g h (k,m) 3
(m,n) 1
1 1 4 3 3
3 3 1 3
i k m n
4
4
5
BÀI TẬP
* Trò chơi viết thư dây chuyền. Ban đầu có một người nhận được một
bức thư và giả sử rằng khi nhận được một bức thư hoặc sẽ viết thư cho
bốn người khác hoặc không viết cho ai. Hỏi có bao nhiêu người nhận
được thư kể cả người đầu tiên nếu không có ai nhận được nhiều hơn một
bức và trò chơi kết thúc khi có 100 người nhận thư mà ko viết cho ai?