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

Đề tài số 7 lý thuyết Đồ thị (chu trình euler và chu trình hamilton)

22 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Lý thuyết Đồ thị (Chu trình Euler và Chu trình Hamilton)
Tác giả Nguyễn Trung Kiên, Nguyễn Hoàng Anh Kiệt, Trần Quốc Khánh, Nguyễn Nhất Khôi, Phan Nguyễn Đăng Khoa, Lê Gia Khang, Lý Trụ Kiên
Người hướng dẫn NGUYỄN HỮU HIỆP
Trường học Trường Đại học Bách Khoa, Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Đại số tuyến tính
Thể loại Bài tập lớn
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 22
Dung lượng 2,11 MB

Nội dung

Ta định nghĩa: « Một thành phần liên thông của đồ thị là một lớp tương đương được xác định bởi quan hệ "xâp xỉ" nói trên.. e Liên thông một phần: Đồ thị có hướng gọi là liên thông một ph

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHÓ HÒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

BK

TP.HCM

Đề tài số 7 : LÝ THUYẾT ĐỎ THỊ (Chu trình EULER và Chu trình HAMILTON)

GVHD : NGUYÊN HỮU HIỆP

Trang 2

để học tốt các môn khác trong chương trình đảo tạo

Sự phát triển của toán tin ra đời đã hỗ trợ rất lớn trong quá trình phát triển của các môn học đại số Việc ứng dụng tin học trong quá trình giải thích các cơ sở dữ liệu của, giải các bài toán đại số đã làm cho thời gian bỏ ra được rút ngắn lại và mang hiệu quả cao hơn Như

ta đã biết, phần mềm ứng dụng Matlab đã giải quyết được cácvấn đề đó Vì thế việc tìm hiểu Matlab và ung dung Matlab trong việc thực hành môn học đại số tuyến tính rất quan trọng và có tính cấp thiết cao

Ở bài tập lớn này, nhóm thực hiện nội dung “Lý thuyết đồ thị” thông qua phần mềm Matlab Đây là một dạng bài toán khá quan trọng trong việc tìm đường đi giao hàng

Trang 3

MỤC LỤC LỜI MỞ ĐẦU 12c 1L n2 HH1 H 2221111 H1 nà chu 1 LỜI CẢM MƠN L0 L0 nh HH nh HH HH HH HH ru 4 CHƯƠNG I : Lý thuyết đồ thị S2 1211231 21112121 1E 181211221 rea 5 1.1 Ma trận kÈ 1 tt 211 1121111210111 11181212 HT HH1 1n Hs HH HH HH He 5 1.1.1 Ma trận kể là QÌ? 1 n1 21H ng 2n 1n tt 2c tt ng nh n ng 5 1.1.2 Tính chất của ma trận kÈ - 2-52 2 25112112711 271127122712 112 1121122110226 1e 5 1.2 Đồ thị liên thông i1 21112212 21121 211111 1 101812112 11011 HH HH HH HH no tàu 5

2.5 Thuat toan tim chu trình culos ccccccceeeeeseeeee sete ceesa eee sastesa ete seetaeeaeensastnaeetnesianenea 7

3.4 Định ly CGhouila — HOUIFI 0 S1 SH nh HT HE KĐT KHE ĐH thà 8

CHƯƠNG 4: Chu trình Euler,Hamilton vào bài toán thực Cocco ằ 8

0;00/9)005.18./7.v000 1 HA 10

2

Trang 4

5.3.1 Chu trình Euler trong bài toán giao hàng Q0 2.0002 12222nn*nHnnHnke 12

CHƯƠNG 6 : KẾT LUẬN - S121 E21 11121 121 21k HH HH He 19

“S00 .ddddẦ 19 4.2 Nhược điểm - ¿22-221 221122112 1112211221122 1211211111121 ng 19 4.3 Kết luận bài báo cáo ::: 22c 2212 11122211111 2111 21112112111212 2211k ràg 19 TÀI LIỆU THAM KHẢO - 1 1212122 1121212111 121122112212 HH HH Hưng 20 DANH MỤC HÌNH ẢNH :

