Tải bản đầy đủ (.pdf) (61 trang)

Một số vấn đề ứng dụng của lý thuyết đồ thị

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (823.27 KB, 61 trang )

Header Page 1 of 128.

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
KHOA CÔNG NGHỆ THÔNG TIN
---------***---------

DƯƠNG THỊ LIỄU

MỘT SỐ VẤN ĐỀ ỨNG DỤNG
CỦA LÝ THUYẾT ĐỒ THỊ

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC

Chuyên ngành: Tin học

HÀ NỘI - 2013

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 1 of 128.


Header Page 2 of 128.

LỜI CẢM ƠN
Trong suốt quá trình học tập và làm khóa luận, em nhận được sự giúp
đỡ, tạo điều kiện của các thầy, cô giáo khoa Công nghệ Thông tin. Bên cạnh
đó là sự giúp đỡ rất nhiều của người thân, bạn bè để em có được kết quả ngày
hôm nay.
Trước hết em xin tỏ lòng kính trọng cảm ơn thầy giáo TS.Trịnh Đình
Vinh, thầy đã tận tình chỉ bảo, hướng dẫn cho em hoàn thành được bản khóa
luận này.
Xin cảm ơn các thầy, cô giáo trong khoa Công nghệ Thông tin – trường


Đại học sư phạm Hà Nội 2, các bạn trong lớp K35 – Tin học đã tận tình giúp
đỡ, giới thiệu tài liệu, sách tham khảo để khóa luận được hoàn thành đúng
thời hạn.
Cuối cùng là lòng biết ơn đến sự quan tâm, chăm sóc và tạo điều kiện
của gia đình để con tập trung vào việc học tập và hoàn thành bản khóa luận
này.
Do thời gian thực hiện không nhiều nên khóa luận không tránh khỏi
những thiếu sót. Rất mong nhận được sự đóng góp của thầy cô giáo và các
bạn để khóa luận được hoàn thiện hơn.
Em xin chân thành cảm ơn!

Hà Nội, tháng 05 năm 2013
Sinh viên

DƯƠNG THỊ LIỄU

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 2 of 128.


Header Page 3 of 128.

LỜI CAM ĐOAN
Tên em là: DƯƠNG THỊ LIỄU
Sinh viên lớp: K35 – Tin học, khoa Công nghệ thông tin, trường Đại học
sư phạm Hà Nội 2.
Em xin cam đoan:
1.

Đề tài: “Một số vấn đề ứng dụng của lý thuyết đồ thị” là sự nghiên


cứu của riêng em, dưới sự hướng dẫn của thầy giáo TS. Trịnh Đình Vinh.
2.

Khóa luận hoàn toàn không sao chép của tác giả nào khác.

Nếu sai em xin hoàn toàn chịu trách nhiệm.

Hà Nội, tháng 05 năm 2013
Người cam đoan

DƯƠNG THỊ LIỄU

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 3 of 128.


Header Page 4 of 128.

MỤC LỤC
LỜI CẢM ƠN
LỜI CAM ĐOAN
DANH MỤC HÌNH VẼ
DANH MỤC BẢNG
MỞ ĐẦU ..................................................................................................... 1
Chương 1: LÝ THUYẾT ĐỒ THỊ ................................................................ 5
1.1. Đồ thị .................................................................................................. 5
1.1.1.

Định nghĩa đồ thị ......................................................................... 5

1.1.2.


Đồ thị đơn ................................................................................... 6

1.1.3.

Đa đồ thị ...................................................................................... 6

1.1.4.

Giả đồ thị..................................................................................... 6

1.2. Các loại đồ thị ...................................................................................... 7
1.2.1.

Đồ thị vô hướng........................................................................... 7

1.2.2.

Đồ thị có hướng ........................................................................... 7

1.2.3.

Đồ thị hỗn hợp............................................................................. 7

1.3. Một số khái niệm.................................................................................. 7
1.3.1.

Cạnh liên thuộc, đỉnh kề, bậc....................................................... 7

1.3.2.


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

1.3.3.

Đồ thị liên thông .......................................................................... 8

1.4. Biểu diễn đồ thị trên máy tính ............................................................ 10
1.4.1.

Biểu diễn bằng ma trận kề ......................................................... 10

1.4.2.

Danh sách cạnh (cung) .............................................................. 12

1.4.3.

Danh sách kề ............................................................................. 13

1.5. Các ứng dụng của lý thuyết đồ thị ...................................................... 14
Chương 2: CHU TRÌNH, ĐƯỜNG ĐI ....................................................... 15
2.1. Chu trình Euler và chu trình Hamilton................................................ 15
2.1.1.

Chu trình Euler .......................................................................... 15

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 4 of 128.



