1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

Đề tài Tìm cây khung có trọng lượng nhỏ nhất bằng giải thuật Prim

17 298 0

Đ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 17
Dung lượng 771,45 KB

Nội dung

Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN (Học kỳ II, Niên khóa 2008-2009) GIÁO VIÊN HƯỚNG DẪN : STT HỌ VÀ TÊN MSCB Nguyễn Thành Quí 001945 SINH VIÊN THỰC HIỆN : STT HỌ VÀ TÊN MSSV 1081642 Huỳnh Hải Đăng THƯỞNG (Tối đa điểm) I HÌNH THỨC( Tối đa 0,5 điểm) Bìa (tối đa 0,25 điểm)  Các tiêu đề : Trường ĐHCT, Khoa CNTT, Bộ môn  Các niên luận :  Tên đề tài  Giáo viên hướng dẫn : chức danh, họ tên  Thông tin sinh viên thực : họ tên, mã số, lớp  Năm thực Bố cục (tối đa 0,25 điểm)  Nhận xét giáo viên hướng dẫn giáo viên chấm  Mục lục : cấu trúc chương, mục tiểu mục  Phụ lục (nếu có)  Tài liệu tham khảo II NỘI DUNG (Tối đa 3,5 điểm) Tổng Quan (tối đa 0,5 điểm)  Mô tả tốn, mục tiêu cần đạt (0,25 điểm)  Hướng giải kế hoạch thực (0,25 điểm) Lý thuyết (tối đa 0,5 điểm)  Các khái niệm sử dụng đề tài  Kết vận dụng lý thuyết đề tài Ứng dụng (tối đa 2,0 điểm)  Phân tích yêu cầu tốn, xây dựng cấu trúc liệu cần thiết (0,5 điểm)  Giải thuật (Lưu đồ - Ngôn ngữ giả ) (1,0 điểm)  Giới thiệu chương trình (0,5 điểm) Kết luận (tối đa 0,5 điểm)  Nhận xét kết đạt  Hạn chế  Hướng phát triển III CHƯƠNG TRÌNH DEMO (Tối đa 5,0) Giao diện thân thiện với người dùng (tối đa 1,0 điểm) Hướng dẫn sử dụng (0,5 điểm) Kết thực với kết cảu phần ứng dụng (3,5 điểm) Cần Thơ, ngày tháng năm 2010 GIÁO VIÊN HƯỚNG DẪN Footer Page of 113.Hải Đăng SVTH:1 Huỳnh Trang 1/17 ĐIỂM Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí NHẬN XÉT CỦA GIÁO VIÊN  Cần Thơ, ngày… tháng năm Giáo viên hướng dẫn MỤC LỤC Footer Page of 113.Hải Đăng SVTH:2 Huỳnh Trang 2/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí  NHẬN XÉT CỦA GIÁO VIÊN MỤC LỤC TỔNG QUAN I Các mục tiêu cần đạt II Hướng giải III Kế họach thực LÝ THUYẾT I Các khái niệm II Các cách biểu diễn đồ thị III Duyệt đỉnh đồ thị IV Giải thuật Prim Ứng Dụng 10 I Lưu đồ giải thuật Prim 10 II Lưu đồ duyệt theo chiều sâu đỉnh i .11 III Lưu đồ duyệt theo chiều rộng đỉnh i .11 IV Giới thiệu chương trình 12 KẾT LUẬN- ĐÁNH GIÁ 16 I Kết đạt 16 II Hạn chế chương trình 16 III Hướng phát triển 16 PHỤ LỤC 17 Hướng dẫn sử dụng .17 Các tài liệu tham khảo .17 Footer Page of 113.Hải Đăng SVTH:3 Huỳnh Trang 3/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí TỔNG QUAN  Tìm bao trùm nhỏ (tiếng Anh: minimum spanning tree) tốn tối ưu có nhiều ứng dụng thực tế Nó tốn tìm hệ thống liên thông với chi phí nhỏ Hai thuật tốn tìm bao trùm nhỏ thường nhắc đến thuật tốn Prim thuật tốn Krusskal Cho G=(X,E) đồ thị liên thông Ngồi ra, hàm trọng số W(e), xác định tập cạnh E G Cả hai thuật tốn Prim Kruskal dựa tư tưởng giải thuật tham ăn : Ở bước thuật tốn ta chọn bổ sung vào cạnh có trọng số nhỏ Ở ta đề cập đến thuật tốn Prim Giải thuật Prim Vài nét R C Prim Robert Clay Prim (sinh 1921 Sweetwater, Texas) nhà tốn học khoa học máy tính Mỹ Năm 1941 ông lấy cử nhân khoa kỹ thuật điện đại học Princeton Sau năm 1949, ông nhận Ph.D tốn học Giải thuật mang tên Prim tìm từ năm 1930 nhà tốn học Vojtěch Jarník Prim hồn thiện vào năm 1957 asd Mô tả Gọi T bao trùm xây dựng Chọn đỉnh s G cho vào T Khi T có đỉnh chưa có cạnh Nếu T gồm tất đỉnh G T bao trùm cần tìm Kết thúc Nếu G có đỉnh không thuộc T, G liên thông nên có cạnh nối đỉnh T với đỉnh ngồi T, chọn cạnh có trọng số nhỏ số cho vào T Quay lại I Các mục tiêu cần đạt được: - Dữ liệu nhập từ bàn phím ma trận trọng số - Thiết kế giải thuật Prim xuất hình khung có trọng lượng nhỏ II Hướng giải quyết: - Viết chương trình nhập vào ma trận trọng số - Sử dụng giải thuật Prim để tìm khung có trọng lượng nhỏ Footer Page of 113.Hải Đăng SVTH:4 Huỳnh Trang 4/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí - Xuất hình đồ họa bước trong giải thuật Prim III Kế hoạch thực Tuần Tuần Tuần - Phân tích yêu - Cài đặt cấu trúc - Cải tiến chương cầu liệu cần thiết trình chạy chế - Tìm kiếm tài kiểm tra tính độ đồ họa liệu đắn chúng - Kiểm tra vét cạn - Giải tốn - Viết chương trình tất trường mẫu giấy chạy chế độ text hợp - Phân tích giải - Kiểm tra tính - Cải tiến để chương tốn đắn chương trình trình chịu ngôn ngử giả sai xót khâu nhập liệu Footer Page of 113.Hải Đăng SVTH:5 Huỳnh Trang 5/17 Tuần - Viết báo cáo Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí LÝ THUYẾT  I Các khái niệm Một đồ thị G bao gồm tập hợp V đỉnh tập hợp E cạnh, ký hiệu G=(V,E) Các đỉnh gọi nút (node) hay điểm (point) Các cạnh nối hai đỉnh, hai đỉnh trùng Đồ thị gọi liên thông với mõi cặp cạnh i,j bất ky tìm đường nối i với j Hai đỉnh có cạnh nối gọi hai đỉnh kề (adjacency) Một cạnh nối hai đỉnh v, w coi cặp điểm (v,w) Nếu cạnh đồ thị G có thứ tự G gọi đồ thị có hướng (directed graph) Nếu cạnh đồ thị G thứ tự đồ thị G đồ thị vô hướng (undirected graph) Đường đồ thị dãy đỉnh: cho, đỉnh dãy (không kể đỉnh đầu tiên) kề với đỉnh trước cạnh đó, nghĩa là:  i = 2, 3, … , k-1, k : (xi-1, xi)  E Ta nói đường từ đỉnh đầu x1 đến đỉnh cuối xk Số cạnh đường gọi độ dài đường Footer Page of 113.Hải Đăng SVTH:6 Huỳnh Trang 6/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí Đường đơn đường mà đỉnh khác đôi Đồ thị vô hướng G=(V,E) gọi liên thông với cặp đỉnh i, j tìm đường nối i j Đường nối i j đường nối j i Cây đồ thị vô hướng, liên thông, chu trình Cây Cây khung: Cho G đơn đồ thị Một gọi khung G đồ thị G chứa tất đỉnh G Cây khung nhỏ nhất: Nói chung, ta định nghĩa khung nhỏ cho đồ thị G sau: Nếu cạnh eij = (vi, vj) có trọng số cij, khung nhỏ tập hợp cạnh ký hiệu Espan, cho: C = sum( cij |  eij  Espan ) nhỏ II Các cách biểu diễn đồ thị : Có nhiều cách biểu diễn đồ thị biểu diễn ma trận đỉnh-cung, ma trận đỉnhcạnh, ma trận trọng số, danh sách liên kết, ….Ở nghiên cứu cách biểu diễn đồ thị ma trận trọng số sau : Với đồ thị G=(V,E) , người ta thường gán cho cung hay cạnh (i,j) giá trị cij gọi trọng số cung hay cạnh Ma trận A biểu diễn đồ thị G=(V,E) có dạng : A=[aij] với i,j V Trong : aij=0 cạnh/cung (i,j) không thuộc E, aij=wij cạnh/cung (i,j) thuộc E Ví dụ : Xét đồ thị vô hướng có trọng số : 5 Ma trận trọng số biểu diễn đồ thị : Footer Page of 113.Hải Đăng SVTH:7 Huỳnh Trang 7/17 11 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 0 GVHD: Nguyễn Thành Quí 0 0 11 11 III Duyệt đỉnh đồ thị : Xét đồ thị G=(V,E) Gọi i đỉnh G Ký hiệu L cấu trúc liệu kiểu danh sách lưu trữ đỉnh G Thuật tốn duyệt đỉnh G trình bày cách tổng quát sau : Nạp đỉnh i vào danh sách L Lấy đỉnh x khỏi đầu danh sách Nếu x chưa duyệt duyệt đỉnh x Nạp đỉnh kề với x chưa duyệt vào danh sách L Nếu L khác rỗng quay lên bước Dừng Duyệt đồ thị theo chiều sâu DFS (Depth-First Search) Nếu thuật tốn duyệt đỉnh đồ thị, danh sách L tổ chức theo kiểu ngăn xếp (vào trước sau) ta có phương pháp duyệt theo chiều sâu Trong phương pháp lần duyệt đỉnh ta duyệt đến tận nhánh chuyển sang duyệt nhánh khác Duyệt đồ thị theo chiều rộng BFS (Breadth-First Search) Nếu thuật tốn duyệt đỉnh đồ thị, danh sách L tổ chức theo kiểu hàng đợi (vào trước trước) ta có phương pháp duyệt theo chiều rộng Trong phương pháp việc duyệt có tính chất lan rộng Một đỉnh duyệt xong sau xét hết tất đỉnh kề với Kiểm tra tính liên thông đồ thị : Hai giải thuật duyệt theo chiều sâu DFS duyệt theo chiều rộng BFS thường sử dụng để kiểm tra tính liên thông đồ thị Khi duyệt đỉnh đồ thị tập hợp đỉnh đánh số tạo thành phận liên thông đồ thị Nếu tất đỉnh đồ thị đánh số kết luận đồ thị liên thông, ngược lại đỉnh chưa duyệt, áp dụng lại giải thuật tập hợp đỉnh chưa duyệt để tìm phận liên thông IV Giải thuật Prim : Mô tả Gọi T bao trùm xây dựng Chọn đỉnh s G cho vào T Khi T có đỉnh chưa có cạnh Nếu T gồm tất đỉnh G T bao trùm cần tìm Kết thúc Footer Page of 113.Hải Đăng SVTH:8 Huỳnh Trang 8/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page of 113 GVHD: Nguyễn Thành Quí Nếu G có đỉnh không thuộc T, G liên thông nên có cạnh nối đỉnh T với đỉnh ngồi T, chọn cạnh có trọng số nhỏ số cho vào T Quay lại Kết vận dụng lý thuyết vào đề tài: Nhập vào đồ thị vô hướng sau: Kiểm tra tính liên thông đồ thị : đồ thị liên thong Bước khởi đầu: U={1},T= Bước ta chọn cạnh (1,3) = cạnh ngắn thỏa điều kiện giải thuật Prim Ta có U={1,3},T={(1,3)} Kế tiếp cạnh (3,6) = cạnh ngắn thỏa điều kiện giải thuật Prim Ta có U={1,3,6},T={(1,3)(3,6)} Kế tiếp cạnh (6,4) = cạnh ngắn thỏa điều kiện giải thuật Prim Ta có U={1,3,6,4},T={(1,3)(3,6)(6,4)} Tiếp tục, cạnh (3,2) = cạnh ngắn thỏa điều kiện giải thuật Prim Ta có U={1,3,6,4,2},T={(1,3),(3,6), (6,4),(3,2)} Cuối cạnh (2,5)=3 cạnh ngắn thỏa điều kiện giải thuật Prim Ta có U={1,3,6,4,2,5},T={(1,3),(3,6), (6,4),(3,2),(2,5),} Giải thuật dừng ta có bao trùm hình bên Footer Page of 113.Hải Đăng SVTH:9 Huỳnh Trang 9/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 10 ofcây 113 GVHD: Nguyễn Thành Quí Ứng Dụng I Lưu đồ giải thuật Prim: begin Sai G=(V,E) đồ thị liên thông Đúng U={1},T= Sai U=V =  For i  U Đúng Kết thúc for For j  G-U End Sai min>(i,j) and (i,j)≠ Đúng min=(i,j) u=i, v=j Kết thúc for U=U+v T=T+(u,v) Footer Page of 113 SVTH:10 Huỳnh Hải Đăng Trang 10/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 11 ofcây 113 II.Lưu đồ duyệt theo chiều sâu đỉnh i begin Duyệt đỉnh i Xét đỉnh j kề với i chưa duyệt Đ S Duyệt đỉnh j end III Lưu đồ duyệt theo chiều rộng đỉnh i begin Duyệt đỉnh i Đánh dấu duyệt tất j kề i Xét đỉnh j kề với i duyệt Đ Đ j Duyệt đỉnh end Footer Page of 113 SVTH:11 Huỳnh Hải Đăng Trang 11/17 S GVHD: Nguyễn Thành Quí Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 12 ofcây 113 IV Giới thiệu chương trình Chương trình gồm chức sau: Nhập đồ thị Vẽ đồ thị Tìm bao trùm theo giải thuật Prim Thốt lưu trạng liệu vào file graph.txt Duyệt đồ thị theo chiều rộng Duyệt đồ thị theo chiều sâu Nhập đồ thị Người dùng nhập số đỉnh đồ thị nhập trọng số cạnh Footer Page of 113 SVTH:12 Huỳnh Hải Đăng Trang 12/17 GVHD: Nguyễn Thành Quí Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 13 ofcây 113 Vẽ đồ thị: Footer Page of 113 SVTH:13 Huỳnh Hải Đăng Trang 13/17 GVHD: Nguyễn Thành Quí Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 14 ofcây 113 GVHD: Nguyễn Thành Quí Giải thuật Prim Bắt đầu từ đỉnh 1, chương trình thực chọn cạnh có trọng số nhỏ người dung nhấn phím Chương trình dừng vào thông báo trọng lượng bao trùm tối thiểu tất đỉnh chọn Duyệt theo chiều rộng Người dùng chọn đỉnh chương trình thị thứ tự duyệt theo chiều rộng Dyệt theo chiều sâu Footer Page of 113 SVTH:14 Huỳnh Hải Đăng Trang 14/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 15 ofcây 113 GVHD: Nguyễn Thành Quí Người dùng chọn đỉnh chương trình thị thứ tự duyệt theo chiều sâu Footer Page of 113 SVTH:15 Huỳnh Hải Đăng Trang 15/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 16 ofcây 113 GVHD: Nguyễn Thành Quí KẾT LUẬN- ĐÁNH GIÁ I Kết đạt Nhìn chung chương trình đáp ứng mục tiêu cần đạt đề tài đặt Ngồi qua trình thực chương trình, thân rút số kinh nghiệm trình xây dựng thiết kế chương trình Giúp nâng cao khả tư duy, khả vận dụng kiến thức lý thuyết học vào việc giải tốn , vấn đề thực tế II Hạn chế chương trình Chương trình chạy DOS đồ họa không đẹp không chạy hệ điều hành Không gian biểu diễn đồ thị 2D nên khó quan sát số lượng đỉnh đồ thị tăng 15.( Vì lý nên chương trình giới hạn số đỉnh người dùng nhập 20, chương trình chạy với n đỉnh ) III Hướng phát triển Viết chương trình VC++ chạy hệ điều hành mới, sử dụng chuẩn đồ họa OpenGL để biểu diễn đồ thị không gian 3D, làm cho người dùng quan sát dễ dàng số lượng đồ thị lớn Footer Page of 113 SVTH:16 Huỳnh Hải Đăng Trang 16/17 Tài:Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 17 ofcây 113 GVHD: Nguyễn Thành Quí PHỤ LỤC Hướng dẫn chạy chương trình: Khởi động tập tin main.exe Nhập liệu cho đồ thị bấm phím số Vẽ đồ thị hình bấm phím số Chạy giải thuật Prim bấm phím số Thốt lưu liệu hành vào tệp graph.txt bấm phím số Duyệt đồ thị theo chiều sâu bấm phím số Duyệt đồ thị theo chiều rộng bấm phím số Các tài liệu tham khảo [1] Bài giảng: TỐN RỜI RẠC (Bộ Môn Hệ Thống Thông Tin – Tốn Ứng Dụng, Khoa Công Nghệ Thông Tin, Trường Đại Học Cần Thơ) [2] Side giảng đồ thị Thạc sĩ Nguyễn Văn Linh – Trường Đại Học Cần Thơ [3] Giáo trình Lập Trình Hướng Đối Tượng C++ Thạc sĩ Trương Văn Trí Công – Trường Đại Học Cần Thơ [4] Giáo Trình Lập Trình C++ Lập Trình Hướng Đối Tượng GS Phạm Văn Ất – Nhà xuất khoa học kỹ thuật Hà Nội [5]http://vi.wikipedia.org/wiki/C%C3%A2y_bao_tr%C3%B9m_nh%E1%BB%8F_nh%E1 %BA%A5t Footer Page of 113 SVTH:17 Huỳnh Hải Đăng Trang 17/17 ... trận trọng số - Thiết kế giải thuật Prim xuất hình khung có trọng lượng nhỏ II Hướng giải quyết: - Viết chương trình nhập vào ma trận trọng số - Sử dụng giải thuật Prim để tìm khung có trọng lượng. .. Thành Quí Tài: Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 14 ofcây 113 GVHD: Nguyễn Thành Quí Giải thuật Prim Bắt đầu từ đỉnh 1, chương trình thực chọn cạnh có trọng số nhỏ người... Quí Tài: Tìm khung có trọng lượng nhỏ giải thuật Prim Header Đề Page 12 ofcây 113 IV Giới thiệu chương trình Chương trình gồm chức sau: Nhập đồ thị Vẽ đồ thị Tìm bao trùm theo giải thuật Prim

Ngày đăng: 24/03/2017, 18:47

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

TÀI LIỆU LIÊN QUAN

w