1. Trang chủ
  2. » Luận Văn - Báo Cáo

các thuật toán về đường đi và chu trình euler và ứng dụng

65 3,4K 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 0,99 MB

Nội dung

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/LỜI MỞ ĐẦU Những vấn đề cơ bản của lý thuyết đồ thị được đề xuất từ thế kỷ XVIII, bắt đầu từ bài báo của Euler công bố năm 1736 l

Trang 1

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH

Nguyễn Tam Hùng

CÁC THUẬT TOÁN VỀ ĐƯỜNG ĐI VÀ

Ngành: Công nghệ thông tin

Chuyên ngành: Khoa học máy tính

Mã số: 60.48.01

Người hướng dẫn khoa học: PGS TSKH Nguyễn Xuân Huy

Thái Nguyên, năm 2014

Trang 2

LỜI CẢM ƠN

Tôi xin gửi lời cảm ơn tới Trường ĐH CNTT&TT – ĐHTN, nơi các thầy

cô đã tận tình truyền đạt các kiến thức quý báu cho tôi trong suốt quá trình học tập Xin cảm ơn Ban chủ nhiệm khoa và các cán bộ đã tạo điều kiện tốt nhất cho chúng tôi học tập và hoàn thành đề tài tốt nghiệp của mình

Đặc biệt, tôi xin gửi tới PGS TSKH Nguyễn Xuân Huy, thầy đã tận tình chỉ bảo tôi trong suốt quá trình thực hiện đề tài lời cảm ơn và biết ơn sâu sắc nhất Bên cạnh những kiến thức khoa học, thầy đã giúp tôi nhận ra những bài học về phong cách học tập, làm việc và những kinh nghiệm sống quý báu

Tôi xin bày tỏ lòng biết ơn tới gia đình, bạn bè, đồng nghiệp và những người thân đã động viên khích lệ tinh thần và giúp đỡ để tôi hoàn thành luận luận này

Thái Nguyên, ngày 15 tháng 5 năm 2014

Học viên thực hiện

Nguyễn Tam Hùng

Trang 3

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

LỜI CAM ĐOAN

Học viên xin cam đoan, toàn bộ nội dung liên quan tới đề tài được trình bày trong luận văn là bản thân học viên tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn khoa học của Thầy giáo PGS TSKH Nguyễn Xuân Huy

Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc Học viên

xin chịu trách nhiệm trước pháp luật lời cam đoan của mình

Thái Nguyên, ngày 15 tháng 5 năm 2014

Học viên thực hiện

Nguyễn Tam Hùng

Trang 4

MỤC LỤC LỜI CẢM ƠN I

LỜI CAM ĐOAN II

MỤC LỤC III

DANH MỤC CÁC BẢNG IV

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ VI

LỜI MỞ ĐẦU 1

CHƯƠNG 1 3

ĐẠI CƯƠNG VỀ ĐỒ THỊ 3

1.1 Đồ thị vô hướng 3

1.2 Bậc của đồ thị 4

1.3 Đường đi, chu trình, tính liên thông 8

1.4 Biểu diễn đồ thị vô hướng 11

CHƯƠNG 2 15

CÁC THUẬT TOÁN VÀ TỔ CHỨC DỮ LIỆU 15

2.1 Chu trình, đường đi Euler 15

2.2 Các thuật toán tìm chu trình Euler 18

2.3 Tổ chức dữ liệu cho thuật toán 31

CHƯƠNG 3 35

ỨNG DỤNG ĐỒ THỊ EULER 35

3.1 Bài toán về những cây cầu ở Königsberg 35

3.2 Bài toán về các quân Domino 36

Trang 5

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

3.3 Bài toán "Thanh tra giao thông" 38

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 46

TÀI LIỆU THAM KHẢO 47

PHỤ LỤC 48

Trang 6

DANH MỤC CÁC BẢNG

Trang

Bảng 1.1 Ma trận kề của đồ thị G hình 1.7 12

Bảng 1.2 Ma trận liên thuộc của đồ thị G hình 1.7 14

