ltdt chuong 3

74
CÁC BÀI TOÁN ĐƯỜNG ĐI [email protected]

Upload: huahongquan2007

Post on 27-Jun-2015

1.422 views

Category:

Automotive


0 download

TRANSCRIPT

Page 1: Ltdt chuong 3

CÁC BÀI TOÁN ĐƯỜNG ĐI

[email protected]

Page 2: Ltdt chuong 3

NỘI DUNG

Đường đi ngắn nhất

Bài toán

Nguyên lý Bellman

Thuật toán Dijkstra

Thuật toán Floyd

Thuật toán Ford-Bellman

Đồ thị EulerĐồ thị Hamilton

Lý thuyết đồ thị , chương 3 - Nguyễn Thanh Sơn 2

Page 3: Ltdt chuong 3

ĐƯỜNG ĐI NGẮN NHẤT

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 3

CB

A

E

D

F

0

328

5 8

48

7 1

2 5

2

3 9

Page 4: Ltdt chuong 3

Cho đồ thị có hướng có trọng G=(X, E) và hai đỉnh s, t X, gọi P là một đường đi từ đỉnh s đến đỉnh t, trọng lượng (hay giá) của đường đi P được định nghĩa là:

L(P) = (eP)L(e)

Bài toán: tìm đường đi từ s đến t có trọng lượng nhỏ nhất

BÀI TOÁN

4Lý thuyết đồ thị - Nguyễn Thanh Sơn

Page 5: Ltdt chuong 3

Bài toán được phát biểu cho đồ thị có hướng có trọng, nhưng các thuật toán sẽ trình bày đều có thể áp dụng cho các đồ thị vô hướng có trọng bằng cách xem mỗi cạnh của đồ thị vô hướng như hai cạnh có cùng trọng lượng nối cùng một cặp đỉnh nhưng có chiều ngược nhau.

Khi tìm đường đi ngắn nhất có thể bỏ bớt đi các cạnh song song và chỉ chừa lại một cạnh có trọng lượng nhỏ nhất.

Đối với các khuyên có trọng lượng không âm thì cũng có thể bỏ đi mà không làm ảnh hưởng đến kết quả của bài toán. Đối với các khuyên có trọng lượng âm thì có thể đưa đến bài toán đường đi ngắn nhất không có lời giải.

NHẬN XÉT

5Lý thuyết đồ thị - Nguyễn Thanh Sơn

Page 6: Ltdt chuong 3

P là một đường đi từ s đến t, giả sử P có chứa một mạch .

Nếu L() 0 thì có thể cải tiến đường đi P bằng cách bỏ đi mạch .

Nếu L() < 0 thì không tồn tại đường đi ngắn nhất từ đỉnh s đến đỉnh t vì nếu quay vòng tại càng nhiều vòng thì trọng lượng đường đi P càng nhỏ đi, tức là L(P) -.

ĐIỀU KIỆN TỒN TẠI LỜI GiẢI

6Lý thuyết đồ thị - Nguyễn Thanh Sơn

s tk

Page 7: Ltdt chuong 3

Ma trận trọng lượng LNxN được định nghĩa:

Lij = trọng lượng cạnh nhỏ nhất nối i đến j nếu có,

Lij = nếu không có cạnh nối i đến j.

Khi cài đặt thuật toán có thể dùng 0 thay cho bằng cách đưa thêm một số kiểm tra thích hợp.

DỮ LIỆU NHẬP

7Lý thuyết đồ thị - Nguyễn Thanh Sơn

C

A B

D

12

7 15

516

05

0

14150

7120

14

Page 8: Ltdt chuong 3

NGUYÊN LÝ BELLMAN

Lý thuyết đồ thị - Nguyễn Thanh Sơn 8

s tkP1

P1’

P2

Page 9: Ltdt chuong 3

Gọi P là đường đi ngắn nhất từ đỉnh s đến đỉnh t; k P. Giả sử P=P1P2 với P1 là đường đi con của P từ s đến k và P2 là đường đi con của P từ k đến t. Khi đó P1 cũng là đường đi ngắn nhất từ s đến k.

NGUYÊN LÝ BELLMAN

9Lý thuyết đồ thị - Nguyễn Thanh Sơn

L(P1’) < L(P1) L(P1’P2) < L(P1P2)=L(P)

s tkP1

P1’

P2

Page 10: Ltdt chuong 3

THUẬT TOÁN DIJKSTRA

TÌM ĐƯỜNG ĐI NGẮN NHẤT TRÊN ĐỒ THỊ CÓ TRỌNG SỐ DƯƠNG

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 10

