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

ỨNG DỤNG LẬP TRÌNH SYMBOLIC ĐỂ TÌM ĐƯỜNG ĐI, CHU TRÌNH EULER VÀ HAMILTON

36 1K 2

Đ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 36
Dung lượng 269,41 KB

Nội dung

1.1.8 Tính liên thông Một đồ thị vô hướng G = V, E được gọi là liên thông nếu có đường đigiữa mọi cặp đỉnh phân biệt của đồ thị.. Một đồ thị có hướng gọi là liên thông mạnh nếu có đường

Trang 1

ĐỂ TÌM ĐƯỜNG ĐI, CHU TRÌNH EULER VÀ HAMILTON

MSHV: CH1101098 LỚP: CH-K6

Trang 2

LỜI MỞ ĐẦU

Lý thuyết đồ thị là một ngành khoa học được phát triển từ lâu, nhưng có nhiềuứng dụng hiện đại nhất là ứng dụng trong tin học ngày nay Những ý tưởng cơbản của nó được đưa ra từ thế kỷ XVIII bởi nhà toán học Thụy Sĩ tên làLeonhard Euler Ông đã dùng đồ thị để giải quyết bài toán nổi tiếng về cáccầu ở Konigsberg hay còn gọi là bài toán 7 chiếc cầu

Đặc biệt trong khoảng vài mươi năm trở lại đây, cùng với sự ra đời của máytính điện tử và sự phát triển nhanh chóng của Tin học, Lý thuyết đồ thị càngđược quan tâm nhiều hơn Đặc biệt là các thuật toán trên đồ thị đã có nhiềuứng dụng trong nhiều lĩnh vực khác như: Mạng máy tính, Lý thuyết mã, Tối

ưu hoá, Kinh tế học v.v

Phạm vi của bài thu hoạch sẽ khảo sát và cài đặt ứng dụng minh họa, giảiquyết bài toán tìm đường đi, chu trình Euler và Hamilton dựa trên sự hỗ trợcủa phần mền toán học Maple 16

Maple 16 là phần mềm toàn diện để giải quyết các bài toán cao cấp Bao gồmnhững công cụ xử lý, tính toán trong các lĩnh vực toán học như :

 Đại số tuyến tính: ma trận, định thức, hệ phương trình tuyến tính,không gian véctơ,

 Giải tích: hàm số, giới hạn, liên tục, đạo hàm, tích phân, phương trình

vi phân, chuỗi …

Trang 3

 Lý thuyết đồ thị: đỉnh, cung, liên thông, đường đi, chu trình,

 Đồ họa, Toán rời rạc, Thống Kê, … và nhiều lĩnh vực khác của toánhọc

Với trên 3000 hàm số Maple là một trợ lý toán học tuyệt vời giúp giải quyếtphần tính toán trong học tập và nghiên cứu

Nội dung của bài thu hoạch bao gồm 4 chương, chủ yếu lựa chọn và sắp xếpnhững nội dung then chốt nhất trong khoảng thời gian cho phép Bài thuhoạch trình bày và giới thiệu một cách tương đối hệ thống những kiến thức cơbản về đồ thị Euler và đồ thị Hamilton

Nội dung chương 1 trình bày tổng quan các khái niệm cơ bản về lýthuyết đồ thị, đồng thời giới thiệu cách để biểu diễn đồ thị trên máytính

Chương 2 trình bày tổng quan các khái niệm cơ bản về đồ thị Eulernhư: đường đi Euler, chu trình Euler và các giải thuật

Chương 3 trình bày tổng quan các khái niệm cơ bản về đồ thị Hamiltonnhư: đường đi Hamilton, chu trình Hamilton

Chương 4 sẽ cài đặt ứng dụng minh họa cho bài toán tìm đường đi, chu trình Euler và Hamilton dựa trên sự hỗ trợ của phần mền toán học Maple 16.

Trang 4

LỜI CẢM ƠN

Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở khoa, Khoa HọcMáy Tính - Trường Đại Học Công Nghệ Thông Tin đã đem hết tâm huyếttruyền đạt vốn kiến thức quý báu cho chúng em

Em xin chân thành cảm ơn PGS.TS Đỗ Văn Nhơn đã truyền đạt kiến thứcmôn Lập trình Symbolic & trí tuệ nhân tạo Qua đó giúp em có đầy đủ kiếnthức để hoàn thành bài thu hoạch này

Nhân đây em cũng xin gửi lời cảm ơn chân thành đến gia đình, bạn bè, đồngnghiệp đã động viên tin thần cho em trong suốt quá trình học tập của mình.Sau cùng, em xin kính chúc quý Thầy Cô, Khoa Học Máy Tính cùng PGS.TS