Bảng 1.3 Danh sách cạnh của đồ thị G hình 1.7 14

Bảng 2.1 Các bước thực hiện thuật toán Hierholzer để tìm chu trình Euler 29

Bảng 2.2 Các bước thực hiện thuật toán Hierholzer để tìm đường đi Euler 30

Bảng 3.1 Kết quả của đồ thị Domino 38

Bảng 3.2 Số cạnh nối thêm giữa các cặp đỉnh bậc lẻ 42

Bảng 3.3 Cách chọn cặp đỉnh bậc lẻ và số cạnh nối thêm 43

Bảng 3.4 Chu trình Euler tìm được với đồ thị G T 45

Trang 7

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Trang

Hình 1.1 Đồ thị vô hướng với 7 đỉnh và 8 cạnh 4

Hình 1.2 Đồ thị đầy đủ với 5 đỉnh 5

Hình 1.3 Đồ thị có vectơ bậc [3, 3, 2, 2] 6

Hình 1.4 Đồ thị có vectơ bậc [5, 4, 4, 3, 3, 3, 2] 8

Hình 1.5 Đồ thị vô hướng liên thông 9

Hình 1.6 Đồ thị vô hướng G với 7 đỉnh 8 cạnh 10

Hình 1.7 Đồ thị vô hướng G với 5 đỉnh 8 cạnh 12

Hình 2.1 Đồ thị G với 6 đinh 8 cạnh 15

Hình 2.2 Đồ thị vô hướng G với 6 đỉnh bậc chẵn 19

Hình 2.3 Đồ thị G sau khi xóa cạnh (1,2) 20

Hình 2.4 Đồ thị G sau khi xóa cạnh (1,2), (2,3) 21

Hình 2.5 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4) 22

Hình 2.6 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4, 5) và đỉnh 4 23

Hình 2.7 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6) và đỉnh 4 23

Hình 2.8 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2) và đỉnh 4 24

Hình 2.9 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5) và xóa đỉnh 4, 2 25

Trang 8

Hình 2.10 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5),(5,3) và

xóa đỉnh 4, 2, 5 26

Hình 2 11 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2),(2,5),(5,3), (3,6) và xóa đỉnh 4, 2, 5, 3 26

Đồ thị G : Đồ thị gồm 6 đỉnh bậc chẵn V={1, 2, 3, 4, 5, 6} ; tập cạnh E={a, b, c, d, e, f, g, h, i, j} 28

Hình 2.13 Đồ thị vô hướng G liên thông có 2 đỉnh bậc lẻ 30

Hình 3.1 Bảy cây cầu bên bờ sông của thành phố Königsberg 35

Hình 3.2 Đồ thị biểu diễn bảy cây cầu ở hình 3.1 36

Hình 3.3 Đồ thị Domino 37

Hình 3.4 Bản đồ khu vực thanh tra 39

Hình 3.5 Đồ thị biểu diễn bản đồ ở hình 3.4 40

Hình 3.6 Đồ thị G T có được khi thêm cạnh (các nét đứt là các cạnh nối thêm) 44

Trang 9

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

LỜI MỞ ĐẦU

Những vấn đề cơ bản của lý thuyết đồ thị được đề xuất từ thế kỷ XVIII, bắt đầu từ bài báo của Euler công bố năm 1736 liên quan đến lời giải bài toán nổi tiếng về các cây cầu ở Königsberg Tại thành phố Königsberg nước Đức có sông Pregel bao quanh 2 đảo lớn Hai đảo này được nối với các vùng đất thành phố bởi 7 cây cầu Cư dân thành phố đặt ra bài toán: có thể xuất phát tại một điểm và

đi qua 7 cây cầu, mỗi cây cầu chỉ được đi qua đúng một lần, và trở về điểm xuất phát được không? Và nhà toán học L.Euler đã trả lời trọn vẹn cho bài toán này Người ta lấy tên cho bài toán trên là tên của nhà toán học Euler Tuy nhiên, cho tới nay mối quan tâm đến lý thuyết đồ thị không hề suy giảm Lý do của sự quan tâm ấy chính là sự vận dụng rộng rãi của đồ thị trong rất nhiều lĩnh vực khác nhau Chẳng hạn, đồ thị có thể xác định các mạch vòng trong vấn đề giải tích mạch điện Chúng ta có thể phân biệt các hợp chất hóa học hữu cơ khác nhau với cùng công thức phân tử nhưng khác nhau về cấu trúc phân tử nhờ đồ thị Chúng