Header Page 5 of 128.

2.1.2.

Chu trình Hamilton .................................................................... 18

2.2. Tìm kiếm đường đi trên đồ thị ............................................................ 19
2.2.1.

Thuật toán tìm kiếm theo chiều sâu (Depth First Seach) ............ 19

2.2.2.

Thuật toán tìm kiếm theo chiều rộng (Breadth First Search) ...... 21

2.2.3.

Độ phức tạp tính toán của DFS và BFS ..................................... 23

2.3. Đường đi ngắn nhất trong đồ thị có trọng số....................................... 24
2.3.1.

Bài toán đường đi ngắn nhất ...................................................... 24

2.3.2.

Các thuật toán ............................................................................ 24

2.3.3.


Các ứng dụng ............................................................................ 29

Chương 3: MỘT SỐ VẤN ĐỀ VỀ CÂY .................................................... 36
3.1. Các khái niệm và tính chất cơ bản ...................................................... 36
3.1.1.

Các khái niệm cơ bản ................................................................ 36

3.1.2.

Cây m – phân ............................................................................ 37

3.2. Các ứng dụng ..................................................................................... 37
3.2.1.

Mã tiền tố .................................................................................. 37

3.2.3.

Cây biểu diễn biểu thức ............................................................. 40

3.2.4.

Cây quyết định .......................................................................... 41

3.2.5.

Cây sắp xếp và tìm kiếm............................................................ 41

Chương 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG ........................ 47

4.1. Phát biểu bài toán ............................................................................... 47
4.2. Giải quyết bài toán ............................................................................. 47
4.2.1.

Giải thuật tổng quát ................................................................... 47

4.2.2.

Kết hợp “Stack” và “Queue” ..................................................... 48

4.2.3.

Cài đặt lớp Cell.......................................................................... 49

4.2.4.

Hiệu ứng Backtracking trong DFS ............................................. 50

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .................................................. 52
TÀI LIỆU THAM KHẢO .......................................................................... 54

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 5 of 128.


Header Page 6 of 128.

DANH MỤC HÌNH VẼ
Hình 1.1: Đồ thị ............................................................................................. 5
Hình 1.2: Ví dụ về một đồ thị ........................................................................ 6
Hình 1.3: a. Đa đồ thị


b. Giả đồ thị ............................................................ 6

Hình 1.4: Đồ thị liên thông ............................................................................ 9
Hình 1.5: Các loại đồ thị liên thông ............................................................... 9
Hình 1.6: Đồ thịbiểu diễn ma trận kề ........................................................... 10
Hình 1.7: Đồ thị danh sách cạnh (cung) ....................................................... 12
Hình 1.7a: Danh sách kề của đồ thị G1 ......................................................... 13
Hình 1.7b: Danh sách kề của đồ thị G2 ......................................................... 13
Hình 2.1: Mô hình đồ thị của bài toán 7 cái cầu ........................................... 15
Hình 2.2: Chu trình Euler vô hướng ............................................................ 16
Hình 2.3: Chu trình Euler vô hướng sau khi đi từ 1 đến 4............................. 17
Hình 2.4: Chu trình Hamilton ...................................................................... 18
Hình 2.5: Cây DFS ...................................................................................... 20
Hình 2.6: Cây BFS ...................................................................................... 22
Hình 2.7: Sự chuyển đổi trạng thái ............................................................... 30
Hình 2.8: Sơ đồ lưới của giải thuật Viterbi ................................................... 31
Hình 2.9: Sơ đồ PERT ................................................................................. 34
Hình 3.1: Cây .............................................................................................. 36
Hình 3.2: Mã tiền tố .................................................................................... 38
Hình 3.3: Cây biểu diễn nhị phân ................................................................ 39
Hình 3.4: Cây biểu diễn biểu thức ............................................................... 40
Hình 3.5: Cây quyết định ............................................................................. 41
Hình 3.6: Cây nhị phân tìm kiếm ................................................................. 42
Hình 3.7: Cây nhị phân đầy đủ .................................................................... 43
Hình 3.8: Câp sắp xếp hòa nhập .................................................................. 44
Hình 3.9: Cây sắp xếp nhanh ...................................................................... 46
Hình 4.1: Giao diện chương trình ................................................................ 50

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 6 of 128.



Header Page 7 of 128.

DANH MỤC BẢNG
Bảng 1: Thuật toán DFS .............................................................................. 20
Bảng 2: Thuật toán BFS .............................................................................. 23
Bảng 3: Các công viêc ................................................................................. 34
Bảng 4: Mã Huffman ................................................................................... 39

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 7 of 128.


Header Page 8 of 128.