Đỗ Văn Nhơn dồi dào sức khỏe để thực hiện sứ mệnh cao đẹp của mình làtruyền đạt kiến thức cho thế hệ mai sau

Một lần nữa em xin chân thành cảm ơn !

Trang 5

TP HCM, ngày 02 tháng 02 năm 2013 Sinh viên thực hiện

(ký và ghi rõ họ tên)

Nguyễn Ngọc Lâm NHẬN XÉT CỦA GIẢNG VIÊN PHỤ TRÁCH

Trang 6

TP HCM, ngày tháng năm 2013 Giảng viên phụ trách (ký và ghi rõ họ tên) PGS TS Đỗ Văn Nhơn MỤC LỤC LỜI MỞ ĐẦU

Trang 7

LỜI CẢM ƠN

NHẬN XÉT CỦA GIẢNG VIÊN PHỤ TRÁCH

Chương 1 TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ 1

1.1 Các khái niệm cơ bản về đồ thị 1

1.1.1 Định nghĩa đồ thị (Graph) 1

1.1.2 Đơn đồ thị 1

1.1.3 Đa đồ thị 1

1.1.4 Đồ thị vô hướng 1

1.1.5 Đồ thị có hướng 1

1.1.6 Bậc của đỉnh 2

1.1.7 Đường đi và chu trình 2

1.1.8 Tính liên thông 2

1.1.10 Điểm khớp 3

1.1.11 Cầu của đồ thị 3

1.2 Biểu diễn đồ thị trên máy tính 3

1.2.1 Ma trận kề 3

1.2.2 Danh sách kề 4

1.2.3 Danh sách cạnh 5

Chương 2 ĐƯỜNG ĐI EULER VÀ ĐỒ THỊ EULER 6

2.1 Tình huống dẫn nhập: “Bài toán 7 cây cầu” 6

2.2 Đường đi Euler và đồ thị Euler 6

2.2.1 Định nghĩa 6

Trang 8

2.2.2 Các định lý 7

2.2.3 Thuật toán Fleury tìm chu trình Euler 8

Chương 3 ĐƯỜNG ĐI HAMILTON VÀ ĐỒ THỊ HAMILTON 9

3.1 Tình huống dẫn nhập: “Đi vòng quanh thế giới” 9

3.2 Đường đi Hamilton và đồ thị Hamilton 10

3.2.1 Định nghĩa 10

3.2.2 Các định lý 10

3.2.3 Thuật toán tìm chu trình Hamilton 11

Chương 4 CÀI ĐẶT ỨNG DỤNG MINH HỌA 12

4.1 Đường đi và chu trình Euler 12

4.1.1 Phát biểu bài toán về các cầu ở Konigsberg 12

4.1.2 Cấu trúc dữ liệu cho giải thuật Fleury 12

4.1.3 Giải thuật Fleury tìm chu trình Euler 13

4.1.4 Tìm hiểu chức năng một số hàm thuộc thư viện GraphTheory 14

4.1.5 Thủ tục cho giải thuật Fleury 15

4.1.6 Dữ liệu thử nghiệm 16

4.2 Đường đi và chu trình Hamilton 19

4.1.1 Phát biểu bài toán “Đi vòng quanh thế giới” 19

4.1.2 Cấu trúc dữ liệu giải thuật tìm đường đi, chu trình Hamilton 19

4.1.3 Giải thuật tìm đường đi, chu trình Hamilton 19

4.1.5 Thủ tục cho giải thuật tìm đường đi và chu trình Hamilton 21

4.1.6 Dữ liệu thử nghiệm 22

Trang 9

KẾT LUẬN TÀI LIỆU THAM KHẢO

DANH MỤC CÁC BẢNG

Trang 10

Chương 1 TỔNG QUAN VỀ LÝ THUYẾT ĐỒ THỊ

1.1 Các khái niệm cơ bản về đồ thị

1.1.1 Định nghĩa đồ thị (Graph)

Là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các đỉnh đó Được

mô tả hình thức:

G = (V, E)Trong đó:

Trang 11

u, v bất kỳ tương đương với hai cung (u, v) và (v, u).

Hình 1.1 Phân loại đồ thị

1.1.6 Bậc của đỉnh

Bậc của đỉnh v trong đồ thị G = (V, E), ký hiệu deg(v), là số các cạnh liênthuộc với nó, riêng khuyên tại một đỉnh được tính hai lần cho bậc của nó.Đỉnh v gọi là đỉnh treo nếu deg(v) = 1 và gọi là đỉnh cô lập nếu deg(v) = 0

