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

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

17 1,2K 6
Tài liệu đã được kiểm tra trùng lặp

Đ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 343,5 KB

Nội dung

Tài liệu tham khảo công nghệ thông tin Tìm cây trọng lượng nhỏ nhất bằng giải thuật Prim

Trang 1

ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN 1

(Học kỳ II, Niên khóa 2008-2009)GIÁO VIÊN HƯỚNG DẪN :

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 : 1

 Tên đề tài

 Giáo viên hướng dẫn : chức danh, họ tên

 Thông tin về sinh viên thực hiện : họ tên, mã số, lớp Năm thực hiện

Bố cục (tối đa 0,25 điểm)

 Nhận xét của giáo viên hướng dẫn và giáo viên chấm Mục lục : cấu trúc chương, mục và 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ả bài toán, mục tiêu cần đạt được (0,25 điểm) Hướng giải quyết và kế hoạch thực hiện (0,25 điểm)

Lý thuyết (tối đa 0,5 điểm)

 Các khái niệm sử dụng trong đề tài Kết quả vận dụng lý thuyết trong đề tài

Ứng dụng (tối đa 2,0 điểm)

 Phân tích yêu cầu bài toán, xây dựng các cấu trúc dữ 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 quả đạt được 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 quả thực hiện đúng với kết quả cảu phần ứng dụng (3,5 điểm)

Cần Thơ, ngày 4 tháng 4 năm 2010 GIÁO VIÊN HƯỚNG DẪN

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN

-Cần Thơ, ngày… tháng năm

Trang 3

MỤC LỤC    

NHẬN XÉT CỦA GIÁO VIÊN 2

MỤC LỤC 3

TỔNG QUAN 4

I Các mục tiêu cần đạt được 4

II Hướng giải quyết 4

III Kế họach thực hiện 5

LÝ THUYẾT 6

I Các khái niệm chính 6

II Các cách biểu diễn đồ thị 7

III Duyệt các đỉnh của đồ thị 8

IV Giải thuật Prim 8

Ứng Dụng 10

I Lưu đồ giải thuật Prim 10

II Lưu đồ duyệt cây theo chiều sâu tại đỉnh i 11

III Lưu đồ duyệt cây theo chiều rộng tại đỉnh i 11

IV Giới thiệu chương trình 12

KẾT LUẬN- ĐÁNH GIÁ 16

I Kết quả đạt được 16

II Hạn chế của 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

Trang 4

TỔNG QUAN

Tìm cây bao trùm nhỏ nhất (tiếng Anh: minimum spanning tree) là bài toán tối ưu có

nhiều ứng dụng trong thực tế Nó là bài toán tìm hệ thống liên thông với chi phí nhỏ nhất Haithuật toán tìm cây bao trùm nhỏ nhất thường được nhắc đến là thuật toán Prim và thuật toánKrusskal.

Cho G=(X,E) là một đồ thị liên thông Ngoài ra, một hàm trọng số W(e), xác định trên tập các cạnh E của G Cả hai thuật toán Prim và Kruskal đều dựa trên tư tưởng của các giải thuật tham ăn : Ở mỗi bước của thuật toán ta chọn và bổ sung vào cây cạnh có trọng số nhỏ nhất có thể.Ở đây ta chỉ đề cập đến thuật toán Prim

Giải thuật PrimVài nét về R C Prim

Robert Clay Prim (sinh 1921 tại Sweetwater, Texas) là một nhà toán học và khoa học

máy tính Mỹ Năm 1941 ông đã lấy bằng cử nhân ở khoa kỹ thuật điện đại học Princeton Sau này năm 1949, ông nhận bằng Ph.D về toán học cũng tại đây Giải thuật mang tên Prim được tìmra từ năm 1930 bởi nhà toán học Vojtěch Jarník và do Prim hoàn thiện vào năm 1957 asd

Mô tả

Gọi T là cây bao trùm sẽ xây dựng

1 Chọn một đỉnh s bất kỳ của G cho vào cây T Khi đó T là một cây chỉ có một đỉnh và chưa có cạnh nào