MỞ ĐẦU
1. Lý do chọn đề tài
Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu đời và có nhiều
ứng dụng hiện đại. Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất
từ những năm đầu của thế kỷ 18 bởi một nhà toán học lỗi lạc người Thụy Sĩ
Leonhard Euler. Chính ông là người đã sử dụng đồ thị để giải bài toán nổi
tiếng về các cái cầu ở thành phố Konigsberg.
Đồ thị được sử dụng để giải quyết các bài toán trong nhiều lĩnh vực
khác nhau. Chẳng hạn, đồ thị có thể sử dụng để xác định các mạch vòng trong
vấn đề giải tích mạch điện. Đồ thị có thể phân biệt các hợp chất hóa học hữu
cơ khác nhau với cùng công thức phân tử nhưng khác nhau về cấu trúc phân
tử hay xác định xem hai máy tính trong mạng có thể trao đổi thông tin được
với nhau hay không. Đồ thị có trọng số trên các cạnh có thể sử dụng để giải
các bài toán như: tìm đường đi ngắn nhất giữa hai thành phố trong cùng một
mạng giao thông. Đồ thị còn được sử dụng để giải các bài toán về lập lịch,

thời khóa biểu và phân bố tần số cho các trạm phát thanh truyền hình... Do đó
việc nghiên cứu lý thuyết đồ thị này mang lại nhiều ý nghĩa thực tiễn nhất
định.
Xuất phát từ tính thực tiễn đó em xin chọn đề tài: “Một số vấn đề ứng
dụng của lý thuyết đồ thị”.
2. Mục đích chọn đề tài
Mục đích nghiên cứu của đề tài này là tìm hiểu, khảo sát thực nghiệm
và ứng dụng của lý thuyết đồ thị trong các ngành kỹ thuật. Dựa trên lý thuyết
đồ thị, một số bài toán như kiểm tra tính liên thông, tìm đường đi ngắn nhất,
khắc phục những gói tin bị truyền sai nhờ các giải thuật của đồ thị và xây
dựng chương trình minh họa.

1

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 8 of 128.


Header Page 9 of 128.

3. Nhiệm vụ, yêu cầu
Đề tài của khóa luận: “Một số vấn đề ứng dụng của lý thuyết đồ thị”
được đặt ra với nhiệm vụ, yêu cầu:
 Nghiên cứu các khái niệm cơ bản nhất của đồ thị, phương pháp biểu
diễn đồ thị trên máy tính.
 Tìm hiểu các thuật toán tìm đường đi trên đồ thị.
 Nghiên cứu các ứng dụng của lý thuyết đồ thị.
 Tìm hiểu các khái niệm, tính chất cơ bản của cây và các ứng dụng
của nó.
 Cài đặt chương trình minh họa ứng dụng của lý thuyết đồ thị.
4. Phương pháp nghiên cứu

 Nghiên cứu qua việc đọc sách, báo và các tài liệu liên quan nhằm xây
dựng cơ sở lý thuyết của đề tài và các biện pháp cần thiết để giải quyết các
vấn đề của đề tài.
 Tham khảo các ý kiến của các chuyên gia để có thể thiết kế chương
trình phù hợp với thực tiễn.
 Thông qua quan sát thực tế, yêu cầu cơ sở của lý luận được nghiên
cứu và các kết quả đạt được qua những phương pháp trên.
5. Ý nghĩa khoa học và thực tiễn của đề tài
Đề tài giới thiệu hướng nghiên cứu và ứng dụng của lý thuyết đồ thị
vào thực tế cuộc sống, một lĩnh vực vẫn còn khá mới ở Việt Nam.
Đề tài cũng hướng đến việc đơn giản hóa việc tìm đường đi trên đồ thị.
Thuật toán tìm đường đi là một thuật toán quan trọng và có ý nghĩa to lớn
trong thực tế như tìm lộ trình di chuyển cho bất kỳ đối tượng di động nào như
người, xe máy, ô tô... Nó mang lại nhiều tiện ích và hiệu quả cho người sử
dụng, đặc biệt là hiệu quả về kinh tế, tiết kiệm thời gian, công sức... trong
việc lựa chọn đường đi cho hợp lý.

2

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 9 of 128.


Header Page 10 of 128.

6. Cấu trúc của khóa luận
Ngoài các phần mở đầu và kết luận khóa luận còn bao gồm các chương:
Chương 1: Lý thuyết đồ 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ìm hiể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ản của đồ thị, chương này còn trình bày đến một vấn đề quan trọng, đó là