ta có thể xác định xem hai máy tính trong mạng có thể trao đổi thông tin được với nhau hay không nhờ mô hình đồ thị mạng máy tính Đồ thị có trọng số trên các cạnh có thể sử dụng để giải các bài toán như: Tìm đường đi ngắn nhất giữa hai thành phố trong một mạng giao thông Chúng ta cũng còn sử dụng đồ thị để giải các bài toán về lập lịch, thời khóa biểu, và phân bố tần số cho các trạm phát thanh truyền hình

Hiện nay, một vài tài liệu viết về nội dung này được đưa vào giảng dạy như

hay Toán rời rạc của Nguyễn Đức Nghĩa, Nguyễn Tô Thành [2] Trong cuốn

Trang 10

giải thuật và lập trình [4] của Lê Minh Hoàng đã trình bày lại thuật toán fleury

để tìm chu trình Euler

Tuy nhiên, đối với những bài toán trong thực tế, lượng dữ liệu vào cũng như

dữ liệu ra là tương đối lớn Một số bài toán có số lượng các đỉnh đến hàng nghìn, tương ứng với nó là số lượng kết quả đưa ra có thể lên đến hàng trăm nghìn, ví

dụ như bài toán kiểm thử tốc độ tính toán của các thuật toán dùng trong các bộ

tìm kiếm trên mạng Với một đồ thị như trên, lượng đỉnh và cạnh của đồ thị là lớn cho nên ta cần có được cách tổ chức dữ liệu cho hợp lý cho bài toán là một vấn đề cần đặt ra

Luận văn tìm hiểu các thuật toán về chu trình Euler và cách tổ chức dữ liệu cho bài toán, từ đó đưa ra thuật toán tối ưu nhất cho dạng bài qua nghiên cứu

sáng tạo trong thuật toán và lập trình [3] và dưới sự hướng dẫn của GS.TSKH

Nguyễn Xuân Huy với tên đề tài:

"Các thuật toán về đường đi và chu trình Euler và ứng dụng"

Nội dung luận văn được trình bày thành ba chương:

Chương 1 giới thiệu đại cương về đồ thị, các định nghĩa cơ bản về đồ thị như

đồ thị có hướng, đường đi, chu trình của đồ thị

Chương 2 tìm hiểu về đồ thị Euler, điều kiện cần và đủ, các thuật toán về đường đi Euler như thuật toán Fluery, thuật toán Hierholzer và cách tổ chức lại

dữ liệu sao cho thuật toán tối ưu

Chương 3 áp dụng thuật toán tìm đường đi và chu trình Euler trong một số bài toán điển hình và bài toán Thanh tra giao thông

Trang 11

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Trong chương 1 sẽ trình bày những khái niệm tổng quan cơ bản về lý thuyết

đồ thị như: định nghĩa một đồ thị, bậc của đồ thị, tính liên thông, đường đi, chu trình của đồ thị …

Trang 12

Hình 1.1 Đồ thị vô hướng với 7 đỉnh và 8 cạnh

Hình 1.1 là một đồ vô hướng bao gồm:

Bậc của đỉnh v V là tổng số cạnh liên thuộc với nó và ký hiệu là d(v) Nếu đỉnh

có khuyên thì mỗi khuyên được tính là 2 khi tính bậc, như vậy

d(v) = số cạnh liên thuộc + 2* Số khuyên

Từ định nghĩa suy ra đỉnh cô lập trong đồ thị đơn là đỉnh có bậc bằng 0

Số bậc lớn nhất của G ký hiệu là ∆(G), số bậc nhỏ nhất của G ký hiệu là δ(G)

