Chu trình Hamilton

Một phần của tài liệu Giáo trình toán rời rạc công nghệ thông tin (Trang 62)

Chƣơng 5 ĐỒ THỊ EULER VÀ HAMILTON

5.2 Đƣờng đi Hamilton và đồ thị Hamilton

5.2.1 chu trình Hamilton

Cho G= (V, E) là đồ thị vô hƣớng. Chu trình Hamilton là chu trình đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần. Ví dụ: Xét đồ thị sau G Đồ thị G có các chu trình Hamilton sau:  125341  12 3541  145321  143521 5.2.2 ĐƢỜNG ĐI HAMILTON

Đƣờng Hamilton trong đồ thị G=(V, E) là đƣờng đi qua tất cả các đỉnh của đồ thị,

mỗi đỉnh đúng một lần. Ví dụ: Xét đồ thị sau

Giáo trình Tốn rời rạc trang 63 Đồ thị G c các đƣờng Hamilton sau:

 bacd  badc

5.2.3 ĐỊNH LÝ DIRAK

 Giả sử G = (V, E) là đơn đồ thị vô hƣớng liên thông với n đỉnh (n>2). Nếu mỗi đỉnh của G đều có bậc khơng nhỏ hơn n/2 thì G là đồ thị Hamilton.

 Giả sử G = (V, E) là đơn đồ thị có hƣớng, liên thông mạnh với n đỉnh. Nếu mọi đỉnh của G đều có bán bậc ra và bán bậc vào khơng nhỏ hơn n/2 thì G là đồ thị Hamilton.

 Giả sử G = (V, E) là đồ thị có hƣớng và đầy đủ. Khi đ trong đồ thị luôn luôn tồn tại đƣờng Hamilton.

 Hệ quả: Giả sử G = (V, E) là đồ thị đầy đủ với số đỉnh 3. Khi đ trong đồ thị ln ln tồn tại chu trình Hamilton

5.2.4 THUẬT TỐN TÌM ĐƢỜNG CHU TRÌNH HAMILTON

Đến nay, việc tìm tiêu chuẩn để nhận biết đồ thị Hamilton vẫn là mở và cũng chƣa có thuật tốn hiệu quả để kiểm tra một đồ thị có là Hamilton hay khơng.

 Quy tắc để tìm đƣờng/ chu trình Hamilton:

Qui tắc 1: Lấy hết các cạnh kề với đỉnh bậc 2.

Qui tắc 2: Khơng cho phát sinh chu trình ít hơn n cạnh.

Qui tắc 3: Nếu đã lấy hai cạnh kề với đỉnh x thì có thể bỏ tất cả các cạnh còn

lại kề với x.

Qui tắc 4: Duy trì tính liên thơng và bảo đảm bậc mỗi đỉnh luôn lớn hơn hay

bằng 2

Cách thực hiện:

 Bắt đầu từ một đỉnh, đi theo đƣờng dài nhất có thể đƣợc (depth-first)

 Nếu đƣờng đ chứa mọi đỉnh và có thể nối hai đỉnh đầu và cuối bằng 1 cạnh thì đ là chu trình hamilton

 Ngƣợc lại, lùi lại một đỉnh để mở con đƣờng theo chiều sâu khác  Cứ tiếp tục quá trình trên cho đến khi duyệt hết các đỉnh của đồ thị. Ví dụ: Tìm chu trình/đƣờng Hamilton cho đồ thị sau:

Giáo trình Tốn rời rạc trang 64 Duyệt theo chiều sâu ta có cây sau:

Các Chu trình Hamilton c trong đồ thị:  123451  125341  143521  145321 Các đƣờng Hamilton c trong đồ thị:  12345  12533  14325  14523

Giáo trình Tốn rời rạc trang 65