cách biểu diễn đồ thị trên máy tính.
Chương 2: Chu trình, đường đi
Chương này trình bày những khái niệm về chu trình, đường Euler và
chu trình, đường đi Hamilton. Tìm hiểu các thuật toán tìm kiếm đường đi trên
đồ thị và các ứng dụng trong truyền tin, trong việc lập lịch công.
Chương 3: Một số vấn đề về cây
Trong chương này đề cập tới những điểm chính nhất, cơ bản nhất về
cây và tập trung khai thác những ứng dụng của nó.Một số ứng dụng của cây
nhị phân như mã tiền tố, mã Huffman, cây biểu diễn biểu thức, cây quyết
định, cây sắp xếp và tìm kiếm.
Chương 4: Xây dựng chương trình ứng dụng
Đây là chương cuối cùng, chương này sẽ giới thiệu về bài toán tìm
đường đi thoát khỏi mê cung. Sử dụng thuật toán Breadth First Seach (BFS –
Tìm kiếm theo chiều rộng) và Depth First Seach (DFS – Tìm kiếm theo chiều
sâu) để tìm đường đi giữa hai điểm trong một mê cung.
7. Kết quả đạt được
Khóa luận đã nghiên cứu được các khái niệm cơ bản nhất của đồ thị,
các thuật toán tìm đường đi trên đồ thị, ứng dụng của lý thuyết đồ thị và
cáckhái niệm, tính chất cơ bản của cây.
Khóa luận đã xây dựng được chương trình tìm đường đi thoát khỏi mê
cung bằng thuật toán tìm kiếm theo chiều sâu và tìm kiếm theo chiều rộng.
Tuy nhiên chương trình mới chỉ mang tính chất mô phỏng chưa có được ứng

3

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 10 of 128.


Header Page 11 of 128.


dụng thực tế. Hướng phát triển chương trình trong tương lai thành bài toán
tìm đường đi cho người đưa thư, lập trình đường đi cho xe bus...

4

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 11 of 128.


Header Page 12 of 128.

Chương 1: LÝ THUYẾT ĐỒ THỊ
1.1. Đồ thị
1.1.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
đỉnh nà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ối hai đỉnh nào đó của đồ thị.
Giả sử X là tập hữu hạn, không rỗng và U  X  X. Bộ G  đượ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 hai đỉnh x, y  X sao cho u  (x,y), thì
nói rằ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ì x, y là hai đỉnh
kề nhau.
 Nếu cạnh u  (x, x) thì u là cạnh có hai đỉnh trùng nhau, gọi đó là một
khuyên.
 Nếu cạnhu  (x, y) mà x, y là cặp đỉnh có phân biệt thứ tự hay có
hướng từ x đến y thì u là một cung, khi đó x gốc còn y là ngọn hoặc x là đỉnh
ra, y là đỉnh vào.
 Khi giữa cặp đỉnh (x, y) có nhiều hơn một cạnh thì những cạnh cùng
cặp đỉnh là những cạnh song song hay là cạnh bội.

x

y

y

a)

b)

a. Tại đỉnh y có một khuyên

x

y
c)

b. Một cung có hướng từ x sang y

c. Cặp đỉnh (x, y) có 2 cạnh song song
Hình 1.1: Đồ thị

5

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 12 of 128.


Header Page 13 of 128.

 Trong thực tế, có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị để

biểu diễn, như sơ đồ một mạng máy tính, sơ đồ mạng lưới giao thông và sơ đồ
thi công một công trình.
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
nhau bằ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 hai máy được nối trực tiếp với nhau thì tương ứng với
một cặp đỉnh kề nhau.
A

B
C

D

Hình 1.2: Ví dụ về một đồ thị
1.1.2. Đồ thị đơn
Đồ thị G  X, U> được gọi là đồ thị đơn nếu giữa hai đỉnh bất kỳ
được nối vớ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.
1.1.3. Đa đồ thị
Đồ thị G  X, U> được gọi là đa đồ thị nếu nó có ít nhất một cặp đỉnh
được nối với nhau bởi hai cạnh (hai cung) trở lên.
1.1.4. Giả đồ thị
Là đồ thị có ít nhất một khuyên, có thể chứa cạnh bội, cạnh đơn. Tóm
lại đây là loại đồ thị tổng quát nhất.
A

B


A

B

C
D

D

a)
Hình 1.3: a. Đa đồ thị

C
b)

b.Giả đồ thị

6

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 13 of 128.


Header Page 14 of 128.

1.2. Các loại đồ thị
1.2.1. Đồ thị vô hướng
Đồ thị G  cặp đỉnh thuộc nó e  (x, y) X không phân biệt thứ tự. Đồ thị vô hướng là đồ
thị không có bất kỳ một cung nào.
Ví dụ: như hình 1.3.a là biểu diễn của một đồ thị vô hướng.