Trang 12

1.1.7 Đường đi và chu trình

Đường đi độ dài n từ đỉnh u tới đỉnh v, với n là một số nguyên không âmtrong một đồ thị vô hướng là một dãy các cạnh {x0, x1},{x1, x2},…,{xn-1,

xn}, với u = x0 và xn = v Đường đi được gọi là một chu trình nếu nó bắt đầu

và kết thúc tại cùng một đỉnh

1.1.8 Tính liên thông

Một đồ thị vô hướng G = (V, E) được gọi là liên thông nếu có đường đigiữa mọi cặp đỉnh phân biệt của đồ thị

Một đồ thị có hướng gọi là liên thông mạnh nếu có đường đi từ a tới b và từ

b tới a với mọi đỉnh a và b của đồ thị

Một đồ thị có hướng gọi là liên thông yếu nếu luôn tồn tại đường đi giữahai đỉnh khi ta không quan tâm tới hướng của các cạnh

1.1.9 Thành phần liên thông

Thành phần liên thông: một đồ thị G = (V, E) không liên thông là hợp củahai hay nhiều đồ thị con liên thông Mỗi cặp các đồ thị con này không cóđỉnh chung Các đồ thị con liên thông rời nhau như vậy được gọi là cácthành phần liên thông của đồ thị G = (V, E)

1.1.10 Điểm khớp

Một đỉnh v được gọi là điểm khớp của đồ thị G = (V, E) nếu loại bỏ v cùngcác cạnh liên thuộc với nó khỏi đồ thị sẽ làm tăng số thành phần liên thôngcủa đồ thị

Trang 13

1.1.11 Cầu của đồ thị

Một cạnh của đồ thị G = (V, E) gọi là cầu, nếu loại bỏ cạnh đó khỏi đồ thị

sẽ làm tăng số thành phần liên thông của đồ thị

1.2 Biểu diễn đồ thị trên máy tính

1.2.1 Ma trận kề

Giả sử G = (V, E) là một đơn đồ thị với n đỉnh Khi đó ta có thể biểu diễn

đồ thị bằng một ma trận vuông A = a[i, j] cấp n Trong đó:

 aij = 0 nếu không có cạnh nối đỉnh i với đỉnh j

 aij = 1 nếu có cạnh nối đỉnh i với đỉnh j

Ví dụ: Cho đồ thị vô hướng G = (V, E) như hình dưới đây

Hình 1.2 Ma trận kề

Ưu điểm:

 Đơn giản, trực quan, dễ cài đặt trên máy tính

 Để kiểm tra xem hai đỉnh (u, v) của đồ thị có kề nhau hay không, tachỉ việc kiểm tra bằng một phép so sánh: a[u, v] ≠ 0

Nhược điểm:

V1

V

5

V4

V2

V3

Trang 14

 Bất kể số cạnh của đồ thị là nhiều hay ít, ma trận liền kề luôn luônđòi hỏi n2 ô nhớ để lưu các phần tử ma trận, điều đó gây lãng phí bộnhớ dẫn tới việc không thể biểu diễn được đồ thị với số đỉnh lớn.

1.2.2 Danh sách kề

Biểu diễn đồ thị bởi danh sách kề là cách liệt kê tất cả các cạnh của đồ thị{(v1, v2); (v1, v3); (v1, v5); (v2, v4); (v3, v4}); (v3, v5}); (v4, v5)} Hoặc là danhsách này chỉ rõ các đỉnh nối với mỗi đỉnh của đồ thị

ra là nối một đỉnh với một đỉnh khác kề nó

Nhược điểm:

 Về lý thuyết, so với hai phương pháp biểu diễn trên, danh sách kề tốthơn hẳn Chỉ có điều, trong trường hợp cụ thể mà ma trận kề haydanh sách cạnh không thể hiện nhược điểm thì ta nên dùng ma trận

Trang 15

kề (hay danh sách cạnh) bởi cài đặt danh sách kề có phần dài dònghơn.

1.2.3 Danh sách cạnh

Trong trường hợp đồ thị có n đỉnh, m cạnh, ta có thể biểu diễn đồ thị dướidạng danh sách cạnh, trong cách biểu diễn này, người ta liệt kê tất cả cáccạnh của đồ thị trong một danh sách, mỗi phần tử của danh sách là một cặp(u, v) tương ứng với một cạnh của đồ thị (Trong trường hợp đồ thị cóhướng thì mỗi cặp (u, v) tương ứng với một cung, u là đỉnh đầu và v là đỉnhcuối của cung) Danh sách được lưu trong bộ nhớ dưới dạng mảng hoặcdanh sách móc nối

 khi ta cần duyệt tất cả các đỉnh kề với đỉnh v nào đó của đồ thị, thìchẳng có cách nào khác là phải duyệt tất cả các cạnh, lọc ra nhữngcạnh có chứa đỉnh v và xét đỉnh còn lại Điều đó khá tốn thời giantrong trường hợp đồ thị có nhiều cạnh

