1. Trang chủ
  2. » Luận Văn - Báo Cáo

cây phủ nhỏ nhất và ứng dụng

22 969 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 395,5 KB

Nội dung

MỤC LỤC Trang Đồ thị có hướng gọi là liên thông mạnh, nếu mọi cặp đỉnh của nó đều có đường đi có hướng nối chúng với nhau...4 a b...7 II.. Đồ thị có cây phủ là đồ thị khi ta chọn một

Trang 1

Stt Họ và Tên Công việc Chữ

Trang 2

MỤC LỤC

Trang

Đồ thị có hướng gọi là liên thông mạnh, nếu mọi cặp đỉnh của nó đều có đường đi có

hướng nối chúng với nhau 4

a b 7

II Cây và cây phủ 8

1 Cây 8

Chứng minh 8

2 Cây phủ 9

MỞ ĐẦU

Lý thuyết đồ thị là ngành khoa học được phát triển từ lâu nhưng lại có nhiều ứng dụng hiện đại Đồ thị là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó Đây là công cụ hữu hiệu để mô hình hoá và giải quyết các bài toán trong nhiều lĩnh vực khoa học, kỹ thuật, kinh tế, xã hội

Khi nghiên cứu bộ môn lý thuyết đồ thị, chúng ta được tiếp cận với nhiều khái niệm, tri thức mới Trong đó, một khái niệm mà chúng ta không thể không nhắc tới đó là khái niệm về CÂY Cây là một cấu trúc dữ liệu được sử dụng rộng rãi gồm một tập hợp các đỉnh (nút) Một trong số những bài toán liên quan đến

cây mà chúng ta được tìm hiểu đó là bài toán tìm cây phủ (cây bao trùm) Đồ thị

có cây phủ là đồ thị khi ta chọn một đỉnh làm đỉnh gốc thì qua đỉnh đó luôn có một đường đi đi qua tất cả các đỉnh còn lại của đồ thị Cây phủ thì có nhiều ứng dụng trong các bài toán điều khiển giao thông, nối các mạng điện…Ngoài ra, chúng ta còn sử dụng khái niệm cây phủ để kiểm tra tính liên thông của một đồ thị

Trong thực tế có một vấn đề đặt ra là: Khi ta xây dựng các con đường thông thương giữa các thành phố, làm thế nào để chi phí bỏ ra là thấp nhất nếu ta biết trước được chi phí của con đường giữa 2 thành phố bất kỳ Từ yêu cầu thực tế

này dẫn đến bài toán “Tìm cây phủ nhỏ nhất”.

Bài toán tìm cây phủ nhỏ nhất (hay cây khung tối tiểu- Minimmum Spanning Tree - MST) của một đồ thị vô hướng là một bài toán rất nổi tiếng và

Trang 3

có ứng dụng rất lớn Hiện nay đã có rất nhiều thuật toán giải quyết bài toán MST trong các trường hợp cụ thể để giải quyết các bài toán thực tế Tuy nhiên hai giải thuật kinh điển để tìm cây phủ nhỏ nhất là thuật toán Prim và thuật toán Kruskal.

CHƯƠNG I ĐẠI CƯƠNG VỀ ĐỒ THỊ

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

1 Đồ thị có hướng và đồ thị vô hướng

Định nghĩa 1.1: Đồ thị vô hướng G = (V, E) gồm một tập V các đỉnh và

tập E các cạnh Mỗi cạnh e ∈ E đựoc liên kết với một cặp đỉnh v, w (không kể thứ tự) như hình sau:

v e w

Định nghĩa 1.2: Đồ thị có hướng G = (V, E) gồm một tập V các đỉnh và

tập E các cạnh có hướng gọi là cung

Mỗi cung e ∈ E được liên kết với một cặp đỉnh (v, w) có thứ tự như hình sau:

v e w

Cho đồ thị (có hướng hoặc vô hướng) G = (V, E)

