Giải bài tập ma trận kề Giải bài tập danh sách kề Giải bài tập duyệt theo chiều rộng GIải bài tập duyện theo chiều sâu GIải bài tập DFS Giải bài tập BFS Đồ thị liên thông mạnh Đồ thị liên thông yếu Bài tập biểu diễn ma trận kề, bài tập biểu diễn danh sách kề
Trang 1TRƯỜ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 2
Trang 2
Trang 3MỤC LỤC
A Bài tập lý thuyết 3
Câu 1 3
Câu 2 4
Câu 3 6
B Bài tập cài đặt 7
Trang 41 Nội dung bài tập lý thuyết
Câu 1: Biểu diễn ma trận kề và danh sách kề
Đồ thị 1
Thực tế thì ma trận kề cơ bản 0-1 không thể nào thể hiện được cạnh song song Nên ở đây có thể quy ước không giới hạn ở 0-1 mà mở rộng ra cạnh song song có thể biểu diễn bằng số 2
Thực tế thì danh sách kề cơ bản 0-1 không thể nào thể hiện được cạnh song song Nên ở đây có thể quy ước mở rộng ra cạnh song song có thể biểu diễn bằng số (2)
kế đỉnh kề
10
Trang 5Đồ thị 2 Thực tế thì ma trận kề cơ bản 0-1 không thể
nào thể hiện được cạnh song song Nên ở đây có thể quy ước không giới hạn ở 0-1 mà mở rộng ra cạnh song song có thể biểu diễn bằng số 2
Thực tế thì danh sách kề cơ bản không thể nào thể hiện được cạnh song song Nên ở đây có thể quy ước mở rộng ra cạnh song song
có thể biểu diễn bằng số (2) kế đỉnh kề
0
2
7
Câu 2: Tìm đường đi bằng giải thuật duyệt đồ thị theo chiều sâu và chiều rộng cho đồ thị 1 và 2
a Duyệt đồ thị theo chiều sâu
H Danh sách các đỉnh đã viếng thăm theo thứ tự thực hiện của giải thuật A,B,C,D,G,F,H
Trang 6Đồ thị (2)
H
Danh sách các đỉnh đã viếng thăm theo thứ tự thực hiện của giải thuật A,B,C,D,G,F,H
H
b Duyệt đồ thị theo chiều rộng
H Danh sách các đỉnh đã viếng thăm theo thứ tự thực hiện của giải thuật A,B,D,E,C,G,F,I,H
Đồ thị (2)
H
Trang 7Danh sách các đỉnh đã viếng thăm theo thứ tự thực hiện của giải thuật A,B,D,E,C,G,F,I,H
Câu 3: Xác định liên thông (liên thông mạnh, liên thông một phần, liên thông yếu hay không liên
thông)
ba với tất cả các cặp đỉnh a,b của đồ thị Chứng minh:
đường đi đến đỉnh số 5
Đồ thị (2) là liên thông 1 phần vì có ít nhất 1 đỉnh đến với đỉnh còn lại cho mọi cặp đỉnh a,b
Câu 4: Xét các đồ thị Biện luận để xác định các cặp đồ thị G1 và G2 có đẳng cấu; G3 và G4 có đẳng
cấu
e2 e1
e3
e4
e5 e6
e7 e8
e9 e10 e11 e12
Hai đồ thị G1 và G2 đẳng cấu với nhau
Ta có hàm song ánh f f(1) = c, f(2) = a, f(3) = e, f(4) = g, f(5) = d, f(6) = b , f(7) = f, f(8) = h và
Trang 8E1
E2
E3 E4
E5
E6
E7
E8
E9 E10 E11 E12
e1={1,2}, E1={c,a} e1 = E1 e2={2,3}, E2={a,e} e2 = E2 e3={3,4}, E3={e,g} e3 = E3 e4={4,1}, E4={g,c} e4 = E4 e5={1,5}, E5={c,d} e5 = E5 e6={2,6}, E6={a,b} e6 = E6 e7={3,7}, E7={e,f} e7 = E1 e8={4,8}, E8={g,h} e8 = E8 e9={5,6}, E9={d,b} e9 = E9 e10={6,7}, E10={b,f} e10 = E10 e11={7,8}, E11={f,h} e11 = E11 e12={8,5}, E12={h,d} e12 = E12
Hai đồ thị G3 và G4 không đẳng cấu với nhau
Lý do:
Các đỉnh bậc 2 không
kề nhau
Các đỉnh bậc 2 có
kề nhau
2 Nội dung bài tập cài đặt
Trang 9I Kết quả bài làm
Trang 10Hình 2.1.1
Hình 2.1.2
II Những ghi chú quan trọng bài tập cài đặt
Trang 11Gồm 1 hàm main chính (MainProgram.cs) nơi gọi file input txt và xuất kết quả
Lưu ý nhớ 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) (Hình 2.1.3)
Hình 2.1.3
Tổ chức hàm trong bài tập cài đặt như sau:
a Class GraphHandler hình 2.1.4 trong đó:
+ 1 Struct tự định nghĩa kiểu dữ liệu AdjacencyMatrix trong đó gồm số đỉnh , ma trận kề của đồ thị, đỉnh đầu, đỉnh cuối
+ 1 hàm InputAndStore để input và lưu lại dữ liệu từ file txt;
+ 1 hàm để kiểm tra đồ thị đó có hướng hay vô hướng (isUndirectedGraph), hàm in ra ma trận ( nếu cần thiết dùng)
Trang 12Hình 2.1.4
b Class DFS_BFS chứa 9 hàm tự tạo tính toán các yêu cầu của bài tập cài đặt (Hình 2.1.5)
+ Các hàm hỗ trợ
Hàm hỗ trợ in ra điểm đã đi qua (PrintPassedPointArray) ở câu a và câu b ;
Hàm hỗ trợ in ra đường đi (PrintPath) ở câu a và câu b;
Hàm hỗ trợ in ra thành phần liên thông (PrintComponents) ở câu c;
+ Các hàm tính các kết quả:
Hàm chính tìm đường đi theo chiều sâu DFS (DFSMainFindPath) và hàm duyệt tìm đường
đi theo chiều sâu (DFSFindPath) để trả lời cho câu a
Trang 13 Hàm chính tìm đường đi theo chiều rộng (BFSMainFindPath) và hàm duyệt tìm đường đi theo chiều rộng (BFSFindPath) để trả lời cho câu b
Hàm để xác định thành phần liên thông theo DFS (DFSMainFindComponents) và hàm bổ trợ để xác định thành phần liên thông theo DFS (DFSFindComponents) để trả lời cho câu c
c Class MainProgram gồm hàm Main nằm trong MainProgram.cs để chạy chương trình và tham chiếu xuất kết quả
Hình 2.1.5