1.2.2. Đồ thị có hướng
Đồ thịG = <X, U> 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.
1.2.3. Đồ thị hỗn hợp
Đồ thị G= <X, U> vừa có cạnh vô hướng, vừa có cạnh có hướng thì nó
được gọi là đồ thị hỗn hợp, loại đồ thị này rất ít khi được dùng tới.
Chú ý rằng vấn đề phân chia đồ thị và các thuật ngữ về đồ thị chỉ mang
tính tương đối, hiện nay vẫn còn chưa mang tính thống nhất chuẩn trên nhiều
tài liệu.

1.3. Một số khái niệm
Như trên định nghĩa đồ thị G = (V, E) là một cấu trúc rời rạc, tức là các
tập V và E hoặc là tập hữu hạn, hoặc là tập đếm được, có nghĩa là có thể đánh
số thứ tự 1, 2, 3… cho các phần tử của tập V và E. Hơn nữa, đứng trên
phương diện người lập trình cho máy tính thì chỉ quan tâm đến các đồ thị hữu
hạn (V và E là tập hữu hạn) mà thôi.
1.3.1. Cạnh liên thuộc, đỉnh kề, bậc
Đối với đồ thị vô hướng G = (V, E). Xét một cạnh e  E, nếu e = (u, v)
thì ta nói hai đỉnh u và v là kề nhau (adjacent), cạnh e này liên thuộc
(incident) với đỉnh u và v.
Với một đỉnh v trong đồ thị, định nghĩa bậc (degree) của v, ký hiệu
deg(v) là số cạnh liên thuộc với v. Có thể thấy rằng trên đơn đồ thị thì số cạnh
7

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 14 of 128.


Header Page 15 of 128.


liên thuộc với v cũng là số đỉnh kề với v.
Đối với đồ thị có hướng G = (V, E). Xét một cung e  E, nếu e = (u, v)
thì sẽ có u nối tới v và v nối từ u, cung e là đi ra khỏi đỉnh u và đi vào đỉnh
v. Đỉnh u khi đó được gọi là đỉnh đầu, đỉnh v được gọi là đỉnh cuối của cung
e.
Với mỗi đỉnh v trong đồ thị có hướng, định nghĩa: Bán bậc ra (out –
degree) của v ký hiệu deg+(v) là số cung đi ra khỏi nó; bán bậc vào (in –
degree), ký hiệu deg-(v) là số cung đi vào đỉnh đó.
1.3.2. Đường đi và chu trình
Đường đi: Một đường đi với độ dài k từ đỉnh u đến đỉnh v là dãy (u =
x0, x1,…, vk = v) thỏa mãn (xi, xi+1)  E (là một cạnh của đồ thị) vớii: (1≤ i ≤
k). Đỉnh u gọi là đỉnh xuất phát, v gọi là đỉnh kết thúc của đường đi. Đường đi
không có cạnh nào đi qua hơn một lần gọi là đường đi đơn.
Chu trình: Đường đi có đỉnh xuất phát trùng với đỉnh kết thúc gọi là
chu trình. Tương tự có khái niệm chu trình đơn.
1.3.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ếu tồn tại một đường đi nối các đỉnh x, y với nhau. Đồ thị G được gọi
là liên thông nếu với hai đỉnh phân biệt bất kỳ trong đồ thị đều là liên thông.
Xét 2 đồ thị liên thông
G1 = <X1, U1> và G2 = <X2, U2>
Trong đó:

X1X2 = 

và U1U2 = 
Khi đó:

X = X1X2
U = U1U2


Thì G = <X, U> là đồ thị có 2 thành phần liên thông G1, G2.

8

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 15 of 128.


Header Page 16 of 128.

A

D

B

E

F

C

Hình 1.4: Đồ thị liên thông
Ví dụ như đồ thị trong hình 1.4 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ó là liên thông.

 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 hai 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.
A

B

A

B

A

B

D

D

D

C

C

C

H1


H2

H3

Hình 1.5: Các loại đồ thị liên thông
Ở hình 1.5 đồ thị H1 là liên thông mạnh, giả sử cặp đỉnh (A, C) có chiều
đi từC tới A, đồng thời cũng có chiều đi từ A tới C và bất kỳ các cặp đỉnh
khác cũng tương tự như vậy. Đồ thị H2 là liên thông một chiều đi từ D tới A.
Đồ thị H3 là liênthông yếu vì tồn tại cặp đỉnh (B, C) không có chiều đi B –C
và cũng khôngcó chiều đi C – B, nhưng đồ thị vô hướng tương ứng là liên
thông.

9

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 16 of 128.


Header Page 17 of 128.