Trang 16

Chương 2 ĐƯỜNG ĐI EULER VÀ ĐỒ THỊ EULER

2.1 Tình huống dẫn nhập: “Bài toán 7 cây cầu”

Thành phố Konigsberg thuộc Phổ (nay là Kaliningrad thuộc Cộng hoà Nga),được chia làm 4 vùng bằng các nhánh sông Pregel Các vùng này gồm 2 vùngbên bờ sông (B, C), đảo Kneiphof (A) và một miền nằm giữa hai nhánh sôngPregel (D) Vào thế kỷ XVIII, người ta đã xây 7 chiếc cầu nối những vùngnày với nhau Người dân ở đây tự hỏi: Liệu có cách nào xuất phát tại một địađiểm

trong thành phố, đi qua 7 chiếc cầu, mỗi chiếc đúng 1 lần rồi quay trở về nơixuất phát không ?

Nhà toán học Thụy sĩ Leonhard Euler đã giải bài toán này và có thể coi đây làứng dụng đầu tiên của Lý thuyết đồ thị, ông đã mô hình hoá sơ đồ 7 cái cầubằng một đa đồ thị, bốn vùng được biểu diễn bằng 4 đỉnh, các cầu là các cạnh.Bài toán tìm đường qua 7 cầu, mỗi cầu đúng một lần có thể tổng quát hoábằng bài toán: Có tồn tại chu trình đơn trong đa đồ thị chứa tất cả các cạnh ?

Hình 2.1 Mô hình đồ thị của bài toán 7 cây cầu

Trang 17

2.2 Đường đi Euler và đồ thị Euler

2.2.1 Định nghĩa

Chu trình đơn chứa tất cả các cạnh của đồ thị G được gọi là chu trình Euler.Đường đi Euler trong G là đường đi đơn chứa mọi cạnh của G Đồ thị đượcgọi là đồ thị Euler nếu nó có chu trình Euler, và gọi là đồ thị nửa Euler nếu

nó có đường đi Euler

Ví dụ: xét các đồ thị sau

Chú thích:

 Graph A: đồ thị không nửa Euler

 Graph B: đồ thị nửa Euler

 Graph C: đồ thị Euler

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

Trang 18

[2] Đa đồ thị liên thông có đường đi Euler nhưng không có chu trìnhEuler nếu và chỉ nếu có đúng hai đỉnh bậc lẻ.

[3] Một đồ thi có hướng liên thông yếu G = (V, E) có chu trình Euler thìmọi đỉnh của nó có bán bậc ra bằng bán bậc vào: deg + (v) = deg - (v)(∀v∈V); Ngược lại, nếu G liên thông yếu và mọi đỉnh của nó có bánbậc ra bằng bán bậc vào thì G có chu trình Euler, hay G sẽ là liênthông mạnh

[4] Một đồ thị có hướng liên thông yếu G = (V, E) có đường đi Eulernhưng không có chu trình Euler nếu tồn tại đúng hai đỉnh u, v ∈ V saocho deg + (u) – deg - (u) = deg - (v) – deg + (v) = 1, còn tất cả nhữngđỉnh khác u và v đều có bán bậc ra bằng bán bậc vào

2.2.3 Thuật toán Fleury tìm chu trình Euler

Đối với đồ thị vô hướng liên thông, mọi đỉnh đều có bậc chẵn: xuất phát từmột đỉnh, ta chọn một cạnh liên thuộc với nó để đi tiếp theo hai nguyên tắcsau:

 Mỗi khi đi qua một cạnh thì xoá nó đi, sau đó xoá đỉnh cô lập (nếucó)

 Không bao giờ đi qua một cầu, trừ phi không còn cách đi nào khác

Và ta cứ chọn cạnh đi một cách thoải mái như vậy cho tới khi không đi tiếpđược nữa, đường đi tìm được chính là chu trình Euler

Ví dụ: cho đồ thị vô hướng G = (V, E) như hình vẽ

Trang 19

Hình 2.2 Đồ thị EulerNếu xuất phát từ đỉnh 1, có hai cách đi tiếp: hoặc sang 2 hoặc sang 3, giả sử

