MỘT SỐ ỨNG DỤNG CỦA CÂY BAO TRÙM 1.. Kiểm tra tính liên thông của một đồ thị: Đồ thị là liên thông ⇔ nó có cây bao trùm.. THUẬT TOÁN PRIM Τηυ τ το〈ν Πριµ Prim đã cải tiến thuật toán Kru
Trang 111.4 MỘT SỐ ỨNG DỤNG CỦA CÂY BAO TRÙM
1 Kiểm tra tính liên thông của một đồ thị: Đồ thị là
liên thông ⇔ nó có cây bao trùm
2 Xây dựng hệ cơ sở của các chu trình
Giả sử đồ thị liên thông G = (V, E) với n đỉnh
và m cạnh
Trang 211.4 MỘT SỐ ỨNG DỤNG CỦA
CÂY BAO TRÙM (tiếp)
Τη χ ηι ν ηαι β χ: ự ệ ướ
1 Ξψ δ νγ χψ βαο τρµ Τ χ α Γ Γι σ ự ủ ả ử
τρονγ θυ〈 τρνη ξψ δ νγ χψ βαο τρµ Τ τα ự đ
β ι χ〈χ χ νη ỏ đ ạ ε1 , ε2, , εµ ν + 1 –
2 Ξψ δ νγ η χηυ τρνη χ σ : Λ ν λ τ τηµ ự ệ ơ ở ầ ượ
ϖ◊ο χψ Τ χ〈χ χ νη ε ι , κηι ⌠ σ ξυ τ ηι ν χηυ đ ẽ ấ ệ
τρνη αι − ψ χ νγ λ◊ χηυ τρνη χ α τη Γ đ ũ ủ đồ ị
Σαυ ⌠ λ ι ξο〈 χ νη ε ι ϖ◊ τηµ χ νη ε ι+1 ϖ◊ο
Χυ ι χνγ τα νη ν ố ậ đượ χ χ〈χ χηυ τρνη τ νγ νγ ươ ứ
Trang 311.4 MỘT SỐ ỨNG DỤNG CỦA
CÂY BAO TRÙM (tiếp)
Η χηυ τρνη ν◊ψ χ λ π ϖ: ệ độ ậ
∀ ι ≠ ϕ τη α ι χη α ứ ε ι νη νγ κηνγ χη α ư ứ ε ϕ , χ∫ν α ϕ
χη α ε ϕ νη νγ κηνγ χη α ε ι
Σ χ〈χ χηυ τρνη ν◊ψ λ◊ ố µ − ν +1 = µ − ν + π = χ(Γ) =
σ
χ〈χ χηυ τρνη χ λ π χ χ ι độ ậ ự đạ
ς ψ η χηυ τρνη τµ ậ ệ đượ χ λ◊ µ τ χ σ χ α χ〈χ ộ ơ ở ủ
Trang 4VÍ DỤ 11.5
Ξτ τη ϖ η νγ:đồ ị ướ
ν = 5, µ = 8, π = 1 ς ψ ậ χ(Γ) = 4
a
3 4
Hình 11.7 Đồ thị và các cạnh bỏ đi
Trang 5VÍ DỤ 11.5 (tiếp)
Μ τ χψ βαο τρµ Τ χ α Γ λ◊:ộ ủ
Τα νη ν ậ đượχ µ τ η χηυ τρνη χ σ :ộ ệ ơ ở
α1 = [a, b, d] α3 = [a, b, c, d]
α2 = [a, b, e, d] α4 = [a, b, c, e, d]
a
Trang 611.5 CÂY BAO TRÙM NHỎ NHẤT
Β◊ι το〈ν: Χηο τη ϖ η νγ Γ λιν τηνγ ϖ ι
τ π χ νη ậ ạ Ε ϖ◊ η◊µ τρ νγ σ ọ ố χ : Ε → Ν Τµ χψ βαο τρµ Τ χ α Γ σαο χηο τ νγ τρ νγ σ χ α ủ ổ ọ ố ủ
χ〈χ χ νη χ α Τ τ γι〈 τρ νη νη τ.ạ ủ đạ ị ỏ ấ
Μ τ σ τηυ τ το〈ν τµ χψ βαο τρµ νη νη τ:
- Thuật toán Kruskal
- Thuật toán Prim
Trang 711.6 THUẬT TOÁN KRUSKAL
Τηυ τ το〈ν:ậ
1 Χη ν χ νη χ⌠ τρ νγ σ β νη τ, κ ηι υ λ◊ ε1
ϖ◊ τ Ω := {đặ ε1}
2 Γι σ χη ν ả ử đ ọ đượχ Ω = {ε1, ε2, , ει} Χη ν
ει+1 λ◊ χ νη χ⌠ τρ νγ σ β νη τ τρονγ σ χ〈χ
χ νη χ∫ν λ ι τρονγ Ε ∴ Ω σαο χηο {ε1, ε2, , ει,
ει+1} κηνγ χη α χηυ τρνη ứ
3 Β συνγ: Ω := Ω ∪ {ει+1}
4 Λ π λ ι χ〈χ β χ 2 3 χη νγ ν◊ο χ∫ν χ⌠ τη ặ ạ ướ ừ ể
Trang 811.6 THUẬT TOÁN KRUSKAL (tiếp)
Địνη λ 11.4 : Τ π χ〈χ χ νη Ω τµ χ τηεο τηυ τ το〈ν Κρυσκαλ τ ο νν χψ βαο τρµ νη
νη τ χ α τη Γ
Τηυ τ το〈ν Κρυσκαλ χηι τι τậ ế
1 procedure Kruskal ;
2 begin
3 W := ∅ ; Z := E ;
Trang 911.6 THUẬT TOÁN KRUSKAL (tiếp)
4 ωηιλε (|Ω| < ν −1) ανδ (Ζ ≠ ∅) δο
5 begin
6 chọn cạnh e có trọng số bé nhất trong Z ;
7 Z := Z \ {e} ;
8 if W ∪ {e} không chứa chu trình then W :=
W ∪ {e}
9 end ;
10 if |W| < n -1 then writeln(″ Đồ thị không liên
″
Trang 10VÍ DỤ 11.6
τη χ⌠ τρ νγ σ ϖ◊ χψ βαο τρµ νη νη τ:
1 1
1 2
2
4
6
1 1
1
2 5
Trang 1111.7 THUẬT TOÁN PRIM
Τηυ τ το〈ν Πριµ
Prim đã cải tiến thuật toán Kruskal như sau: ở mỗi vòng lặp ta chọn cạnh có trọng số bé nhất trong số các cạnh kề với các cạnh đã chọn mà không tạo nên chu trình
Trang 1211.7 THUẬT TOÁN PRIM (tiếp)
Τηυ τ το〈ν Πριµ χ γ ι λ◊ πη νγ πη〈π λν
χ ν γ ν νη τ: β τ υ τ µ τ νη ν◊ο ⌠ ậ ầ ấ ắ đầ ừ ộ đỉ đ α
χ α τη Γ τα ν ι ν⌠ ϖ ι νη γ ν νη τ, ủ đồ ị ố ớ đỉ “ ầ ” ấ
χη νγ η ν ẳ ạ β Νγη α λ◊, χ νη (ĩ ạ α, β) χ χη ν χ⌠ τρ νγ σ β νη τ Τι π τηεο, τρονγ σ χ〈χ ọ ố ấ ế ố
χ νη κ ϖ ι νη ạ ề ớ đỉ α ηο χ νη β τα χη ν
χ νη χ⌠ τρ νγ σ β νη τ µ◊ κηνγ τ ο νν χηυ τρνη ϖ ι χ νη (α, β) Χ νη ν◊ψ δ ν ν νη ạ ẫ đế đỉ
τη βα χ
Τι π τ χ θυ〈 τρνη ν◊ψ χηο ν κηι νη ν ế ụ đế ậ đượχ
Trang 1311.7 THUẬT TOÁN PRIM (tiếp)
1 προχεδυρε Πριµ ;
2 begin
3 W := {cạnh có trọng số bé nhất };
4 for i := 1 to n - 2 do
5 begin
6 e := cạnh có trọng số bé nhất kề với cạnh trong W và nếu ghép nó vào W thì không tạo nên chu trình ;
7 W := W ∪ {e}
8 end
Trang 14CÂY BAO TRÙM NHỎ NHẤT (tiếp)
Đị νη λ 11.5
Trong đồ thị vô hướng có trọng số đôi một khác
nhau, cây bao trùm nhỏ nhất tồn tại và duy nhất
Chứng minh:
Vì trong vòng lặp chỉ có duy nhất một cạnh được
chọn
Trang 1511.8 CÂY BAO TRÙM LỚN NHẤT
Τρονγ χ〈χ τηυ τ το〈ν Κρυσκαλ ϖ◊ Πριµ τα ậ
κηνγ ρ◊νγ βυ χ ϖ δ υ χ α τρ νγ σ , νν χ⌠ ộ ề ấ ủ ọ ố
τη 〈π δ νγ χηο τη ϖ η νγ ϖ ι τρ νγ σ ể ụ đồ ị ướ ớ ọ ố τρν χ〈χ χ νη χ⌠ χνγ δ υ τυ ạ ấ ỳ
Trang 1611.8 CÂY BAO TRÙM LỚN NHẤT (tiếp)
Để τµ χψ βαο τρµ λ ν νη τ τα χ⌠ ηαι χ〈χη:ớ ấ
1 Đổi thành dấu - cho các trọng số trên các cạnh áp dụng một trong hai thuật toán đã trình bày ở trên để tìm cây bao trùm nhỏ nhất Sau đó đổi dấu + trở lại,
ta sẽ được cây bao trùm lớn nhất
2 Sửa đổi trong các thuật toán: bước “chọn cạnh có
trọng số bé nhất “ được thay bằng “chọn cạnh có trọng số lớn nhất “ còn các bước khác thì giữ
nguyên Khi thuật toán kết thúc, ta sẽ nhận được