Hình 1 Đồ thị có hướng và ma trận kề 2c nh 2E H21 1 12122 cg ren rei 5 Hình 2 Các loại đồ thị liên thÔng L1 22111112151 111222 1112 11T Hn t2 nà HH HH ng 6

Hình 6 Bảng giá trị khi chạy chương trình tìm đường đi ngắn nhất óc cv sen 18

3

Trang 5

LOI CAM ON

Chúng em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Hữu Hiệp giáo viên Trường

ĐH Bách Khoa TPHCM đã tạo điều kiện thuận lợi cho chúng em học tập và hoàn thảnh

đề tài BTL môn Đại Số Tuyến Tính Đặc biệt, chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy đã truyền đạt kiến thức và hướng dẫn chúng em trong quá trình làm bài

Em đã có gắng vận dụng những kiến thức đã học được trong học kỳ qua để hoàn thành

bài tiêu luận Nhưng do kiến thức hạn chế và không có nhiều kinh nghiệm về Matlab

nên khó tránh khỏi những thiếu sót trong quá trình nghiên cứu và trình bày Rất kính mong sự góp ý củaquý thầy cô để bài tiểu luận của em được hoàn thiện hơn

Một lần nữa, em xin trân trọng cảm ơn sự quan tâm giúp đỡ của thầy đã giúp đỡ em trong quá trình thực hiện bài tiểu luận này

Trang 6

Tính chất của ma trận kề của đồ thị vô hướng:

— Tính đối xứng: a[i.j]Ea[i.1] i.j=1.2 n

— Tống các phần từ trên dòng ¡ (cột j) băng bậc của đỉnh ¡ (đỉnh j)

Tính chất của ma trận kề của đồ thị có hướng:

— Không có tính đối xứng

— Tổng các phần từ trên dòng ¡ bằng bán bậc ra cua dinh i (deg+(i)) va tong cdc phan tir

trên cột J băng bán bậc vào của đỉnh ] (deg-()))

1.2 Đồ thị liên thông

1.2.1 Đồ thị liên thông là gì?

Đồ thị liên thông là một đồ thị nếu có đường đi giữa mọi cặp đỉnh phân biệt của đồ thị Cho đồ thị G = (X.U) vô hướng hay co hướng Với mọi ¡, j thuộc X, ¡ xấp xỉ j <=> ¡ =

j hay có đây chuyền đỉnh đầu là ¡ và đỉnh cuối là j Ta định nghĩa:

« Một thành phần liên thông của đồ thị là một lớp tương đương được xác định bởi quan hệ "xâp xỉ" nói trên

« Số thành phần liên thông của đồ thị là số lượng các lớp tương đương

« Một đồ thị liên thông là I đồ thị chỉ có 1 thành phân liên thông

1.2.2 Tính chất của đồ thị liên thông

e Liên thông mạnh: Đồ 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 cặp đỉnh a và b của đô thị

5

Trang 7

e Liên thông yêu: Đồ thị có hướng gọi là liên thông yếu nếu có đường đi giữa 2 đỉnh bat ky cua do thị vô hướng tương ứng với đồ thị đã cho

e Liên thông một phần: Đồ thị có hướng gọi là liên thông một phần nếu với mọi cặp đỉnh a, b bât kỳ, có ít nhât một đỉnh đên được đỉnh còn lại

Hinh 2 Cac loai dé thị liên thong

e Đỉnh khớp: của một đồ thị vô hướng là đỉnh mà nếu xóa đỉnh này khỏi đồ thị và

các cạnh nôi đên nó thì số thành phân liên thông của đồ thị sẽ tăng thêm

e Cạnh cầu: của một đồ thị vô hướng là cạnh mà nếu xóa đi khỏi đề thị thì số thành phân liên thông của đồ thị sẽ tăng thêm

e Đồ thị song liên thông: là đồ thị không chứa đỉnh khớp

<= Dinh khop

ì Khéng la dé thi

Dé thi song lién théng Cạnh câu song liên thông

