Tải bản đầy đủ (.docx) (13 trang)

Lý thuyết đồ thị giải bài tập danh sách kề ma trận kề BFS DFS đồ thị liên thông mạnh , đồ thị liên thông yếu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.83 MB, 13 trang )

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


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

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


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


MỤ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


1. 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ị

Đồ thị 1



Ma trận kề
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

0
1
2
3
4
5
6
7
8
9
10

0
0
1
0
1
0
0
0
0
0
0

0

1
1
0
1
0
2
0
0
0
0
0
0

2
0
1
0
0
0
0
0
0
0
0
0

3
1

0
0
1
1
0
1
0
0
0
0

4
0
2
0
1
0
1
0
0
0
0
0

5
0
0
0
0
1

1
0
1
0
0
0

6
0
0
0
1
0
0
0
2
1
1
0

7
0
0
0
0
0
1
2
0
0

0
0

8
0
0
0
0
0
0
1
0
0
0
0

9
0
0
0
0
0
0
1
0
0
0
0

10

0
0
0
0
0
0
0
0
0
0
0

Danh sách kề
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ề.
Đỉnh
0
1
2
3
4
5
6
7
8
9

10

Các đỉnh kề
1,3
0,2,4(2)
1
0,4,6
1(2),3,5
4,7
3,7(2),8,9
5,6(2)
6
6


Đồ 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ề.
Đỉnh đầu


0
1
2
3
4
5
6
7
8
9

0
0
1
0
1
0
0
0
0
0
0

1
0
0
0
0
2
0

0
0
0
0

2
0
1
0
0
0
0
0
0
0
0

3
0
0
0
1
0
0
1
0
0
0

4

0
0
0
1
0
1
0
0
0
0

5
0
0
0
0
0
1
0
0
0
1

6
0
0
0
0
0
0

0
0
1
1

7
0
0
0
0
0
0
1
0
0
0

8
0
0
0
0
0
0
0
0
0
0

0


9
0
0
0
0
0
0
1
0
0
0

1

Path
A
B
C
D
G
F
H

3
4

0,3,4
1(2)


5

4,5

6

3,7,9

7
8

6

9

5,6

Stack
B,D,E
C,D,E
D,E
G,E
F,H,E
H,I,E

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

Đường đi từ đỉnh nguồn đến đỉnh đích


A D  G  F H
Path
A
B
C
D

0,2

2

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
Đồ thị (1)

Đỉnh cuối

Stack
B,D,E
C,D,E
D,E
G,E


G
F
H

F,H,E

E(F),I,H,E(A)

Đồ thị (2)
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

Đường đi từ đỉnh nguồn đến đỉnh đích

A B  C D G F  H

b. Duyệt đồ thị theo chiều rộng

Đồ thị (2)

Path
A
B
D
E
C
G
F
I
H

Queue
B,D,E
D,E,C
E,C,G

C,G,F,I
G,F,I
F,I,H
I,H
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

Đường đi từ đỉnh nguồn đến đỉnh đích

A D 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)
Đồ thị
Đồ thị (1)

Biện luận
Đồ thị (1) là liên thơng mạnh vì có mọi đường đi từ ab và ngược lại
ba với tất cả các cặp đỉnh a,b của đồ thị. Chứng minh:
Đỉnh a,b
1,2
1,3
1,4
1,5
2,3
2,4

2,5
3,4
3,5
4,5

Đồ thị (2)

Đường đi a b
12
1 3
14
135
23
234
235
34
35
45

Đường đi ba
231
3 1
451
5 1
312
452
52
4523
523
54


Đồ thị (2) khơng phải là đồ thị liên thơng mạnh vì đỉnh số 4 khơng có
đườ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
Đồ thị

Biện luận
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



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:
G3
Các đỉnh bậc 2 không
kề nhau

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

G4
Các đỉnh bậc 2 có
kề nhau


I. Kết quả bài làm


Hình 2.1.1

Hình 2.1.2

II. Những ghi chú quan trọng bài tập cài đặt


Gồ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).


Hình 2.1.4
b. Class DFS_BFS chứa 9 hàm tự tạo tính tốn các 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.




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



×