Nếu cạnh e liên kết đỉnh v, w thì ta nói cạnh e liên thuộc đỉnh v, w, các đỉnh v, w liên thuộc cạnh e, các đỉnh v, w là các đỉnh biên của cạnh e và đỉnh v

kề đỉnh w.

Nếu chỉ có duy nhất một cạnh e liên kết với cặp đỉnh v, w, ta viết e=(v,w) Nếu

e là cung thì v gọi là đỉnh đầu và w gọi là đỉnh cuối của cung e

2 Đường đi, chu trình, tính liên thông

Cho đồ thị G=(V, E)

Dây µ từ đỉnh v đến đỉnh w là tập hợp các đỉnh và cạnh nối tiếp nhau bắt đầu từ đỉnh v và kết thúc tại đỉnh w Số cạnh trên dây µ goi là độ dài của dây µ.

Trang 4

Dây µ từ đỉnh v đến đỉnh w độ dài k được biểu diễn như sau:

µ=(v, e1, v1, e2, v2, , vk-1, ek, w).

Trong đó vi (i = 1, , k - 1) là các đỉnh trên dây ei (i = 1, , k – 1) là các cạnh trên dây liên thuộc đỉnh kề trước và sau nó Các đỉnh và cạnh trên dây có thể lặp lại

a Đường đi

Đường đi từ đỉnh v đến đỉnh w là dây từ đỉnh v đến đỉnh w, trong đó các

cạnh không lặp lại

Đường đi sơ cấp là đường đi không đi qua một đỉnh quá một lần.

Đường đi có hướng trong đồ thị có hướng là dây có hướng, trong đó các

cung không lặp lại

Đường đi có hướng sơ cấp là đường đi có hướng không đi qua một đỉnh

quá một lần

Dây có hướng trong đồ thị có hướng là dãy các đỉnh và cung nối tiếp nhau

(e1, e2, …, ek) thoả mãn đỉnh cuối của cung ei là đỉnh đầu của cung ei+1, i=1, k-1

Vòng là dây có đỉnh đầu và đỉnh cuối trùng nhau.

Vòng có hướng là dây có hướng có đỉnh đầu và đỉnh cuối trùng nhau.

b Chu trình

Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau.

Chu trình có hướng là đường đi có hướng có đỉnh đầu và đỉnh cuối trùng

nhau

Chu trình sơ cấp là chu trình không đi qua một đỉnh quá 1 lần.

Chu trình có hướng sơ cấp là chu trình có hướng không đi qua một đỉnh

quá một lần

c Tính liên thông

Đồ thị vô hướng gọi là liên thông, nếu mọi cặp đỉnh của nó đều có đường

đi nối chúng với nhau

Đồ thị có hướng gọi là liên thông mạnh, nếu mọi cặp đỉnh của nó đều có

đường đi có hướng nối chúng với nhau

Đồ thị có hướng gọi là liên thông yếu, nếu đồ thị lót (vô hướng) của nó

liên thông

Đồ thị có hướng gọi là bán liên thông, nếu với mọi cặp đỉnh (u,v) bao giờ

cũng tồn tại đường đi có hướng từ u đến v hoặc từ v đến u

Đồ thị liên thông mạnh => Đồ thị bán liên thông => Đồ thị liên thông yếu.

Trang 5

3 Trọng đồ

Định nghĩa: Trọng đồ (có hướng) là đồ thị (có hướng) mà mỗi cạnh

(cung) của nó được gán một số

Trọng đồ được biểu diễn bởi G = (V, E, w), trong đó V là tập các đỉnh, E là tập các cạnh (cung) và w: E -> R là hàm số trên E w(e) là trọng số của cạnh (cung) e với mọi e ∈ E.

Trong trọng đồ độ dài trọng số của đường đi µ là tổng các trọng số trên đường đi đó

Đối với bài toán “Cây phủ nhỏ nhất” thì bài toán biểu diễn đồ thị dưới dạng:

