Đề tài được thực hiệntrước tiên sẽ đề cập tới những vấn đề chủ yếu của Lý thuyết đồ thị, sau đó tuỳtừng nội dung cũng sẽ xoay quanh tới những ứng dụng của đồ thị trong Tin học,giải quyết
Trang 1B giáo d c v ộ giáo dục và đào tạo ục và đào tạo à đào tạo đà đào tạo ạo o t o Trường đại học dân lập đông đô Khoa công ngh thông tin ệ thông tin
Luận văn tốt nghiệpmột số vấn đề ứng dụng của đồ thị trong tin học
Giáo viên h ướng dẫn ng d n ẫn : PGS.TS Đỗ Đức Giáo Đức Giáo c Giáo
Giáo viên ph n bi n ản biện ện : Sinh viên th c hi n ực hiện ện : Phan Thanh Long Lớp : CT96A - Khoá II
Hà Nội 6 - 2000
Trang 3Lời nói đầu
Bước sang năm bản lề của thế kỷ 21, nhìn lại thế kỷ 20 là thế kỷ mà conngười đạt được nhiều thành tựu khoa học rực rỡ nhất, một trong những thànhtựu đó là sự bùng nổ của ngành khoa học máy tính Sự phát triển kỳ diệu củamáy tính trong thế kỷ này gắn liền với sự phát triển toán học hiện đại, đó là toánrời rạc
Toán học rời rạc nghiên cứu các cấu trúc có tính chất rời rạc không liên tục.Toán rời rạc bao gồm các lĩnh vực như quan hệ, lý thuyết đồ thị, lôgíc toán,ngôn ngữ hình thức trong đó lý thuyết đồ thị là một bộ phận trọng tâm vớinhiều khối lượng kiến thức khá lý thú và được nghiên cứu nhiều nhất
Toán rời rạc nói chung và lý thuyết đồ thị nói riêng là công cụ thiết yếu chonhiều ngành khoa học kỹ thuật, và là một thành phần quan trọng trong học vấnđối với sinh viên các ngành kỹ thuật đặc biệt sinh viên ngành Tin học Lý thuyết
đồ thị, với cách tiếp cận đối tượng nghiên cứu và phương pháp tư duy khá độcđáo thực sự ngày càng hữu ích có nhiều ứng dụng phong phú và gây không ítbất ngờ Máy tính mà bản thân nó với các quá trình làm việc mang tính rời rạc,nên điều này tương hợp gắn chặt lý thuyết đồ thị với công nghệ máy tính trongviệc nghiên cứu các đối tượng có tính chất rời rạc
Lý thuyết đồ thị có nhiều ứng dụng thực tiễn đặc biệt là trong lĩnh vực Tinhọc, muốn hiểu biết sâu sắc các vấn đề Tin học cần nắm vững các kiến thức vềToán học rời rạc mà trong đó đặc biệt là lý thuyết đồ thị Từ những nhận thức
trên, với đề tài "Một số vấn đề ứng dụng của đồ thị trong Tin học" đây không
chỉ là nhiệm vụ em phải thực hiện trong kỳ bảo vệ luận văn tốt nghiệp mà thực
sự đây là đề tài mà em rất quan tâm và say mê nghiên cứu
Với tấm lòng biết ơn sâu sắc, em xin chân thành cảm ơn Thầy giáo Pgs Ts
Đỗ Đức Giáo là người trực tiếp, tận tình, chu đáo giảng dạy và hướng dẫn emhoàn thành cuốn luận văn này Nhân dịp này em cũng xin cảm ơn sự giúp đỡ,dạy bảo tận tình của các thầy cô giáo, cán bộ Khoa Công Nghệ Thông Tintrường Đại học Dân lập Đông Đô và những bạn học đã đóng góp những ý kiến
bổ ích cho bản luận văn này
Do trình độ hiểu biết còn hạn chế, thời gian chuẩn bị không nhiều, bản luậnvăn này còn nhiều sai sót và chưa đầy đủ, em rất mong nhận được sự góp ýcủa các thầy cô và các bạn quan tâm
Trang 4Hà Nội 6/2000
Sinh viên: Phan Thanh Long
Giới thiệu đề tài
"Một số vấn đề ứng dụng của đồ thị trong Tin học" là đề tài mang tính nghiên
cứu lý thuyết, có tầm quan trọng và có ý nghĩa thiết thực cao Khái niệm đồ thị
ở đây khác với những đồ thị thông thường đã biết, đây là 1 lĩnh vực về lý thuyết
đồ thị nghiên cứu những cấu trúc mang tính rời rạc là 1 bộ phận quan trọng củaToán học rời rạc
Lý thuyết đồ thị có nhiều ứng dụng trong các ngành kỹ thuật và đã đượcnghiên cứu nhiều với khối lượng kiến thức khá đồ sộ Đề tài được thực hiệntrước tiên sẽ đề cập tới những vấn đề chủ yếu của Lý thuyết đồ thị, sau đó tuỳtừng nội dung cũng sẽ xoay quanh tới những ứng dụng của đồ thị trong Tin học,giải quyết các bài toán trong Tin học như xác định xem hai máy tính trong mạng
có thể truyền tin được hay không nhờ mô hình đồ thị của mạng máy tính, hay làbài toán nối mạng máy tính sao cho tổng chi phí là nhỏ nhất hoặc việc khắcphục những gói tin bị truyền sai nhờ các giải thuật đã nghiên cứu về đồ thị Cónhững ứng dụng của đồ thị không đi trực tiếp vào các lĩnh vực trong Tin học, ví
dụ như bài toán lập lịch trong công tác hành chính, xác định đường đi ngắn nhấtgiữa 2 điểm nút giao thông, ta cũng xem đó là ứng dụng 1 cách gián tiếp trongTin học vì nếu được mô hình tốt những bài toán đó bằng đồ thị thì sẽ giải quyếtchúng dễ dàng bằng máy tính, hoặc là về chơi cờ Ca rô tuy chỉ là môn chơi vềtrí tuệ nhưng đồ thị cũng hỗ trợ tốt cho nhưng ai muốn lập trình chơi cờ Ca rôtrên máy tính khi đã mô hình được các thế cờ bằng đồ thị
Đề tài được thực hiện xong bao gồm những nội dung sau đây:
Chương 1 Một số vấn đề cơ bản của đồ thị
Nhằm trình bày những khái niệm cơ bản nhất về lý thuyết đồ thị, là cơ sở tìmhiểu sâu sắc hơn các vấn đề tiếp theo Ngoài các định nghĩa, tính chất cơ bảncủa đồ thị, chương này có trình bày đến 1 vấn đề quan trọng, đó là cách lưu trữ,biểu diễn và xử lý đồ thị trên máy tính khi đã xét những mô hình biểu diễn hìnhhọc Cấu trúc dữ liệu liên quan chặt chẽ đến giải thuật, việc biểu diễn đồ thị trênmáy tính như thế nào sẽ ảnh hưởng đến cách giải các bài toán ứng dụng bằngmáy tính Trong chương có trình bày một số phương pháp biểu diễn đồ thị trên
Trang 5máy tính, mỗi phương pháp đều có những ưu và khuyết điểm riêng, vì vậy cầnlựa chọn phương pháp sao cho phù hợp với đặc điểm từng bài toán và đạt đượchiệu quả về thuật toán.
Khi đưa các ví dụ minh họa, nhất là về phần đồ thị đặc biệt ta sẽ thấy được ứngdụng của đồ thị trong mô hình về mạng máy tính
Chương 2 Số ổn định và tô màu đồ thị
Số ổn định của đồ thị bao gồm số ổn định trong, số ổn định ngoài và nhân đồthị, nghiên cứu vấn đề này ta sẽ thấy được mối quan hệ giữa các tập đỉnh củamột đồ thị Một ứng dụng khá lý thú khi đề cập tới vấn đề này đó là xây dựng
mô hình đồ thị cho bài toán lập trình chơi cờ carô, có sử dụng đến tập ổn địnhngoài của đồ thị
ở chương này ta cũng sẽ gặp đến một ứng dụng khá thiết thực khi bàn đến vấn
đề tô màu của đồ thị, hay còn gọi là sắc số của đồ thị, ứng dụng đó là bài toánlập lịch Lập lịch là công tác hành chính phổ biến, hay gặp ở các cơ quan, xínghiệp, trường học cũng đã có nhiều sản phẩm phần mềm phục vụ cho việclập lịch
Chương 3 Chu trình, đường đi Euler và Hamilton trong đồ thị
Trình bày những khái niệm về chu trình Euler, đường Euler, chu trìnhHamilton, đường Hamilton các tính chất của chúng đồng thời đưa ra 1 số thuậttoán ứng dụng để tìm các đường, chu trình Euler, Hamilton
Chương 4 Đường đi ngắn nhất trong đồ thị
Bài toán đường đi ngắn nhất hay được đề cập tới trong lý thuyết đồ thị, đâycũng là loại bài toán tối ưu có nhiều ứng dụng rộng rãi Trong đồ thị thường đặt
ra các loại tìm đường đi ngắn nhất như sau:
- Đường đi ngắn nhất nhất giữa 1 cặp đỉnh đã được xác định trước
- Đường đi ngắn nhất giữa 1 đỉnh với tất cả các đỉnh còn lại
- Đường đi ngắn nhất giữa tất cả các cặp đỉnh bất kỳ
Để giải quyết các loại bài toán này, trong chương sẽ trình bày 1 số thuật toánchính hay được sử dụng như: Dijkstra, Ford-Bellman và Floyd
Về mặt ứng dụng, trong chương sẽ nêu ra giải thuật Viterbi cho ứng dụng kháquan trọng trong lĩnh vực Tin học đó sửa gói tin sai khi truyền tin trong mạngmáy tính
Trang 6Khi nói đến đường đi ngắn nhất, người ta cũng hay nói đến mở rộng của bàitoán đường đi ngắn nhất thành đường đi dài nhất Trong vấn đề này ta lại có 1ứng dụng nữa trong công tác lập lịch, đó là sơ đồ mạng PERT cho việc lập dự
án thi công một công trình ứng dụng này rất thực tiễn và đã đem lại nhiều hiệuquả cao cho việc thi công một công trình
Chương 5 Một số vấn đề về cây
Đây là chương cuối cùng và là chương sẽ đề cập tới nhiều ứng dụng nhất.Cây là một trường hợp riêng của đồ thị, để nghiên cứu hết các tính chất, kháiniệm về cây cần cả 1 khối lượng kiến thức đồ sộ và đã có những đề tài cấp luậnvăn hoặc hơn thế nữa nghiên cứu về cây Trong chương này chỉ đề cập tớinhững điểm chính nhất, cơ bản nhất về cây và tập trung khai thác những ứngdụng của nó
Những ứng dụng của cây thì rất nhiều, trong chương chỉ đề cập tới những ứngdụng cơ sở nhất nhưng cũng thiết thực nhất, đó là 1 số ứng dụng của cây nhịphân như mã tiền tố, cây biểu diễn biểu thức, cây quyết định, cây sắp xếp và tìmkiếm
Trong lý thuyết đồ thị, khi nói về cây thì cây bao trùm là vấn đề không thểthiếu, vì đây cũng là đặc điểm rất hay của đồ thị Trong cây bao trùm lại có câybao trùm bé nhất, lớn nhất và đây lại là 1 dạng của bài toán tối ưu Trongchương cũng sẽ giới thiệu ứng dụng thực tiễn của cây bao trùm nhỏ nhất trongviệc kết nối mạng sao cho chi phí nhỏ nhất, đồng thời đưa ra 1 số thuật toán tìmcây bao trùm, đặc biệt có những thuật toán rất cơ sở được nêu ra, được dùngnhiều trong việc giải quyết các bài toán đồ thị trên máy tính như là kỹ thuậtquay lui, tìm kiếm ưu tiên theo chiều rộng và chiều sâu
Chương 1
một số vấn đề cơ bản của đồ thị
I Các định nghĩa đồ thị
Trang 71 Định nghĩa đồ thị
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnhnày, các loại đồ thị khác nhau được phân biệt bởi kiểu và số lượng cạnh nốihai đỉnh nào đó của đồ thị
Giả sử X là tập hữu hạn, không rỗng các phần tử nào đó và U Í X´X Bộ G
= <X, U> được gọi là đồ thị hữu hạn Mỗi phần tử xẻX gọi là một đỉnh vàmỗi phần tử u = (x,y) ẻ U gọi là một cạnh của đồ thị G = <X, U>
Xét một cạnh u ẻ U khi đó tồn tại 2 đỉnh x, y ẻ X sao cho u = (x, y), ta nóirằng x nối với y hoặc x và y thuộc u
- Nếu cạnh u = (x, y) mà x và y là hai đỉnh phân biệt thì ta nói x, y là hai đỉnh
kề nhau
- Nếu u = (x, x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một khuyên
- Nếu u = (x, y) mà x,y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến ythì u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh ra, y là đỉnhvào
- Khi giữa cặp đỉnh (x, y) có nhiều hơn một cạnh thì ta nói những cạnh cùngcặp đỉnh là những cạnh song song hay là cạnh bội
Ví dụ: Xét một mạng máy tính, có thể biểu diễn mạng này bằng một mô
hình đồ thị, trong đó mỗi máy là một đỉnh, giữa các máy được nối với nhaubằng các dây truyền, chúng tương ứng là các cạnh của đồ thị Một mô hình
mạng máy tính như hình 1.2 trong đó có các máy tính A, B, C, D tương ứng là
các đỉnh, giữa 2 máy được nối trực tiếp với nhau thì tương ứng với 1 cặp đỉnh
Trang 8Hình 1.2 Ví dụ về một đồ thị
2 Đồ thị đơn
Đồ thị G = <X, U> được gọi là đồ thị đơn nếu giữa hai đỉnh bất kỳ được nốivới nhau bởi không quá một cạnh (cung), tức là đồ thị không có cạnh bội,không có khuyên
Ví dụ: như hình 1.3.a là biểu diễn của một đồ thị vô hướng.
Trang 9Đồ thị G = <X, U> được gọi là đồ thị có hướng nếu tất cả các cạnh e ẻ U màcặp đỉnh thuộc nó e = (x, y) ẻ X có phân biệt thứ tự Đồ thị có hướng là đồ thị
mà mọi e = (x, y) ẻ X đều là cung
III Một số khái niệm và tính chất cơ bản của đồ thị
1 Bậc đồ thị
1.1 Bậc đồ thị vô hướng
Cho đồ thị vô hướng G = <X,U> Xét 1 đỉnh x ẻ X đặt m(x) là số cạnh thuộcđỉnh x khi đó m(x) được gọi là bậc của đỉnh x Nếu x có một khuyên thì m(x)được cộng thêm 2
- Nếu m(x) = 0 thì đỉnh x được gọi là đỉnh cô lập
- Nếu m(x) = 1 thì đỉnh x được gọi là đỉnh treo
- Nếu m+(x) + m-(x) = 0 thì đỉnh x được gọi đỉnh là cô lập
m(x) m(G)
C
Trang 10- Nếu m (x) + m(x) = 1 thì đỉnh x được gọi là đỉnh treo
Hệ quả: Số đỉnh bậc lẻ của đồ thị G = <X,U> là một số chẵn
2 đường đi và chu trình
x
(x) m (x) m m(G)
x X
x
m(x) m(x)
m(x) 2m
Trang 11Tập hợp các đỉnh kề nhau từ xi đến xj được gọi là 1 đường đi, kí hiệu
xixi1xi2 xj º xiuixi1ui1xi2ui2 ujxj
Trong đó các cạnh, các đỉnh trong đường đi có thể lặp lại
Độ dài của đường đi bằng số các cạnh (hoặc cung) trong đường đi đó.
*Chú ý rằng trong đồ thị có hướng, trên một cung uv chẳng hạn thì đường đichỉ có thể đi từ gốc (u) đến ngọn (v) không thể đi ngược lại
2.2 Chu trình
Xét một đường đi từ xi - xj Nếu xi º xj thì đường đi này được gọi là một chutrình Như vậy chu trình là một đường đi có đỉnh xuất phát và đỉnh kết thúctrùng nhau
Chú ý rằng đường đi trong đồ thị có hướng không được đi ngược chiều mũitên
- Đường đi (chu trình) được gọi là đơn nếu nó đi qua mỗi cạnh không quámột lần
- Đường đi (chu trình) được gọi là sơ cấp nếu nó đi qua mỗi đỉnh đúng mộtlần
Hình 3.1
Ví dụ như ở hình 3.1 ADBE là một đường đi sơ cấp từ A đến E độ dài 3;
ABCDBE là đường đi không sơ cấp ( qua B 2 lần) từ A đến E độ dài 5;ABDAB là một đường đi không đơn (chứa cạnh AB 2 lần) từ A đến B độ dài4; ABDA Là 1 chu trình đơn và sơ cấp độ dài 3; CC là đường đi độ dài 0
Xét đồ thị có hướng như hình 2.1 thì ABCB là một đường đi độ dài 3; CBA
không là một đường đi vì không có cung đi từ B đến A
Trang 12và một cạnh nối đỉnh xi1 và xi0 Đỉnh xi0 thuộc một trong các đỉnh trên đường
đi đã chọn chẳng hạn xij vì đường đi là dài nhất, nên chứng tỏ tồn tại một chutrình trong đường đi
3 Đồ thị liên thông
Cho đồ thị G = <X,U> Hai đỉnh phân biệt x,y ẻ X được gọi là liên thông nếutồn tại một đường đi nối các đỉnh x, y với nhau Đồ thị G được gọi là liênthông nếu với hai đỉnh phân biệt bất kỳ trong đồ thị đều là liên thông
Ví dụ như hình 3.1 là một đồ thị liên thông vì luôn có đường đi nối hai đỉnh bất kỳ của đồ thị, còn đồ thị như hình 3.2 là không liên thông vì không có
đường đi từ A tới D hoặc từ D tới F v.v
Ví dụ như đồ thị trong hình 3.3 có ba thành phần liên thông sau:
G1 = <X1, U1> với X1= {A,B,C} và U1 = {AB, AC, CB}
G2 = <X2, U2> với X2= {D, E} và U2 = {DE}
G3 = <X3, U3> với X3= {F} và U3 = ặ
Cho đồ thị có hướng G = <X, U>
- G được gọi là đồ thị liên thông yếu nếu đồ thị vô hướng tương ứng với nó
Trang 13- G là liên thông một chiều nếu với hai đỉnh x,y khác nhau bất kỳ của G luôn
có đường đi x - y hoặc đường đi y - x.
- G là liên thông mạnh (liên thông 2 chiều) nếu hai đỉnh x,y khác nhau bất kỳ
của G đều có đường đi x - y và đường đi y - x.
Hình 3.4
ở hình 3.4 đồ thị H1 là liên thông mạnh, giả sử cặp đỉnh (A,C) ta có chiều đi
từ C tới A, và đồng thời cũng có chiều đi từ A tới C, và bất kỳ các cặp đỉnhkhác cũng tương tự như vậy H2 là liên thông một chiều vì xét cặp đỉnh (A,D)
có chiều đi từ D tới A nhưng không có chiều đi từ A tới D H3 là liên thôngyếu vì tồn tại cặp đỉnh (B,C) không có chiều đi B - C cũng không có chiều đi
C - B, nhưng đồ thị vô hướng tương ứng là liên thông
4 Đồ thị con và đồ thị bộ phận
Cho đồ thị G = <X,U>
- Nếu trong đồ thị đó ta bỏ đi một số đỉnh nào đó và các cạnh xuất phát từ đỉnh
đó thì phần còn lại của đồ thị được gọi là đồ thị con của đồ thị G đã cho, hoặc
là nếu D = <X',U'> là đồ thị con của G = <X,U> thì X' Í X và U' Í U
- Nếu trong đồ thị G ta bỏ đi một số cạnh nhưng giữ nguyên các đỉnh thìphần còn lại của đồ thị được gọi là đồ thị bộ phận của đồ thị G
IV Các dạng biểu diễn của đồ thị
1 Biểu diễn hình học của đồ thị
Để có cái nhìn trực quan ta thường biểu diễn đồ thị bằng hình học, một đồ thị
có thể biểu diễn trên một mặt phẳng hoặc trong không gian Phương pháp biểudiễn như sau: Biểu diễn các đỉnh của đồ thị bằng các điểm (hay vòng tròn nhỏ, ôvuông nhỏ) và nối hai điểm bằng một đường (cong, thẳng, mũi tên) khi cặpđiểm đó ứng với một cạnh (cung) của đồ thị
Ví dụ 1: Cho đồ thị G = <X,U> trong đó
X = {A, B, C, D, E} và U = {AB, AC, AD, AE, BD, CD, CE}
Trang 14Định nghĩa: Xét 2 đồ thị G1 = (X1, U1) và G2 = <X2, U2>
Hai đồ thị này được gọi là đẳng cấu với nhau nếu tồn tại 1 song ánh từ X1 vào
X2 và từ U1 vào U2 sao cho nếu có cạnh e = (u, v) ẻ U1 tương ứng với cạnh e' =(u', v') ẻ U2 thì cặp đỉnh u, v ẻ X1 cũng là tương ứng cặp đỉnh u', v' ẻ X2
Nếu a, b ẻ X1 kề nhau thì f(a), f(b) ẻ X2 kề nhau
Vậy đây là 2 đồ thị đẳng cấu với nhau, ta có thể xem G1 và G2 thực chất chỉ là 1chỉ có điều biểu diễn ở dạng hình học khác nhau, các tên đỉnh khác nhau
Để xét 2 đồ thị có đẳng cấu không là việc khó, tuy nhiên để xét 2 đồ thị khôngđẳng cấu với nhau thì đơn giản hơn
Đối với 2 đồ thị đẳng cấu thì các đồ thị đó có những tính chất bất biến như sau:
D E
C
E B
Trang 15Hình 4.3 a: G- 1 đều; b: G - 2 đều; c: G - 2 đều; d: G - 3 đều.
Trường hợp riêng như đồ thị hình 4.3.b và hình 4.3.c là những đồ thị vòng
ký hiệu Cn (n là số đỉnh)
3.2 Đồ thị đầy đủ
Đồ thị đầy đủ n đinh, ký hiệu Kn là đơn đồ thị vô hướng mà mọi cặp đỉnh
phân biệt luôn kề nhau Xem ví dụ như hình 4.4 dưới đây hoặc 1 trường hợp
riêng của đồ thị đều G - 3 là những đồ thị đầy đủ
Trang 16W 4 W 5 W 6
Hình 4.5 Các dạng đồ thị bánh xe
3.4 Một vài ứng dụng của đồ thị đặc biệt
ở các mạng cục bộ (LAN), các máy tính thường được kết nối theo một cáchthức nào đó gọi là hình trạng (topolopy) Dựa theo đặc điểm của các totolopynày mà ta có thể mô hình bằng 1 số dạng đồ thị đặc biệt Ví dụ với mạng LANcác máy tính được kết nối theo topolopy hình sao (Star) sau đây:
Hình 4.6
ở dạng này, tất cả các máy được nối vào một thiết bị trung tâm có nhiệm vụnhận tín hiệu từ các máy và chuyển đến máy đích của tín hiệu Từ đặc điểmnày có thể mô hình bằng một đồ thị bộ phận của đồ thị bánh xe W6 như hình
4.7.a
a) Dạng sao b) dạng vòng c) dạng hỗn hợp d) dạng đầy đủ (Complete)
Hình 4.7 Một số topolopy của LAN
Trang 17ở mạng LAN ta cũng thường có các dạng topolopy khác như dạng chu trình(loop) hoặc gọi là vòng ở dạng này mỗi máy nối đúng với 2 máy khác Mạngcục bộ với cấu trúc vòng tròn được mô hình bằng các đồ thị đặc biệt dạngvòng Cn như hình 4.7.b, thông báo gửi từ máy này sang máy khác theo chu
trình vòng tròn cho tới khi tới được máy đích Hoặc 1 dạng nữa là dạng hỗnhợp, đó là sự kết hợp của dạng hình sao và hình vòng Topolopy kiểu này làmột đồ thị bánh xe Wn (hình 4.7.c) Mạng cục bộ dạng bánh xe các máy có thể
truyền vòng quanh theo vòng tròn hoặc có thể qua bộ phận trung tâm Ngoài
ra người ta cũng thường hay bố trí mạng sao cho các máy đều kết nối trực tiếpvới nhau, với kiểu này có thể mô hình bằng đồ thị đầy đủ Kn (hình 4.7.d)
4 Biểu diễn đồ thị trên máy tính
Lĩnh vực đồ thị có nhiều ứng dụng trong thực tế, có thể mô hình nhiều ứngdụng bằng đồ thị và sử dụng máy tính để giải quyết các bài toán về ứng dụng
đó Nên việc biểu diễn và lưu trữ đồ thị trên máy tính là một vấn đề khá trọngtâm, phương thức biểu diễn từng loại đồ thị trên máy tính ảnh hưởng đến cácgiải thuật, phương pháp giải quyết các ứng dụng trên máy tính
4.1 Biểu diễn bằng ma trận kề
Phương pháp này dựa trên mối quan hệ giữa các cặp đỉnh, mỗi đồ thị đượcđặt tương ứng với một ma trận vuông cấp n (n là số đỉnh của đồ thị) Gọi matrận kề là A = (aij ) i,j = 1 n
+ Trường hợp G = <X,U> là đồ thị vô hướng với X = {x1, x2, ,xn} khi đómỗi phần tử aij của ma trận A được xác định như sau: aij = aji = d, nếu cặp đỉnh(xi, xj) có d cạnh nối với nhau Khi cặp đỉnh (xi, xj) không có cạnh nào nối vớinhau thị aij = 0 Ta thấy ma trận kề của đồ thị vô hướng là ma trận đối xứng.+ Trường hợp G = <X,U> là đồ thị có hướng với X = {x1, x2, ,xn} thì mỗiphần tử aij của A được xác định như sau: đối với mỗi cặp đỉnh (xi, xj) từ xi đến
xj nếu có d cung thì aij = d Chú ý aji = 0 nếu không có cung nào hướng từ xj
đến xi Ma trận kề trong trường hợp này là không đối xứng
Trong 2 trường hợp trên ta chú ý nếu đỉnh xi có một khuyên thì phần tử tươngứng của ma trận kề là aii = 1
Trang 18
Hình 4.8
Ta có thể dùng ma trận kề biểu diễn đồ thị G1 và G2 trong hình 4.8 như sau:
Đối với đồ thị có trọng số mỗi cạnh e = (xi, xj) được gán một trọng số l(e) (còn viết là l(xi, xj) ) thì ma trận kề của nó được thay bằng ma trận có trọng số,
khi đó mỗi phần tử của ma trận bằng trọng số của cạnh tương ứng: aij = l(xi,
xj)
Ưu điểm của phương pháp này là dễ dàng xác định được các cặp đỉnh có kềnhau hay không hoặc rất thuận tiện khi tìm số bậc của mỗi đỉnh Việc truy cậpphần tử của ma trận kề qua chỉ số không phụ thuộc vào số đỉnh của đồ thị.Nhược điểm lớn nhất của phương pháp này là không phụ thuộc vào số cạnhcủa đồ thị, ta luôn phải sử dụng n2 đơn vị bộ nhớ để lưu trữ ma trận kề của nó
Định lý:
Nếu G = <X,U> là đa đồ thị với A = (aij) là ma trận kề tương ứng, thì sốđường đi khác nhau từ đỉnh xi đến đỉnh xj có độ dài s bằng phần tử Pij của matrận tích A´A´ ´A = As = (Pij)
Xét ví dụ ứng dụng: Trong một số hệ thống thông tin khi được mô hình bằng
đồ thị có thể thực hiện tốt một số công tác kiểm kỹ thuật Ví dụ khi biểu diễnmột mạng máy tính bằng đồ thị, giả sử có 2 máy nào đó mà thông tin truyềngiữa chúng là quan trọng, cần tiến hành kiểm tra xem đã có đường truyền dựphòng giữa chúng không Xét ở góc độ đồ thị thì cần kiểm tra xem số đường
đi giữa cặp đỉnh tương ứng với 2 máy đó, nếu số đường đi lớn hơn 1 là đã cóđường truyền dự phòng
* Chương trình viết bằng PASCAL sau tính số đường đi độ dài l nhập từ bàn
phím
Type MaTran = Array[1 20,1 20] Of Integer;
Var a, b, aa: MaTran;
1 0
0 0
2 1
1 2
0 1
0 1
1 1
0 1 0
1 1 0
2
G
M
Trang 20End;
BEGIN
Writeln('Nhap ma tran ke cho do thi:');
Write('So dinh do thi: '); Readln(n);
InputMt(a);
Write('Dinh xuat phat: '); Readln(x1);
Write('Dinh ket thuc: '); Readln(x2);
Write('Do dai duong di: '); Readln(l);
Trang 212 Nil
4.3 Danh sách kề
Phương pháp biểu diễn bằng danh sách kề cũng được sử dụng khá phổ biến
và thường hay dùng cho đồ thị có hướng
Danh sách kề cho đỉnh xi là danh sách gồm tất cả các đỉnh kề của xi theo thứ
tự các đỉnh trong tập đỉnh X Ta có thể biểu diễn đồ thị như một mảng FIRST,với phần tử FIRST[i] là con trỏ trỏ tới danh sách kề cho đỉnh xi
Ví dụ: ở hình 4.9 đồ thị G1 và G2 được biểu diễn bằng danh sách kề nhưsau:
Chương 2
2 1 1 2
3 Nil 3
Trang 22Số ổn định và tô màu đồ thị
I Số ổn định trong, số ổn định ngoài, nhân đồ thị
1 Số ổn định trong
Cho đồ thị vô hướng G = <X, U> và A Í X
a) Tập A gọi là tập ổn định trong của đồ thị nếu hai đỉnh bất kỳ trong A làkhông kề nhau, tức là không có một cạnh nào của đồ thị chứa hai đỉnh x và y.b) Tập A gọi là tập ổn định trong cực đại của đồ thị G nếu:
- A là tập ổn định trong
- Nếu thêm vào A một đỉnh ngoài A thì A không phải là ổn định trong
Gọi L là tập hợp các tập ổn đỉnh trong của của G = <X,U> Khi đó ký hiệu a(G)
= Max {ùAù / Aẻ L} và a(G) được gọi là số ổn định trong của đồ thị G Nhưvậy a(G) là số phần tử của 1 tập ổn định trong cực đại nào đó
2 Số ổn định ngoài
Cho đồ thị vô hướng G = <X,U> và B Í X
a) Tập B được gọi là tập ổn định ngoài của đồ thị nếu với mỗi phần tử y ẻ X \ Bđều tồn tại x ẻ B sao cho có cạnh nối giữa x và y, B còn được gọi là tập thốngtrị của đồ thị
b) Tập B được gọi là tập ổn định ngoài cực tiểu nếu:
- B là tập ổn định ngoài
- Nếu bớt 1 phần tử bất kỳ của B thị B không còn là tập ổn định ngoài
Gọi M là tập của tất cả các tập ổn định ngoài của G = <X,U> Khi đó ký hiệu
b(G) = Min {ùBù / Bẻ M} và b(G) được gọi là số ổn định ngoài của đồ thị G Đối với các tập ổn định ngoài, ta thường quan tâm đến tập ổn định ngoài có sốphần tử ít nhất vì lực lượng của nó liên quan tới số ổn định ngoài của đồ thị
3 Nhân đồ thị
Cho đồ thị vô hướng G = <X, U> Nếu tập A Í X vừa là tập ổn định trong vừa
là tập ổn định ngoài của đồ thị G thị A được gọi là nhân của đồ thị
Đối với nhân của đồ thị, ta quan tâm tới nhân có số phần tử ít nhất
Trang 23Với đồ thị trên các tập ổn định ngoài cực tiểu là B1 = A1; B2 = A2; B3 = A3; B4
= A4 Vì các tập này nếu bớt đi 1 trong các phần tử của chúng thì tập còn lạikhông là tập ổn định ngoài nữa Số ổn đỉnh ngoài của đồ thị này là b(G) = 3.Nhân của đồ thị trên là B1, B2, B3, B4 vì các tập này là tập ổn định trong và đồngthời cũng là tập ổn định ngoài
4 Các thuật toán tìm các tập ổn định trong cực đại, ổn định ngoài cực tiểu.
4.1 Thuật toán tìm số ổn định trong
- Bước 1: Tìm các tập ổn định trong có 2 phần tử bằng cách xét tất cả tổ hợp
chập 2 của n phần tử (n số các đỉnh), kiểm tra những tập nào mà phần tử của matrận kề tương ứng bằng 0 thì tập đó là ổn định trong
- Bước 2: Duyệt từng tập có 2 phần tử và bổ sung thêm phần tử thứ 3 và kiểm
tra từng cặp như bước 1, tập nào thoả ta được tập ổn định trong 3 phần tử
- Bước k: Giả sử đã tìm được m tập con ổn định trong có k + 1 phần tử
+ Duyệt từng tập và bổ sung vào các tập đó thêm 1 phần tử
Trang 24+ Nếu không có tập nào bổ sung được nữa thì dừng
4.2 Thuật toán tìm số ổn định ngoài
Xét G = <X,U> với X = {x1, x2, ,xn}
- Bước 1: Xác định các tập D(xi) i = 1 n với D(xi) = {xi và các đỉnh kề với xi}
- Bước 2: Từ các tập D(x1), D(x2), , D(xn) ta tìm tập B
B = {xk1 , xk2 , , xkm} sao cho D(xk1) ẩ D(xk2) ẩ ẩD(xkm) = X
Khi đó B là tập ổn định ngoài cực tiểu
5 ứng dụng đồ thị trong lập trình chơi cờ Ca rô
Ta xét một ứng dụng của đồ thị cho bài toán lập trình chơi cờ Ca rô trên máytính Cờ carô là loại cờ mà rất nhiều bạn trẻ đặc biệt giới sinh viên học sinh ưathích Quy tắc và cách thức chơi đơn giản, nhưng nó thực sự là bài toán tin rấthay, là bài lập trình thể hiện nhiều tư duy thuật toán, cũng như cơ sở về trí tuệnhân tạo cho việc lập trình trò chơi giữa người và máy
Ta xét ứng dụng của đồ thị phục vụ cho bài toán lập trình trò chơi Carô
Xét một thế cờ Carô như hình 1.2.a
Cấu trúc dữ liệu cho thế cờ này có thể dùng bảng ma trận như hình 1.2.b, với 0
là vùng trắng, 1 là quân "o" và 2 là quân "x" Nhưng như vậy việc tính toán sẽrất khó khăn, ta có thể dùng đồ thị làm cấu trúc dữ liệu cho thế cờ Carô, khi đóviệc tính toán sẽ dễ dàng đi và tận dụng những tính chất đã nghiên cứu về đồ thịthì bài toán lập trình trò chơi carô sẽ trở nên thuận lợi hơn nhiều
a) Mô hình bằng đồ thị theo vị trí liền kề
Ta xây dựng 1 đơn đồ thị theo nguyên tắc sau
- Mỗi 1 quân "x" hoặc quân "o" thì tương ứng với một đỉnh
- Hai đỉnh là kề nhau nếu tương ứng với 2 quân ở vị trí liên tiếp nhau
0 1 0 2
A = 0 0 2 2
0 2 0 0
1 0 0 1
Trang 25- Mỗi một cạnh được gán một nhãn, nhãn cho biết 2 đỉnh kề nhau là kề đứng, kềchéo hay là kề ngang trong thế cờ Ta gán tên nhãn như sau: thẳng ngang nhãn
là 1, thẳng chéo trái là 2, thẳng dọc nhãn là 3, thẳng chéo phải là 4 (xem hình1.3.a)
Hình 1.3 a) Cách đánh nhãn b) Đồ thị cho thế cờ hình 1.2.a
Ví dụ đồ thị như hình 1.3.b là thể hiện cho thế cờ hình 1.2.a
Trong luật chơi cờ carô nếu quân "x" đi trước thì ngay sau đó là quân "o" đi sau,tiếp tục lại "x" rồi lại "o" Chính điều này ta có thể coi những quân "x" tươngứng là những đỉnh số lẻ, quân "o" tương ứng những đỉnh số chẵn hoặc ngượclại
Trong 1 thế cờ Carô nếu tồn tại 1 dãy 5 quân liên tiếp của "x" hoặc "o" đượcsắp thẳng hàng ngang, thẳng hàng dọc hoặc thẳng hàng chéo thì thắng Với đồthị nếu tồn tại một đường đi các cạnh cùng nhãn gồm 5 đỉnh số lẻ, hoặc số chẵnthì thế cờ thắng cho tương ứng quân "x" hoặc quân "o"
Xét đồ thị hinh 1.3.b đã có 1 đường đi cùng nhãn 4 gồm 3 đỉnh cùng quân x1,
x2, x3 Nếu ta thêm 1 đỉnh x6 kề với đỉnh o2 sao cho cạnh (o2, x6) có nhãn 4, saucùng ta thay đỉnh o2 bằng đỉnh x5 thì bây giờ ta có 1 đường đi cùng nhãn 4 gồm
5 đỉnh quân "x" (x1, x2, x3, x5, x6) và ta có 1 thế cờ thắng cho quân x
Nhận xét:
- Với mô hình này ta sẽ không thể thấy được đầy đủ mối quan hệ giữa cácđỉnh, như đồ thị hình 1.3.b đỉnh o3 là đỉnh cô lập, trong thế cờ hình 1.2.a o1 cómối quan hệ thẳng hàng với x1 và x3 nhưng trong đồ thị tương ứng ta khôngnhìn thấy được mối quan hệ này nên khó tính toán được nước đi cho lần sau
4 1
Trang 26Mà mối quan hệ "thẳng hàng" giữa các quân là quan trọng trong bài toán lậptrình trò chơi carô.
- Mô hình này chỉ thích hợp cho việc lập trình khi mà chỉ chơi giữa người vớingười, lúc này bài toán chỉ là tìm đường đi cùng nhãn gồm 5 đỉnh cùng quân,không phải là bài toán tính nước đi cho các bước tiếp theo
b) Mô hình bằng đồ thị theo mối quan hệ thẳng hàng.
Cách xây dựng này tương tự như cách thứ nhất nhưng có những đặc điểm sau:
- Hai đỉnh x và o là kề nhau nếu tương ứng với 2 quân x và o mà chúng có mốiquan hệ là thẳng hàng với nhau
- Trên mỗi cạnh ngoài nhãn thể hiện mối quan hệ thẳng hàng, ta thêm 1 trọng sốđường đi, trọng số của cạnh (x, o) là số ô đi thẳng hàng từ quân x đến quân otrong thế cờ
- Hai đỉnh x và o chỉ được kề nhau khi trọng số cạnh (x, o) không quá 4
Trang 27Mỗi cạnh của đồ thị, nhãn đặt trước trọng số, trọng số đứng sau cách nhãn bởidấu phẩy Xét thế cờ 1.4.a từ quân x1 đến quân x2 cách nhau 1 ô nếu tính từ x1
nên trọng số cạnh (x1, x2) là 1, quân x1 cách x3 2 ô nên trọng số (x1, x3) là 2 Tathấy x1, x2, x3 đều thẳng hàng dọc nên nhãn là 3, và tương tự đánh nhãn vàtrọng số cho các cạnh còn lại ta có đồ thị như hình 1.5.a Như vậy nếu tồn tại 1đường đi cùng nhãn và có trọng số 1 gồm 5 đỉnh cùng quân thì thế cờ thắng, ở
đồ thị hình 4.a đường đi thắng cho quân x là (x1, x2, x3,x4, x5)
Trong kỹ thuật chơi cờ Ca rô, nước đi có lợi nhất là nước có tạo được nhiềukhả năng dẫn đến thế cờ thắng, ví dụ thế cờ như hình 1.4.b thì ví trí của o1 là 1trong những nước có lợi nhất, vì nếu ta thay o1 bằng x4 thì quân x có thêm 3khả năng phát triển nước dẫn đến thế cờ thắng như (x4, x2); (x4, x1); ( x4, x3),nếu với đồ thị tương ứng thì x4 là phần tử thống trị tập {x1, x2, x3} Nếu vẫn giữ
vị trí o1 như ban đầu thì quân "o" đã ngặn chặn đối phương có hiệu quả vì o1 đãthống trị {x1, x2, x3}, và ta thấy còn có o2 thống trị {x1, x2, x3} ngăn chặn đượcthế sắp thắng theo thẳng chéo {x1, x2, x3} (xem đồ thị hình 1.5.b) Như vậy ởgóc độ đồ thị thì ta tìm tập thống trị (tập ổn định ngoài cực tiểu), ở đồ thị này{o1, o2} là 1 tập thống trị
Nhận xét:
- Với mô hình này ta có ưu điểm là nhìn rõ trước được mối quan hệ giữa cácđỉnh, tuy vậy nếu có 2 đỉnh không thẳng hàng thì chúng cô lập nhau, nhưng điềuthường xảy ra khi số đỉnh là nhỏ ta dễ dàng kiểm soát được thế cờ Hơn nữa hầunhư ta chỉ quan tâm những quân có mối quan hệ thẳng hàng, để khắc phụcnhược điểm ta có thể dựa vào mối quan hệ "tay ba" bằng cách đưa thêm đỉnh
vụ cho việc xử lý và tìm kiếm, tra cứu thông tin khi cần thiết
II tô màu đồ thị
1 Sắc số đồ thị
Trang 28Sắc số đồ thị G là số màu tối thiểu cần dùng để tô màu các đỉnh của đồ thị saocho hai đỉnh kề nhau phải có màu khác nhau.
Xét đỉnh xk +1, vì đồ thị là đầy đủ nên đỉnh xk+1 nối với các đỉnh còn lại, cho nên
để tô đỉnh xk+1 cần màu khác với màu đã tô nên số màu sẽ là k + 1 màu
Hệ quả: Nếu đồ thị G chứa một đồ thị con đẳng cấu với Km thì l(G) ³ m
Định lý 2: Giả sử G = <X, U> là đồ thị vô hướng l(G) = 2 khi và chỉ khi trong
G không có chu trình độ dài lẻ
- Điều kiện đủ: Giả sử G không có chu trình độ dài lẻ Ta chỉ ra l(G) = 2 Thậtvậy, ta tô màu các đỉnh của G theo nguyên tắc sau: Nếu x ẻ X được tô màuxanh thì các đỉnh kề của x là y, z lại tô màu đỏ Tiếp theo các đỉnh kề của y,z, lại tô màu xanh Cứ như vậy, do số đỉnh hữu hạn và G liên thông nên tất cảcác đỉnh trong X sẽ được tô hoặc xanh hoặc đỏ và không có một đỉnh nào được
tô cả hai màu xanh, đỏ đồng thời, vì nếu có điều đó xảy ra thì sẽ có một chutrình độ dài lẻ đi qua x (trái với giả thiết) Hay l(G) = 2
- Điều kiện cần: Giả sử l(G) = 2 Dễ thấy rằng chỉ dùng 2 màu để tô các đỉnhcủa G thì trong G phải không có chu trình độ dài lẻ, vì nếu có chu trình độ dài lẻthì tô màu các đỉnh theo quy tắc trên sẽ có ít nhất một đỉnh được tô đồng thời cả
a b
c
d
Trang 29G1 G2
Hình 2.1
Ví dụ: Hình 2.1 đồ thị G1 không có chu trình độ dài lẻ, còn G2 có chu trình độdài lẻ Trong G1 nếu ta tô đỉnh a bởi màu xanh thì đỉnh b, c tô màu đỏ Vì b màu
đỏ nên d, e tô màu xanh Ta thấy G1 không có chu trình lẻ và l(G) = 2
Xét G2 có chu trình độ dài lẻ nên không thể tô bằng 2 màu, mà phải dùng 3 màu:xanh, đỏ và vàng
Định lý 3: Giả sử G = <X,U> là đồ thị vô hướng với số đỉnh là n Khi đó số ổn
định trong a(G) và sắc số l(G) thoả mãn bất đẳng thức:
a(G) l(G) ³ n
Chứng minh: Đặt l(G) = s, theo định nghĩa của sắc số thì dùng s màu để tô cácđỉnh trong X theo nguyên tắc hai đỉnh kề phải tô bằng 2 màu khác nhau
Cách tô màu như trên lập nên một phân hoạch tương đương trên tập X: X1 ẩ X2
ẩ ẩ Xs, Xi ầ Xj = ặ (i ạ j), ở đây nếu ta đánh số các màu từ 1, 2, ,s thì Xi gồmcác đỉnh cũng được tô màu i (i = 1,2, ,s) Mặt khác theo định nghĩa số ổn địnhtrong thì ùXiù Ê a(G) (i = 1, ,s) Từ đó ta có đánh giá:
Ví dụ: Xét đồ thị như hình 2.2.a 1 là đồ thị phẳng vì nó được biểu diễn cách
khác ở dạng mặt phẳng không có cạnh cắt nhau như hình 2.2.a 2 Tương tự đồ thị
ở hình 2.2.b 1 là đồ thị phẳng vì nó có thể biểu diễn ở dạng mặt phẳng như hình
Trang 30b1) b2)
Hình 2.2
* Các cạnh của đồ thị phẳng chia mặt phẳng thành nhiều miền, mỗi miền gọi là
một mặt của G Những cạnh nằm bên trong mặt f nào đó hoặc là cạnh giới hạn
của mặt f với một mặt khác gọi là cạnh biên của mặt f
2.2 Định lý 5 màu (Kempe - Heawood)
Mọi đồ thị phẳng đều có sắc số không lớn hơn 5.
Chứng minh: Xét một đồ thị G có n đỉnh Dùng phép chứng minh quy nạp trên
n ta có:
Trường hợp G có một đỉnh hiển nhiên đúng
Giả sử mọi đồ thị phẳng có n đỉnh (n ³ 1) đều có thể tô bằng 5 màu Coi một đồthị phẳng có n + 1 đỉnh Có thể giả sử G là đơn đồ thị Vì G phẳng nên có mộtđỉnh bậc Ê 5 Loại bỏ đỉnh x này khỏi G, ta nhận được một đồ thị phẳng mới có
n đỉnh Tô màu cho đồ thị mới này bằng năm màu, do giả thiết qui nạp trên điềunày thực hiện được Bây giờ đưa đỉnh x vào lại đồ thị
Nếu các đỉnh kề với x được tô bằng ít hơn 5 màu thì tô màu x bằng một trong
5 năm khác màu các đỉnh kề với x là xong : đồ thị G đã được tô bằng 5 màu Vậy chỉ xét trường hợp m(x) = 5 và 5 đỉnh kề với x được tô bằng 5 màu nhưhình 2.3 sau:
Hình 2.3
Xét tất cả các đường trong G bắt đầu từ a và gồm các đỉnh chỉ tô bằng màu 1
và màu 3, trong các đường này nếu không có đường nào đi qua đỉnh c thì ta có
a b c
d
e x
5
1
2 3
Trang 31thể thày đổi màu các đỉnh trên, tất cả các đường nói trên theo cách đổi màu 1thành màu 3 và có thể tô đỉnh x màu 1 Nếu có một đường từ a đên c gồm toàncác đỉnh chỉ tô bằng màu 1 và màu 3 thì đường này cộng thêm hai cạnh e1 = (x,a) và e2 = (c, x) sẽ tạo thành một chu trình Hai đỉnh b, d không thể nằm cùngbên trong hoặc cùng bên ngoài chu trình này được Suy ra không có đường nào
từ b đến d gồm các đỉnh chỉ tô màu 2 và màu 4 theo cách đổi màu 2 thành màu
4 và ngược lại Lúc này, b và d có cùng màu 4 và ta có thể tô đỉnh x bằng màu2
2.3 Bài toán 4 màu (Appel - Haken)
Phát biểu: Mọi đồ thị phẳng đều có sắc số không lớn hơn 4.
Bài toán 4 màu được phát biểu như trên được chứng minh bằng phép thử trênmáy tính trong nỗ lực nhằm thay thế cho định lý 5 màu
3 Ví dụ ứng dụng
Vấn đề tô màu đồ thị cũng có nhiều ứng dụng thực tế như tô màu bản đồ, côngtác lập lịch Với đồ thị phẳng ta có thể mô hình cho một bản đồ, trong đó mỗimiền bản đồ thì tương ứng là một đỉnh, hai miền có chung đường biên thì tươngứng với 2 đỉnh kề nhau Khi tô màu bản đồ thì 2 miền kề nhau (chỉ chung đườngbiên không kể chung điểm biên) phải có màu khác nhau Như vậy vấn đề tìm sốmàu tối thiểu để tô bản đồ, tương ứng với việc tìm sắc số cho đồ thị phẳng Vàonăm 1850 người ta đã chỉ ra 1 cách tô bản đồ nước Anh chỉ cần 4 màu, điều này
là 1 thể hiện cho bài toán 4 màu
* Trong nhiều bài toán tin học, ta hay bắt gặp bài toán lập lịch Vấn đề tô màu
đồ thị có thể ứng dụng để giải quyết bài toán này
Ta xét một ví dụ ứng dụng, trong một phòng về phần mềm có các nhóm lậptrình như sau:
Trang 32Như vậy sắp lịch sao cho những nhóm nào có chung ít nhất một thành viên thìkhông thể họp cùng một thời điểm Gọi mỗi nhóm là một đỉnh của đồ thị, nhữngnhóm nào cùng chung ít nhất một thành viên thì tương ứng 2 đỉnh kề nhau, ví
dụ như nhóm 1 và 2 cùng chung thành viên A thì đỉnh 1 và 2 kề nhau, ta biểudiễn đồ thị như hình 2.4
Trang 33Lý thuyết về chu trình, đường đi Euler và Hamilton đã có từ lâu và đượcnghiên cứu nhiều Ta có thể bắt gặp nhiều bài toán trong thực tiễn mà có thể sửdụng các lý thuyết về chu trình, đường đi Euler và Hamilton để giải quyết, ví
dụ sử dụng lý thuyết đường đi, chu trình Euler để tìm hành trình đường đi chongười phát thư, cho xe rửa đường sao cho hành trình là tối ưu nhất Hoặc làtrong một hệ thống mạng, một máy đơn cần gửi 1 thông điệp đến tất cả các máycòn lại vậy thì đường truyền tin sẽ đi như thế nào để cho hiệu quả nhất, bài toánnày có thể được giải quyết bằng cách vận dụng các lý thuyết chu trình và đường
Định lý 1: Đồ thị vô hướng G = <X,U> có chu trình Euler khi và chỉ khi G là
liên thông và bậc của tất cả các đỉnh trong đồ thị G là số chẵn
Chứng minh
- Điều kiện cần: Giả sử đồ thị G = <X, U> có chu trình Euler Ta cần chứng
minh G là đồ thị liên thông và với mỗi x ẻ X có m(x) = 2k với k là một sốnguyên dương nào đó
Thật vậy, giả sử G = <X, U> không liên thông hay G có ít nhất hai thành phầnliên thông G1 = <X1, U1> và G2 = <X2, U2> Trong đó X1 ẩ X2 = X , U1 ẩ U2 = U,giữa các đỉnh trong X1 và trong X2 không có cạnh hoặc đường nối với nhau Giả
sử w là 1 chu trình Euler trong G Theo định nghĩa của chu trình Euler thì w làchu trình đi qua tất cả các cạnh trong G, mỗi cạnh đúng 1 lần Nếu w có đỉnhchung với G1 = <X1, U1> thì w là chu trình nằm gọn trong đồ thị G1 Điều nàymâu thuẫn với định nghĩa của w Chứng tỏ đồ thị G = <X, U> là liên thông Bây giờ ta chứng minh mỗi đỉnh x ẻ X trong G đều có bậc chẵn, tức là cần chỉ
ra m(x) = 2k, với k ẻ {1,2, } Trước hết thấy rằng k ạ 0 bởi vì nếu k = 0 thì x làđiểm cô lập trong G, tức là G không liên thông, trái với điều đã chỉ ra Giả sửngược lại tồn tại một đỉnh xi ẻ X mà m(xi) là một số lẻ, chẳng hạn m(xi) = 3 Đốivới xi có 3 cạnh đi vào nó, giả sử đó là các cạnh (xi, xk), (xi, xj) và (xi, x1) ẻ U.Chu trình Euler w sẽ đi qua 3 cạnh đó Khi đó một trong 3 cạnh trên có ít nhất
Trang 34một cạnh mà chu trình Euler w đi qua 2 lần Điều đó mâu thuẫn với định nghĩacủa chu trình w Vậy m(x) là một số chẵn với mọi x ẻ X.
- Điều kiện đủ: Giả sử G = <X, U> là đồ thị liên thông và mỗi đỉnh x ẻ X đều có
bậc chẵn: m(x) = 2k, k ẻ {1, 2, } ta chứng minh trong đồ thị G tồn tại một chutrình Euler
Với giả thiết trên, trước hết ta chứng minh rằng tại mỗi đỉnh của G có tồn tạichu trình đơn (tức là chu trình đi qua các cạnh, mỗi cạnh đúng một lần) Đềchứng minh điều đó, ta lưu ý rằng không thể có một đỉnh x mà m(x) = 2 Điều
đó đúng bởi vì khi đó tại đỉnh x có khuyên và do đó x cũng là một đỉnh cô lập,trái với giả thiết đồ thị G là liên thông
Giả sử x ẻ X là một đỉnh nào đó Ta chỉ ra có chu trình đơn P qua x Do m(x) >
2 suy ra tồn tại các đỉnh x1 sao cho x1 ạ x và x kề với x1 Do m(x1) > 2 suy ra tồntại các đỉnh xi sao cho xi ạ xi-1 và xi kề với xi-1 Khi tới bước thứ i thì ta đã có mộtđường đi tư x đến xi, qua các cạnh, mỗi cạnh đúng một lần Quá trình trênkhông thể kéo dài vô hạn do tính hữu hạn của đồ thị G Giả sử số bước hữu hạn
đó là i Điều này chứng tỏ x và xi kề nhau, tức là có cạnh nối x và xi Điều đó làđúng vì bước i là bước cuối cùng Như vậy tại đỉnh x có chu trình đơn P đi qua Bây giờ ta chứng minh rằng trong đồ thị G = <X, U> có chu trình Euler Theochứng minh trên với đỉnh x ẻ X có chu trình đơn đi qua là P1 và P1 là chu trìnhtrong đồ thị G Hãy "đánh dấu xoá" các cạnh trong P1 Nếu sau khi "đánh dấuxoá" các cạnh trên đường P1 tạo ra một số đỉnh cô lập mới thì hãy "đánh dấuloại bỏ" các đỉnh cô lập mới đó Kết quả thu được sẽ là một đồ thị mới G1 =
<X1, U1> là đồ thị con của đồ thị G = <X, U> đã cho Ta chỉ ra đồ thị G1 thoảmãn một số tính chất sau:
- Chu trình P1 trong đồ thị G và G1 có đỉnh chung, bởi vì G là đồ thị liên thông
- Đồ thị G1 gồm các đỉnh x ẻ X1 có bậc chẵn
Thật vậy, nếu x ẻ X1 mà x không thuộc các đỉnh trong P1 thì m(x1) hiển nhiên
là một số chẵn
Còn nếu x1 ẻ X1 mà x1 là đỉnh thuộc P1 thì sau khi "đánh dấu bỏ " hai cạnh của
P1 chứa đỉnh đó thì bậc của đỉnh x1 sẽ giảm đi 2 đơn vị, do đó m(x1) cũng làchẵn
Tóm lại với mọi x ẻ X1 thì m(x) là một số chẵn
Ta có thể minh hoạ đồ thị với chu trình đơn P1 và đồ thị con G1 như hình vẽdưới đây:
Trang 35x1 là đỉnh chung giữa P1 và G1 Đối với G1 = <X1, U1> tại đỉnh x1 ẻ X1 có tồn tạichu trình đơn P2 mà cách xây dựng P2 cũng đối với P1
Trong P2 bỏ tất cả các cạnh, giữ lại các đỉnh có cạnh hoặc đường nối với cácđỉnh khác trong G1 ta được đồ thị con G2 = <X2, U2> của G1 Đồ thị cũng có tínhchất như G1, là liên thông, mọi x ẻ X2 đều có bậc chẵn và G2 và P2 có điểmchung chẳng hạn x2
Do tính hữu hạn của đồ thịi G, quá trình xây dựng các chu trình đơn sẽ dừnglại ở bước thứ k nào đó Như vậy, trước khi sang bước thứ k ta đã có k - 1 chutrình đơn P1, P2, , Pk-1 và đồ thị Gk-1 = <Xk-1, Uk-1> là đồ thị con của đồ thị Gk-2
= <Xk-2, Uk-2>. Đồ thị Gk-1 là liên thông và mọi đỉnh x ẻ Xk-1 có bậc chẵn, đồngthời Gk-1 và Pk-1 có điểm chung là xk Vì quá trình trên dừng lại sau k bước nên
đồ thị Gk-1 là một chu trình đơn qua xk và bao gồm hết các cạnh trong đồ thị Gk-1
Vì nếu không sẽ dẫn tới mâu thuẫn do k là bước cuối cùng
Ghép các chu trình đơn P1, P2, ,Pk tại các đỉnh chung ta được tập các chu trìnhEuler trong đồ thị G = <X, U> Định lý được chứng minh
Định lý 2: Cho đồ thị có hướng G = <X, U> G có chu trình Euler khi và chỉ khi
G là liên thông và mỗi đỉnh đều có bậc vào bằng bậc ra
1.2 Thuật toán tìm chu trình Euler
Cho đồ thị G = <X, U> xây dựng thuật toán tìm chu trình Euler
Bước 1: Kiểm tra xem G có là đồ thị liên thông hay không Nếu G là liên thông
thì chuyển sang bước 2 Ngược lại thì thuật toán dừng và kết luận rằng đồ thịkhông có chu trình Euler
Bước 2: Kiểm tra xem tất cả các đỉnh trong G đều có bậc chẵn hay không
Trang 36Nếu tất cả các đỉnh đều có bậc là chẵn thì chuyển sang bước tiếp theo Nếukhông dừng lại và kết luận đồ thị đã cho không có chu trình Euler.
Bước 3: Xây dựng các chu trình đơn trong G sao cho tất cả các cạnh của đồ thị
đều có các chu trình đơn đi qua và mỗi cạnh chỉ đi qua một lần Ghép các chutrình đơn như trên tại các đỉnh chung nhau ta được tập các chu trình Euler cầntìm
2 Đường đi Euler
2.1 Định nghĩa
Đườ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
Đinh lý 3: Cho G = <X, U> là đồ thị vô hướng liên thông Điều kiện cần và đủ
để đồ thị có đường Euler là số đỉnh bậc lẻ trong đồ thị là 0 hoặc 2
Chứng minh: Trường hợp số đỉnh bậc lẻ bằng 0 thì G là đồ thị liên thông và
mọi đỉnh đều có bậc chẵn Theo định lý về chu trình Euler thì trong G có chutrình Euler, tức cũng là đường Euler
Nếu số đỉnh bậc lẻ là 2, chẳng hạn đó là các đinh x1 và x2 Hãy thêm vào mộtđỉnh mới x và hai cạnh (x, x1) và (x, x2) vào đồ thị G = <X, U> Ta có đồ thịmới G' = <X', U'>, ở đây X' = X ẩ {x}, U' = U ẩ {(x, x1), (x, x2)} Rõ ràng là G'liên thông và mọi đỉnh đều có bậc chẵn Theo định lý về chu trình Euler đã nêu
ở trên thì trong G' có tồn tại chu trình Euler, cũng là đường Euler
Định lý 4: Cho đồ thị có hướng G = <X, U>, điều kiện cần và đủ để có đường
đi Euler từ x đến y (x, y ẻ X) là G liên thông và đỉnh x có bậc ra lớn hơn bậc vào
1 đơn vị, đỉnh y có bậc vào lớn hơn bậc ra 1 đơn vị, còn tất cả các đỉnh khác đều
có bậc vào bằng bậc ra
2.2 Thuật toán tìm đường Euler
Bước 1: Kiểm tra xem đồ thị G có liên thông hay không Nếu có thì chuyển
sang bước 2 Ngược lại, thì dừng thuật toán và khẳng định rằng không cóđường Euler
Bước 2: Kiểm tra xem mọi đỉnh trong G đều có bậc chẵn hay không Nếu có
chuyển sang bước 4 Nếu không chuyển sang bước 3
Bước 3: Kiểm tra xem số đỉnh bậc lẻ có bằng 2 hay không Nếu có chuyển sang
bước 4 Nếu không thì dừng lại và kết luận không có đường Euler
Bước 4: Xây dựng đường Euler trong G.
Trang 37II Chu trình và đường đi Hamilton
Hơn nữa nếu a' là một đỉnh kề nào đó của a (khác với y) và b' là đỉnh nối tiếp
ngay a' trong chu trình P (hình 2.1.b) thì b' không thể là đỉnh kề của b (nếu trái
lại thì ta có thể thay P bởi chu trình aa' bb' a, trong đó không có y)
Như vậy, với mỗi đỉnh kề với a ta có một đỉnh không kề với b, tức là số đỉnhkhông kề với b không thể ít hơn số đỉnh kề với a (số đỉnh kề với a không nhỏhơn n/2 + k) Mặt khác, theo giả thiết, số đỉnh kề với b cũng không nhỏ hơn n/2+ k Vì không có đỉnh nào vừa kề với b lại vừa không kề với b, nên số đỉnh của
a
b
c
d k
Trang 38G' không ít hơn 2.(n/2 + k) = n + 2k, mâu thuẫn với giả thiết là số đỉnh của G'bằng n + k, (k > 0) Định lý được chứng minh.
Ví dụ: Đồ thị trong hình 2.1.a có 8 đỉnh, đỉnh nào cũng có bậc 4 Vậy G có chu
trình Hamilton Có thể thấy một chu trình Hamilton a-g-c-k-d-h-b-e-a
Chứng minh: Giả sử w = xi1 xi2 xik xik+1 xim - 1 xim là một đường sơ cấp bất
kỳ trong đồ thị Để đơn giản, ta chỉ viết các đỉnh mà không có các cạnh xen kẽnhư định nghĩa
Nếu trong đường sơ cấp w mà tất cả các đỉnh trong X đều có mặt thì chính w
là đường Hamilton Còn nếu có những đỉnh trong X nhưng chưa có mặt trong wthì ta có thể bổ sung hết những đỉnh đó vào đường w sơ cấp để nó trở thànhđường Hamilton theo nguyên tắc sau đây:
Giả sử x ẻ X mà x không nằm trên đường sơ cấp w Các trường hợp sau đâyxảy ra do tính đầy đủ của đồ thị G:
- Nếu x có cung tới xi1 thì bổ sung x vào đầu w và nó có dạng:
Trang 39a) b)
Hình 2.2
Ví dụ đồ thị trong hình 2.2.a có chu trình Hamilton nhưng nó không phải là đồ thị đầy đủ Còn đồ thị hình 2.2.b không có đường Hamilton.
3 Thuật toán liệt kê tất cả các chu trình Hamilton
Thuật toán được xây dựng dựa trên cơ sở thuật toán quay lui cho phép liệt kêtất cả các chu trình Hamilton của đồ thị
if (k = n +1) and (y = v0) then GhiNhan(x[1], ,x[n],v0)
Else if ChuaXet[y] then Begin
Trang 40Đường đi ngắn nhất trong đồ thị
Giới thiệu:
Trong các ứng dụng thực tế bài toán tìm đường đi ngắn nhất giữa hai đỉnh củamột đồ thị liên thông có ý nghĩa rất lớn Bài toán tìm đường đi ngắn nhất đượcứng dụng trong thực tế như để chọn một hành trình tiết kiệm nhất (về thời gianhoặc chi phí) trên một mạng giao thông đường thuỷ, đường bộ hoặc đườngkhông Bài toán lập lịch thi công các công đoạn trong một công trình thi cônglớn Bài toán lựa chọn đường truyền tin với chi phí nhỏ nhất trong mạng thôngtin Dùng thuật giải đường đi ngắn nhất trong đồ thị giải quyết bài toán sửa góitin sai trong việc truyền tin dưới đây ta xét một số thuật toán để tìm đường đingắn nhất trong đồ thị có trọng số và đồ thị không có trọng số
I Đường đi ngắn nhất trong đồ thị không có trọng số
1 Định nghĩa: Đồ thị không có trọng số là đồ thị hữu hạn trên các cạnh
không có trọng số Bài toán tìm đường đi ngắn nhất giữa hai đỉnh a,b trong đồthị không có trọng số G = <X, U> là tìm đường đi giữa hai đỉnh a, b sao cho có
và tồn tại y ẻ A(i) sao cho từ y có cạnh (cung) tới x} Do tính hữu hạn của đồthị, sau một số hữu hạn các bước, thuật toán dừng lại và cho kết quả là tập cácđỉnh có chứa b được đánh số bởi m là A(m)
Bước 2: Do bước 1 thì đỉnh b được đánh số bởi m, điều này chứng tỏ đường đi
từ a đến b có m cạnh (cung) và là đường ngắn nhất đi từ a đến b Để tìm tất cả