Tải bản đầy đủ (.pdf) (51 trang)

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Trường ĐH Văn Lang

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 (2.98 MB, 51 trang )



GIỚI THIỆU
• Đồ thị là một cấu trúc dữ liệu trừu tượng dựa trên các khái niệm
toán học về đồ thị.
• Đồ thị được xem là tổng qt hóa của cấu trúc cây. Tuy nhiên,
đồ thị có mối quan hệ phức tạp hơn là quan hệ cha-con trong
cấu trúc cây.

• Đồ thị được sử dụng trong nhiều ứng dụng như cây gia phả,
mạng quản lý chuyến bay v.v…

KHOA CÔNG NGHỆ THÔNG TIN

3


GIỚI THIỆU
• Một đồ thị G là một tập hợp khơng có thứ tự (V, E), trong đó
V : là các đỉnh của đồ thị
E : là các cạnh (cung) biểu diễn mối quan hệ giữa các đỉnh
A

D

B

E

KHOA CÔNG NGHỆ THÔNG TIN


C

V(G) = {A, B, C, D, E}

E(G) = {(A, B), (A, D), (B, C}, (B, D),
(C, E), (D, E)}
4


GIỚI THIỆU
• Một đồ thị G có thể có hướng hoặc vơ hướng.
• Nếu đồ thị có hướng thì cạnh nối hai đỉnh có mũi tên đại diện
cho hướng nối.
Đồ thị có hướng
Đồ thị vơ hướng
A

D

B

E

KHOA CƠNG NGHỆ THƠNG TIN

C

A

D


B

C

E
5


BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH
1. SỬ DỤNG MA TRẬN KỀ
• Hai đỉnh kề nhau nếu có cạnh nối giữa chúng
• Ta dùng một ma trận với dịng, cột biểu diễn cho các đỉnh của
đồ thị.
• Biểu diễn cạnh trên ma trận kề
1

Nếu đỉnh i kề đỉnh j

0

Ngược lại

𝑎𝑖𝑗 =

KHOA CÔNG NGHỆ THÔNG TIN

6



BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH
1. SỬ DỤNG MA TRẬN KỀ
A

B

D

C

E

A

B

D

A

B

C

D

E

A


0

1

0

1

0

B

1

0

1

1

C

0

1

0

D


1

1

E

0

0

C

E

A

B

C

D

E

A

0

1


0

1

0

0

B

0

0

0

1

0

0

1

C

0

1


0

0

0

0

0

1

D

0

0

0

0

1

1

1

0


E

0

0

1

0

0

KHOA CÔNG NGHỆ THÔNG TIN

7


BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH
1. SỬ DỤNG MA TRẬN KỀ
Đồ thị có trọng số là đồ thị
mà có gán dữ liệu trên mỗi
cạnh.

4

A

5

C


2
7
1
D

Biểu diễn đồ thị có trọng số

KHOA CÔNG NGHỆ THÔNG TIN

B

E

3
A

B

C

D

E

A

0

4


0

2

0

B

0

0

0

7

0

C

0

5

0

0

0


D

0

0

0

0

3

E

0

0

1

0

0

8


BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH
1. SỬ DỤNG MA TRẬN KỀ

• Đối với đồ thị đơn (khơng có vịng),
ma trận kề có đường chéo chính
mang giá trị 0

4

A

5

B

C

2
7
1

• Ma trận kề đồ thị vơ hướng thì đối
xứng
• Bộ nhớ của ma trận kề là O(n2), n là
số đỉnh của đồ thị.

KHOA CÔNG NGHỆ THÔNG TIN

D

E

3

A

B

C

D

E

A

0

4

0

2

0

B

0

0

0


7

0

C

0

5

0

0

0

D

0

0

0

0

3

E


0

0

1

0

0

9


BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH
2. SỬ DỤNG DANH SÁCH KỀ
• Danh sách kề gồm các đỉnh của đồ thị V(G).
• Mỗi đỉnh vi là một danh sách liên kết lưu trữ những đỉnh vj , vj+1,
… nối tới vi
• Thường dùng để lưu đồ thị nhỏ và vừa.
• Biểu diễn đồ thị thưa (có ít cạnh nối) trong bộ nhớ máy tính.

KHOA CƠNG NGHỆ THƠNG TIN

10


BIỂU DIỄN ĐỒ THỊ TRÊN MÁY TÍNH
2. SỬ DỤNG DANH SÁCH KỀ
• Danh sách kề biểu diễn đồ thị vơ hướng.
A


D

B

E

KHOA CÔNG NGHỆ THÔNG TIN

A

B

D

NULL

B

A

C

NULL

C

B

E


NULL

D

A

B

NULL

E

C

D

NULL

C

11


THUẬT TỐN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng.
A

D


B

C

Xuất phát từ đỉnh A

E

KHOA CÔNG NGHỆ THÔNG TIN

12


THUẬT TỐN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng.
A

B

B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B, D

D

KHOA CÔNG NGHỆ THÔNG TIN

13