Ma trận kề, ma trận trọng số, danh sách cạnh(cung) và danh sách kề

a Ma trận kề, ma trận trọng số của đồ thị vô hướng

Ma trận kề :

Cho đồ thị G=(V,E) có n đỉnh theo thứ tự là v1, v2, …vn Ma trân kề của đồ thị G

là ma trận vuông A=(aij)nxm trong đó aij là số cạnh (khuyên) nối vi với vj Lưu ý khi tính bậc của đỉnh mỗi khuyên được tính hai bậc

Ma trận kề của đồ thị vô hướng luôn đối xứng nhau qua đường chéo chính

Trang 6

Ma trận trọng số

Cho đồ thị vô hướng G = (V,E) có n đỉnh theo thứ tự là v 1, v 2, …v n Ma trận

khoảng cách của G là ma trận D = (d ij) xác định như sau

dij = 0 nếu i=j

hoặc w(vi,vj) nếu (vi,vj) ∈Ehoặc ∞ nếu (vi,vj) ∉E

Ma trận khoảng cách của đồ thị sau là: (các ô trống là ∞)

Trang 7

b Danh sách cạnh (cung)

Trong trường hợp đồ thị thưa (đồ thị có số cạnh m thoả mãn bất đẳng thức m

< 6n) người ta thường dùng cách biểu diễn đồ thị dưới dạng danh sách cạnh

Trong cách biểu diễn đồ thị bởi danh sách cạnh (cung) chúng ta sẽ lưu trữ danh sách tất cả các cạnh (cung) của đồ thị vô hướng (có hướng) Một cạnh (cung) e=(x,y) của đồ thị sẽ tương ứng với hai biến Dau[e], Cuoi[e] Như vậy , để lưu trữ đồ thị ta cần sử dụng 2m đơn vị bộ nhớ Nhược điểm của cách biểu diễn này là để xác định những đỉnh nào của đồ thị là kề với một đỉnh cho trước chúng

ta phải làm cỡ m phép so sánh (khi duyệt qua danh sách tất cả các cạnh của đồ thị)

(a,b),(a,c),(a,e),(b,d),(c,d),(c,e),(c,f),(d,f),(f,e) được lưu trữ bởi các mảng

Đầu[e], Cuối[e], e=1, 9 như sau:

Khi đó vòng lặp thực hiện với mỗi một phần tử trong danh sách này theo thứ

tự các phần tử được sắp xếp trong nó sẽ được viết như sau:

Với mọi u ∈ Ke(v) do <công việc>.

Trang 8

II Cây và cây phủ

Gốc của cây là một đỉnh đặc biệt, thông thường là đỉnh trên cùng

Mức của đỉnh là độ dài đường đi từ gốc đến đỉnh đó

Độ cao của cây là mức lớn nhất của cây (tức mức của đỉnh cách xa cây nhất)

Trong ví dụ trên nếu ta chọn v1 là gốc thì v2, v3 là những đỉnh mức 1, các đỉnh v4, v5, v6, v7 có mức 2, và độ cao của cây là 2

Định lý

Cho T là đồ thị n đỉnh Các mệnh đề sau tương đương

(i) T là cây

(ii) T không chứa chu trình và có n-1 cạnh

(iii) T liên thông và có n-1 cạnh

(iv) T liên thông và mỗi cạnh là cầu

(v) Hai đỉnh bất kỳ được nối với nhau bởi một đường đi duy nhất

(vi) T không chứa chu trình và nếu thêm một cạnh nối hai đỉnh thì ta thu được

đúng 1 chu trình

(vii) T liên thông và nếu thêm một cạnh nối hai đỉnh thì ta thu được đúng 1 chu

trình

Chứng minh

Các mệnh đề trên hiển nhiên tương đương với n=1