2 Nếu T đã gồm tất cả các đỉnh của G thì T là cây bao trùm cần tìm Kết thúc

3 Nếu G còn có các đỉnh không thuộc T, vì G liên thông nên có các cạnh nối một đỉnh trong T với một đỉnh ngoài T, chọn một cạnh có trọng số nhỏ nhất trong số đó cho vào T

4 Quay lại 2

I Các mục tiêu cần đạt được:

- Dữ liệu được nhập từ bàn phím là một ma trận trọng số.

- Thiết kế giải thuật Prim và xuất ra màn hình cây khung có trọng lượng nhỏ nhất.

II Hướng giải quyết:

- Viết chương trình nhập vào 1 ma trận trọng số.

- Sử dụng giải thuật Prim để tìm được cây khung có trọng lượng nhỏ nhất.

Trang 5

- Xuất ra màn hình đồ họa các bước trong trong giải thuật Prim.

III Kế hoạch thực hiện

- Phân tích yêucầu

- Tìm kiếm tài liệu

- Giải bài toán mẫu trên giấy- Phân tích giải bài toán bằng ngôn ngử giả

- Cài đặt các cấu trúc dữ liệu cần thiết và kiểm tra tính đúng đắn của chúng- Viết chương trình chạy trên chế độ text.- Kiểm tra tính đúng đắn của chương trình

- Cải tiến chương trình chạy trên chế độ đồ họa

- Kiểm tra vét cạn tất cả các trường hợp.

- Cải tiến để chươngtrình có thể chịu được các sai xót ở khâu nhập liệu.

- Viết báo cáo

Trang 6

Nếu các cạnh trong đồ thị G có thứ tự thì G gọi là đồ thị có hướng (directed graph)

Nếu các cạnh trong đồ thị G không có thứ tự thì đồ thị G là đồ thị vô hướng (undirectedgraph).

Đường đi trong đồ thị là một dãy các đỉnh:

Trang 7

Đường đi đơn là đường đi mà các đỉnh trên nó khác nhau từng đôi.

Đồ thị vô hướng G=(V,E) được gọi là liên thông nếu với mỗi cặp đỉnh i, j bất kỳ thì luôn

tìm được đường đi nối i và j Đường đi nối i và j cũng là đường đi nối j và i.

Cây là đồ thị vô hướng, liên thông, không có chu trình

Cây khung: Cho G là một đơn đồ thị Một cây được gọi là cây khung của G nếu nó là một

đồ thị con của G và chứa tất cả các đỉnh của G.

Cây khung nhỏ nhất: Nói chung, ta có thể định nghĩa cây khung nhỏ nhất cho một đồ thịG như sau: Nếu mỗi cạnh eij = (vi, vj) có một trọng số cij, thì cây khung nhỏ nhất là một tập hợp

các cạnh ký hiệu là Espan, sao cho:

C = sum( cij |  eij  Espan )

là nhỏ nhất.

II Các cách biểu diễn đồ thị :

Có khá nhiều cách biểu diễn đồ thị như biểu diễn bằng ma trận cung, ma trận cạnh, ma trận trọng số, danh sách liên kết, ….Ở đây chúng ta chỉ nghiên cứu cách biểu diễn đồ thịbằng ma trận trọng số như sau :

đỉnh-Với đồ thị G=(V,E) , người ta thường gán cho mỗi cung hay cạnh (i,j) một giá trị cij gọi là trọngsố của 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 nếu cạnh/cung (i,j) không thuộc E, aij=wij nếu cạnh/cung (i,j) thuộc EVí dụ :

Xét đồ thị vô hướng có trọng số :

Ma trận trọng số biểu diễn đồ thị là :Cây

119

Trang 8

III Duyệt các đỉnh của đồ thị :

Xét đồ thị G=(V,E) Gọi i là một đỉnh nào đó của G Ký hiệu L là cấu trúc dữ liệu kiểu danh sáchlưu trữ các đỉnh của G Thuật toán duyệt các đỉnh của G được trình bày một cách tổng quát nhưsau :