THUẬT TỐN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vơ hướng.
A

B

D

KHOA CƠNG NGHỆ THÔNG TIN

C

B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B, D
B3: Xuất phát từ đỉnh B
B4: Đi qua đỉnh C

14


THUẬT TỐN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vơ hướng.
A

B

D


KHOA CƠNG NGHỆ THÔNG TIN

C

B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B, D
B3: Xuất phát từ đỉnh B
B4: Đi qua đỉnh C
B5: Xuất phát từ đỉnh D

15


THUẬT TỐN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
• Duyệt theo chiều rộng (Breadth-First Search) đồ thị vô hướng.
A

B

C

B1: Xuất phát từ đỉnh A

B2: Đi qua đỉnh B, D
B3: Xuất phát từ đỉnh B
D

E


B4: Đi qua đỉnh C
B5: Xuất phát từ đỉnh D
B6: Đi qua đỉnh E

Dừng thuật tốn
KHOA CƠNG NGHỆ THÔNG TIN

16


THUẬT TOÁN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
GIẢI THUẬT : Duyệt theo chiều rộng (BFS)
procedure BFS(G: đồ thị với các đỉnh v1, v2, …, vn)
T := cây chỉ chứa một đỉnh ban đầu v1
L := danh sách rỗng dùng để chứa các đỉnh đã đi qua
Đặt đỉnh v1 vào danh sách L
while L không rỗng
remove đỉnh v1 từ L
for mỗi đỉnh kề w với đỉnh v1 do
if w không có trong L and khơng có trong T then
add w vào L
add w and cạnh {v1, w} vào T
KHOA CÔNG NGHỆ THÔNG TIN

17


THUẬT TOÁN DUYỆT ĐỒ THỊ

1. DUYỆT THEO CHIỀU RỘNG
Độ phức tạp khơng gian
• Tất cả các đỉnh tại mức đang xét sẽ được lưu cho đến khi các
đỉnh kề được đi qua.
• Độ phức tạp khơng gian tỉ lệ thuận với số đỉnh ở mức sâu nhất
của đồ thị.
• Cho đồ thị có b là số đỉnh kề của mỗi đỉnh và chiều sâu d. Độ
phức tạp không gian là số đỉnh ở mức sâu nhất O(bd).

KHOA CÔNG NGHỆ THÔNG TIN

18


THUẬT TOÁN DUYỆT ĐỒ THỊ
1. DUYỆT THEO CHIỀU RỘNG
Độ phức tạp thời gian
Trường hợp xấu nhất, BFS phải duyệt tất cả đường đi tới các
đỉnh. Độ phức tạp thời gian xấp xỉ O(bd)
Tính đầy đủ
BFS có tính đầy đủ vì nó sẽ tìm tất cả các đỉnh khơng phân biệt
loại đồ thị (vơ hướng, có hướng, có trọng số…).

KHOA CƠNG NGHỆ THÔNG TIN

19


THUẬT TOÁN DUYỆT ĐỒ THỊ
2. DUYỆT THEO CHIỀU SÂU

Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng.
A

D

B

C

Xuất phát từ đỉnh A

E

KHOA CÔNG NGHỆ THÔNG TIN

20


THUẬT TOÁN DUYỆT ĐỒ THỊ
2. DUYỆT THEO CHIỀU SÂU
Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng.
A

B

B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B

KHOA CÔNG NGHỆ THÔNG TIN


21


THUẬT TOÁN DUYỆT ĐỒ THỊ
2. DUYỆT THEO CHIỀU SÂU
Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng.
A

B

C

B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B

B3: Đi qua đỉnh C

KHOA CÔNG NGHỆ THÔNG TIN

22


THUẬT TOÁN DUYỆT ĐỒ THỊ
2. DUYỆT THEO CHIỀU SÂU
Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng.
A

B

C


B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B

B3: Đi qua đỉnh C
E

KHOA CÔNG NGHỆ THÔNG TIN

B4: Đi qua E

23


THUẬT TOÁN DUYỆT ĐỒ THỊ
2. DUYỆT THEO CHIỀU SÂU
Duyệt theo chiều sâu (Depth-First Search) đồ thị vô hướng.
A

B

C

B1: Xuất phát từ đỉnh A
B2: Đi qua đỉnh B

B3: Đi qua đỉnh C
D

E


B4: Đi qua E
B5: Đi qua D

KHOA CÔNG NGHỆ THÔNG TIN

24


THUẬT TOÁN DUYỆT ĐỒ THỊ
2. DUYỆT THEO CHIỀU SÂU
THUẬT TOÁN : Duyệt theo chiều sâu (DFS)
procedure DFS(G: đồ thị với các đỉnh v1, v2, …, vn)
T := cây chứa một đỉnh ban đầu v1
visit(v1)
procedure visit(v: đỉnh của G)
for mỗi đỉnh w kề v và không trong T do
add đỉnh w và cạnh {v, w} vào T
visit(w)
KHOA CÔNG NGHỆ THÔNG TIN

25


×