CB

A

E

D

F

0

328

5 8

48

7 1

2 5

2

3 9

Page 11: Ltdt chuong 3

Input: N, L, s, t – số đỉnh, ma trận trọng lượng, đỉnh xuất phát, đỉnh kết thúc

Output: D, Labels – D[k]: trọng lượng ĐĐNN sk, Labels[k]: đỉnh ngay trước k trong ĐĐNN sk

1. V=X; D[s]=0; D[k]=, kX\{s}; Labels[k]=-1, kX.

2. Trong khi tV:

1. Chọn đỉnh vV với D[v] nhỏ nhất;

2. V := V\{v};

3. Với mọi đỉnh kV và có cạnh nối từ v đến k,

Nếu D[k] > D[v]+Lvk thì D[k] = D[v]+Lvk và Labels[k]=v

THUẬT TOÁN DIJKSTRA

11Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 12: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 12

d(z) = 75

d(u) = 5010

zsu

d(z) = 60

d(u) = 5010

zsu

Cập nhật độ dài ĐĐ từ s đến đỉnh z: 75 60

Page 13: Ltdt chuong 3

VÍ DỤ

Đồ thị G gồm 7 đỉnh, 12 cạnh như hình bên. Tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh 5

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 13

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

042

120

170

8014

50

80

6390

Page 14: Ltdt chuong 3

VÍ DỤ

V: đỉnh chưa bị tô màu; D[k]: số có màu đỏ; Labels[k]: số có màu xanh lá

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 14

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

0-1

-1

-1

-1

-1

-1

-1

Page 15: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 15

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

0-1

91

-1

-1

61

-1

3 1

V: đỉnh chưa bị tô màu; D[k]: số có màu đỏ; Labels[k]: số có màu xanh lá

Page 16: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 16

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

0-1

74

44

114

61

-1

3 1

V: đỉnh chưa bị tô màu; D[k]: số có màu đỏ; Labels[k]: số có màu xanh lá

Page 17: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 17

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

0-1

74

44

93

61

-1

3 1

V: đỉnh chưa bị tô màu; D[k]: số có màu đỏ; Labels[k]: số có màu xanh lá

Page 18: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 18

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

0-1

74

44

93

61

-1

3 1

V: đỉnh chưa bị tô màu; D[k]: số có màu đỏ; Labels[k]: số có màu xanh lá

Page 19: Ltdt chuong 3

VÍ DỤ

ĐĐNN từ 1 đến 5 có trọng lượng D[5]=9: 5 3 4 1

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 19

9

1

2

3

4

5

6

7

3

4

8

1

562

4

17

12

8

0-1

74

44

93

61

26 5

3 1

Page 20: Ltdt chuong 3

GIÁ TRỊ CÁC BIẾN D, Labels

20Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1 2 3 4 5 6 7

0 0

1 9 3 6

2 7 4 11 6

3 7 9 6

4 7 9

5 9

1 2 3 4 5 6 7

0 -1 -1 -1 -1 -1 -1 -1

1 1 -1 1 -1 -1 1

2 4 4 4 -1 1

3 4 3 -1 1

4 4 3 -1

5 3 -1

D Labels

Page 21: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 21

CB

A

E

D

F

0

428

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

328

5 11

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

328

5 8

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

Page 22: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 22

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

CB

A

E

D

F

0

327

5 8

48

7 1

2 5

2

3 9

Page 23: Ltdt chuong 3

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 23

THUẬT TOÁN DIJKSTRA – CÀI ĐẶT

Graph Graph::Dijkstra(int s, int t){

//Tìm đường đi ngắn nhất từ s đến t}

Page 24: Ltdt chuong 3

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 24

THUẬT TOÁN DIJKSTRA – CÀI ĐẶT

Graph Graph::PrintPath(int s, int t){

int temp[MAX];int dem = 0;//In đường đi ngắn nhất từ s đến t dựa vào Labelswhile(Labels[t] != -1){

temp[dem++]=t;t=Labels[t];

}temp[dem++]=s;while (dem > 0)

printf(“%d “, temp[--dem]);}

Page 25: Ltdt chuong 3

THUẬT TOÁN FLOYD

TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA CÁC CẶP ĐỈNH TRÊN ĐỒ THỊ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 25

Page 26: Ltdt chuong 3

Input: N, L – số đỉnh, ma trận trọng lượng của G(X, E)

Output: L, Nexts – L[u, v]: trọng lượng ĐĐNN uv, Nexts[u, v]: đỉnh ngay sau u trong ĐĐNN uv

1. Nếu L[u, v]: Nexts[u, v]=v