BÀI TẬP THỰC HÀNH SỐ 5 V. Thông tin chung:

 Mã số bài tập : BT-ToanRR-05

 Hình thức nộp bài : Nộp qua Moodle mơn học  Thời hạn nộp bài : … / … / ……

 Nội dung : Chƣơng 5: Đồ thị EULER và đồ thị HAMILTON

BÀI TẬP Ở LỚP

1. Đồ thị nào sau đây c chu trình Euler. Xây dựng chu trình Euler nếu tồn tại

A B

C D

Giáo trình Tốn rời rạc trang 66

G H

2. Hãy xác định xem trong các đồ thị bài tập 1 c đƣờng đi Euler không. Hãy xây dựng đƣờng Euler nếu có.

3. Hãy xác định số lần nhỏ nhất cần phải nâng bút khỏi giấy khi vẽ các đồ thị trong bài tập 1 mà không đƣợc vẽ lại bất kỳ phần nào của đồ thị.

4. Đồ thị nào sau đây c chu trình/đƣờng Euler. Xây dựng chu trình/đƣờng Euler nếu tồn tại.

I J

Giáo trình Tốn rời rạc trang 67

M N

5. Tìm các giá trị sau của n để các đồ thị sau có chu trình Euler? a. Kn

b. Cn c. Wn

6. Với giá trị nào của n thì các đồ thị trong bài tập 4 c đƣờng Euler mà khơng có chu trình Euler?

7. Với giá rị nào của m,n thì đồ thị hai phía đầy đủ Km,n có : a. Chu trình Euler

b. Đƣờng Euler

8. Hãy nêu các thuật tốn xây dựng đƣờng đi/chu trình Euler trong đồ thị vơ hƣớng / c hƣớng.

9. Cho các đồ thị sau đồ thị nào tồn tại chu trình Hamilton. Nếu khơng tồn tại hãy chỉ ra yếu tố nào chứng tỏ khơng tồn tại chu trình Hamilton trong đồ thị:

Giáo trình Tốn rời rạc trang 68

S T

U V

BÀI TẬP Ở NHÀ

10. Các đồ thị trong bài tập 9 có tồn tại đƣờng Hamilton không? Hãy xây dựng đƣờng Hamilton nếu có.

11. Với giá trị nào của n để các đồ thị sau có chu trình Hamilton? a. Kn

b. Cn c. Wn

12. Với giá trị nào của m,n thì đồ thị hai phía đầy đủ Km,n có Chu trình Hamilton? 13. Ngồi 7 chiếc cầu đã xây dựng từ thế kỷ 18 ở Kaliningrad, ngƣời ta xây dựng

thêm hai chiếc cầu nữa nối khu B với khu C và khu B với khu D. Một ngƣời nào đ c thể đi qua 9 chiếc cấu, mỗi chiếc đi qua đúng một lần, và trở về nơi xuất phát đƣợc khơng?

Giáo trình Tốn rời rạc trang 69

CHƢƠNG 6. MỘT SỐ BÀI TOÁN TỐI ƢU TRÊN ĐỒ THỊ Mục tiêu:

Học xong chƣơng này sinh viên c thể:

- Trình bày và giải quyết bài tốn tìm đƣờng đi ngắn nhất - Trình bày và giải quyết bài tốn cây khung tối tiểu

Nội dung:

6.1 ĐỒ THỊ CÓ TRỌNG SỐ VÀ BÀI TOÁN ĐƢỜNG ĐI NGẮN NHẤT

6.1.1 GIỚI THIỆU

Nhiều bài toán trong thực tế có thể mơ hình hóa bằng đồ thị có trọng số. Đ là đồ thị mà mỗi cạnh của n đƣợc gán một con số nguyên hoặc số thực gọi là trọng số của cạnh đ .

Giả sử ta cần mơ hình hóa hệ thống đƣờng hàng khơng. Trong mơ hình mỗi thành phố đƣợc biểu diễn bằng một đỉnh của đồ thị, mỗi chuyến bay là một cạnh nối hai đỉnh tƣơng ứng với trọng số là phí hành khách phải trả cho chuyến bay.

