Tải bản đầy đủ (.ppt) (30 trang)

Nội dung TRR-LTĐT - Võ Tấn Dũng (votandung) Chuong5 DuongDi

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 (1005.67 KB, 30 trang )

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM
MÔN
TOÁNL/O/G/O
RỜI RẠC
Company

Chương 5

ĐƯỜNG ĐI TRÊN

ĐỒ THỊ
GV: Võ Tấn Dũng


MỞ ĐẦU

Bài toán về những cây cầu ở Konigsber

Năm 1736 Euler, cha đẻ của lý thuyết đồ thị, đã giải
được bài toán hóc búa nổi tiếng thời đó về những cây
cầu ở Konigberg.


Thành phố Königsberg, Đức (nay là Kaliningrad, Nga)
nằm trên sông Pregel, bao gồm hai hòn đảo lớn nối với
nhau và với đất liền bởi bảy cây cầu.
3
1

2


4
Câu hỏi đặt ra là có thể đi theo một tuyến đường mà
đi qua mỗi cây cầu đúng một lần rồi quay lại điểm
xuất phát hay không.


Euler đã chứng minh rằng bài toán không có lời giải
bằng ngôn ngữ đồ thị. Ông biểu diễn 2 hòn đảo và 2
bờ sông bằng 4 điểm và 7 cây cầu bằng các cạnh nối
các điểm như sau:
3
Việc đi qua 7 cây cầu tương
đương với việc vẽ đồ thị trên
bằng 1 nét.

1

2

4
Sau này ta sẽ thấy đồ thị trên không thể vẽ bằng 1 nét.


ĐỒ THỊ EULER
Định nghĩa
Cho đồ thị vô hướng G = (V, E)

 Đường đi Euler: Đường đi đơn trong G đi qua mọi
cạnh của nó, mỗi cạnh chỉ đi qua một lần được gọi là
đường đi Euler

 Chu trình Euler: Chu trình đơn trong đồ thị G đi
qua mọi cạnh của nó, mỗi cạnh chỉ đi qua một lần
được gọi là chu trình Euler.


Cho đồ thị có hướng G = (V, E)

 Đường đi có hướng Euler là đường đi đơn có
hướng qua mọi cạnh của đồ thị.
 Chu trình có hướng Euler là chu trình đơn có
hướng qua mọi cạnh đồ thị.
Đồ thị chứa chu trình Euler gọi là đồ thị Euler


Ví dụ
a
b

c
d

e

Đồ thị Euler

f

Chu trình Euler: a, b, c, f, e, b, d, c, a



Ví dụ
Đồ thị về 7 cây cầu của thành phố Konigsberg
3
1

2

4
Không có chu trình và đường đi Euler


Đồ thị G1, G2, G3


Thí dụ: Đồ thị G1 trong hình 1 là đồ thị Euler vì nó có chu trình Euler a, e, c, d, e, b, a. Đồ
thị G3 không có chu trình Euler nhưng nó có đường đi Euler a, c, d, e, b, d, a, b, vì thế G 3 là
đồ thị cửa Euler. Đồ thị G2 không có chu trình cũng như đường đi Euler.


 Điều kiện cần và đủ để một đồ thị là một đồ thị Euler được Euler tìm ra vào
năm 1736 khi ông giải quyết bài toán hóc búa nổi tiếng thế giới thời đó về
bảy cái cầu ở thành phố Konigsberg và đây là định lý đầu tiên của lý thuyết
đồ thị.


Điều kiện cần và đủ để đồ thị có chu trình
và đường đi Euler
Đồ thị vô hướng:
 Đồ thị G có chu trình Euler khi và chỉ khi G liên
thông và mọi đỉnh đều có bậc (chẵn khác 0).

 Đồ thị G có đường đi Euler khi và chỉ khi G liên
thông và có không quá 2 đỉnh bậc lẻ.


Đồ thị có hướng:
 Đồ thị có hướng G có chu trình có hướng Euler
khi và chỉ khi G liên thông mạnh và mọi đỉnh đều
có nửa bậc ra bằng nửa bậc vào.
dv(v) = dr(v)
Chú thích:
Đồ thị liên thông mạnh là đồ thị có hướng mà
mọi cặp đỉnh của nó đều có đường đi có hướng nối
chúng với nhau.