Trang 13

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Cho G = (V, E) là đồ thị có hướng, v V, nửa bậc ra của đỉnh v, ký hiệu là d0(v) là

số cung đi ra từ đỉnh v (v là đỉnh đầu) và nửa bậc vào của đỉnh v V, ký hiệu là di(v) là

số cung đi tới đỉnh v ( v là đỉnh cuối)

Trang 14

3

4

Trang 15

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Sử dụng định lý Hakimi- Havel ta có thể đưa ra thuật toán kiểm tra xem 1 vectơ có phải là vectơ đồ thị không như sau

Thuật toán 1.1 Kiểm tra vectơ đồ thị

* Đầu vào: vectơ v= [d1, d2, , dn] gồm n số nguyên giảm dần

* Đầu ra: kết luận v là vectơ đồ thị hay v không là vectơ đồ thị

* Các bước:

Bước 0( khởi tạo): Đặt k: = n và u: = v = [d1, d2, , dn]

Bước 1: Nếu u có thành phần lơn hơn ( k – 1) hoặc nhỏ hơn 0, thì sang bước 4 Bước 2: Nếu các thành phần của u đều là số 0 thì sang bước 5

Bước 3( Bước lặp): Cho u’ là vectơ nhận được từ u bằng cách bỏ thành phần d1 và trừ bớt 1 trong d1 thành phần tiếp theo Ký hiệu, u1 là vec tơ u’ trong đó các thành phần được sắp xếp giảm dần Đặt k: = n - 1 và u : = u1 Quay lại bước 1

Bước 4: kết luận: v không phải là vec tơ đồ thị Kết thúc

Bước 5: kết luận: v là vec tơ đồ thị Kết thúc

Ví dụ 1.2.4: Kiểm tra vectơ v =[5, 4, 4, 3, 3, 3, 2]

Bước 0: Đặt k:= 7, u = [5, 4, 4, 3, 3, 3, 2]

Bước lặp 1: k:= 7, u = [5, 4, 4, 3, 3, 3, 2], u’= [3, 3, 2, 2, 2, 2], u1= [3, 3, 2, 2, 2, 2] Bước lặp 2: k:= 6, u = [3, 3, 2, 2, 2, 2], u’= [2, 1, 1, 2, 2], u1= [2, 2, 2, 1, 1]

Trang 16

Hình 1.4 Đồ thị có vectơ bậc [5, 4, 4, 3, 3, 3, 2]

1.3 Đường đi, chu trình, tính liên thông

Định nghĩa 1.7

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

Dây từ đỉnh v đến đỉnh w là dãy các đỉnh và cạnh nối tiếp nhau bắt đầu từ đỉnh v

và kết thúc tại đỉnh w Số cạnh trên dãy gọi là độ dài của dãy

Dây từ đỉnh v đến đỉnh n được biểu diễn như sau

Đường đi sơ cấp là đường đi không đi qua một đỉnh quá 1 lần

Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng nhau

Chu trình sơ cấp là chu trình không đi qua một đỉnh quá 1 lần

7

2

Trang 17

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Đồ thị vô hướng gọi là liên thông, nếu mọi cặp đỉnh của nó đều có đường đi nối

chúng với nhau

Thí dụ 1.3.1

Hình 1.5 Đồ thị vô hướng liên thông

Trong Hình 1.5 đồ thị G là đồ thị liên thông có:

Đường đi từ đỉnh 1 đến đỉnh 4 là (1, 5) – (5, 4) hoặc (1, 2) – (2, 3) – (3, 4)

Trang 18

Nếu F E, thì ký hiệu G-F là đồ thị con (V, E-F) của G gồm tập đỉnh V và tập cạnh (cung) E-F

Nếu U V, thì ký hiệu G-U là đồ thị con của G thu được từ G sau khi loại bỏ các đỉnh trong U và các cạnh liên thuộc chúng

Cho U V Đồ thị con của G sinh bởi U, ký hiệu <U>, là đồ thị (U, EU) với

EU = {e E / e liên thuộc đỉnh trong U}

Đồ thị con G’ = (V’, E’) của đồ thị (có hướng) G = (V, E) gọi là thành phần liên

