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

Lý thuyết đồ thị giải bài tập giải thuật toán prim giải thuật toán kruskal

11 14 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 11
Dung lượng 631,33 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lý thuyết đồ thị Giải thuật toán giải thuật Prim Giải thuật toán giải thuật Kruskal Thuật toán Prim Thuật toán Kruskal Tìm theo chiều sâu Tìm theo chiều rộng Cây khung nhỏ nhất Cây khung lớn nhất trọng số

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN – HỆ VB2 ĐÀO TẠO TỪ XA



GVHD Lý Thuyết: Đặng Trần Minh Hậu

GDHD Thực hành: Nguyễn Ngọc Thảo

LỚP: Lý Thuyết Đồ Thị - CSC00008 NHÓM 32



BÁO CÁO BÀI TẬP TUẦN 3

Trang 2

MỤC LỤC

A Bài tập lý thuyết 3

Câu 1 3

Câu 2 4

B Bài tập cài đặt 5

Trang 3

A Nội dung bài tập lý thuyết

Cho đồ thị như hình bên dưới

Câu 1: Áp dụng giải thuật Prim lên đồ thị đã cho ở trên để tìm cây khung nhỏ nhất bắt đầu tại

đỉnh A.

a Quá trình thực hiện

Lặp Các cạnh e = (v,w) ứng viên tại lần lặp thứ i Y ( giữ nguyên thứ tự) V/Y T ( giữ nguyên thứ tự)

Lặp

lần 1

Lặp

lần 2

Lặp

lần 3

Đầu lặp {(D,H),(D,J),(B,C),(B,J)} {A,D,B} {C,E,F,G,H,I,J} {(A,D),(D,B)}

Lặp

lần 4

Đầu lặp {(D,H),(D,J),(B,J),(C,E),(C,F)} {A,D,B,C} {E,F,G,H,I,J} {(A,D),(D,B),(B,C)}

Lặp

lần 5

Đầu lặp {(D,H),(D,J),(B,J),(C,E),(F,G),(F,I)} {A,D,B,C,F} {E,G,H,I,J} {(A,D),(D,B),(B,C),(C,F)}

Lặp

lần 6

Đầu lặp {(D,H),(D,J),(B,J),(F,G),(F,I),(E,G)} {A,D,B,C,F,E} {G,H,I,J} {(A,D),(D,B),(B,C),(C,F),(C,E)}

Lặp

lần 7

Đầu lặp {(D,H),(D,J),(B,J),(F,I),(G,I),(G,J)} {A,D,B,C,F,E,G} {H,I,J} {(A,D),(D,B),(B,C),(C,F),(C,E),(E,G)}

Lặp

lần 8

Đầu lặp {(D,H),(D,J),(B,J),(G,J),(I,J)} {A,D,B,C,F,E,G,I} {H,J} {(A,D),(D,B),(B,C),(C,F),(C,E),(E,G),(G,I)}

Cuối lặp {A,D,B,C,F,E,G,I,J} {H} {(A,D),(D,B),(B,C),(C,F),(C,E),(E,G),(G,I),(I,J)}

Lặp

lần 9

Đầu lặp {(D,H),(J,H)} {A,D,B,C,F,E,G,I,J} {H} {(A,D),(D,B),(B,C),(C,F),(C,E),(E,G),(G,I),(I,J)}

Cuối lặp {A,D,B,C,F,E,G,I,J,H} ∅ {(A,D),(D,B),(B,C),(C,F),(C,E),(E,G),(G,I),(I,J),(J,H)}

Bảng 1.1 Bảng quá trình chạy thuật toán Prim

Trang 4

b Danh sách cạnh của cây khung tìm được và trọng số tương ứng

- Cây khung tìm được : Cây khung {(A,D),(D,B),(B,C),(C,F),(C,E),(E,G),(G,I),(I,J),(J,H)}

- Trọng số cây khung

Bảng 1.2 Bảng cạnh của cây khung và trọng số tương ứng

- Tổng trọng số = 1+4+4+1+2+2+3+3+2 = 22

Câu 2: Áp dụng giải thuật Kruskal lên đồ thị đã cho ở trên để tìm cây khung nhỏ nhất

a Quá trình thực hiện

Danh sách cạnh E đã sắp xếp kèm theo trọng số tương ứng

Trang 5

E đã sắp xếp

Bảng 2.1 Danh sách cạnh E đã sắp xếp kèm trọng số tương ứng

được lấy

T ∪ {e} có tạo thành chu

Lặp lần 7 GI Không {(A,D),(C,F),(C,E) ,(E,G) ,(H,J), (G,I)}

Lặp lần 8 IJ Không {(A,D),(C,F),(C,E) ,(E,G) ,(H,J), (G,I), (I,J)}

Lặp lần 9 AB Không {(A,D),(C,F),(C,E) ,(E,G) ,(H,J), (G,I), (I,J),(A,B)}