1.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
ứng dụ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ọng tâ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ác giảithuật, phương pháp giải quyết các ứng dụng trên máy tính.
1.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 ma trậ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 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 không có cạnh nào nối với
nhau thì aij = 0. Khi đó 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ỗi phầ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ú ý aij = 0 nếu không có cung nào hướng từ
xi đến xj đến. 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, chú ý nếu đỉnh x có một khuyên thì phần tử
tương ứng của ma trận kề là aij = 1.
A

B

C

A

B

C

D
D

G1

G2

Hình 1.6: Đồ thịbiểu diễn ma trận kề
Ta có thể dùng ma trận kề biểu diễn đồ thị G1 và G2 trong hình 1.6 như

sau:

10

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 17 of 128.


Header Page 18 of 128.

Đố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ố,

1

1
MG1  
1

0

1
0
2
1

1
2
0
0


0

1
0

0

0 1 1 


MG2   0 1 0
1 1 0 



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ập phầ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ạnh của đồ thị, 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 ma trận tích A  A  ...  A  As  ( Pij )
s lần


Ví dụ: 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ễn một
mạng máy tính bằng đồ thị, giả sử có hai máy nào đó mà thông tin truyền giữ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 hai máy đó, nếu có số đường đi lớn hơn một là đã có
đường truyền dự phòng.

11

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 18 of 128.


Header Page 19 of 128.

1.4.2. Danh sách cạnh (cung)
Cho đồ thị G = <X, U> với số cạnh m, số đỉnh n. Nếu m < 6n thì G
thường được biểu diễn dưới dạng danh sách cạnh (cung).
Theo cách này danh sách tất cả các cạnh (cung) của đồ thị vô hướng (có
hướng). Mỗi cạnh (cung) e = (x, y) của đồ thị tương ứng với hai biến Dau[e],
Cuoi[e].
2

1

4

2

1


3

3
G1

4
G2

Hình 1.7: Đồ thị danh sách cạnh (cung)
Ví dụ: Hình 1.7 đồ thị G1 và G2 được biểu diễn bằng danh sách cạnh
(cung) như sau:
Dau

Cuoi

Dau

Cuoi

1

2

1

2

1


3

2

3

2

3

3

1

2

4

4

1

3

4

4

2


Danh sách cạnh (cung) G1

Danh sách cạnh (cung) G2

Ưu điểm của danh sách cạnh là tiết kiệm được không gian lưu trữ bởi
nó chỉ cần sử dụng 2m ô nhớ để lưu danh sách cạnh.Trong một số trường hợp,
nếu xét tất cả các cạnh của đồ thị thì cài đặt trên danh sách cạnh làm cho việc
duyệt các cạnh dễ dàng hơn.
Nhược điểm của phương pháp này là khi xác định những đỉnh nào của
đồ thị là kề với một đỉnh cho trước, sẽ phải làm cỡ m phép so sánh, điều đó
khá tốn thời gian trong trường hợp đồ thị dày (nhiều cạnh).

12

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 19 of 128.


Header Page 20 of 128.

1.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. 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 1.7 đồ thị G1 và G2 được biểu diễn bằng danh sách kề
như sau:
FIRST
1


2

3

2

1

3

4

Nil

1

2

4

Nil

2

3

3
4

Nil


Nil

Hình 1.7a: Danh sách kề của đồ thị G1
FIRST
1
2

2

Nil

3

Nil

1

Nil

3
4

3 Nil

2

Hình 1.7b: Danh sách kề của đồ thị G2
Bộ nhớ sử dụng cho phương pháp biểu diễn danh sách kề là tỷ lệ thuận
với tổng số đỉnh và các cạnh của đồ thị.

Danh sách kề có ưu và nhược điểm:
 Ưu điểm của danh sách kề là đối với việc duyệt tất cả các đỉnh kề với
một đỉnh v cho trước là hết sức dễ dàng. Việc duyệt tất cả các cạnh cũng đơn
giản vì một cạnh thực ra là nối một đỉnh với một đỉnh khác kề với nó.
13

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 20 of 128.


Header Page 21 of 128.

 Nhược điểm của cách biểu diễn này là thời gian cần thiết để xác định
có một cạnh đi từ đỉnh xi tới đỉnh xj có hay không mất O(n). Cách này thích
hợp cho các thuật toán mà cấu trúc đồ thị hay thay đổi như thêm bớt các cạnh.

1.5. Các ứng dụng của lý thuyết đồ thị
Lý thuyết đồ thị được sử dụng để giải quyết các bài toán trong nhiều
lĩnh vực khác nhau:
 Tìm đường đi ngắn nhất giữa hai thành phố.
 Xác định xem hai máy tính trong mạng có thể trao đổi thông tin được