thông (mạnh) của đồ thị G, nếu nó là đồ thị con liên thông (mạnh) tối đại của G, tức là

không tồn tại đồ thị con liên thông (mạnh) G’’ = (V’’, E’’) G’ của G thỏa V’ V’’, E’ E’’

Ví dụ1.3.2 Xét đồ thị G = (V, E)

Hình 1.6 Đồ thị vô hướng G với 7 đỉnh 8 cạnh

Đồ thị G1 = (V1, E1), với V1 = {1, 2, 5, 7} và E1 = {(1, 1); (1, 2); (1, 5); (2, 5)} là đồ thị con của đồ thị G nhưng không phải thành phần liên thông

Đồ thị G2 = {V-{7}, E} là thành phần liên thông của G

Đồ thị G3 = {7} là thành phần liên thông của G

Trang 19

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Ghi chú: Đồ thị là liên thông khi và chỉ khi số thành phần liên thông của nó bằng 1

Định lý 1.11 Cho đồ thị đơn G = (V, E) với n đỉnh, và k thành phần liên thông Khi đó

số cạnh m của đồ thị thỏa bất đẳng thức

n – k m

2

)1)(

(n k n k

Hệ quả 1.2 Mọi đơn đồ thị n đỉnh với số cạnh lớn hơn

2

)2)(

1(n n

là liên thông Định nghĩa 1.12

Cho đồ thị G = (V, E) liên thông

Tập cạnh F E gọi là tập hợp tách cạnh của đồ thị liên thông G, nếu G-F không

liên thông Hơn nữa, nếu F là tập hợp tách cạnh cực tiểu(tức không tồn tại F’ F, F’

F, F’ là tập tách cạnh), thì F gọi là tập cắt cạnh Nếu tập cắt cạnh chỉ có 1 cạnh, thì cạnh đó gọi là cầu

Đại lượng

gọi là số liên thông cạnh của G

Đồ thị G gọi là k cạnh liên thông, nếu mọi tập tách cạnh có ít nhất k cạnh

Ghi chú Từ định nghĩa ta có

(G) k k, G là k cạnh liên thông

Và (G) = max{k / G là k cạnh liên thông}

1.4 Biểu diễn đồ thị vô hướng

1.4.1 Ma trận kề

Định nghĩa 1.13: Cho đồ thị vô hướng G = (V , E) có n đỉnh theo thứ tự v1, v2, …,

vn Ma trận kề của đồ thị G là ma trận vuông A = (aij)nxn , trong đó aij là cạnh nối vi với

vj Lưu ý rằng mỗi khuyên được tính là hai cạnh.[2]

Từ định nghĩa suy ra rằng ma trận kề của đồ thị vô hướng luôn luôn đối xứng qua đường chéo chính

Ví dụ 1.4.1.1 Đồ thị

Trang 20

Hình 1.7 Đồ thị vô hướng G với 5 đỉnh 8 cạnh

Cho đồ thị đơn G = (V, E) có n đỉnh, V = {v1, v2, …, vn} và có ma trận kề của đồ thị

G là ma trận A = (aij)nxn Giả sử Ak = (cij)nxn , k 1 Khi đó cij, i j, là số các dãy có

Trang 21

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

chiều dài k từ đỉnh vi đến đỉnh vj Đặc biệt phần tử trên ô [i, j] , 1 i n, của A2 là bậc của đỉnh vi

Nếu đồ thị là lưỡng phân thì ta có thể đánh số lại các đỉnh và ma trận kề có dạng

1.4.2 Ma trận liên thuộc

Một cách thường dùng nữa để biểu diễn đồ thị là dùng ma trận liên thuộc Giả sử

G = (V, E) là một đồ thị vô hướng với các đỉnh v1, v2, … vn và các cạnh là e1, e2, … em [2]

Khi đó ma trận liên thuộc M = [mij] kích thước n x m trong đó:

mij = 0 nếu cạnh ej không nối với đỉnh vi

mij = 1 nếu cạnh ej nối với đỉnh vi

Thí dụ 1.4.2.1

Giả sử e1={1, 2}; e2={1, 3}; e3={1, 5}; e4={2, 4}; e5={2, 4}; e6={3, 5}; e7={3, 5};

Trang 22

Khi đó ma trận liên thuộc tương ứng sẽ là:

Trang 23

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

CHƯƠNG 2

CÁC THUẬT TOÁN VÀ TỔ CHỨC DỮ LIỆU

2.1 Chu trình, đường đi Euler

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

Đồ thị chứa chu trình Euler gọi là Đồ thị Euler

Trang 24

G hiển nhiên liên thông

(ii) : Giả sử G liên thông và mọi đỉnh có bậc chẵn khác 0 Ta chứng minh G có chu trình Euler quy nạp theo số cạnh m của G

+) m = 1 : Vì G liên thông và mọi đỉnh có bậc chẵn nên G chỉ có 1 đỉnh và 1 khuyên Khuyên đó cũng tạo thành chu trình Euler

+) Giả sử G có m cạnh, số đỉnh n > 0 và mọi đồ thị liên thông có số cạnh nhỏ hơn