Yêu cầu đặt ra là hành trình nào giữa hai thành phố Honolulu (a) và Heathrow London (b) có chi phí nhỏ nhất?

6.1.1.1 Đồ thị có trọng số:

Đồ thị G = (V, E) Đồ thị G = (V,E) gọi là đồ thị có trọng số (hay chiều dài, trọng lƣợng) nếu mỗi cạnh(cung) e đƣợc gán với một số thực w(e).Ta gọi w(e) là trọng lƣợng của e.

Độ dài của đƣờng đi từ u đếnvbằng tổng độ dài các cạnh mà đƣờng đi qua. Khoảng cách giữa 2 đỉnh u,v là độ dài ngắn nhất của các đƣờng đi từ u đến v.

Giáo trình Tốn rời rạc trang 70 Cho G = (V, E), V = {v1, v2,…,vn} là đơn đồ thị có trọng số.

Ma trận trọng số của G là ma trận D= (aij) xác định nhƣ sau:

{ ( )  ( ) ( ) ∈ Ví dụ:

6.1.2 THUẬT TỐN BELLMAN-FORD

6.1.2.1 Ý tưởng thuật tốn Bellman-Ford

Thuật tốn Ford-Bellman dùng để tìm đƣờng đi ngắn nhất từ một đỉnh s đến tất cả các đỉnh còn lại của đồ thị. Đƣợc sử dụng cho đồ thị khơng có chu trình âm.

Cho đồ thị c hƣớng, có trọng số G = (V, E). Trọng số của các cạnh của G đƣợc tính nhƣ sau:

 TrongSo(u, v) = ∞ nếu cung (u, v) ∉E.  TrongSo(u, v) = a(u, v) nếu cung (u, v) ∈E.

Thuật tốn tìm đƣờng đi ngắn nhất d(v) từ đỉnh s đến đỉnh v, v ∈V:

 Xét cạnh (u,v) Nếu d(u) + TrongSo(u, v) < d(v)thì ta thay d(v) = d(u) + TrongSo(u, v)

 Quá trình này sẽ đƣợc lặp lại cho đến khi khơng thể có giá trị d(v) tốt hơn.

6.1.2.2 Ví dụ

Giáo trình Tốn rời rạc trang 71 Đồ thị trên liên thơng mạnh và khơng có chu trình âm. Áp dụng thuật tốn Bellman- Ford

Đƣờng đi ngắn nhất từ 1 đến 5 là: 1235 với trọng số là -1

6.1.3 THUẬT TỐN DIJKSTRA

Thuật tốn Dijkstra dùng để tìm đƣờng đi ngắn nhất từ một đỉnh s đến tất cả các đỉnh còn lại của đồ thị. Đƣợc sử dụng cho đồ thị khơng có cung trọng số âm.

6.1.3.1 Ý tưởngThuật toán Dijkstra

Phƣơng pháp xác định tuần tự các đỉnh có khoảng cách đến u0 từ nhỏ đến lớn  Bƣớc 1: Đỉnh có khoảng cách nhỏ nhất đến u0 là u0

 Bƣớc 2: Trong V\{u0} tìm đỉnh có khoảng cách đến u0 nhỏ nhất ( đỉnh này phải là một trong các đỉnh kề với u0)_ giả sử là u1

 Bƣớc 3:Trong V\{u0, u1} tìm đỉnh có khoảng cách đến u0 nhỏ nhất ( đỉnh này phải là một trong các đỉnh kề với u0, u1)

 Bƣớc 4:lặp lại bƣớc 3 cho đến khi V\{u0,u1,…}=

6.1.3.2 Ví dụ

Giáo trình Tốn rời rạc trang 72 Bước Đỉn h được chọn V-s D[1 ], pre[1] D[2 ], pre[2] D[3 ], pre[3] D[4 ], pre[4] Khởi tạo 0 1,2,3 ,4 ,0 9,0 2,0 5,0 1 3 1,2,4 3,3 9,0 5,0 2 1 2,4 7,1 5,0 3 4 2 6,4 4 2  3,3 6,4 2,0 5,0 Đƣờng đi ngắn nhất từ 0 đến 1 là: 031 với trọng số là 3. 6.2 CÂY KHUNG NHỎ NHẤT 6.2.1 ĐỊNH NGHĨA CÂY KHUNG

Một cây khung (spanning tree) T của một đồ thị liên thông G là đồ thị con của G thoả:

 T là một cây.

 T chứa tất cả các đỉnh của G

Cho G là đồ thị có trọng số, các cạnh e có trọng số w(e) dƣơng. Tồn tại cây khung có tổng trọng số các cạnh là nhỏ nhất là cây khung tối tiểu (minimum spanning tree).

Giáo trình Tốn rời rạc trang 73 Cây khung tối tiểu T = {AE, AB, BD, BC} với w(T) = 2 + 4 + 3 + 6 = 15.

6.2.2 THUẬT TOÁN K.RUSKAL

6.2.2.1 Ý tưởng thuật tốn:

1. Xóa các khun trong G (nếu có)

2. Xóa cạnh song song trong G (giữ lại cạnh có trọng số nhỏ nhất) (nếu có) 3. Đặt T = .

4. Đƣa vào T cạnh có w(e) nhỏ nhất trong số các cạnh chƣa chọn sao cho T khơng tạo thành chu trình.

5. Nếu T c đủ n – 1 cạnh thì dừng. Cịn khơng thì tiếp tục bƣớc 2.

6.2.2.2 Ví dụ

1. T = . 2. T = {AE} 3. T = {AE, BD} 4. T = {AE, BD, AB}

Giáo trình Tốn rời rạc trang 74

6.2.3 THUẬT TOÁN PRIMM

6.2.3.1 Ý tưởng thuật toán:

1. X = {x0}. T = .

2. Thêm vào T cạnh có w(e) nhỏ nhất nối một đỉnh x trong X và một đỉnh y ngồi X sao cho T khơng thành chu trình.

a. X = X + {y}; T = T + {xy}.

3. Nếu X đủ n đỉnh thì dừng. Cịn khơng thì tiếp tục bƣớc 2.

6.2.3.2 Ví dụ:

1. X = {A}; T = . 2. X = {A, E}; T = {AE}.

3. X = {A, E, B}; T = {AE, AB}.

4. X = {A, E, B, D}; T = {AE, AB, BD}.

Giáo trình Tốn rời rạc trang 75

BÀI TẬP THỰC HÀNH SỐ 6 I. Thông tin chung:

 Mã số bài tập : BT-ToanRR-06

 Hình thức nộp bài : Nộp qua Moodle mơn học  Thời hạn nộp bài : … / … / ……

 Nội dung : Chƣơng 6: Một số bài toán tối ƣu trên đồ thị

BÀI TẬP

1/ Sử dụng thuật toán Dijstra và Ford-Bellman

st

az?

Giáo trình Tốn rời rạc trang 76

f c?

fg?

Giáo trình Tốn rời rạc trang 77 1….

Giáo trình Tốn rời rạc trang 78 2/Dùng thuậ t toậ n Prim, Kruskậl tì m cậ y khung to i thiể u cu ậ cậ c đo thi trể n.

Giáo trình Tốn rời rạc trang 79

Tài liệu tham khảo

[1] Toán học rời rạc ứng dụng trong tin học Kenneth H.Rosen (sách dịch), NXB Khoa học kỹ thuật 2003, 980 trang

[2] Toán rời rạc ứng dụng trong Tin học, Đỗ Đức Giáo, Nhà xuất bản Giáo dục, 2009, 407 trang.

Một phần của tài liệu Giáo trình toán rời rạc công nghệ thông tin (Trang 62)

Tải bản đầy đủ (PDF)

(79 trang)