Ngược lại: Nexts[u, v]=-1 , (u, v)X2.

2. Với mọi t XVới mọi u X có L[u, t]Với mọi v X có L[t, v]

Nếu L[u, v] > L[u, t] + L[t, v] thì

1. L[u, v] = L[u, t] + L[t, v]

2. Nexts[u, v] = Nexts[u, t]

THUẬT TOÁN FLOYD

26Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 27: Ltdt chuong 3

Xác định đường đi ngắn nhất giữa các cặp đỉnh trên đồ thị gồm 4 đỉnh 6 cạnh

VÍ DỤ

27Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

9

1

2

3

43

4 8

1

5

Page 28: Ltdt chuong 3

VÍ DỤ

28Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

-1

34-1

1 3 -1

-1

5 1

Page 29: Ltdt chuong 3

VÍ DỤ

29Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

-1

34-1

1 3 -1

-1

5 1

141

t = 1 u = 3 v = 2

Page 30: Ltdt chuong 3

VÍ DỤ

30Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

34-1

1 3 -1

-1

5 1

141

t = 1 u = 3 v = 4

8 1

Page 31: Ltdt chuong 3

VÍ DỤ

31Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

34-1

1 3

-1

5 1

141

t = 2 u = 1 v = 3

8 117 2

Page 32: Ltdt chuong 3

VÍ DỤ

32Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

34-1

1 3

5 1

141

t = 2 u = 3 v = x

8 117 2

Page 33: Ltdt chuong 3

VÍ DỤ

33Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

34-1

1 3

5 1

141

t = 2 u = 4 v = 3

8 117 2

Page 34: Ltdt chuong 3

VÍ DỤ

34Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

34-1

1 3

5 1

141

t = 3 u = 1 v = 2

8 117 2

Page 35: Ltdt chuong 3

VÍ DỤ

35Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

-1

42

-1 83

34-1

1 3

5 1

141

t = 3 u = 1 v = 4

8 117 2

Page 36: Ltdt chuong 3

VÍ DỤ

36Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

133

42 1

63 83

34-1

1 3

5 1

141

t = 3 u = 2 v = 1, 4

8 117 2

Page 37: Ltdt chuong 3

VÍ DỤ

37Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

92

133

42 1

63 83

3463

1 3

5 1

141

t = 3 u = 4 v = 1, 2

8 117 2

Page 38: Ltdt chuong 3

VÍ DỤ

38Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

74

133

42 1

63 83

3463

1 3

5 1

141

t = 4 u = 1 v = 2, 3

8 14 4

Page 39: Ltdt chuong 3

VÍ DỤ

39Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

74

133

42 1

63 83

3463

1 3

5 1

141

t = 4 u = 2 v = 1, 3

8 14 4

Page 40: Ltdt chuong 3

VÍ DỤ

40Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

74

133

42 1

63 83

3463

1 3

5 1

121

t = 4 u = 3 v = 1, 2

8 14 4

Page 41: Ltdt chuong 3

THUẬT TOÁN BELLMAN

TÌM ĐƯỜNG ĐI NGẮN NHẤT TRÊN ĐỒ THỊ CÓ CẠNH ÂM

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 41

s tk

? 0

Page 42: Ltdt chuong 3

Input: N, L, u – số đỉnh, ma trận trọng lượng của G(X, E), đỉnh xuất phát

Output: , Labels – (k, v): trọng lượng ĐĐNN uv sau k bước lặp, Labels[v]: đỉnh ngay trước v trong ĐĐNN uv

1. (0, u)=0; (0, v)= vX\{u}; Labels[v] = -1 vX;

2. Lặp với k = 1, 2, N-1

1.iX, chọn jX sao cho (k-1, j)+Lji đạt nhỏ nhất; nếu ji:

1.(k, i)= (k-1, j)+Lji

2.Labels[i] = j

2.Nếu (k) = (k-1): (k, v) là đường đi ngắn nhất u v

3. Nếu vẫn còn thay đổi sau bước lặp N-1: từ u đã đi đến mạch âm

THUẬT TOÁN BELLMAN

42Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 43: Ltdt chuong 3

VÍ DỤ

43Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

Tìm đường đi ngắn nhất từ đỉnh 3 đến các đỉnh còn lại

Page 44: Ltdt chuong 3

VÍ DỤ

44Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

0-1

-1

-1

-1

-1

-1

k = 0

Page 45: Ltdt chuong 3

VÍ DỤ

45Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

0-1

-1

-1

-1

-1

-1

k = 1

53

43

-13

Page 46: Ltdt chuong 3

VÍ DỤ

46Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

0-1

-1