m với mọi đỉnh có bậc chẵn đều có chu trình Euler

- Trường hợp n = 1 hoặc n = 2 thì hiển nhiên tồn tại chu trình Euler

- Trường hợp n > 2 Vì bậc của các đỉnh chẵn 2, bao giờ cũng chọn được 3 đỉnh

a, b, c với các cạnh x=(a, b) ; y=(a, c)

*/ G’ có 2 thành phần liên thông G1 và G2 Không mất tính tổng quát giả sử G1chứa a, G2 chứa b và c G1 có chu trình Euler C1, G2 có chu trình Euler C2 Ta xây dựng chu trình Euler của G như sau:

Trang 25

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Xuất phát từ đỉnh a ta đi theo chu trình C1, quay về a sau đó ta đi theo cạnh x=(a, b) đến đỉnh b, rồi từ b đi theo chu trình C2 quay về b, sau đó đi theo cạnh z = (b, c), y=(c, a) quay về a

*/ G’ có 3 thành phần liên thông G1, G2 và G3 Không mất tính tổng quát giả sử G1chứa a, G2 chứa b và G3 chứa c G1 có chu trình Euler C1, G2 có chu trình Euler C2

G3 có chu trình Euler C3 Ta xây dựng chu trình Euler C của G như sau :

Xuất phát từ đỉnh a ta đi theo chu trình C1, quay về a sau đó ta đi theo cạnh x=(a, b) đến đỉnh b, rồi từ b đi theo chu trình C2 quay về b, sau đó đi theo cạnh z = (b, c) đến đỉnh c, rồi từ c đi theo chu trình C3 quay về c sau đó đi theo cạnh y=(c, a) quay về a

Giả sử G không chứa cạnh z = (b, c)

Xét đồ thị G’ thu được từ G bằng cách loại bỏ hai cạnh x, y và thêm cạnh z, sẽ xảy

ra một trong hai khả năng sau :

*/ G’ liên thông, vì số cạnh của G’ nhỏ hơn m và các đỉnh vẫn có bậc chẵn nên theo giả thiết quy nạp tồn tại chu trình Euler C’ của G’ Thay cạnh z C' bằng cạnh x

và y ta thu được chu trình Euler C của G

*/ G’ có 2 thành phần liên thông G1 và G2 Không mất tính tổng quát giả sử G1chứa a, G2 chứa b và c G1 có chu trình Euler C1, G2 có chu trình Euler C2 Ta xây dựng chu trình Euler của G như sau:

Thay cạnh z C2 bằng các cạnh x và y ta có chu trình C2’ Nối C2’ với C1 ta thu được chu trình Euler C của G

Định lý 2.2

Cho đồ thị G có k đỉnh bậc lẻ Khi đó số đường đi tối thiểu phủ G là k/ 2

Chứng minh :

Ta đã biết số đỉnh bậc lẻ là chẵn, k = 2n, chứng minh quy nạp theo n ta có :

