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

Bài giảng cấu trúc dữ liệu và giải thuật chương 5 ths nguyễn thị khiêm hòa

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 (577.46 KB, 53 trang )

Chương 5: Đồ thị

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM


Mục tiêu


Trình bày những kiến thức căn bản về lý thuyết đồ

thị, cách biểu diễn, một số thuật toán trên đồ thị


Đánh giá thuật toán



Một số ứng dụng của đồ thị

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
2


Định nghĩa
Anchorage

Boston
Minneapolis

Seattle


Hartford
SF

Austin

Atlanta

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
3


Định nghĩa


Đồ thị G = (V,E)
V=
E

tập hợp hữu hạn các phần tử (đỉnh hay nút)

 V × V, tập hữu hạn các cạnh (cung)
a

b

c

d

Đỉnh


Cung
e

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
4


Các khái niệm




Nếu (x,y)  E


x gọi là đỉnh gốc, y là ngọn



Nếu x ≡ y, (x,y) gọi là khuyên

Một dãy u1, u2, …, un, ui  V (i=1,n) gọi là một đường, nếu
(ui-1,ui)  E



Độ dài đường: length(u1,u2,…,un)=n




(u1,u2,…,un) đường đi đơn, nếu ui≠uj, 1<i≠jmà các đỉnh phân biệt, ngoại trừ đình đầu và đỉnh cuối)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
5


Các khái niệm


Chu trình (cycle) = (u1,u2,…,un), u1≡ un



Đồ thị định hướng (directed graph)
 (x,y)



 E : (x,y) ≠ (y,x)

Đồ thị vô hướng
 (x,y)

 E : (y,x)  E

 (x,y) ≡

(y,x)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM

6


Các khái niệm


CBDC là một chu trình
B

B

C

A

D

C

A

Chu trình

D

Đường đi đơn

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
7



Các khái niệm

Đồ thị vô hướng

Đồ thị định hướng

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
8


Các khái niệm


Tính liên thông (connectivity)
 Trong

đồ thị G, hai đỉnh x,y gọi là liên thông

(connected), nếu có một đường từ x đến y
 Đồ

thị G liên thông, nếu (x,y)  E,  đường đi từ x

đến y


Đồ thị G gọi là có trọng số, nếu mỗi cung được gán một
giá trị số đặc trưng


Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
9


Các khái niệm

Đồ thị liên thông

Đồ thị không liên thông

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
10


Các khái niệm


Đồ thị có trọng số
0

10

20
1

1

2
5


4
3

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
11


Biểu diễn đồ thị


Biểu diễn bằng ma trận kề
 Adjacency



matrice

Biểu diễn bằng danh sách kề
 Adjacency

list

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
12


Biểu diễn đồ thị bằng ma trận kề


Xét G=(V,E) với V={x1,…,xn}




Biểu diễn G bằng ma trận A = (aij), i,j = 1..n
 aij = 1,

nếu Ǝ (xi,xj)  E

 aij = 0,

nếu !Ǝ (xi,xj)  E

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
13


Biểu diễn đồ thị bằng ma trận kề

0
1

2

A[i][j]

0

1

2


3

0

0

1

1

0

1

1

0

1

1

2

1

1

0


1

3

0

1

1

0

3

A=

0

1

1

0

1

0

1


1

1

1

0

1

0

1

1

0

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
14


Biểu diễn đồ thị bằng ma trận kề

0

1

2


A[i][j]

0

1

2

3

0

0

1

1

1

1

0

0

0

1


2

0

0

0

1

3

0

0

0

0

3
A=

0

1

1


1

0

0

0

1

0

0

0

1

0

0

0

0

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
15



Biểu diễn đồ thị bằng ma trận kề

x2
x1

x3

x5

x4

0
0
0
0
1

1
0
1
0
0

1
0
0
1
0

0

0
0
0
1

0
1
0
0
0

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
16


Biểu diễn đồ thị bằng ma trận kề

x2
x1

x3

x5

x4

0
0
0
0

1

1
0
1
1
0

1
0
0
1
0

0
1
0
0
1

0
1
0
0
1

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
17



Biểu diễn đồ thị bằng ma trận kề

0

20

10
1

2
4

A[i][j]

0

1

2

3

0

0

20

10


1

1

20

0

0

5

2

10

0

0

4

3

1

5

4


0

1
5

3

A=

0

20

10

1

20

0

0

5

10

0

0


4

1

5

4

0

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
18


Biểu diễn đồ thị bằng ma trận kề


Chú ý


Đối với đồ thị không định hướng, ma trận kề
là ma trận đối xứng



Đối với đồ thị định hướng, số lượng phần tử
0 khá lớn




Đối với đồ thị có trọng số, thay thế giá trị 1

bằng giá trị trọng số
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
19


Biểu diễn đồ thị bằng danh sách kề


Là một mảng các danh sách



Ở đây, n hàng của ma trận kề thay thế bằng n danh
sách liên kết động



Mỗi đỉnh của G có một danh sách, mỗi nút trong danh
sách thể hiện các đỉnh lân cận của nút này


Cấu trúc mỗi nút


id: tên đỉnh (chỉ số, danh hiệu)




next: con trỏ đến nút kế tiếp
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
20


Biểu diễn đồ thị bằng danh sách kề

0
1

2

0

1

1

3

2

3

2

3

3

3

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
21


Biểu diễn đồ thị bằng danh sách kề

x2
x1

x3

x5

x4

x[1]

2

x[2]

5

x[3]

2

x[4]


3

x[5]

1

3

4

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
22


Biểu diễn đồ thị bằng danh sách kề

0

10

20

1

2
5

1
4


3

0

1 10

2 20

1

0 10

3 4

2

0 20

3 5

3

0 1

1 4

3 1

2 5


Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
23


Biểu diễn đồ thị bằng danh sách kề


Chú ý


Các nút đầu danh sách được lưu vào một mảng
(truy cập nhanh)



Với đồ thị không định hướng có n đỉnh và e cạnh,
thì cần n nút đầu và 2e nút ‘trong’ danh sách



Với đồ thị định hướng có n đỉnh và e cạnh, thì chỉ
cần e nút ‘trong’ danh sách



Thứ tự các nút không quan trọng
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
24



Phép duyệt đồ thị


Từ một đỉnh, liệt kê tất cả các đỉnh của đồ thị


Phép tìm kiếm theo chiều sâu




Depth first search

Phép tìm kiếm theo chiều rộng


Breadth first search

Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
25


×