Hình 3 Đồ thị song liên thông và không song liên thông Chương 2 : Chu Trình Euler

2.1 Đường đi Euler

Đường đi Euler trên một đồ thị là đường đi qua tat cả các cạnh, mỗi cạnh đúng một lan 2.2 Chu trình Euler

Chu trình Euler trên một đồ thị là đường đi Euler trên đồ thị đó thoả mãn điều kiện đường di bắt đầu và kết thúc tại củng một đỉnh

Đồ thị có chu trình Euler gọi là đồ thi Euler Đồ thị chỉ có đường đi nhưng không có chu trình Euler được gọi là đồ thị nửa Euler

2.3 Chu trình Euler trên đồ thị có hướng

Một đồ thị có hướng là đồ thị Euler nếu và chỉ nếu:

« Với mọi đỉnh u thuộc đồ thị, đeg+(u)=deg~(u)

« Tất cả đỉnh có bậc lớn hơn 0 thuộc cùng một thành phần liên thông

6

Trang 8

2.4 Đường đi Euler trên đồ thị có hướng

Đồ thị có hướng là đồ thị nửa Euler nếu và chỉ nếu đồ thị thoả một trong hai điều kiện

sau:

1 Tôn tại chu trinh Euler

2 Thoả tất cả các điều kiện sau:

e Tồn tại trong đồ thị đúng 22 đỉnh s và t sao cho

dep-(s)=deg+(s)+I và dep—(t)=deg+(t)—1

® Với mọi đỉnh u khác s và t, deg+(u)=deg—(u)

e Tất cả các đỉnh có bậc lớn hơn 0 thuộc củng một thành phần liên thông Đỉnh s và đỉnh † cũng chính là đỉnh xuất phát và kết thúc của đường đi Euler trong dé thị

2.5 Chu trình Euler trên đồ thị vô hướng

Đồ thị vô hướng là đồ thị Euler nếu và chỉ nếu:

« Bậc của mọi dinh 1a chan

« Tất cả các đỉnh có bậc lớn hơn 0 thuộc củng một thành phần liên thông

2.6 Đường đi Euler trên đồ thị vô hướng

Tén tại đường đi Euler trên một đồ thị vô hướng nếu và chỉ nếu:

* Dé thị có đúng 0 hoặc 2 đỉnh bậc lẻ

« Tất cả các đỉnh có bậc lớn hơn 0 thuộc cũng một thành phần liên thông

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

1 Kiểm tra đồ thị có liên thông không: Đảm bảo rằng mọi đỉnh trong đồ thị đều

có thê đạt được từ một đỉnh khởi đầu nào đó Nêu đồ thị không liên thông, không thê có chu trình Euler

2 Kiểm tra bậc của mỗi đỉnh: Xác nhận rằng mỗi đỉnh trong dé thi déu có bậc chăn Nêu có hơn hai đỉnh có bậc lẻ, không thê có chu trình Euler Nêu có đúng hai đỉnh có bậc lẻ, có thê tìm được một đường đi Euler nhưng không phải chu trình Euler

3 Chọn một đỉnh khởi đầu: Chọn bất kỳ đỉnh nào làm điểm bắt đầu cho chu trình

4 Duyệt đồ thị: Duyệt dé thi bang thuật toán tìm kiếm theo chiều sâu hoặc một thuật toán phù hợp khác, đi theo các cạnh chưa được sử dụng Đánh dấu mỗi cạnh

đã sử dụng đề đảm bảo rang moi cạnh chỉ được đi qua một lân

Trang 9

5 Quay lại nếu cần: Nếu đến một đỉnh mà không còn cạnh nảo có thê đi tiếp, quay lại đỉnh gan nhât có cạnh chưa được sử dụng và tiệp tục duyệt

6 Kiém tra xem tat cả các cạnh đã được sử dụng chưa: Xác nhận răng tât cả các cạnh đã được sử dụng trong quá trình duyệt Nếu đúng, quá trình duyệt tạo ra một chu trình Euler

Chương 3 : Chu Trình Hamilton

3.1 Đường đi Hamilton

