Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
369 KB
Nội dung
Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất MỤC LỤC MỤC LỤC .1 LỜI GIỚI THIỆU 2 YÊU CẦU CỦA ĐỀTÀI 4 PHÂN CÔNG CÔNG VIỆC .6 KẾT LUẬN .28 TÀI LIỆU THAM KHẢO .29 GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 1/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất LỜI GIỚI THIỆU Lý thuyết đồ thị nghiên cứu các tính chất của đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc cung). Cạnh có thể có hướng hoặc vô hướng. Đồ thị thường được vẽ dưới dạng một tập các điểm (các đỉnh nối với nhau bằng các đoạn thẳng (các cạnh). Đồ thị biểu diễn được rất nhiều cấu trúc, nhiều bài toán thực tế có thể được biểu diễn bằng đồ thị. Ví dụ, cấu trúc liên kết của một Website có thể được biểu diễn bằng một đồ thị có hướng như sau: các đỉnh là các trang web hiện có tại website, tồn tại một cạnh có hướng nối từ trang A tới trang B khi và chỉ khi A có chứa 1 liên kết tới B. Do vậy, sự phát triển của các thuật toán xử lý đồ thị là một trong các mối quan tâm chính của khoa học máy tính. Cấu trúc đồ thị có thể được mở rộng bằng cách gán trọng số cho mỗi cạnh. Có thể sử dụng đồ thị có trọng số để biểu diễn nhiều khái niệm khác nhau. Ví dụ, nếu đồ thị biểu diễn một mạng đường giao thông, các trọng số có thể là độ dài của mỗi con đường. Một cách khác để mở rộng đồ thị cơ bản là qui định hướng cho các cạnh của đồ thị (như đối với các trang web, A liên kết tới B, nhưng B không nhất thiết cũng liên kết tới A). Loại đồ thị này được gọi là đồ thị có hướng. Một đồ thị có hướng với các cạnh có trọng số được gọi là một lưới. Với một đồ thị liên thông, vô hướng cho trước, câybao trùm của nó là một đồ thị con có dạng cây và có tất cả các đỉnh liên thông với nhau. Một đồ thị có thể có nhiều câybaophủ khác nhau. Chúng ta cũng có thể gán một trọng số cho mỗi cạnh và dùng nó để tính toán trọng số của một câybao trùm bằng cách cộng tất cả trọng số của cạnh trong câybao trùm đó. Khi đó, một câybao trùm nhỏnhất là một câybao trùm có trọng số bé hơn bằng trọng số của tất cả các câybao trùm khác. Tổng quát hơn, bất kỳ một đồ thị vô hướng (không nhất thiết liên thông) đều có một rừngbaophủnhỏ nhất, là hội của các câybao trùm nhỏnhất của các thành phần liên thông của nó. GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 2/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất Chúng tôi xin chân thành cảm ơn PGS TSKH Trần Quốc Chiến đã giảng dạy, hướng dẫn tận tình và cung cấp tài liệu tham khảo quý báu để chúng tôi hoàn thành đềtài này. Nhóm học viên thực hiện Lê Thị Anh Đào Lê Văn Linh Nguyễn Thị Mai Phương Mai Văn Tùng Huỳnh Anh Tuấn GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 3/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất YÊU CẦU CỦA ĐỀTÀICÂYPHỦNHỎNHẤT VÀ RỪNGPHỦNHỎNHẤT 1. Trình bày khái niệm cây, cây phủ, câyphủnhỏ nhất, định lý về điều kiện cần và đủ đểcâyphủnhỏ nhất. 2. Trình bày thuật toán Prim và thuật toán Kruskal tìm câyphủnhỏ nhất. 3. Thiết kế cấu trúc dữ liệu và giải thuật Prim và giải thuật Kruskal tìm câyphủnhỏ nhất. 4. Sử dụng các thuật toán trên tìm rừngphủnhỏnhất cho đồ thị không liên thông. 5. Viết chương trình cài đặt thuật toán tìm rừngphủnhỏnhất bằng ngôn ngữ C. File dữ liệu đầu vào: GRAPH.INP có cấu trúc n m (số đỉnh, số cạnh) a 1 b 1 c 1 (đỉnh đầu, đỉnh cuối, trọng số) a 2 b 2 c 2 . a m b m c m File kết quả: MIN TREE .OUT k {số thành phần liên thông} W 1 {trọng số câyphủnhỏnhất của thành phần liên thông thứ 1} x 1 , ., x i {các đỉnh của thành phần liên thông thứ 1} (u 1 , v 1 ),(u 2 , v 2 ) {các cạnh câyphủnhỏnhất của thành phần liên thông thứ 1} W 2 {trọng số câyphủnhỏnhất của thành phần liên thông thứ 2} y 1 , ., y j {các đỉnh của thành phần liên thông thứ 2} (r 1 , t 1 ), (r 2 , t 2 ), {các cạnh câyphủnhỏnhất của thành phần liên thông thứ 2} . 1) Ví dụ 1: GRAPH.INP MINCOVER.OUT 4 5 1 GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 4/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất 1 2 1 3 2 3 2 1, 2, 3, 4 3 4 3 (1,2), (1,3), (1,4) 4 1 1 1 3 1 2) Ví dụ 2: GRAPH.INP MINCOVER.OUT 5 4 2 1 2 1 2 2 3 2 1, 2, 3 1 3 1 (1,2), (1,3) 4 5 3 3 4, 5 (4,5) GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 5/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất PHÂN CÔNG CÔNG VIỆC STT Họ tên Công việc (theo mục lục) Chữ ký Nhận xét của giáo viên 1 Lê Thị Mai Phương Tìm hiểu các khái niệm về cây, câyphủ và câyphủnhỏnhất 2 Huỳnh Anh Tuấn Tìm hiểu thuật toán Prim và Kruskal để tìm câyphủnhỏnhất 3 Mai Văn Tùng Thiết kế cấu trúc dữ liệu cho các thuật toán tìm câyphủnhỏnhất 4 Lê Thị Anh Đào Rừngphủnhỏnhất và thuật toán tìm rừngphủnhỏnhất 5 Lê Văn Linh Xây dựng chương trình tìm rừngphủnhỏnhất GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 6/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất CHƯƠNG I: MỘT SỐ KHÁI NIỆM I.1. CâyCây là đồ thị liên thông không có chu trình. Ví dụ: Đồ thị sau đây là cây. 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 gốc nhất). Trong ví dụ trên nếu ta chọn v 1 là gốc thì v 2 , v 3 , v 8 là những đỉnh mức 1, các đỉnh v 4 , v 5 , v 6 , v 7 , v 9 có mức 2, và độ cao của cây là 2. Cây m-phân: Cây m-phân là cây mà mọi đỉnh có tối đa m con và có ít nhất một đỉnh có m con. Cây m-phân đầy đủ là cây mà mọi đỉnh trong có đúng m con. Cây cân bằng là cây mà mọi đỉnh lá có mức là h hay h-1, trong đó h là chiều cao của cây. Định lý (định lý tương đương): Cho đồ thị G = (V,E) có n đỉnh. Các mệnh đề tương đương là: GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 7/29 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 9 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất 1. G là một cây. 2. G liên thông và có n−1 cạnh. 3. G không có chu trình và có n−1 cạnh. 4. G không có chu trình và nếu bổ sung vào một cạnh nối hai đỉnh không kề nhau thì xuất hiện một chu trình; 5. G liên thông và nếu bỏ đi một cạnh thì G mất tính liên thông; 6. Mỗi cặp đỉnh trong G được nối với nhau bằng đường đi duy nhất. I.2. CâyphủCâyphủ hay câybao trùm của một đồ thị liên thông và có hướng G=(V,E) là tập hợp các đỉnh và một số (có thể là tất cả) các cạnh của đồ thị sao cho không tồn tại các chu trình. Vậy: - Câyphủ đồ thị N đỉnh sẽ có N-1 cạnh - Giữa 2 đỉnh bất kỳ sẽ chỉ có một đường đi Ví dụ: Cây T gọi là câyphủ hay câybao trùm của G, nếu T là đồ thị con phủ của G. Định lý: Đồ thị G = (V,E) có câyphủ khi và chỉ khi G liên thông I.3. Câyphủnhỏnhất GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 8/29 G T Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất Cho G=(V,E, (c ij )) là trọng đồ liên thông có trọng số (c ij ). Câyphủ T nhỏnhất của G là câyphủ T có tổng trọng số ∑ ∈ = Tji ij cTd , )( là nhỏ nhất. Vậy : - Một đồ thị có thể có nhiều câyphủ - Giá trị của một câyphủ là tổng trọng số của các cạnh của câyphủ đó. - Câyphủnhỏnhất là câyphủ có giá trị nhỏ nhất. Định lý: Cho đồ thị G = (V,E,(c ij )) là đồ thị liên thông có trọng số (c ij ). Khi đó T là câyphủ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 cạnh e và các cạnh của T. 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) quy nạp theo k. Gọi e1, e2, …, e n-1 là các cạnh của T sắp theo thứ tự trọng số tăng dần: C(e 1 ) ≤ c(e 2 ) ≤ … ≤ c(e n-1 ) Bước cơ sở: k=0. Hiển nhiên là d(S) = d(T) vì S=T Bước quy 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 e i là cạnh đầu tiên trong dãy các cạnh của T không thuộc S. Cạnh e i và các cạnh của S tạo thành chu trình duy nhất C S . Chu trình C S bắt buộc phải chứa cạnh e ∈ S \ T (vì T không chứa chu trình). Cạnh e cùng với các cạnh của T tạo thành chu trình duy nhất C T . Vì S chứa các cạnh e 1 ,…, e i-1 và e, nên C T phải có cạnh e j với j ≥ i và e j ∉ S (nếu không, C T ⊂ GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 9/29 Tiểu luận MônhọcCâyphủnhỏnhất và Rừngphủnhỏnhất S vô lý). Thay cạnh e bằng cạnh e i ta thu được câyphủ S’ có d(S’) ≤ d(S), vì c(e) ≥ c(e j ) ≥ c(e i ). Do S’ chỉ có k-1 cạnh không thuộc T nên theo giả thiết quy nạp: d(S) ≥ d(S’) ≥ d(T) Vậy, định lý đã được chứng minh. Phát biểu bài toán: Cho G=(V,E) là đồ thị vô hướng liên thông có trọng số, mỗi cạnh e∈E có trọng số m(e)≥0. Giả sử T=(V T ,E T ) là câyphủ của đồ thị G (V T =V). Ta gọi độ dài m(T) của câyphủ T là tổng trọng số của các cạnh của nó: ∑ ∈ = T E )()( e emTm . Bài toán đặt ra là trong số tất cả các câyphủ của đồ thị G, hãy tìm câyphủ có độ dài nhỏ nhất. Câyphủ như vậy được gọi là câyphủnhỏnhất của đồ thị và bài toán đặt ra được gọi là bài toán tìm câyphủnhỏ nhất. CHƯƠNG II: THUẬT TOÁN TÌM CÂYPHỦNHỎNHẤT II.1.Thuật toán Prim (Robert Clay Prim – 1957) Đầu vào : Đồ thị G=(V,E) với 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 là c ij Đầu ra : Câyphủ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âyphủnhỏ nhất. Ngược lại sang bước (3) (3) Thêm cạnh: Ký hiệu M là tập GV hướng dẫn: PGS. TSKH. Trần Quốc Chiến Trang 10/29 . luận Môn học Cây phủ nhỏ nhất và Rừng phủ nhỏ nhất YÊU CẦU CỦA ĐỀ TÀI CÂY PHỦ NHỎ NHẤT VÀ RỪNG PHỦ NHỎ NHẤT 1. Trình bày khái niệm cây, cây phủ, cây phủ nhỏ. toán tìm cây phủ nhỏ nhất 4 Lê Thị Anh Đào Rừng phủ nhỏ nhất và thuật toán tìm rừng phủ nhỏ nhất 5 Lê Văn Linh Xây dựng chương trình tìm rừng phủ nhỏ nhất