(i)⇒(ii): Quy nạp theo số đỉnh n Giả sử đúng với mọi n ≤ k Cho n=k+1 Giả sử e là cạnh của T Loại e khỏi T ta có đồ thị T’ gồm 2 thành phần liên thông T1 và T2 Gọi ni , mi là số đỉnh và số cạnh tương ứng với Ti, i=1,2 Theo giả thiết quy nạp mi = ni – 1 , i =1,2

Vậy số cạnh của T là

Trang 9

1+ m1 + m2 = n1 + n2 – 1 = n – 1

(ii)⇒(iii): Bằng phản chứng Giả sử T không liên thông và có k thành phần liên thông (k ≥ 2) T1, T2, , Tk Vì T không chứa chu trình nên các thành phần liên thông cũng không chứa chu trình Theo định nghĩa T1, T2, , Tk cũng

là cây Gọi ni , mi là số đỉnh và số cạnh tương ứng với Ti , i=1, ,k Theo (ii) ta có:

mi = ni – 1, i =1, ,k

Suy ra số cạnh m của T là :

m = ∑ mi = ∑ (ni – 1) = n - k

mâu thuẫn với (ii) (m=n-1)

(iii)⇒(iv): Việc loại bỏ cạnh bất kỳ của T dẫn đến một đồ thị n đỉnh và

n-2 cạnh Đồ thị này không thể liên thông được Vậy mỗi cạnh của T là cầu

(iv)⇒(v): Do T liên thông nên hai đỉnh bất kỳ của nó được nối với nhau bằng một dây đường đi Nếu có cặp đỉnh được nối với nhau bằng 2 đường đi thì suy ra đồ thị chứa chu trình và các cạnh trên chu trình đó không thể là cầu được, mâu thuẫn

(v)⇒(vi): Hiển nhiên T không chứa chu trình Bây giờ ta thêm cạnh e=(u,v) Khi đó cạnh e cùng đường đi nối u và v tạo nên chu trình duy nhất của T

(vi)⇒(vii): Hiển nhiên

(vii)⇒(i): T liên thông Nếu T có chu trình thì khi thêm cạnh nối hai đỉnh trên chu trình ta sẽ nhận được 2 chu trình, vậy T là cây

2 Cây phủ

Định nghĩa: Cho đồ thị G=(V,E) Cây T gọi là cây phủ hay cây bao trùm

của G, nếu T là đồ thị con phủ của G

Định lý : Đồ thị G = (V, E) có cây phủ khi và chỉ khi G liên thông.

Chứng minh

(=>): Nếu G có cây phủ thì hiển nhiên G liên thông

(<=): Giả sử G là đồ thị liên thông Nếu G không có chu trình thì theo định nghĩa

G là cây phủ của chính nó Nếu G có chu trình thì ta bỏ bớt 1 cạnh (không bỏ đỉnh) trên chu trình đó Đồ thị con thu được vẫn liên thông Nếu vẫn còn chu trình ta lại bỏ bớt 1 cạnh, cứ tiếp tục quá trình trên cho đến khi không còn chu trình thì ta thu được cây phủ của đồ thị G

Ví dụ : Các cây T1 và T2 là cây phủ của đồ thị G

Trang 10

3 Khái niệm cây phủ nhỏ nhất

Cho G=(V,E, (cij)) là trọng đồ liên thông có trọng số (cij) Cây phủ T của

G được gọi là cây phủ nhỏ nhất của G nếu trong số tất cả các cây phủ của G, tổng trọng số của cây T là nhỏ nhất

CHƯƠNG II CÂY PHỦ NHỎ NHẤT

I Bài toán cây phủ nhỏ nhất

1 Bài toán thực tế

Giả sử ta muốn xây dựng một hệ thống đường sắt nối n thành phố sao cho giữa hai thành phố bất kỳ đều có thể thông thương với nhau Nếu biết trước chi phí xây dựng các tuyến đường thì bài toán đặt ra là phải xây dựng những tuyến đường nào để tổng chi phí xây dựng là ít nhất