với nhau hay không nhờ mô hình đồ thị của mạng máy tính.
 Xác định nối mạng máy tính sao cho tổng chi phí là nhỏ nhất.
 Khắc phục những gói tin bị truyền sai.
 Lập trình chơi cờ Ca rô.
 Bài toán lập lịch thi công các công đoạn trong một công trình thì
công lớn.
 Phân bố tần số cho các trạm phát thanh và truyền hình.
 Xác định các mạch vòng trong vấn đề giải tích mạch điện.
 Phân biệt các hợp chất hóa học hữu cơ khác nhau với cùng công thức
phân tử nhưng khác nhau về cấu trúc phân tử.

 Giải các bài toán lập thời khóa biểu, ...
Lý thuyết đồ thị có rất nhiều ứng dụng trong các ngành kỹ thuật. Ở các
chương tiếp theo sẽ đi tìm hiểu cụ thể một vài ứng dụng đặc trưng của lý
thuyết đồ thị.

14

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 21 of 128.


Header Page 22 of 128.

Chương 2: CHU TRÌNH, ĐƯỜNG ĐI
2.1. Chu trình Euler và chu trình Hamilton
2.1.1. Chu trình Euler
a) Bài toán 7 cái cầu
Thành phố Konigsberg thuộc Phổ (nay là Kaliningrad thuộc Cộng hòa
Nga), được chia làm 4 vùng bằng các nhánh sông Pregel. Các vùng này gồm 2
vùng bên bờ sông (B, C), đảo Kneiphof (A) và một miền nằm giữa hai nhánh
sông Pregel (D). Vào thế kỉ XVIII, người ta đã xây 7 chiếc cầu nối những
vùng này với nhau. Người dân ở đây tự hỏi: Liệu có cách nào xuất phát tại
một địa điểm trong thành phố, đi qua 7 chiếc cầu, mỗi chiếc đúng một lần rồi
quay trở về nơi xuất phát không?
Nhà toán học Thụy Sĩ Leonhard Euler đã giải bài toán này và có thể coi
đây là ứng dụng đầu tiên của Lý thuyết đồ thị, ông đã mô hình hóa sơ đồ 7 cái
cầu bằng một đa đồ thị, 4 vùng được biểu diễn bằng 4 đỉnh, các cầu là các
cạnh. Bài toán tìm đường qua 7 cầu, mỗi cầu đúng một lần có thể tổng quát
hóa bằng bài toán: Có tồn tại chu trình đơn trong đa đồ thị chứa tất cả các
cạnh?
B

D

A
C

Hình 2.1: Mô hình đồ thị của bài toán 7 cái cầu
b) Định nghĩa
 Chu trình đơn chứa tất cả các cạnh của đồ thị được gọi là chu trình
Euler.
 Đường đi đơn chứa tất cả các cạnh của đồ thị được gọi là đường đi
Euler.
 Một đồ thị có chu tình Euler được gọi là đồ thị Euler.
15

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 22 of 128.


Header Page 23 of 128.

 Một đồ thị có đường đi Euler được gọi là đồ thị nửa Euler.
c) Định lý
 Một đồ thị vô hướng liên thông G = (V, E) có chu trình Euler khi và
chỉ khi mọi đỉnh của nó đều có bậc chẵn: deg(v)  0 (mod 2) (v V).
 Một đồ thị vô hướng liên thông có đường đi Euler nhưng không có
chu trình Euler khi và chỉ khi nó có đúng hai đỉnh bậc lẻ.
 Một đồ thị có hướng liên thông yếu G = (V, E) có chu trình Euler thì
mọi đỉnh của nó có bán bậc vào: deg+(v) = deg-(v) ( v V); ngược lại, nếu G
liên thông yếu và mọi đỉnh của nó có bán bậc ra bằng bán bậc vào thì G có
chu trình Euler, hay G sẽ là liên thông mạnh.
 Một đồ thị có hướng liên thông yếu G = (V, E) có đường đi Euler

nhưng không có chu trình Euler nếu tồn tại đúng hai đỉnh u, v  V sao cho
deg+(u) – deg-(u) = deg-(v) – deg+(v) = 1, còn tất cả những đỉnh khác u và v
đều có bán bậc ra bằng bán bậc vào.
d) Chu trình Euler vô hướng (mọi đỉnh đều có bậc chẵn)
Xuất phát từ một đỉnh, chọn một cạnh liên thuộc với nó để đi tiếp theo
hai nguyên tắc sau:
 Xóa bỏ cạnh đã đi qua
 Chỉ đi qua cầu khi không còn cạnh nào khác để chọn
Và cứ chọn cạnh đi một cách thoải mái như vậy cho tới khi không đi
tiếp được nữa, đường đi tìm được là chu trình Euler.
Ví dụ: Với đồ thị ở hình 2.2:
5