Đường đi xI,x2 ,xn được gọi là đường đi Hamilton nếu xi⁄xj;Vi,j:I<i<j<n

Đồ thị có đường đi Hamilton được gọi là đồ thị nửa Hamilton

3.2 Chu trình Hamilton

Một chu trình xI,x2, ,xn,xI được gọi là chu trình Hamilton nếu xI⁄xJ;VI,J:l<I<j<n

Đồ thị có chu trình Hamilton được gọi lả đồ thị Hamilton

3.3 Định lý Dirak

Xét đơn đỏ thị vô hướng G=(V, E) có n đỉnh (n>3) Nếu mọi đỉnh đều có lậkhông

nhỏ hơn |2n| thì G là đồ thị Hamilton

3.4 Dinh ly Ghouila — Houiri

Xét đơn đồ thị có hương liên thông mạh G=(V, E) có n định Nếu trên phiên bản vô

3.5 Thuật toán tim chu trinh HAMILTON

Một chu trình Hamilton là một chuỗi các đỉnh trong đồ thị sao cho mỗi đỉnh chỉ xuất hiện một lần và có một cạnh nỗi mỗi đỉnh với đỉnh liền kề trong chuỗi

1 Kiểm tra tính liên thông của dé thị: Đảm bảo rằng đồ thị là liên thông Nếu đồ thị không liên thông, không thê có chu trình Hamilton

5 Quay lai néu can: Néu khong thể thăm thêm đỉnh nào nữa mà vẫn giữ được tính

hợp

lệ của chu trình, quay lại đỉnh trước đó và thử các lựa chọn khác

Trang 10

6 Kiểm tra nếu tìm được chu trình Hamilton: Nếu đã thăm tất cả các đỉnh và đồ thị là liên thông, kiêm tra xem chu trình đã tìm được có phải là chu trình Hamilton

không

Chương 4 : Chu trình EULER, HAMILTON vào bài toán thực tế

4.1 Áp dụng chu trình Euler