Nếu ta coi các thành phố là đỉnh và các tuyến đường nối các thành phố là cạnh kèm theo chi phí xây dựng thì ta có trọng đồ, ví dụ như trọng đồ ở hình sau:

4

Trang 11

Khi đó bài toán quy về tìm cây phủ bé nhất của đồ thị.

2 Bài toán tổng quát

Cho G(V, E, (ci j)) là trọng đồ liên thông có trọng số (ci j) Tìm cây phủ T của G có trọng số:

a Phát biểu: Cho G=(V,E, (c ij )) là đồ thị liên thông có trọng số (c ij) Khi

đó T là cây phủ nhỏ nhất của G khi và chỉ khi mỗi cạnh e ∉ T có

trọng số lớn nhất trên chu trình tạo bởi e và các cạnh của T

b Chứng minh: Điều kiện cần là hiển nhiên Ta chứng minh điều kiện đủ.

Giả sử S là cây bất kỳ có k cạnh không thuộc T Ta chứng minh

d(S) ≥ d(T)qui nạp theo k

Gọi e1, e2, ,en-1 là các cạnh của T sắp theo thứ tự trọng số tăng dần

c(e1) ≤ c(e2) ≤ ≤ c(en-1)

+ Bước cơ sở: k=0 Hiển nhiên là d(S) = d(T) vì S=T

+ Bước qui nạp: Giả sử mọi cây với số cạnh không thuộc T ít hơn k đều có trọng

số không nhỏ hơn d(T)

Gọi ei là cạnh đầu tiên trong dãy các cạnh của T không thuộc S Cạnh ei

và các cạnh của S tạo thành chu trình duy nhất CS Chu trình CS bắt buộc phải chứa cạnh e ∈ S \ T

Cạnh e cùng với các cạnh của T tạo thành chu trình duy nhất CT Vì S chứa các cạnh e1, ,ei-1 và e, nên CT phải có cạnh ej với j ≥ i và ej ∉S (nếu không, CT⊂ S, vô lý) Thay cạnh e bằng cạnh ei, ta thu được cây phủ S’ có d(S’)

≤ d(S), vì c(e) ≥ c(ej) ≥ c(ei) Do S’ chỉ có k-1 cạnh không thuộc T nên theo giả thiết qui nạp

d(S) ≥ d(S’) ≥ d(T)

Trang 12

II Các thuật toán tìm cây phủ nhỏ nhất

1 Thuật toán Prim

a Thuật toán

+ Đầu vào: Đồ thị G=(V,E) có trọng số

Các đỉnh kí hiệu là 1,2,…,n

Trọng số của cạnh (i, j), (i ,j) ∈ E, kí hiệu cij

+ Đầu ra: Cây phủ nhỏ nhất T hoặc kết luận đồ thị không liên thông

+ Các bước:

(1) Khởi tạo: T là đồ thị gồm một đỉnh 1 và không có cạnh

(2) Kiểm tra điều kiện kết thúc :

Nếu T có n - 1 cạnh , kết thúc Kết luận T là cây phủ nhỏ nhất

Ngược lại sang bước 3

(3) Thêm cạnh :

Kí hiệu M là tập : M = { (i, j) ∈ E  i ∈ T & j ∉ T }

Tìm cạnh (k,h) ∈ M sao cho : ckh = min { cij  (i, j) ∈ M }

Nếu ckh < ∞ , thêm cạnh (k, h) và đỉnh h vào T, sang bước 2

Ngược lại, tức M = ∅, kết thúc Kết luận đồ thị G không liên thông

b Định lý Thuật toán Prim là đúng.

Nếu các cạnh của T cũng là cạnh của S thì hiển nhiên d(S) = d(T)

Ngược lại gọi em là cạnh đầu tiên trong dãy các cạnh của T xây dựng theo thuật toán không thuộc S Cạnh em và các cạnh của S tạo thành chu trình duy nhất C