ta sẽ sang 2 và xoá cạnh (1, 2) vừa đi qua Từ 2 chỉ có cách duy nhất làsang 4, nên cho dù (2, 4) là cầu ta cũng phải đi sau đó xoá luôn cạnh (2, 4).Đến đây, các cạnh còn lại của đồ thị có thể vẽ như trên bằng nét liền, cáccạnh đã bị xoá được vẽ bằng nét đứt Bây giờ đang đứng ở đỉnh 4 thì ta có

3 cách đi tiếp: sang 3, sang 5 hoặc sang 6 Vì (4, 3) là cầu nên ta sẽ không

đi theo cạnh (4, 3) mà sẽ đi (4, 5) hoặc (4, 6) Nếu đi theo (4, 5) và cứ tiếptục đi như vậy, ta sẽ được chu trình Euler là (1, 2, 4, 5, 7, 8, 6, 4, 3, 1) Còn

đi theo (4, 6) sẽ tìm được chu trình Euler là: (1, 2, 4, 6, 8, 7, 5, 4, 3, 1)

Chương 3 ĐƯỜNG ĐI HAMILTON VÀ ĐỒ THỊ HAMILTON 3.1 Tình huống dẫn nhập: “Đi vòng quanh thế giới”

Năm 1857, nhà toán học người Ailen là Hamilton(1805-1865) đưa ra trò chơi

“đi vòng quanh thế giới” như sau

Cho một hình thập nhị diện đều (đa diện đều có 12 mặt, 20 đỉnh và 30 cạnh),mỗi đỉnh của hình mang tên một thành phố nổi tiếng, mỗi cạnh của hình (nốihai đỉnh) là đường đi lại giữa hai thành phố tương ứng Xuất phát từ mộtthành phố, hãy tìm đường đi thăm tất cả các thành phố khác, mỗi thành phốchỉ một lần, rồi trở về chỗ cũ

Trang 20

Trước Hamilton, có thể là từ thời Euler, người ta đã biết đến một câu đố hócbúa về “đường đi của con mã trên bàn cờ” Trên bàn cờ, con mã chỉ có thể đitheo đường chéo của hình chữ nhật 2 x 3 hoặc 3 x 2 ô vuông Giả sử bàn cờ

có 8 x 8 ô vuông Hãy tìm đường đi của con mã qua được tất cả các ô của bàn

cờ, mỗi ô chỉ một lần rồi trở lại ô xuất phát

Bài toán này được nhiều nhà toán học chú ý, đặc biệt là Euler, De Moivre,Vandermonde,

Hiện nay đã có nhiều lời giải và phương pháp giải cũng có rất nhiều, trong đó

có quy tắc: mỗi lần bố trí con mã ta chọn vị trí mà tại vị trí này số ô chưadùng tới do nó khống chế là ít nhất

Một phương pháp khác dựa trên tính đối xứng của hai nửa bàn cờ Ta tìmhành trình của con mã trên một nửa bàn cờ, rồi lấy đối xứng cho nửa bàn cờcòn lại, sau đó nối hành trình của hai nửa đã tìm lại với nhau

Trò chơi và câu đố trên dẫn tới việc khảo sát một lớp đồ thị đặc biệt, đó là đồthị Hamilton

3.2 Đường đi Hamilton và đồ thị Hamilton

3.2.1 Định nghĩa

Đườ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 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

Trang 21

Hamilton Đồ thị G được gọi là đồ thị Hamilton nếu nó chứa chu trìnhHamilton và gọi là đồ thị nửa Hamilton nếu nó có đường đi Hamilton.

Ví dụ: xét các ví dụ sau

Chú thích:

 Graph A: không là nửa Hamilton

 Graph B: nửa Hamilton

 Graph C: đồ thị Hamilton

3.2.2 Các định lý

[1] Đồ thị vô hướng G, trong đó tồn tại k đỉnh sao cho nếu xoá đi k đỉnh

này cùng với những cạnh liên thuộc của chúng thì đồ thị nhận được

sẽ có nhiều hơn k thành phần liên thông Thì khẳng định là G không

có chu trình Hamilton Mệnh đề phản đảo của định lý này cho ta điềukiện cần để một đồ thị có chu trình Hamilton

[2] Định lý Dirac: giả sử G là một đơn đồ thị liên thông có n đỉnh, trong

đó n > 2, khi đó G có chu trình Hamilton nếu bậc của mỗi đỉnh ítnhất bằng n/2

[3] Định lý Ore: Nếu G là một đơn đồ thị có n đỉnh, với n ≥ 3 sao cho

deg(u) + deg(v) ≥ n với mọi cặp đỉnh không liền kề u và v trong G,khi đó G sẽ có chu trình Hamilton

Ngày đăng: 10/04/2015, 01:34

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w