-1

k = 2

53

43

-13

15

Page 47: Ltdt chuong 3

VÍ DỤ

47Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

0-1

-1

-1

k = 3

53

-13

15

26

Page 48: Ltdt chuong 3

VÍ DỤ

48Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

0-1

-1

-1

k = 4

-13

15

26

DỪNG

Page 49: Ltdt chuong 3

GIÁ TRỊ CÁC BIẾN , Labels

49Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

k/v 1 2 3 4 5 6

0 0

1 0 5 -1 4

2 0 5 -1 1

3 0 2 -1 1

4 0 2 -1 1

k/v 1 2 3 4 5 6

0 -1 -1 -1 -1 -1 -1

1 -1 -1 -1 3 3 3

2 -1 -1 -1 3 3 5

3 -1 -1 -1 6 3 5

4 -1 -1 -1 6 3 5

Labels

Page 50: Ltdt chuong 3

VÍ DỤ

50Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

Tìm đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại

Page 51: Ltdt chuong 3

VÍ DỤ

51Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

-1

0-1

-1

-1

-1

-1

k = 0

Page 52: Ltdt chuong 3

VÍ DỤ

52Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

21

0-1

11

-1

-1

-1

k = 1

Page 53: Ltdt chuong 3

VÍ DỤ

53Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

21

-12

11

73

63

13

k = 2

Page 54: Ltdt chuong 3

VÍ DỤ

54Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

11

-12

01

73

35

13

k = 3

Page 55: Ltdt chuong 3

VÍ DỤ

55Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

11

-22

01

63

35

03

k = 4

Page 56: Ltdt chuong 3

VÍ DỤ

56Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

1

2-2

3

2

4

8

5

65

14

-1

2

01

-22

-11

46

25

03

k = 5

DỪNG – CÓ MẠCH

ÂM

Page 57: Ltdt chuong 3

ĐỒ THỊ EULER

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 57

Konigsberg, Hmmm

Leonhard Euler(1707 – 1783)

Page 58: Ltdt chuong 3

Thành phố Konigsberg (Đức) bị chia thành 4 vùng do 2 nhánh của 1 dòng sông. Có 7 chiếc cầu nối những vùng nầy với nhau.

Bài toán: xuất phát từ một vùng đi dạo qua mỗi chiếc cầu đúng một lần và trở về nơi xuất phát.

Năm 1736, nhà toán học Euler đã mô hình bài toán nầy bằng một đồ thị vô hướng với mỗi đỉnh ứng với một vùng, mỗi cạnh ứng với một chiếc cầu

BÀI TOÁN 7 CHIẾC CẦU

58Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 59: Ltdt chuong 3

BÀI TOÁN 7 CHIẾC CẦU

59

A

B

C

D

C

A

D

B

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 60: Ltdt chuong 3

DÂY CHUYỀN EULER: dây chuyền đi qua tất cả các cạnh trong đồ thị, mỗi cạnh đúng một lần.

CHU TRÌNH EULER: dây chuyền Euler có đỉnh đầu trùng với đỉnh cuối.

ĐƯỜNG ĐI EULER: đường đi qua tất cả các cạnh của đồ thị, mỗi cạnh đúng một lần.

MẠCH EULER: đường đi Euler có đỉnh đầu trùng với đỉnh cuối.

ĐỒ THỊ EULER VÔ HƯỚNG: đồ thị vô hướng có chứa một chu trình Euler.

ĐỒ THỊ EULER CÓ HƯỚNG: đồ thị có hướng có chứa một mạch Euler.

ĐỊNH NGHĨA

60Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 61: Ltdt chuong 3

Đồ thị vô hướng G=(X, E)

1. G là đồ thị Euler G liên thông và d(x) chẵn xX.

2. G có chứa dây chuyền Euler và không chứa chu trình chu trình Euler G liên thông có chứa đúng hai đỉnh bậc lẻ.

Đồ thị có hướng G=(X, E)

3. G là đồ thị Euler G liên thông và d+(x)=d-(x) x X.

ĐỊNH LÝ EULER

61Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 62: Ltdt chuong 3

VÍ DỤ

62Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

a

b c

d

ea

b c

d

a

b c

d

e

(G1

)

(G2

) (G3

)Liên thông và có 2 đỉnh bậc lẻ có dây chuyền Euler:

bacdaedbc

Liên thông và các đỉnh đều có bậc chẵn có chu trình Euler:

bacdaedbcb

có đường đi Euler: bacbd

Page 63: Ltdt chuong 3

Cạnh e của đồ thị G được gọi là CẦU nếu xóa e khỏi đồ thị thì làm tăng số thành phần liên thông của G.