Chu trình C chứa đỉnh vm∈Tm , trong đó Tm = {v1, ,vm} là số đỉnh có được

ở bước thêm cạnh em Chu trình C bắt buộc phải chứa cạnh e nối đỉnh của Tm với đỉnh không thuộc Tm (nếu không C⊂T) Theo thuật toán thì cạnh e có trọng số không nhỏ hơn trọng số của em Vì vậy thay cạnh e bằng cạnh em, ta thu được cây phủ S’ có d(S’) ≤ d(S) Lặp lại quá trình trên ta biến đổi cây S thành cây phủ T

và suy ra

d(S) ≥ d(S’) ≥ ≥ d(T)

Trang 13

Ví dụ 1 Áp dụng thuật toán Prim tìm cây phủ nhỏ nhất của đồ thị sau

(1) Khởi tạo: T chỉ có 1 đỉnh a, không có cạnh

T = ( {a},∅ ), d(T) :=0

(2) Kiểm tra : Số cạnh của T là 0, sang bước 3

(3) Thêm cạnh : Tập M là : M = { (a,b) , (a,c) , (a,e) }

Ta có : cac = 2 = min { cij  (i,j) ∈ M }

Thêm đỉnh c và cạnh (a,c) vào T

T := ( {a,c}, {(a,c)})d(T) := d(T) + cac = 2(2) Kiểm tra : Số cạnh của T là 1, sang bước (3)

(3) Thêm cạnh :

Tập M là : M = { (a,b) , (a,e) , (c,d) , (c,e) , (c,f) , (d,b) , (d,f) }

Ta có cae = cef = 3 = min { cij  (i,j) ∈ M }

Thêm đỉnh e và cạnh (a,e) vào T

T := ( {a,c,d,e}, {(a,c) , (c,d) , (a,e) })d(T) := d(T) + cae = 3 + 3 = 6(2) Kiểm tra : Số cạnh của T là 3, sang bước 3

(3) Thêm cạnh : Tập M là : M = { (a,b) , (c,f) , (d,b) , (d,f) , (e,f)}

Ta có : cef = 2 = min { cij  (i,j) ∈ M }

Thêm đỉnh f và cạnh (e,f) vào T

Trang 14

T := ( {a,c,d,e,f}, {(a,c) , (c,d) , (a,e) , (e,f) })

d(T) := d(T) + aef = 6 + 2 =8(2) Kiểm tra : Số cạnh của T là 4, sang bước 3

(3) Thêm cạnh : Tập M là : M = { (a,b) , (d,b) }

Ta có : cab = 4 = min { cij  (i,j) ∈ M }

Thêm đỉnh b và cạnh (a,b) vào T

T := ( {a,c,d,e,f,b}, {(a,c) , (c,d) , (a,e) , (e,f) , (a,b) })

d(T) := d(T) + cab = 8 + 4 = 12(2) Kiểm tra : Số cạnh của T là 5, kết thúc

Bảng dưới đây ghi nhãn của các đỉnh trong bước lặp của thuật toán đỉnh

đánh dấu * là đỉnh được bổ sung vào cây phủ T (khi đó nhãn của chúng không bị biến dạng trong các bước lặp tiếp theo, vì vây ta đánh dấu – để ghi nhận điều đó)

Khởi tạo cây phủ T chỉ có đỉnh a, không có cạnh

Ngày đăng: 12/05/2014, 11:50

HÌNH ẢNH LIÊN QUAN

4. Đồ thị con - cây phủ nhỏ nhất và ứng dụng
4. Đồ thị con (Trang 5)
Bảng dưới đây ghi nhãn của các đỉnh trong bước lặp của thuật toán đỉnh - cây phủ nhỏ nhất và ứng dụng
Bảng d ưới đây ghi nhãn của các đỉnh trong bước lặp của thuật toán đỉnh (Trang 14)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w