*/ n = 1 : Đồ thị có 2 đỉnh bậc lẻ nối với nhau bằng cạnh z ta thu được đồ thị G’ thỏa mãn định lí Euler Như vậy G’ có chu trình Euler C’ Bỏ cạnh z trên C’ ta thu được đường đi Euler phủ G

Trang 26

*/ Giả sử G có số đỉnh bậc lẻ là 2n và định lý đúng với k < 2n nối 2 đỉnh bậc lẻ a, b nào đó với nhau bằng cạnh z ta thu được đồ thị G’ có 2n -2 đỉnh bậc lẻ Theo giải thiết quy nạp G’ có n-1 đường đi phủ G’ Gọi P là đường đi qua cạnh z Hiển nhiên a, b không phải đỉnh đầu hoặc cuối của P, vì vậy nếu bỏ cạnh z ta thu được 2 đường đi P1

và P2 cùng với n-2 đường đi còn lại phủ đồ thị G

2.2 Các thuật toán tìm chu trình Euler

2.2.1 Thuật toán Fleury

* Đầu vào: Đồ thị G , không có đỉnh cô lập

* Đầu ra: Chu trình Euler C của G, hoặc kết luận G không có chu trình Euler

* Phương pháp:

(1) Chọn đỉnh xuất phát bất kỳ v0 đặt v1 := v0 , C := (v0) , H := G

(2) Nếu H = , thì kết luận C là chu trình Euler, kết thúc

Ngược lại sang bước (3)

(3) Chọn cạnh đi tiếp :

- Trường hợp đỉnh v1 là đỉnh treo : tồn tại duy nhất đỉnh v2 kề v1

Chọn cạnh (v1, v2) Sang bước (4)

- Trường hợp đỉnh v1 không là đỉnh treo:

Nếu mọi cạnh liên thuộc v1 là cầu, thì không có chu trình Euler, kết thúc

Ngược lại chọn cạnh (v1, v2) bất kì không phải là cầu trong H

Thêm vào đường đi C đỉnh v2 Sang bước (4)

(4) Xóa cạnh vừa đi qua, và xóa đỉnh cô lập

Loại khỏi H cạnh (v1, v2) Nếu H có đỉnh cô lập thì loại chúng khỏi H

Đặt v1:= v2 sang bước (2) [1]

Thí dụ 2.2.1

Cho G là đồ thị hình sau:

Trang 27

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.2 Đồ thị vô hướng G với 6 đỉnh bậc chẵn

Đồ thị liên thông và có các đỉnh bậc chẵn, thực hiện các bước tìm chu trình Euler như sau :

(1) : chọn đỉnh xuất phát là đỉnh 1, đặt v1=1, C := (1), H := {(1, 2) ; (1, 6) ; (2, 3) ; (2, 5) ; (2, 6) ; (3, 4) ; (3, 5) ; (3, 6) ; (4, 5) ; (5, 6)}

(2) : H ≠ sang bước (3)

(3) : Chọn cạnh đi kế tiếp là cạnh (1, 2) hoặc (1, 6) (cả hai không là cầu), ta chọn cạnh (1, 2) khi đó C = {1, 2} sang bước (4)

(4) : xóa cạnh vừa qua và xóa đỉnh cô lập

Loại cạnh (1, 2) khỏi H, khi đó H = {(1, 6) ; (2, 3) ; (2, 5) ; (2, 6) ; (3, 4) ; (3, 5) ; (3, 6) ; (4, 5) ; (5, 6)}

Trang 28

Hình 2.3 Đồ thị G sau khi xóa cạnh (1,2)

đỉnh v1=2 quay lại bước (2)

(2) : H ≠ sang bước (3)

(3) : Chọn cạnh đi kế tiếp là cạnh (2, 3) khi đó C = {1, 2, 3} sang bước (4)

(4) : xóa cạnh vừa qua và xóa đỉnh cô lập

Loại cạnh (2, 3) khỏi H, khi đó H = {(1, 6) ; (2, 5) ; (2, 6) ; (3, 4) ; (3, 5) ; (3, 6) ; (4, 5) ; (5, 6)}