Giải thuật Gọi chu trình cần tìm là C

1. Khởi tạo: Chọn một đỉnh bất kỳ cho vào C.

2. Lặp trong khi G vẫn còn cạnh

1. Chọn cạnh e nối đỉnh vừa chọn với một đỉnh kề với nó theo nguyên tắc: chỉ chọn cầu nếu không còn cạnh nào khác để chọn.

2. Bổ sung e và đỉnh cuối của nó vào C.

3. Xóa e khỏi G.

GIẢI THUẬT FLEURY

63Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 64: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 64

1

2

3

4

5

1 2 3 4 5 3 1

Page 65: Ltdt chuong 3

Input: đồ thị Euler G(X, E)

Output: chu trình Euler C của G

1. Chọn đỉnh v X; C = {v}

2. Lặp trong khi G còn cạnh

1. Chọn đỉnh v C còn cạnh trong G

2. Tìm chu trình C’ xuất phát từ v.

3. Ghép C’ vào C

4. Loại bỏ các cạnh của C’ khỏi G

GiẢI THUẬT XÁC ĐỊNH CÁC CHU TRÌNH THÀNH PHẦN

65Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 66: Ltdt chuong 3

VÍ DỤ

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 66

1

2

3

4

5

1 2 3

4 5 3

1

3

Page 67: Ltdt chuong 3

ĐỒ THỊ HAMILTON

Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn 67

Sir William Rowan Hamilton(1805-1865)

Page 68: Ltdt chuong 3

“Xuất phát từ một đỉnh của khối thập nhị diện đều, hãy đi dọc theo các cạnh của khối đó sao cho đi qua tất cả các đỉnh khác, mỗi đỉnh qua đúng một lần, sau đó trở về đỉnh xuất phát”.

Bài toán nầy được nhà toán học Hamilton đưa ra vào năm 1859

BÀI TOÁN KHỞI ĐIỂM

68Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 69: Ltdt chuong 3

Đồ thị vô hướng G(X, E)DÂY CHUYỀN HAMILTON: dây chuyền đi qua

tất cả các đỉnh của đồ thị mỗi đỉnh đúng một lần.CHU TRÌNH HAMILTON: dây chuyền Hamilton

và một cạnh trong đồ thị nối đỉnh đầu của dây chuyền với đỉnh cuối của nó.

ĐỒ THỊ HAMILTON: đồ thị có chứa một chu trình Hamilton.

ĐỊNH NGHĨA

69Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 70: Ltdt chuong 3

Đồ thị đủ luôn là đồ thị Hamilton. Với n lẻ 3 thì Kn có (n-1)/2 chu trình Hamilton đôi một không có cạnh chung.

Đồ thị lưỡng phân G với hai tập đỉnh X1, X2 và X1=X2=n. Nếu d(x)n/2 x của G thì G là đồ thị Hamilton.

Đồ thị vô hướng đơn G gồm n đỉnh và m cạnh. Nếu m(n2-3n+6)/2 thì G là đồ thị Hamilton.

MỘT SỐ KẾT QUẢ

70Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 71: Ltdt chuong 3

Đồ thị vô hướng đơn G gồm n đỉnh với n3Nếu d(x)n/2 x của G thì G là đồ thị Hamilton.

Nếu d(x)(n-1)/2 x của G thì G có dây chuyền Hamilton.

Nếu d(x)+d(y)n với mọi cặp đỉnh x, y không kề nhau của G thì G là đồ thị Hamilton.

71Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 72: Ltdt chuong 3

1. Nếu G có đỉnh bậc < 2 thì G không có chu trình Hamilton

2. Nếu đỉnh có bậc 2 thì 2 cạnh kề với nó phải nằm trong chu trình Hamilton

3. Các cạnh thừa (ngoài 2 cạnh đã chọn trong chu trình Hamilton) phải được bỏ đi trong quá trình xác định chu trình

4. Nếu quá trình xây dựng tạo nên một chu trình con thì đồ thị không có chu trình Hamilton

QUI TẮC XÁC ĐỊNH

72Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

Page 73: Ltdt chuong 3

VÍ DỤ

73Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn

1

2

3

4

5

Page 74: Ltdt chuong 3

1. Chứng minh nguyên lý Bellman

2. Chứng minh tính đúng đắn của các thuật toán Dijkstra, Floyd, Bellman

3. Cài đặt thuật toán xác định chu trình Euler

4. Xác định các “nét” của Đồ thị K nét.

BÀI TẬP

74Lý thuyết đồ thị - chương 3 - Nguyễn Thanh Sơn