2

7
1

4
8
3

6

Hình 2.2: Chu trình Euler vô hướng
16

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 23 of 128.



Header Page 24 of 128.

Nếu xuất phát từ đỉnh 1, có hai cách đi tiếp: hoặc sang 2 hoặc sang 3,
giả sử ta sẽ sang 2 và xóa cạnh (1, 2) vừa đi qua. Từ 2 chỉ có duy nhất là sang
4, nên cho dù (2, 4) là cầu ta cũng phải đi sau đó xóa luôn cạnh (2, 4). Đến
đây, các cạnh còn lại của đồ thị có thể vẽ như hình 2.3 bằng nét liền, các cạnh
đã bị xóa được vẽ bằng nét đứt.
5

2

7

1

4
8
3

6

Hình 2.3: Chu trình Euler vô hướng sau khi đi từ 1 đến 4
Bây giờ đang đứng ở đỉnh 4 thì có 3 cách đi tiếp: sang 3, sang 5 hoặc
sang 6. Vì (4, 3) là cầu nên sẽ không đi theo cạnh (4, 3) mà sẽ đi (4, 5) hoặc
(4, 6). Nếu đi theo (4, 5) và cứ tiếp tục đi như vậy, sẽ được chu trình Euler là
<1, 2, 4, 5, 7, 8, 6, 4, 3, 1>. Còn đi theo (4, 6) sẽ tìm được chu trình Euler là:
<1, 2, 4, 6, 8, 7, 5, 4, 3, 1>.
e) Chu trình Euler có hướng (mọi đỉnh đều có số cạnh đi vào bằng số
cạnh đi ra)
Bằng cách “lạm dụng thuật ngữ”, có thể mô tả được thuật toán tìm chu

trình Euler cho cả đồ thị có hướng cũng như vô hướng:
 Thứ nhất, nếu nói cạnh (u, v) thì hiểu là cạnh nối đỉnh u và đỉnh v trên
đồ thị vô hướng, hiểu là cung nối từ đỉnh u tới đỉnhv trên đồ thị có hướng.
 Thứ hai, gọi cạnh (u, v) là “một đi không trở lại” nếu như từ u đi tới v
theo cạnh đó, sau đó xóa cạnh đó đi thì không có cách nào từ v quay lại u.
Vậy thì thuật toán Fleury tìm chu trình Euler có thể mô tả như sau:
Xuất phát từ một đỉnh, đi một cách tùy ý theo các cạnh tuântheo hai
nguyên tắc: Xóa bỏ cạnh vừa đi qua và chỉ chọn cạnh “một đi không trở lại”
nếu như không còn cạnh nào khác để chọn.

17

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 24 of 128.


Header Page 25 of 128.

2.1.2. Chu trình Hamilton
a) Định nghĩa
 Đường đi Hamilton là đường đi qua mỗi đỉnh của đồ thị đúng một lần.
 Chu trình Hamilton là chu trình đi qua mỗi đỉnh của đồ thị đúng một
lần.
 Đồ thị có chu trình Hamilton được gọi là đồ thị Hamilton.
 Đồ thị có đường đi Hamilton được gọi là nửa Hamilton.
Có thể phát biểu một cách hình thức: Chu trình Hamilton là chu trình
xuất phát từ một đỉnh, đi thăm tất cả những đỉnh còn lại mỗi đỉnh đúng một
lần, cuối cùng quay trở lại đỉnh xuất phát. Đường đi Hamilton là đường đi qua
tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần. Khác với khái niệm chu
trình Euler và đường đi Euler, một chu trình Hamilton không phải là đường đi
Hamilton bởi có đỉnh xuất phát được thăm tới hai lần.

Ví dụ: Xét 3 đơn đồ thị G1, G2, G3 như trong hình 2.4
B

C

A

B

A

B

E

E

D

D

C

D

C

F

A


G1

G2

G

G3

Hình 2.4: Ví dụ chu trình Hamilton
Ở hình 2.4 đồ thị G1 có chu trình Hamilton (A, B, C, D, E, A). G2
không có chu trình Hamilton vì deg(a) =1 nhưng có đường đi Hamilton (A,
B, C, D). G3 không có cả chu trình Hamilton lẫn đường đi Hamilton.
b) Định lý

 Định lý Dirac (1952): Đồ thị vô hướng G có n đỉnh (n  3). Khi đó nếu
mọi đỉnh v của G đều có deg(v)  n/2 thì G có chu trình Hamilton. Đây là một
điều kiện đủ để một đồ thị có chu trình Hamilton.
18

luan van thac si - luan van kinh te - khoa luan - tai lieu -Footer Page 25 of 128.


×