Nạp đỉnh i vào danh sách LLấy đỉnh x ra khỏi đầu danh sáchNếu x chưa được duyệt thì duyệt đỉnh x

Nạp các đỉnh kề với x chưa được duyệt vào danh sách LNếu L khác rỗng thì quay lên bước 2

Duyệt đồ thị theo chiều sâu DFS (Depth-First Search)

Nếu trong thuật toán duyệt các đỉnh của đồ thị, danh sách L được tổ chức theo kiểu ngănxếp (vào trước ra sau) thì ta có phương pháp duyệt theo chiều sâu Trong phương pháp này mỗilần duyệt một đỉnh ta duyệt đến tận cùng mỗi nhánh rồi mới chuyển sang duyệt nhánh khác.

Duyệt đồ thị theo chiều rộng BFS (Breadth-First Search)

Nếu trong thuật toán duyệt các đỉnh của đồ thị, danh sách L được tổ chức theo kiểu hàngđợi (vào trước ra trước) thì ta có phương pháp duyệt theo chiều rộng Trong phương pháp nàyviệc duyệt có tính chất lan rộng Một đỉnh được duyệt xong ngay sau khi đã xét hết tất cả các đỉnhkề với nó.

Kiểm tra tính liên thông của đồ thị :

Hai giải thuật duyệt theo chiều sâu DFS và duyệt theo chiều rộng BFS thường được sửdụng để kiểm tra tính liên thông của đồ thị.

Khi duyệt các đỉnh của đồ thị tập hợp các đỉnh đã được đánh số tạo thành một bộ phận liênthông của đồ thị Nếu tất cả các đỉnh của đồ thị đều được đánh số thì kết luận đồ thị liên thông,ngược lại thì bắt đầu từ một đỉnh chưa được duyệt, áp dụng lại giải thuật trên tập hợp các đỉnhchưa được duyệt để tìm bộ phận liên thông kế tiếp.

IV Giải thuật Prim :Mô tả

Gọi T là cây bao trùm sẽ xây dựng

1 Chọn một đỉnh s bất kỳ của G cho vào cây T Khi đó T là một cây chỉ có một đỉnh và chưa có cạnh nào.

2 Nếu T đã gồm tất cả các đỉnh của G thì T là cây bao trùm cần tìm Kết thúc.

Trang 9

3 Nếu G còn có các đỉnh không thuộc T, vì G liên thông nên có các cạnh nối một đỉnh trong T với một đỉnh ngoài T, chọn một cạnh có trọng số nhỏ nhất trong số đó cho vào T.

4 Quay lại 2.

Kết quả 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 của đồ thị : đồ thị liên thongBước khởi đầu: U={1},T=

Bước kế tiếp ta chọn cạnh (1,3) = 1 là cạnh ngắn nhất thỏa điều kiện của giải thuật Prim Ta có U={1,3},T={(1,3)}.

Kế tiếp thì cạnh (3,6) = 4 là cạnh ngắn nhất thỏa điều kiện của giải thuật Prim Ta có U={1,3,6},T={(1,3)(3,6)}.

Kế tiếp thì cạnh (6,4) = 2 là cạnh ngắn nhất thỏa điều kiện của 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) = 5 là cạnh ngắn nhất thỏa điều kiện của 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ùng là cạnh (2,5)=3 là cạnh ngắn nhất thỏa điều kiện của 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 và ta có cây bao trùm như hình bên dưới.

Trang 10

Ứng DụngI Lưu đồ giải thuật Prim:

G=(V,E) là đồ thị liên thôngSai

For i  U

For j  G-Umin = 

min>(i,j) and

(i,j)≠ 0Sai

min=(i,j)u=i, v=j

Kết thúc for

Kết thúc for

Trang 11

II.Lưu đồ duyệt cây theo chiều sâu tại đỉnh i

III Lưu đồ duyệt cây theo chiều rộng tại đỉnh i