Lặp lần 10 DB Có {(A,D),(C,F),(C,E) ,(E,G) ,(H,J), (G,I), (I,J),(A,B)}

Lặp lần 11 GJ Có {(A,D),(C,F),(C,E) ,(E,G) ,(H,J), (G,I), (I,J),(A,B)}

Lặp lần 12 BC Không {(A,D),(C,F),(C,E) ,(E,G) ,(H,J), (G,I), (I,J),(A,B),(B,C)}

Bảng 2.2 Bảng quá trình chạy thuật toán Kruskal

b Danh sách cạnh của cây khung tìm được và trọng số tương ứng

- Cây khung tìm được: Cây khung {(A,D),(C,F),(C,E),(E,G),(H,J),(G,I),(I,J),(A,B),(B,C)}

- Trọng số cây khung

Bảng 2.3 Bảng cạnh của cây khung và trọng số tương ứng

- Tổng trọng số = 1+1+2+2+2+3+3+4+4 = 22

Trang 6

B Nội dung bài tập cài đặt

Cho tập tin input.txt chứa ma trận kề của một đồ thị vô hướng liên thông Tập tin có định

dạng như sau:

▪ Dòng đầu tiên chứa số nguyên n (n > 2) thể hiện số đỉnh của đồ thị.

▪ n dòng tiếp theo chứa n số nguyên trên mỗi dòng, các số nguyên cách nhau bằng

khoảng trắng Gọi [i, j] là giá trị tại dòng i cột j (i, j = 0,…,n-1) [i, j] = 0: không có cạnh nối

từ đỉnh i đến đỉnh j, [i, j] = x > 0: có cạnh nối từ i đến j với trọng số x.

a Cài đặt giải thuật Prim để tìm cây khung nhỏ nhất trên đồ thị đã cho Đỉnh bắt đầu do

người dùng nhập từ bàn phím Xuất ra màn hình thông tin của cây khung nhỏ nhất tìm được

- Danh sách cạnh thuộc cây khung nhỏ nhất theo thứ tự được phát hiện bởi giải thuật Quy ước: In mỗi cạnh trên một dòng riêng biệt theo mẫu <x>-<y>: <z>, với x và y là hai đỉnh của cạnh và z là trọng số của cạnh.

- Trọng số của cây khung nhỏ nhất

b Cài đặt giải thuật Kruskal để tìm cây khung nhỏ nhất trên đồ thị đã cho Xuất ra màn

hình thông tin của cây khung nhỏ nhất theo quy cách tương tự như ở câu a.

Chương trình được sử dụng cấu trúc dữ liệu cơ bản như stack, (priority) queue, vector, list, v.v.

Không được sử dụng thư viện cài đặt cây khung nhỏ nhất có sẵn

Trang 7

1 Những lưu ý quan trọng

- Chương trinh gồm 1 class chính (Program.cs) nơi gọi file.txt và xuất kết quả và các class chức năng

- Chương trình hoạt động với các trọng số t trong file txt với t < 10

- Lưu ý copy đường dẫn vào hàm main để chương trình truy xuất vào đúng file (bôi màu vàng trong hình)*

*ví dụ đường dẫn: @"D:\VB 2 KHTN\Lý thuyết đồ thị\Bai Tap\Bài tập tuần 03 - Có tính

điểm\N32-21880053,21880147-BTTuan03\SOURCE\testcase2.txt"

Trang 8

Hình 1.1 Vị trí đường dẫn

- Các class và hàm chức năng gồm có

Class/Struct Bao gồm/Chức năng

Program - Hàm Main: Hàm chính chạy chương trình

EdgeStruct - Khởi tạo kiểu dữ liệu Edge

Graph Handler - Struct AdjacencyMatrix: Kiểu dữ liệu tự định nghĩa cho

AdjacencyMatrix

- Hàm InputAndStore : Đọc và trữ dữ liệu từ file txt

- Hàm OutputGraph: In ra ma trận kề QuickSort - Hàm Parting: Tìm điểm phân chia của quicksort

- Hàm Sort: hàm chính của quicksort

Trang 9

MinimumSpanningTree - Hàm Prim : Hàm chạy thuật toán Prim và xuất kết quả ra màn hình

- Hàm SortWeightInEdgeList: Hàm gọi Sort và tạo ra List các Edge đã Sort

- Hàm checkCycle: Hàm check nếu thêm edge cần check vào thì có tạo Cycle không

- Hàm refreshIndex: Refresh tất cả index có liên quan trong cùng 1 cycle

- Hàm Kruskal: Hàm chính thuật toán Kruskal và xuất kết quả ra màn hình

2 Kết quả bài làm

Trang 10

Hình 2.1 Kết quả testcase 1

Trang 11

Hình 2.1 Kết quả testcase 2

Ngày đăng: 01/09/2022, 16:13

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w