Trang 29

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.4 Đồ thị G sau khi xóa cạnh (1,2), (2,3)

đỉnh v1=3 quay lại bước (2)

(2) : H ≠ sang bước (3)

(3) : Chọn cạnh đi kế tiếp là cạnh (3, 4) khi đó C = {1, 2, 3, 4} sang bước (4)

(4) : xóa cạnh vừa qua và xóa đỉnh cô lập

Loại cạnh (2, 3) khỏi H, khi đó H = {(1, 6) ; (2, 5) ; (2, 6) ; (3, 5) ; (3, 6) ; (4, 5) ; (5, 6)}

Trang 30

Hình 2.5 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4)

đỉnh v1=4 quay lại bước (2)

Trang 31

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.6 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4, 5) và đỉnh 4

đỉnh v1=5 quay lại bước (2)

(2) : H ≠ sang bước (3)

(3) : Chọn cạnh đi kế tiếp là cạnh (5, 6) khi đó C = {1, 2, 3, 4, 5, 6} sang bước (4) (4) : xóa cạnh vừa qua và xóa đỉnh cô lập

Loại cạnh (5, 6) khỏi H, khi đó H = {(1, 6) ; (2, 5); (2, 6); (3, 5); (3, 6)} Hình 2.7

Hình 2.7 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6) và đỉnh 4

Trang 32

đỉnh v1=6 quay lại bước (2)

(2) : H ≠ sang bước (3)

(3) : Chọn cạnh đi kế tiếp là cạnh (6, 2) hoặc (6, 3) vì cạnh (6, 1) là cầu, ta chọn cạnh (6, 2) khi đó C = {1, 2, 3, 4, 5, 6, 2} sang bước (4)

(4) : xóa cạnh vừa qua và xóa đỉnh cô lập

Loại cạnh (6, 2) khỏi H, khi đó H = {(1, 6) ; (2, 5); (3, 5); (3, 6)} Hình 2.8

Hình 2.8 Đồ thị G sau khi xóa cạnh (1,2), (2,3), (3,4), (4,5), (5,6),(6,2) và đỉnh 4

đỉnh v1=2 quay lại bước (2)

(2) : H ≠ sang bước (3)

(3) : Chọn cạnh đi kế tiếp là cạnh (2, 5) khi đó C = {1, 2, 3, 4, 5, 6, 2, 5} sang bước (4)

(4) : xóa cạnh vừa qua và xóa đỉnh cô lập

Loại cạnh (2, 5) và đỉnh cô lập 2 khỏi H, khi đó H = {(1, 6); (3, 5); (3, 6)} Hình 2.9

Ngày đăng: 23/11/2014, 00:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Kenneth H.Rosen, Toán rời rạc ứng dụng trong Tin học (Bản dịch), NXB Khoa học và Kỹ thuật, 2000 Sách, tạp chí
Tiêu đề: Toán rời rạc ứng dụng trong Tin học
Nhà XB: NXB Khoa học và Kỹ thuật
[2] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc, NXB Đại học Quốc Gia Hà Nội, 2003 Sách, tạp chí
Tiêu đề: Toán rời rạc
Nhà XB: NXB Đại học Quốc Gia Hà Nội
[3] Nguyễn Xuân Huy, Sáng tạo trong thuật toán và lập trình, NXB Thông tin và truyền thông 2011 Sách, tạp chí
Tiêu đề: Sáng tạo trong thuật toán và lập trình
Nhà XB: NXB Thông tin và truyền thông 2011
[4] Lê Minh Hoàng, Giải thuật &amp; lập trình, Đại học sư phạm Hà Nội 1999 - 2002.Tiếng Anh Sách, tạp chí
Tiêu đề: Giải thuật & lập trình
[5] S. Pemmaraju, and S. Skiena, Computational Discrete Mathematics: Combinatorics and Graph Theory with Mathematica. Cambridge, England Sách, tạp chí
Tiêu đề: Computational Discrete Mathematics: "Combinatorics and Graph Theory with Mathematica

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w