6 2 2-5 Là câu ( Không còn lỗôi| Xóa cầu | 5-3,5-1,5-4

Trang 11

Do deg(A) = deg(C) = deg(E) = 2 ( có 2 cạnh tiến tới A,C,E)

> AB, AF, CB, CD, ED, EF € H

Luc nay deg(B) = deg(D) = deg(F) = 2 ( đã có 2 cạnh tiến tới B, D, F )

Ta xóa các cạnh còn lại hướng tới B, D, E

=>> Kết luận : có chu trình Hamilton : A-B-C-D-E-F-A

Ví dụ 2:

A

mm

ST 1

Gọi K là chu trinh Hamilton cần tim

Do deg(A) = deg(C) = deg(G) = deg(J) = 2 ( có 2 canh tién téi A,C,G,J)

> AB, AF, CB, CD, GF, GH, JH, JD € K

Lúc này deg(B) = deg(D) = deg(F) = deg(H) = 2 ( đã có 2 cạnh tién tới B, D, F, H)

= Ta xóa các cạnh còn lại hướng tới B, D, F, H

Lúc này ta thấy điểm E còn cô lập

=>> Kết luận : Không có chu trình Hamilton

2 Matlab là ngôn ngữ lập trình do MathWorks phát triển, cho phép người dùng xây

dựng ma trận, vẽ đô thị hàm số hay biêu đô dữ liệu, thực hiện các phép toán, tạo các giao diện người dùng, liên kết các chương trình máy tính được việt trên nhiêu ngôn ngữ khác nhau, bao gom ca C, C++, Java, va FORTRAN, phân tích dữ liệu, phát triên các thuật toán, tạo ra các mô hình và ứng dụng

3 Matlab được tích hợp nhiều lệnh và các hàm toán học, giúp người dùng thực hiện tính toán các con số, vẽ đồ thị và thực hiện các phương pháp số

10

Trang 12

5.2 Giới thiệu một số hàm thường dùng trong Matlab

Input x = input(‘tén bién’) Hiên thị đâu nhac lệnh và chờ đầu vào

Int int(ham, bién) Dung dé tính tích phân của hàm theo biến

lf-end If (điều kiện) Dùng đề xác định điều kiện để cho chương

trong khoảng từ if dén end

5.3 Đoạn code biếu diễn chương trình mô tả bài toán giao hàng

5.3.1 Chu trình Euler của đồ thị

11

Trang 13

% Kiểm tra đồ thị có phải là Euler không

if ~check_euler_graph(n, adj, deg)

% Tim được một cạnh nối chưa bị xóa có thể đi được

if next_v ~= 0

12

Trang 14

end end

end for next_v = 1:n

if is_free(next_v) && adj(cur, next_v) ~= @ is_free(next_v) = false;

path = [path, next_v];

13

Trang 15

end end

Trang 16

Hình 4 Bảng gia tri khi chạy chu trình Euler

5 3.2 Chu trình Hamilton của đồ thị

15

Trang 17

Ta có đoạn code :

function HamiltonianCycle

% Nhập đồ thị và tìm chu trình Hami1ton

[n, ~, adj, deg] = enter(); % Nhập thông tin đồ thị

is free = ones(1, n); % Mang danh dau đỉnh chưa được duyệt circuit = zeros(1, n); % Mang luu chu trinh Hamilton khi tim thay

solution(n, adj, deg, is free, circuit); % Tim chu trinh

Hamilton

end

function [n, m, adj, deg] = enter()

% Nhập thông tin về số đỉnh và số cạnh của đồ thị

adj = zeros(n); % Ma tran ké

deg = zeros(1, n); % Mang bậc của các đỉnh

function check = check_hamilton_graph(~, deg)

% Kiểm tra xem đồ thị có chu trình Hamilton hay không

check = all(deg >= 2); % MOi dinh có bậc ít nhất là 2

end

function print_hamilton_circuit(n, circuit)

% In ra chu trinh Hamilton

Trang 18

function find_hamilton_circuit(i, n, adj, circuit, is free)

% Tim chu trinh Hamilton bang phương pháp backtracking

for v = 1:n

if is_free(v) && adj(circuit(i - 1), v) circuit(i) = v;

ifi<ono

is free(v) = 9; % Đánh dấu đỉnh v đã được thäm

find_hamilton_circuit(i + 1, n, adj, circuit,

end end end

end

function solution(n, adj, deg, is free, circuit)

% Tìm chu trình Hamilton ti dinh 1

Trang 19

HamiltonianCycle.m |

Hình 5 Bảng giá trị khi chạy chu trình Hamilton

5.3.3 Đường đi ngắn nhất qua các điểm giao hàng và trở về vị trí ban đầu

Trang 20

chutrinh_euler = [chutrinh, diemhientai];

disp('Duong di ngan nhat la: ', char(chutrinh_ euler)]);

Trang 21

Chương 6 Kết Luận

4.1UƯu điểm:

với cách thông thường

nhau Qua đó sẽ thuận tiện hơn cho việc tính toán các bài toán thực tế

4.2 Khuyết điểm:

hiện các chủ đề khác

4.3 Kết luận bài báo cáo:

1 Nhằm mục đích tông quan về một số vấn đề, cơ bản nhất của lý thuyết đồ thị: Trình bày các khái niệm, định nghĩa cơ bản vẻ lý thuyết đồ thị, các định lý, tính chất được áp dụng thiết thực và hiệu quả để giải các bài toán sơ cấp

2 Làm nỗi bật ưu thế của lý thuyết đồ thị trong việc giải một số bài toán sơ cấp: Nêu ra được một số bài toán liên quan đến đỉnh, cạnh, tô màu, chu trình, đường

đi của đồ thị Các bài toán đó được chứng minh một cách cụ thể và được vận dụng có hiệu quả trong việc giải các bài toán sơ cấp liên quan

3 Lý thuyết đồ thị áp dụng vào đời sông khi dùng các chu trình trình Euler và chu trình Hamilton vào các bài toán giao hàng và tìm đường đi ngắn nhất thành lập

nên một hệ thông rõ ràng

20

Ngày đăng: 13/11/2024, 13:55