Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN CÂY KHUNG NHỎ NHẤT

15 976 10
Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN CÂY KHUNG NHỎ NHẤT

Đ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

CÂY KHUNG NHỎ NHẤT Nội dung trình bày  Định nghĩa cây khung  Phát biểu bài toán  Xây dựng bài toán  Thuật toán Kruskal  Thuật toán Prim  Cài đặt chương trình Định nghĩa cây khung  Trong đồ thị liên thông G, nếu ta loại bỏ cạnh nằm trên chu trình nào đó thì ta sẽ được đồ thị vẫn là liên thông. Nếu cứ loại bỏ các cạnh ở các chu trình khác cho đến khi nào đồ thị không còn chu trình (vẫn liên thông) thì ta thu được một cây nối các đỉnh của G. Cây đó gọi là cây khung hay cây bao trùm của đồ thị G. Ví dụ: b f c d h g ia e 8 7 9 10 1 2 4 14 2 4 7 6 11 8 Phát biểu bài toán  Bài toán: Cần nối mạng một hệ thống gồm n máy tính đánh số từ 1 đến n. Biết chi phí nối máy i với máy j là m(i,j) (thông thường chi phí này phụ thuộc vào độ dài cáp nối cần sử dụng). Hãy tìm cách nối mạng sao cho tổng chi phí là nhỏ nhất. Bài toán tìm cây khung nhỏ nhất. Xây dựng bài toán  Ta có thể mô hình hoá bài toán bằng một đồ thị liên thông vô hướng G=(V,E) trong đó:  V là tập các đỉnh ứng với các máy tính  E là tập các cạnh ứng với các dây nối giữa các máy tính, và mỗi cạnh (u,v) E∈ , trọng số w(u,v) thể hiện chi phí (độ dài cần thiết) để nối u và v.  Vấn đề đặt ra: tìm được một tập cạnh T E ⊆ bao gồm các cạnh không tạo thành chu trình sao cho tổng trọng số w(T)= ∑ (u, v) ∈ T w(u, v) là nhỏ nhất.  Tập T là một cây và được gọi là cây khung nhỏ nhất => Bài toán tìm cây khung nhỏ nhất : Tìm T Thuật toán Kruskal  Ý tưởng thuật toán  Thủ tục MST-KRUSKAL(G,w)  Ví dụ minh hoạ  Thời gian thực hiện thuật toán  Cài đặt thuật toán Ý tưởng thuật toán  G=(V,E) đồ thị liên thông vô hướng  W là hàm trọng số trên E.  Bắt đầu từ đồ thị rỗng T  Sắp xếp các cạnh của G theo thứ tự không giảm của trọng số.  Bắt đầu từ cạnh đầu tiên của dãy này, ta cứ thêm dần các cạnh của dãy đã được xếp vào T theo nguyên tắc cạnh thêm vào không được tạo thành chu trình trong T  Lặp lại Bước 3 cho đến khi nào số cạnh trong T bằng n−1, ta thu được cây khung nhỏ nhất cần tìm. Vấn đề cài đặt thuật toán  Câu hỏi đặt ra: Làm thế nào để kiểm tra một cạnh thêm vào không tạo thành chu trình?  Giải quyết: Biểu diễn các tập rời nhau bằng rừng (disjoint-set forest)  Ban đầu khởi tạo rừng T gồm n cây, mỗi cây tương ứng với mỗi đỉnh của đồ thị bằng thủ tục MAKE-SET  Khi thêm một cạnh (u,v) vào T không tạo thành chu trình thì cạnh đó phải nối hai cây khác nhau của rừng: Kiểm tra FINDSET(u) <> FINDSET(v)?  Hợp hai cây thành một cây bằng thủ tục UNION(u,v) Thủ tục MST-KRUSKAL(G,w)  A ∅  for each vertex v∈V[G]  do MAKE-SET(v)  sort the edges of E into nondecreasing order by weight w  for each edge(u,v) ∈ E, taken in nondecreasing order by weight  do if FIND-SET(u) ≠ FIND-SET(v)  then A  A ∪{(u,v)}  UNION(u,v) Ví dụ minh hoạ 8 7 b f c d h g ia e 9 10 1 2 4 14 2 4 7 6 11 8 Tìm cây khung nhỏ nhất của đồ thị trên [...]... 7 c d h 9 i 11 8 d 2 7 10 4 6 1 6 1 i 4 e 14 h (n) 9 7 7 c 2 11 8 d 8 b 4 a 10 f 2 (l) 9 2 11 8 d 4 6 1 8 b 7 c 4 e 14 6 1 g 2 f 10 Thời gian thực hiện thuật toán  Nhận xét:  Giải thuật gọi lần |V| thao tác MAKE-SET  Gọi O(E) lần thao tác FINDSET và UNION  G liên thông nên |E| ≥ |V| - 1  Thời gian thực hiện của MST-KRUSKAL  Gọi |V| thao tác MAKE-SET  Sắp xếp ở dòng 4 : 0(ElgE)  Dòng 5-8: O(E)... d 8 b 4 a 10 f 2 (d) 9 2 11 8 d 4 6 1 8 b 7 c 4 e 14 6 1 g 2 f 10 Thực hiện giải thuật Kruskal 8 b (g) 4 a 2 i 11 8 (i) 4 a g 7 c 7 4 g 2 f f 2 7 c d 9 i 11 7 10 1 8 10 2 6 8 h g 1 b a e 14 6 4 e 14 h d 9 4 7 (j) 9 i i 11 7 c 2 8 d 2 11 a 10 f 2 4 e 14 8 b (h) 9 6 1 8 b d 4 7 h 7 c 4 e 14 6 8 10 h 1 g 2 f Thực hiện giải thuật Kruskal (k) 4 a 11 8 (m) 8 b 2 7 h i 4 a g e 14 7 c i 7 h 4 g 8 b a g 2 f...Thực hiện giải thuật Kruskal 1 (a) 2 2 8 b 4 a 4 6 7 c 7 h 8 (b) 9 i 7 7 d 2 11 8 4 4 10 11 14 8 b a g 2 f 8 c d h 9 i 11 7 10 7 2 6 1 9 4 e 14 8 4 e 14 6 1 g 2 f 10 11 Thực hiện giải thuật Kruskal (c) 4 a 11 8 (e) 8 b 2 7 h i 4 a e 14 g 7 c i 7 h 4 g 8 b a g 2 f 9 e 14 10 f 2 7 c d h 9 i 11 8 d 2 7 . ∑ (u, v) ∈ T w(u, v) là nhỏ nhất.  Tập T là một cây và được gọi là cây khung nhỏ nhất => Bài toán tìm cây khung nhỏ nhất : Tìm T Thuật toán Kruskal  Ý tưởng thuật toán  Thủ tục MST-KRUSKAL(G,w)  Ví. CÂY KHUNG NHỎ NHẤT Nội dung trình bày  Định nghĩa cây khung  Phát biểu bài toán  Xây dựng bài toán  Thuật toán Kruskal  Thuật toán Prim  Cài đặt chương trình Định nghĩa cây khung  Trong. phụ thuộc vào độ dài cáp nối cần sử dụng). Hãy tìm cách nối mạng sao cho tổng chi phí là nhỏ nhất. Bài toán tìm cây khung nhỏ nhất. Xây dựng bài toán  Ta có thể mô hình hoá bài toán bằng

Ngày đăng: 11/04/2015, 22:45

Từ khóa liên quan

Mục lục

  • Giáo viên hướng dẫn: ts. hoàng quang nhóm thực hiện: trần thị phương chi Nguyễn mậu quốc hoàn trương thị hương huyền mai văn mười

  • Nội dung trình bày

  • Định nghĩa cây khung

  • Phát biểu bài toán

  • Xây dựng bài toán

  • Thuật toán Kruskal

  • Ý tưởng thuật toán

  • Vấn đề cài đặt thuật toán

  • Thủ tục MST-KRUSKAL(G,w)

  • Ví dụ minh hoạ

  • Thực hiện giải thuật Kruskal

  • Slide 12

  • Slide 13

  • Slide 14

  • Thời gian thực hiện thuật toán

Tài liệu cùng người dùng

Tài liệu liên quan