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

một số vấn đề ứng dụng của đồ thị trong tin học

89 491 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 89
Dung lượng 685 KB

Nội dung

Đề 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 1

B 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 3

Lờ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 4

Hà 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 5

má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 6

Khi 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 7

1 Đị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 8

Hì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 11

Tậ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 12

và 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 15

Hì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 16

W 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 20

End;

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 21

2 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 22

Số ổ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 23

Vớ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 26

Mà 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 27

Mỗ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 28

Sắ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 29

G1 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 30

b1) 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 31

thể 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 32

Như 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 33

Lý 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 34

mộ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 35

x1 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 36

Nế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 37

II 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 38

G' 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 39

a) 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ả

Ngày đăng: 29/07/2014, 09:18

HÌNH ẢNH LIÊN QUAN

Hình 4.3   a: G- 1 đều;  b: G - 2 đều;  c: G - 2 đều;  d: G - 3 đều. - một số vấn đề ứng dụng của đồ thị trong tin học
Hình 4.3 a: G- 1 đều; b: G - 2 đều; c: G - 2 đều; d: G - 3 đều (Trang 15)
Đồ thị đầy đủ n đinh, ký hiệu K n  là đơn đồ thị vô hướng mà mọi cặp đỉnh  phân biệt luôn kề nhau - một số vấn đề ứng dụng của đồ thị trong tin học
th ị đầy đủ n đinh, ký hiệu K n là đơn đồ thị vô hướng mà mọi cặp đỉnh phân biệt luôn kề nhau (Trang 16)
Hình 4.7   Một số topolopy của LAN - một số vấn đề ứng dụng của đồ thị trong tin học
Hình 4.7 Một số topolopy của LAN (Trang 17)
Sơ đồ PERT cho lịch các công việc ở bảng trên được biểu diễn như hình 3.4 - một số vấn đề ứng dụng của đồ thị trong tin học
cho lịch các công việc ở bảng trên được biểu diễn như hình 3.4 (Trang 51)

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