Ví dụ
Đồ thị nào sau đây có chu trình Euler? Nếu không,
liệu có đường đi Euler không?
b
a
c
b
a

e

d
b

e


c f
d

a

e

c

d


Ví dụ
Đồ thị nào sau đây có chu trình có hướng Euler?
Nếu không, liệu có đường đi có hướng Euler không?
b
a

b

d

c

a

c

f


d
e


ĐỒ THỊ HAMINTON
Định nghĩa

Cho đồ thị G = (V, E)

 Đường đi Haminton là đường đi qua tất cả các
đỉnh của đồ thị mỗi đỉnh đúng một lần được gọi là
đường đi Hamilton.
 Chu trình Hamintơn là chu trình bắt đầu từ một
đỉnh v nào đó qua tất cả các đỉnh còn lại mỗi đỉnh
đúng một lần rồi quay trở về v được gọi là chu trình
Hamilton.
Định nghĩa tương tự đối với đồ thị có hướng
Đồ thị chứa chu trình Hamintơn gọi là đồ thị Hamintơn


Ví dụ
Cho đồ thị:
a

b
f

g


d

c

e
Đồ thị Hamintơn

Đồ thị trên không có chu trình và đường đi Euler
nhưng có chu trình Hamintơn.
Chú ý
Chu trình Hamintơn có độ dài bằng số đỉnh và mọi
đường đi Hamintơn có độ dài bằng số cạnh.


Định lý (Dirak). Đơn đồ thị vô hướng G với n>2
đỉnh, mỗi đỉnh có bậc không nhỏ hơn n/2 là đồ thị
Hamilton.
Xét đồ thị:

e

a
b

d

c
Đồ thị trên có chu trình Hamintơn không? Vì sao?



 Đồ thị Hamilton G3, đường đi Hamilton
trong G2 , và G1.


Định lí 1
Cho G là đơn đồ thị n đỉnh (n  3). Nếu:
n
d ( v)  ,  v  G
2
thì G có chu trình Hamintơn
Định lí 2
Cho G là đơn đồ thị n đỉnh (n  3). Nếu:
n 1
d ( v) 
, vG
2
thì G có chu trình Hamintơn


Định lí 3
Nếu G là đồ thị có hướng liên thông mạnh và:

n
n
d r ( v )  & d v ( v)  ,  v  G
2
2
thì G có chu trình có hướng Hamintơn



Ví dụ
Các đồ thị sau có chu trình hay đường đi Hamintơn
không? Nếu có hãy chỉ ra chu trình hay đường đi
Hamintơn.
a.

2

1
8
6

3
7

5

4


b.
1

2

11

4

8


9

10

3

12

13

5
7

14

6

15


TÌM ĐƯỜNG ĐI NGẮN NHẤT
4.5.1 Đồ thị có trọng số:
Là đồ thị mà mỗi cạnh của nó được gán 1 số.
Trong đồ thị có trọng số, độ dài trọng số của
đường đi  là tổng các trọng số trên đường đi đó.
4.5.2 Phát biểu bài toán:
Cho đồ thị có trọng số G = (V, E). Tìm đường đi
ngắn nhất từ đỉnh a đến đỉnh z của đồ thị



Thuật toán Dijkstra:
Tìm đường đi ngắn nhất từ đỉnh a đến đỉnh z trong
đồ thị có trọng số. Trọng số của cạnh (i,j) là w(i,j) > 0
và đỉnh x sẽ mang nhãn L(x). Khi kết thúc thuật giải
L(z) chính là chiều dài đường đi ngắn nhất từ a đến z.
Đầu vào: Đồ thị liên thông G = (V, E) có trọng số
w(i, j) > 0 với mọi cạnh (i, j), đỉnh a và đỉnh z.
Đầu ra: Chiều dài đường đi ngắn nhất và đường đi
ngắn nhất.


Phương pháp:
(1) Gán L(a)  0. Với mọi đỉnh x  a gán L(x) =
. Kí hiệu T  V
(2) Chọn v T sao cho L(v) có giá trị nhỏ nhất. Đặt:
T  T – {v}
(3) Nếu z  T  Kết thúc.
L(z) là đường đi ngắn nhất từ a đến z. Từ z lần ngược
theo các đỉnh được ghi nhớ ta có đường đi ngắn nhất.
Ngược lại sang bước 4.


×