beginDuyệt đỉnh i

Xét đỉnh lần lượt các j kề với i và chưa duyệt

Duyệt đỉnh j

beginDuyệt đỉnh i

SĐánh dấu đã duyệt tất cả

j là kề của i

Xét đỉnh j kề với i và đã

Duyệt đỉnh j

end

Trang 12

IV Giới thiệu chương trình

Chương trình gồm các chức năng sau:1 Nhập đồ thị

2 Vẽ đồ thị

3 Tìm cây bao trùm theo giải thuật Prim4 Thoát và lưu trạng dữ liệu vào file graph.txt5 Duyệt đồ thị theo chiều rộng

6 Duyệt đồ thị theo chiều sâu

Nhập đồ thị

Người dùng sẽ nhập số đỉnh của đồ thị và nhập trọng số của các cạnh

Trang 13

Vẽ đồ thị:

Trang 14

Bắt đầu từ đỉnh 1, chương trình sẽ thực hiện chọn lần lượt các cạnh có trọng số nhỏ nhất khi người dung nhấn bất kỳ phím nào Chương trình sẽ dừng vào thông báo trọng lượng của cây bao trùmtối thiểu khi tất cả các đỉnh đã được chọn.

Duyệt theo chiều rộng

Người dùng chọn một đỉnh và chương trình sẽ hiện thị thứ tự duyệt theo chiều rộng

Dyệt theo chiều sâu

Trang 15

Người dùng chọn một đỉnh và chương trình sẽ hiện thị thứ tự duyệt theo chiều sâu

Trang 16

KẾT LUẬN- ĐÁNH GIÁ

I Kết quả đạt được

Nhìn chung chương trình đã đáp ứng được về cơ bản những mục tiêu cần đạt được của đềtài đặt ra Ngoài ra qua quá trình thực hiện chương trình, bản thân cũng rút ra được một số kinhnghiệm trong quá trình xây dựng và thiết kế một chương trình Giúp nâng cao khả năng tư duy,khả năng vận dụng những kiến thức lý thuyết đã được học vào việc giải quyết một bài toán , mộtvấn đề thực tế.

II Hạn chế của chương trình

Chương trình chạy trong DOS đồ họa không được đẹp và có thể không chạy được trên cáchệ điều hành mới.

Không gian biểu diễn đồ thị là 2D nên sẽ rất khó quan sát khi số lượng đỉnh của đồ thị tăngquá 15.( Vì lý do này nên chương trình giới hạn số đỉnh của người dùng nhập là 20, mặc dùchương trình vẫn chạy đúng với n đỉnh ).

III Hướng phát triển.

Viết chương trình bằng VC++ chạy được trên các hệ điều hành mới, và sử dụng chuẩn đồ họaOpenGL để biểu diễn đồ thị trong không gian 3D, làm cho người dùng quan sát dễ dàng hơn khi số lượngcủa đồ thị lớn.

Trang 17

PHỤ LỤCHướng dẫn chạy chương trình:

1 Khởi động tập tin main.exe

2 Nhập dữ liệu cho đồ thị bấm phím số 13 Vẽ đồ thị trên màn hình bấm phím số 24 Chạy giải thuật Prim bấm phím số 3

5 Thoát và lưu dữ liệu hiện hành vào tệp graph.txt bấm phím số 46 Duyệt đồ thị theo chiều sâu bấm phím số 5

7 Duyệt đồ thị theo chiều rộng bấm phím số 6

Các tài liệu tham khảo

[1] Bài giảng: TOÁN RỜI RẠC 2 (Bộ Môn Hệ Thống Thông Tin – Toán Ứng Dụng,Khoa Công Nghệ Thông Tin, Trường Đại Học Cần Thơ)

[2] Side bài giảng về đồ thị của 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++ của 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++ và Lập Trình Hướng Đối Tượng của GS Phạm Văn Ất –Nhà xuất bản khoa học và 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

Ngày đăng: 23/11/2012, 11:42

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w