Từ đó lý thuyết đồ thị ngày càng khẳng định được vị trí quan trọng trong việc áp dụng để giải quyết các bài toán thực tế nhờ vào việc tìm ra ngày càng nhiều các định lý, công thức và thu
Trang 1MỤC LỤC.
LỜI MỞ ĐẦU 1
CHƯƠNG 1 SƠ LƯỢC VÊ LICH SỬ 3
CHƯƠNG 2 ĐẠI CƯƠNG VỀ ĐỒ THỊ VÔ HƯỚNG 6
1.Đồ thị vô hướng: 6
2.Bậc của đồ thị: 7
3.Đường đi, chu trình, tính liên thông: 7
4.Biểu diễn đồ thị vô hướng: 9
CHƯƠNG 3 CHU TRÌNH VÀ ĐƯỜNG ĐI ELUER 11
1.Chu trình Eluer: 11
2.Các thuật toán tìm chu trình Euler: 14
CHƯƠNG 4 BÀI TOÁN ỨNG DỤNG 18
1.Bài toán Domino: 18
2.Bài bài toán người phát thư Trung Hoa: 19
3.Bài toán sắp xếp chỗ ngồi: 20
KẾT LUẬN 23
Tài liệu tham khảo 24
Trang 2LỜI MỞ ĐẦU
Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu đời và có nhiều
ứng dụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị đươc đề xuất từ
những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sĩ Leonhard
Euler Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về các cái
cầu ở thành phố Konigsberg Từ đó lý thuyết đồ thị ngày càng khẳng định được
vị trí quan trọng trong việc áp dụng để giải quyết các bài toán thực tế nhờ vào
việc tìm ra ngày càng nhiều các định lý, công thức và thuật toán Lý thuyết đồ thị
không những có nhiều ứng dụng trong thực tế mà còn là công cụ đắc lực cho
ngành công nghệ thông tin Nó giúp cho chúng ta mô tả một cách dễ dàng các
bài toán phức tạp cụ thể, để từ đó ta có thể mã hoá các bài toán đó vào máy tính
Ngoài ra lý thuyết đồ thị được sử dụng để giải quyết các bài toán trong nhiều
lĩnh vực khác nhau Hiện nay có rất nhiều tài liệu, sách, giáo trình đã viết về lý
thuyết đồ thị với những nội dung, đầy đủ giúp cho những người muốn nghiên
cứu về lý thuyết đồ thị tham khảo
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 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
Trang 3ra 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 Xuất phất từ đó nhóm tôi
chọn đề tài “ Đường đi Eluer và ứng dụng”
Tiểu luận gồm các nội dung sau :
Trang 4CHƯƠNG 1 SƠ LƯỢC VÊ LICH SỬ
Có thể nói lý thuyết đồ thị bắt đầu với tư cách là một ngành Toán học bằng
bài báo nổi tiếng của nhà toán học Euler năm 1736 và những cái cầu ở
Konigsberg Mãi hơn 100 năm sau, tức là giữa thế kỷ 19, người ta mới chú ý đến
các vấn đề lý thuyết đồ thị, đăc biệt ở nước Anh
Có nhiều lý do dẫn đến sự hồi sinh của Lý thuyết đồ thị Trước hết đó là các
nguyên cứu về mạng điện và các mô hình tinh thể và cấu trúc phân tử Sự phát
triển của Logic hình thức dẫ đến việc nghiên cứu quan hệ hai ngôi dưới dạng đồ
thị Nhiều bài toán đố vui nổi tiếng cũng được phát biểu dưới dạng đồ thị
Bài toán nổi tiếng nhất là Giả thiết bốn mùa do DeMorgan đưa ra lần đầu
tiên năm 1850 Có thể nói không có bài toán đồ thị nào làm tốn nhiều giấy mực
và có nhiều đóng góp cho lý thuyết đồ thị như bài toán giả thuyết bốn mùa
Ngày nay Lý thuyết đồ thị đã phát triển thành một ngành Toán học có vị trí
đặc biệt quan trong về mặt lý thuyết cũng như ứng dụng Lý thuyết đồ thị là kiến
thức cơ sở cho nhiều ngành khoa học kỹ thuật khác nhau như Điện tử, Hóa học,
Ngôn ngữ học, Kinh tế học, Máy tính…
Bài toán 7 cây cầu ở Königsberg: Thành phố Königsberg thuộc Phổ (bây
giờ gọi là Kaliningrad thuộc Cộng hòa Liên bang Nga) được chia thành bốn
vùng bằng các nhánh sông Pregel Các vùng này gồm 2 vùng bên bờ sông, đảo
Kneiphof và một miền nằm giữa 2 nhánh của sông Pregel Vào thế kỷ thứ XVIII,
người ta đã xây 7 cây cầu nối các vùng lại với nhau như sơ đồ sau:
Trang 5Vào chủ nhật, người dân ở đây thường đi bộ dọc theo các vùng trong
thành phố Họ tự hỏi “Có thể xuất phát tại một điểm nào đó trong thành phố, đi
qua tất cả 7 cây cầu, mỗi cây một lần, rồi trở về điểm xuất phát được không?”
Nhà toán học Thụy Sĩ Leonard Euler đã nghiên cứu giải bài toán này Lời
giải của ông được công bố năm 1736 Bài toán này có thể được coi là một trong
những ứng dụng đầu tiên của lý thuyết đồ thị
Ta có thể xây dựng đồ thị G = (V, E) mô tả bài toán như sau:
+ Đỉnh: Lấy các điểm trên mặt phẳng hay trong không gian tương
ứng với các vùng đất trong sơ đồ Đối tượng của bài toán ở đây là một vùng
có 4 đỉnh A, B, C, D tương ứng với 4 vùng đất
Euler đã nghiên cứu bài toán này, mô hình nó
bằ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 như đồ thị sau:
+ Cạnh: Trong đồ thị G các đỉnh và được nối với nhau bằng một
cạnh e đại diện cho một chiếc cầu nối giữa hai vùng đất Đồ thị G sẽ có 7 cạnh
tương ứng với 7 chiếc cầu nối giữa các vùng đất trong sơ đồ
Bài toán tìm đường đi qua tất cả các cầu mỗi cầu không quá một lần có
thể được phát biểu lại bằng mô hình này như sau: “Tồn tại hay không một chu
trình đơn trong đa đồ thị G= (V, E) có chứa tất cả các cạnh?”
Trang 6CHƯƠNG 2 ĐẠI CƯƠNG VỀ ĐỒ THỊ VÔ HƯỚNG
Nếu cạnh e liên kết đỉnh v, w thì ta nói cạnh e liên thuộc; đỉnh v, w các v,w
liên thuộc cạnh e, các đỉnh v, w là các đỉnh biên của ạnh e và đỉnh v kề đỉnh w
Nếu chỉ có duy nhất một cạnh e liên kết với cặp đỉnh v, w ta viết e=( v, w)
Nếu e là cung thi v gọi là đỉnh đầu và w gọi là đỉnh cuối của cung e
Nếu có nhiều cạnh liên kết với cùng một đỉnh thì ta nói đó là các cạnh song
song
Cạnh có hai đỉnh liên kết trùng nhau gọi là khuyên
Đỉnh không kề với đỉnh khác gọi là đỉnh cô lập
Số đỉnh của một độ thị gọi là bậc của đồ thị, số cạnh hoặc số cung của đồ thị
gọi là cỡ của đồ thị
Trang 7Đồ thị hữu hạn là đồ thị bậc và cỡ hữu hạn.
Đồ thị đơn là đồ thị không có khuyên và không có cạnh song song.
Đồ thị vô hướng đủ là đồ thị mà mọi cặp đỉnh đều kề nhau.
Đồ thị có hướng đủ là đồ thị có đồ thị có lót đủ.
2 Bậc của đồ thị:
Cho đồ thị G = (V, E)
Định nghĩa:
Giả sử v V có p khuyên và q cạnh liên thuộc ( không phải khuyên) Khi
đó bậc của đỉnh v là 2p +q và kí hiệu là deg G( v) hoặc đơn giản là deg (v)
Số bậc đỉnh lớn nhất của G kí hiệu là(G), số bậc đỉnh nhỏ nhất của G kí hiệu
là (G)
Từ định nghĩa suy ra đỉnh cô lập trong đồ thi đơn là đỉnh có bậc bằng 0
Đỉnh có bậc bằng 1 gọi là đỉnh treo
Ví dụ:
Ta có deg(v1)=7, deg(v2)=5, deg(v3)=3, deg(v4)=0, deg(v5)=4, deg(v6)=1,
deg(v7)=2 Đỉnh v4 là đỉnh cô lập và đỉnh v6 là đỉnh treo
3 Đường đi, chu trình, tính liên thông:
Định nghĩa 1:
Cho đồ thi G=(V, E)
Dây từ đỉnh v đến đỉnh w là tập hợp các đỉnh và các 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êngọi là độ dài của dây
Dây từ đỉnh v đến đỉnh w đọ dài k được biểu diễn như sau
Trang 8Trong đó vi( i=1,…,k-1) là các đỉnh trên dây và ei (i= 1,…,k-1)là các cạnh
trên dây liên thuộc đỉnh kề trước và sau nó Các đỉnh và các cạnh trên dây có thể
lặp lại
Đường đi từ đỉnh v đến đỉnh w là dây từ đỉnh v đến w, trong đó các cạnh
không lặp lại
Đường đi sơ cấp là đường đi không đi qua một đỉnh quá một lần
Chú ý: Trong đồ thị n đỉnh, đường đi sơ cấp giữa hai đỉnh khác nhau có nhiều
nhất n-1 cạnh
Vòng là dây có đỉnh đầu và đỉnh cuối trùng nhau
Chu trình là đường đi có đỉnh đầu và đỉnh cuối trung nhau
Chu trình sơ cấplà chu trinh không đi qua một đỉnh quá 1 lần
Ví dụ :
Trong đơn đồ thị trên, x, y, z, w, v, y là đường đi đơn (không sơ cấp) độ
dài 5; x, w, v, z, y không là đường đi vì (v, z) không là cạnh; y, z, w, x, v, u, y là
chu trình sơ cấp độ dài 6
Định nghĩa 2:
Một đồ thị (vô hướng) được gọi là liên thông nếu có đường đi giữa mọi
cặp đỉnh phân biệt của đồ thị
Một đồ thị không liên thông là hợp của hai 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ác thành phần liên thông của đồ thị đang
xét Như vậy, một đồ thị là liên thông khi và chỉ khi nó chỉ có một thành phần
w
Trang 9Cho đồ 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)mxn, trong đó aij là số cạnh (khuyên) nối
vi với vj.Lưu ý rằng khi tinh bậc của đỉnh mỗi khuyên được tính hai bậc
Từ định nghĩa suy ra rằng ma trận kề của đồ thị vô hướng luôn đối xứng
qua đường chéo chính
Trang 10Mệnh đề Cho đồ thị G=( V, E) với ma trận kề (aij).Khi đó
i ij ji ij
deg(
Chứng minh Suy ra từ định nghĩa.
Định lý :
Cho đồ thị đơn G=( V, E) có n đỉnh, V={ v1,v2,…,vn} và ma trận kề của đồ thị G
là ma trận A=(aij)nxm Giả sử Ak= (cij)nxm, k 1.Khi đó cij, ij, là số chiều dài k từ
đỉnh vi đến vj Đặc biệt phần từ trên ô [i,j], 1 i n, của A2 là bậc của đỉnh vi
Khi đó đồ thị G lien thông khi và chỉ khi các phần từ ngoài đường chéo chính
của ma trận T đều lớn hơn 0
Chứng minh
Sử dụng định lí ở mục trên, suy ra đồ thị G liên thông khi và chỉ khi các cấp đỉnh
đều có đường đi sơ cấp nối chúng với nhau Mặt khác các đường đi sơ cấp có đọ
dài không quá (n-1) Từ đó áp dụng định lí trên ta suy được điều phải chứng
Nếu đồ thị lưỡng phân thì ta có thher đánh số lại các đỉnh và ma trận kề
Trang 11CHƯƠNG 3 CHU TRÌNH VÀ ĐƯỜNG ĐI ELUER
Lý thuyết về chu trình Đường đi Euler đã có từ lâu và được nguyên cứu
nhiều ta có thể bắt gặp bài toán trong thực tiễn mà có thể sử dụng lý thuyết về
chu trình, đường đi Euler để giải quyết, ví dụ như sử lí lý thuyết đường đi, chu
trình Eluer để tìm hành trình đường đi cho người phát thư, cho xe rửa đường…
sao cho hành trình tối ưu
1 Chu trình Eluer:
Định nghĩa:
Cho đồ thị G=(V,E)
Chu trình Euler là chu trình qua mọi cạnh G và mọi đỉnh đồ thị, mỗi cạnh
không đi quá 1 lần
Đường Euler trong đồ thị G=(x,u) là đường đi qua tất cả các cạnh của đồ
thị, mỗi cạnh đi qua đúng một lần
Cho đồ thị có hướng G=(V,E)
Chu trình có hướng Euler là chu trình có hướng qua mọi cung và mọi
đỉnh đồ thị, mỗi cung không đi quá 1 lần
Đồ thị chứa chu trình Euler gọi là Đồ thị Euler.
Ví dụ Đồ thị
1
2 3
4
5 6
có chu trình Euler
Trang 12(i) (): Giả sử G có chu trình Euler và v là đỉnh bất kỳ của G Khi đó chu
trình Euler đến v theo cạnh e thì ra khỏi v bằng cạnh e’ e Do đó bậc
của v phải là số chẵn G hiển nhiên là 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 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 bậc chẵn đều có chu trình euler
+ Trường hợp n = 1 hoặc 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)
- Giả sử G chứa cạnh z=(b,c)
Xét đồ thị G’ thu được từ G bằng cách loại bỏ ba cạnh x,y,z Sẽ xảy
ra 1 trong ba 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’ Nối
chu trình con (x,y,z) với C’ 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ử G1 chứ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 của G như sau Xuất phát
từ đỉnh a đi theo chu trình C1 quay về a, sau đó đi theo cạnh x=(a,b) đến
Trang 13đỉnh b, từ b đi theo chu trình C2 quay về b, sau đó đi theo cạnh z=(b,c)
và 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ử G1 chứ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 đi theo chu trình
C1 quay về a, sau đó đi theo cạnh x=(a,b) đến đỉnh b, từ b đi theo chu
trình C2 quay về b, sau đó đi theo cạnh z=(b,c) đến đỉnh c, 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ỏ 2 cạnh x,y và thêm
cạnh z Sẽ xảy ra 1 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ử G1 chứ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 của G như sau Thay cạnh
zC2 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
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.
(i) n=1: Nối 2 đỉnh bậc lẻ với nhau bằng cạnh z ta thu được đồ thị G’ thoả
đị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 14(ii) 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ả 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
I
O v d v
d ( ) ( )
Định lý 3
(i) Đồ thị có hướng G có chu trình có hướng Euler khi và chỉ khi G liên
thông yếu và mọi đỉnh có nửa bậc vào bằng nửa bậc ra, tức S = và T =
(ii) Nếu S , thì số đường đi có hướng tối thiểu phủ G là k Các
đường đi này nối các đỉnh của T đến các đỉnh của tập S
Chứng minh Tương tự như trường hợp vô hướng (bài tập).
2 Các thuật toán tìm chu trình Euler:
Thuật toán
+ Đầ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) phát: Đặt H := G, k := 1, C := Chọn đỉnh v G bất kỳ
(2) Xuất phát từ v, xây dựng chu trình bất kỳ Ck trong H
Trang 15Nếu tồn tại Ck , nối Ck vào C, C := C Ck Sang bước (3)
Nếu không tồn tại Ck , thì kết luận không có chu trình Euler, kết thúc.
(3) Loại khỏi H chu trình Ck Nếu H chứa các đỉnh cô lập thì loại chúng khỏi
Nếu H và C có đỉnh chung Chọn v là đỉnh chung của H và C Đặt k :=
k+1 Quay lại bước (2)