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

Chu trình Hamilton tổng quát trong đồ thị vô hướng Nguyễn Văn Thái.

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 (1.74 MB, 66 trang )

i
Số hóa bởi Trung tâm Học liệu


ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG





NGUYỄN VĂN THÁI






CHU TRÌNH HAMILTON TỔNG QUÁT
TRONG ĐỒ THỊ VÔ HƢỚNG


Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01



LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH


NGƯỜI HƯỚNG DẪN KHOA HỌC: GS.TS: ĐẶNG QUANG Á











Thái Nguyên – 2014
ii
Số hóa bởi Trung tâm Học liệu



MỤC LỤC

MỤC LỤC i
LỜI CAM ĐOAN iv
LỜI CẢM ƠN v
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT vi
DANH MỤC HÌNH vii
MỞ ĐẦU 1
Chƣơng I: MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LÝ THUYẾT ĐỒ THỊ VÀ LÝ
THUYẾT CÁC BÀI TOÁN NP-C 4
1.1. Lý thuyết đồ thị 4
1.1.1. Các thuật ngữ cơ bản 4
1.1.2. Đường đi, chu trình, đồ thị liên thông 10
1.1.3. Biểu diễn đồ thị trên máy tính 13
1.2. Lý thuyết lớp các bài toán P và NP 17

1.2.1. Khái niệm các loại thời gian tính 17
1.2.2. Khái niệm phép quy dẫn đa thức 18
1.2.3. Lớp bài toán P 18
1.2.3. Lớp bài toán NP. 19
1.2.4. Lớp bài toán NP-đầy đủ (NP-Complete). 19
1.3. Kết luận 20
Chƣơng II: CHU TRÌNH HAMILTON 21
2.1. Chu trình Hamilton: Định nghĩa, tính chất và các điều kiện đủ 21
2.1.1. Một số khái niệm 21
2.1.2. Một số tính chất của đồ thị Hamilton 22
2.2. Thuật toán tìm chu trình Hamilton 26
2.3. Đồ thị Hamilton tối đại 29
2.3.1. Khái niệm 30
2.3.2. Thuật toán xây dựng đồ thị Hamilton tối đại n ≥ 4 đỉnh [1] 30
2.3. Kết luận 31
Chƣơng III: CHU TRÌNH TRỘI 32
3.1. Khái niệm chu trình trội và các điều kiện đủ 32
3.1.1. Khái niệm: 32
3.1.2. Một số điều kiện đủ của chu trình trội 33
3.1.3. Chu trình trội trong lớp đồ thị 2-liên thông thỏa mãn

(G) . 36
iii
Số hóa bởi Trung tâm Học liệu


3.2. Thuật toán xác định chu trình trội 40
3.2.1. Thuật toán: (Xác định đồ thị G có chu trình trội hay không?) 41
3.2.2. Thuật toán 2.1: (kiểm tra đồ thị liên thông) 42
3.2.3. Thuật toán 2.2: (kiểm tra đồ thị 2-liên thông) 42

3.2.4. Thuật toán 3.1: Kiểm tra đồ thị G có thuộc lớp K
1
hay không? 43
3.2.5. Thuật toán 3.2: Kiểm tra đồ thị G có thuộc lớp K
2
hay không? 43
3.2.6. Thuật toán 3.3: Kiểm tra đồ thị có thuộc K
3
hay không? 44
3.2.7. Thuật toán 3.4: Kiểm tra đồ thị G có thuộc lớp K
4
hay không? 45
3.2.8. Thuật toán 3.5: Kiểm tra đồ thị G có thuộc lớp K
5
hay không? 45
3.3. Cài đặt thử nghiệm: 47
3.3.1. Phát biểu bài toán 47
3.3.2. Công cụ lựa chọn 47
3.3.3. Xây dựng, phát triển chương trình 47
3.3.4. Giao diện chương trình 51
3.3.5. Thử nghiệm và đánh giá 55
3.4. Kết luận: 55
PHẦN KẾT LUẬN 56
TÀI LIỆU THAM KHẢO 57


iv
Số hóa bởi Trung tâm Học liệu



LỜI CAM ĐOAN
Tôi xin cam đoan những kết quả nêu trong luận văn là những kết quả tìm hiểu,
nghiên cứu của tôi dưới sự hướng dẫn của GS.TS: Đặng Quang Á.
Mọi trích dẫn sử dụng trong báo cáo này đều được ghi rõ nguồn tài liệu tham
khảo theo đúng quy định.

Tác giả





Nguyễn Văn Thái

v
Số hóa bởi Trung tâm Học liệu


LỜI CẢM ƠN
Trước tiên, tôi xin được gửi lời cảm ơn đến tất cả quý thầy cô đã giảng
dạy trong chương trình đào tạo Cao học chuyên ngành Khoa học máy tính K11
do trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên
tổ chức đào tạo, những người đã truyền đạt cho tôi những kiến thức hữu ích làm
cơ sở cho tôi thực hiện tốt luận văn này.
Tác giả xin chân thành cảm ơn các thầy cô, những người đã tận tình
hướng dẫn và truyền đạt những kinh nghiệm quý báu trong học tập và nghiên
cứu và tận tình giúp đỡ tôi.
Đặc biệt tôi xin bày tỏ lòng cảm ơn xâu sắc tới GS.TS. Đặng Quang Á,
người đã tận tình hướng dẫn, quan tâm, đóng góp ý kiến cho tôi trong xuất thời
gian thực hiện luận văn. Mặc dù trong quá trình thực hiện luận văn có giai đoạn

không được thuận lợi nhưng những gì Thầy đã hướng dẫn, chỉ bảo đã cho tôi
nhiều kinh nghiệm trong thời gian thực hiện luận văn.
Sau cùng tôi xin gửi lời biết ơn sâu sắc đến gia đình đã luôn tạo điều kiện
tốt nhất cho tôi trong suốt quá trình học cũng như thực hiện luận văn.
Do thời gian có hạn và kinh nghiệm nghiên cứu khoa học chưa nhiều nên
luận văn còn nhiều thiếu sót, rất mong nhận được ý kiến góp ý của Thầy/Cô và
các anh chị học viên.

Thái Nguyên, tháng 9 năm 2014



Nguyễn Văn Thái

vi
Số hóa bởi Trung tâm Học liệu


DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiêu
Từ viết tắt
Diễn giải
V
Tập đỉnh của đồ thị
E
Tập cạnh của đồ thị
G=(V,E)
Đồ thị G với tập đỉnh V, tập cạnh E
|V|, |V(G)|
Số đỉnh của đồ thị

|E|, |E(G)|
Số đỉnh của đồ thị
deg(v), degG(v)
Bậc của đỉnh v của đồ thị G
, (G)
Bậc nhỏ nhất của các đỉnh trong G
K
n
Đồ thị đầy đủ n đỉnh
C
n
Đồ thị vòng n đỉnh
W
n
Đồ thị bánh xe n đỉnh
W(G)
Số thành phần liên thông của G
k-liên thông
Đồ thị có chỉ số liên thông bằng k
k(G)
Chỉ số liên thông của đồ thị G
P
Deterministic Polynomial
NP
Nondeterministic Polynomial
NP-C
NP-Complete
HC
Hamilton cycle
DC

Dominating cycle
NTM
Nondeterministic Turing Machine
DTM
Deterministic Turing Machines

Phép quy dẫn đa thức
K
Lớp đồ thị đặc biệt K
K
1
, K
2
, K
3
, K
4
, K
5

Các đồ thị đặc biệt K
1
, K
2
, K
3
, K
4
, K
5



Hợp của s đồ thị đầy đủ lạ nhau

Hợp của s đồ thị đầy đủ lạ nhau K
n
vii
Số hóa bởi Trung tâm Học liệu


DANH MỤC HÌNH
Trang
Hình 1.1. Đồ thị vô hướng 5
Hình 1.2. Đồ thị vô hướng và các bậc của đỉnh 5
Hình 1.3. Một số đồ thị đầy đủ 6
Hình 1.4. Đồ thị vòng 7
Hình 1.5. Đồ thị bánh xe 7
Hình 1.6. Đồ thị hai phía 8
Hình 1.7. Đồ thị G
1
đẳng cấu với G
2
8
Hình 1.8. Đồ thị G và đồ thị con G’ 9
Hình 1.9. Đơn đồ thị G
1
, G
2
và đồ thị G = G
1

 G
2
9
Hình 1.10. Đường đi trên đồ thị có độ dài 4 10
Hình 1.11. Đồ thị G liên thông, đồ thị G’ không liên thông 11
Hình 1.12. Đồ thị liên thông G và đồ thị H gồm 3 thành phần liên thông H
1
, H
2
, H
3
11
Hình 1.13. Đồ thị 4-liên thông 12
Hình 1.14. Đồ thị có k(G) = 2 và k(H) = 3 13
Hình 1.15. Đồ thị và ma trận kề 14
Hình 1.16. Đồ thị và ma trận trọng số 15
Hình 1.17. Đồ thị và danh sách cạnh 16
Hình 1.18. Đồ thị và danh sách kề tương ứng 17
Hình 2.1. Đồ thị có đường đi Hamilton, không có chu trình Hamilton 21
Hình 2.2. Đồ thị Hamilton 22
Hình 2.3 Đồ thị K
5
có chu trình Hamilton (a→b→c→d→e→a) 23
Hình 2.4. Đồ thị có 8 đỉnh, mỗi đỉnh có bậc ≥ n/2 24
viii
Số hóa bởi Trung tâm Học liệu


Hình 2.5. Đồ thị G gồm 5 đỉnh, 6 cạnh 28
Hình 2.6. Cây liệt kê chu trình Hamilton theo thuật toán quay lui 28

Hình 2.7. Đồ thị và cây liệt kê chu trình Hamilton của nó theo thuật toán quay lui. 29
Hình 2.8. Đồ thị thị hamilton tối đại G
3
30
Hình 3.1. Đồ thị có duy nhất một chu trình Hamilton, nhưng có nhiều chu trình
Dominating 32
Hình 3.2. Đồ thị không có chu trình Hamilton, có duy nhất mội chu trình Dominating
32
Hình 3.3. Đồ thị 2-liên thông với chu trình Dominating dài nhất độ dài 4 33
Hình 3.4. Đồ thị G có chu trình dài nhất (độ dài 6) là chu trình Dominating 34
Hình 3.5. Đồ thị G và G’ được xây dựng từ đồ thị G 35
Hình 3.6. Đồ thị K
1
37
Hình 3.7. Đồ thị K
2
38
Hình 3.8. Đồ thị K
3
38
Hình 3.9. Đồ thị K
4
39
Hình 3.10. Đồ thị K
5
40
Hình 3.11. Giao diện khi bắt đầu chạy chương trình 51
Hình 3.12. Form nạp và lưu đồ thị từ tập tin có sẵn chứa ma trận kề của đồ thị 52
Hình 3.13. Form kết quả kiểm tra đồ thị 52
Hình 3.14. Đồ thị không thỏa mãn điều kiện kiểm tra 53

Hình 3.15. Form kiểm tra tính liên thông của đồ thị 53
Hình 3.16. Form kiểm tra đồ thị với số đỉnh lớn. 54
Hình 3.17. Form thông tin về chương trình. 54

1
Số hóa bởi Trung tâm Học liệu


MỞ ĐẦU
1. Đặt vấn đề:
Lý thuyết đồ thị là một lĩnh vực đã được nghiên cứu từ những năm đầu
của thế kỷ 18 bởi nhà toán học Leonhard Euler người Thụy sĩ. Đồ thị được sử
dụng để giải nhiều bài toán trong nhiều lĩnh vực khác nhau, trong tin học là
một trường hợp cụ thể.
Trong những năm 70 của thế kỷ 20, thế giới được chứng kiến sự phát
triển hết sức nhanh chóng và rộng lớn của lý thuyết đồ thị, trong số đó có một
số lượng đáng kể các công trình nghiên cứu cấu trúc của các chu trình trong
đồ thị, đặc biệt là chu trình Hamilton và còn nhiều vấn đề mở.
Nghiên cứu về cấu trúc chu trình trong đồ thị giúp chúng ta giải quyết
tốt các bài toán tối ưu trong đời sống. Chẳng hạn, trong lĩnh vực chế tạo robot
thám hiểm, chuyển gửi tín hiệu hình ảnh qua vệ tinh, bài toán phân tích hệ
thống tương tác và tiện ích các website,
Trong số các cấu trúc đồ thị thì chu trình Hamilton đóng vai trò đặc biệt
quan trọng. Đó là chu trình đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng
một lần. Bài toán về chu trình Hamilton là bài toán xác định xem liệu đồ thị
có chứa chu trình Hamilton không và tìm ra các chu trình đó. Bài toán này đã
được chứng minh là NP-C (NP- đầy đủ). Chính vì thế không tồn tại các thuật
toán đa thức giải nó, và để giải quyết bài toán này nhiều thuật toán gần đúng
đã được nghiên cứu.
Một sự mở rộng của chu trình Hamilton là chu trình trội (Dominating

cycle). Bài toán này cũng đã được chứng minh là NP-C.
2
Số hóa bởi Trung tâm Học liệu


Việc tìm hiểu về các chu trình Hamilton và chu trình trội, các dấu hiệu
nhận biết chúng cùng thuật toán xác định, cải tiến và phát triển chúng là việc
làm có ý nghĩa khoa học và thực tiễn. Đây chính là mục đích của luận văn này.
2. Mục tiêu của luận văn:
Đối tượng nghiên cứu của luận văn là các vấn đề về cấu trúc chu trình
liên quan đến chu trình Hamilton và chu trình trội trong đồ thị.
3. Phạm vi nghiên cứu
Luận văn tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lý
thuyết như: Lý thuyết về đồ thị và lý thuyết các bài toán NP-C, chu trình
Hamilton và chu trình trội.
4. Nhiệm vụ nghiên cứu
- Tìm hiểu những kiến thức tổng quan về đồ thị và lý thuyết các bài
toán NP-C.
- Tìm hiểu về đồ thị Hamilton và các mở rộng
- Tìm hiểu các thuật toán tìm chu trình Hamilton
- Xây dựng thuật toán đa thức xác định sự tồn tại của chu trình trội trên
đồ thị cho trước.
- Cài đặt thuật toán.
3. Tổ chức luận văn:
Luận văn bao gồm phần mở đầu, 3 chương nội dung, phần kết luận,
phần phụ lục và tài liệu tham khảo.
Chương I: Một số kiến thức cơ bản trong lý thuyết đồ thị và lý thuyết
các bài toán NP-C
Chương II: Chu trình Hamilton
3

Số hóa bởi Trung tâm Học liệu


Phần đầu tìm hiểu về chu trình Hamilton, một số thuật toán xác định
chu trình Hamilton.
Phần cuối tìm hiểu về chu trình Hamilton tối đại, cách xây dựng đồ thị
Hamilton tối đại n đỉnh.
Chương III: Chu trình trội
Phần đầu trình bày những hiểu biết về chu trình trội trong đồ thị vô
hướng, chứng minh bài toán xác định có tồn tại chu trình trội trong đồ thị G
cho trước là NP-C.
Phần sau trình trình bày thuật toán đa thức xác định sự tồn tại của chu
trình trội trên đồ thị vô hướng trong lớp đồ thị 2-liên thông có

(G) ≥ n/3. Tìm
hiểu về lớp đồ thị 2-liên thông. Một số hình ảnh thể hiện trên chương trình demo.
Phần kết luận: Tóm tắt các kết quả đã đạt được của luận văn.

4
Số hóa bởi Trung tâm Học liệu


Chƣơng I: MỘT SỐ KHÁI NIỆM CƠ BẢN TRONG LÝ THUYẾT ĐỒ
THỊ VÀ LÝ THUYẾT CÁC BÀI TOÁN NP-C
1.1. Lý thuyết đồ thị
Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của lý
thuyết đồ thị. Một cách không chính thức, đồ thị là một tập các đối tượng gọi
là đỉnh nối với nhau bởi các cạnh. Thông thường, đồ thị được vẽ dưới dạng
một tập các điểm (đỉnh, nút) nối với nhau bởi các đoạn thẳng (cạnh). Tùy theo
ứng dụng mà một số cạnh có thể có hướng. Chúng ta phân biệt các loại đồ thị

khác nhau bởi kiểu và số lượng cạnh nối hai đỉnh nào đó của đồ thị.
Trong phạm vi của luận văn chỉ xét đến đơn đồ thị hữu hạn, vô hướng
và gọi tắt là đồ thị. Các kiến thức trong mục này tham khảo từ [2], [3]
1.1.1. Các thuật ngữ cơ bản
1.1.1.1 Một số khái niệm
Định nghĩa 1.1. Đơn đồ thị vô hướng G=(V, E) bao gồm V là tập các
đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V
gọi là các cạnh.
Đồ thị vô hướng G là một cặp G = (V,E)
Trong đó: V



là tập hợp các phần tử nào đó gọi là đỉnh của đồ thị.
E: Là tập các cặp (u,v) nào đó (gọi là cạnh của đồ thị) với
u,v  V, (u,v)  E

(v,u)  E và coi (u,v)  (v,u);
Nếu e = (u,v) là một cạnh của đồ thị G thì u, v được coi là các đỉnh đầu
mút của cạnh e hay các đỉnh liên thuộc với e, hay có thể nói u,v là kề nhau
hay láng giềng của nhau.
Định nghĩa 1.2. Đồ thị G gọi là vô hướng nếu  u,v  V:(u,v)(v,u)E
5
Số hóa bởi Trung tâm Học liệu




Hình 1.1. Đồ thị vô hướng
Định nghĩa 1.3. Đồ thị G gọi là có hướng nếu  u,vV: (u,v)  (v,u)

Định nghĩa 1.4. Đơn đồ thị vô hướng G = (V,E) bao gồm V là tập các
đỉnh, và E là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V
gọi là các cạnh.
+ Đồ thị G = (V,E) với đỉnh v

V, e = (u,v)  E
Khi đó: u,v là hai đỉnh đầu, cuối của cạnh e; e _ cạnh liên thuộc u,v
Định nghĩa 1.5. Hai đỉnh u và v trong đồ thị vô hướng được gọi là liền
kề (hay láng giềng) nếu (u,v) là một cạnh của đồ thị G. Nếu e=(u,v) thì e gọi
là cạnh liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và
đỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu mút của cạnh
(u,v)
Định nghĩa 1.6. Bậc của đỉnh u  V kí hiệu deg(u) trong đồ thị vô
hướng là số cạnh liên thuộc với u (hay tập các láng giềng của u), riêng khuyên
tại một đỉnh được tính hai lần cho bậc của nó.
Đỉnh có bậc bằng không gọi là đỉnh cô lập (Không kề với bất kỳ đỉnh
nào). Đỉnh v gọi là đỉnh treo nếu deg(v)=1.





Hình 1.2. Đồ thị vô hướng và các bậc của đỉnh
k
e
i

f
a
b

c
d
g
h
j
6
Số hóa bởi Trung tâm Học liệu


deg (a) =4
deg(b) = 3
deg(c) = 5
deg(d) = 3
deg (e) =4
deg(f) = 3
deg(g) = 5
deg(h) = 3
deg (i) =2
deg(j) = 2
deg(k) = 0
Định lý 1.1. Ký hiệu E là số cạnh của đồ thị G = (V,E) khi đó
)(deg2 vE
Vv




Hệ quả 1.1. Trong đồ thị vô hướng số đỉnh của đồ thị có bậc lẻ là số
chẵn.
Chứng minh:

Gọi O và U tương ứng là tập đỉnh bậc lẻ và tập đỉnh bậc chẵn của đồ thị
Ta có
)(deg)deg()(deg2 vvvE
UvOvVv




Do
)(deg v
Uv


(tức là tổng số đỉnh bậc chẵn) – chẵn 
)(deg v
Ov


- chẵn.
1.1.1.2. Một số dạng đơn đồ thị đặc biệt
Định nghĩa 1.7. (Đồ thị đầy đủ) Đồ thị đầy đủ n đỉnh, ký hiệu là K
n

đơn đồ thị mà hai đỉnh phân biệt bất kỳ của nó luôn liền kề. Như vậy, K
n

cạnh và mỗi đỉnh của K
n
có bậc là n -1.
Ví dụ:

K
2


K
3
K
4



K
5

Hình 1.3. Một số đồ thị đầy đủ
7
Số hóa bởi Trung tâm Học liệu


Định nghĩa 1.8. Đồ thị vòng (C
n
): Là đồ thị có n đỉnh, n cạnh liên
thông, mỗi đỉnh đều có bậc 2.
Ví dụ: C
3

C
4

Hình 1.4. Đồ thị vòng

Định nghĩa 1.9. Đồ thị bánh xe (W
n
): Nhận được từ C
n
bằng cách thêm
một đỉnh mới kề với tất cả các đỉnh còn lại




Hình 1.5. Đồ thị bánh xe
Định nghĩa 1.10. (Đồ thị hai phía): Đồ thị G = (V,E) là đồ thị hai phía
(hay đồ thị phân đôi) nếu tập các đỉnh V có thể phân thành hai tập con khác
rỗng rời nhau X và Y sao cho mỗi cạnh của đồ thị được kết nối từ một đỉnh
thuộc X với một đỉnh thuộc Y:
Nói dưới dạng toán học:
- Có thể tìm được X, Y  V sao cho
- Và mọi

v
2

v
3

v
1

v
4


v
1

v
2

v
4

v
3

v
5

v
1

v
5

v
2

v
4

v
3


v
6

8
Số hóa bởi Trung tâm Học liệu


Ví dụ:





Hình 1.6. Đồ thị hai phía
1.1.1.3. Đồ thị đẳng cấu
Định nghĩa 1.11. [5]
Cho trước hai đồ thị G
1
= (V
1
,E
1
) và G
2
= (V
2
,E
2
). Ta nói G

1
và G
2

đẳng cấu với nhau nếu có một song ánh f: V
1
 V
2
sao cho hai đỉnh u và v kề
nhau trong G
1
khi và chỉ khi f(u) kề với f(v) trong G
2
(hay nói cách khác (u,v)
 E
1
khi và chỉ khi (f(u),f(v))  E
2
)
Ví dụ: Cho hai đồ thị, hỏi chứng có đẳng cấu với nhau hay không?







Hình 1.7. Đồ thị G
1
đẳng cấu với G

2

Theo ví dụ ta thấy, nếu chọn phép ánh xạ biến đỉnh u của đồ thị G
1

thành f(u+10) của đồ thị G
2
(đỉnh 1 biến thành đỉnh 11, đinh 2 thành đỉnh
v
1

v
2

v
3

v
5

v
6

v
4

K
3,3
v
1


v
2

v
3

v
4

v
5

v
6

K
2,3

2
3
5
1
6
7
8
9
10
4
19

17
15
14
13
16
11
12
18
20
G
1

G
2

9
Số hóa bởi Trung tâm Học liệu


12 , đỉnh 10 thành đỉnh 20), ta thấy đây là phép ánh xạ mà với hai đỉnh (u,v)
 E
1
thì (10+u, 10+v)  E
2
. Vậy hai đồ thị G
1
và G
2
là đẳng cấu với nhau.
1.1.1.4. Các đồ thị mới từ đồ thị cũ

Định nghĩa 1.12. Đồ thị con của đồ thị G = (V,E) là đồ thị G’ = (V’,E’)
trong đó V’  V và E’  E. Ký hiệu G’  G




Hình 1.8. Đồ thị G và đồ thị con G’
Định nghĩa 1.13. Hợp của hai đồ thị G
1
= (V
1
,E
1
) và G
2
= (V
2
,E
2
) là
một đơn đồ thị có tập các đỉnh là V
1
 V
2
và tập các cạnh E
1
 E
2
. Ta ký hiệu
hợp của các đồ thị G

1
và G
2
là G = G
1
 G
2





Hình 1.9. Đơn đồ thị G
1
, G
2
và đồ thị G = G
1
 G
2

Định nghĩa 1.14. Cho đồ thị G = (V,E) và G’ = (V’,E’). Khi đó G và G‟
được gọi là lạ nhau khi V  V’ = .
Định nghĩa 1.15. Hợp của hai đồ thị lạ nhau G = (V,E) và G’ = (V’,E’)
trong đó V  V’=  là đồ thị thu được khi ta nối tất cả các đỉnh của G với tất
cả các đỉnh của G’ (ký hiệu G*G’).
a

e


b

d

c
a

e

d

c
G
1
G
2
G= G
1
 G
2
10
Số hóa bởi Trung tâm Học liệu


1.1.2. Đường đi, chu trình, đồ thị liên thông
Xét đơn đồ thị vô hướng G = (V,E)
1.1.2.1. Đường đi
Định nghĩa 1.16. Một đường đi độ dài n từ đỉnh u tới tới đỉnh v, trong
đó n là số nguyên dương, trên đồ thị vô hướng G=(V,E) là một dãy các đỉnh
x

0
, x
1
, ,x
n
sao cho:






1,0,),(
,
1
0
niExx
vxux
ii
n

Trong đó: Đỉnh u gọi là đỉnh đầu, đỉnh v gọi là đỉnh cuối. Đường đi trên
gọi là đơn nếu không có cạnh nào lặp lại. Số cạnh của đường đi được gọi là
độ dài của đường đi đã cho.
Ví dụ: Đường đi có độ dài 4 đi từ đỉnh 1 đến đỉnh 6




Hình 1.10. Đường đi trên đồ thị có độ dài 4

1.1.2.2. Chu trình
Định nghĩa 1.17. Chu trình là một đường đi có đỉnh đầu và đỉnh cuối
trùng nhau.
Định nghĩa 1.18. Chu trình đơn: là một chu trình mà đường đi của nó
không có cạnh nào lặp lại.
1
3
5
6
4
2
11
Số hóa bởi Trung tâm Học liệu


Định nghĩa 1.19. Trong một đồ thị G, chu trình có độ dài lớn nhất gọi
là chu trình dài nhất.
1.1.2.3. Đồ thị liên thông – chỉ số liên thông
Định nghĩa 1
.20. (Đồ thị liên thông) Một đồ thị vô hướng được gọi là
liên thông nếu có đường đi giữa mọi cặp đỉnh phân biệt của đồ thị.
- Đồ thị vô hướng G
= (
V,
E
)
được gọi là liên thông nếu với bất kỳ hai
đỉnh u,v E luôn tìm được đường đi từ đỉnh u tới đỉnh v.




Hình 1.11. Đồ thị G liên thông, đồ thị G’ không liên thông
Định lý 1.2. Giữa mọi cặp đỉnh phân biệt của một đồ thị vô hướng liên
thông luôn có đường đi đơn.

Định nghĩa 1
.21 (Thành phần liên thông)
Một đồ thị G = (V,E) không liên thông bao gồm các đồ thị con liên
thông với nhau và được gọi là thành phần liên thông của G. Số thành phần
liên thông của G được ký hiệu w(G).

Hình 1.12. Đồ thị liên thông G và đồ thị H gồm 3 thành phần liên thông
H
1
, H
2
, H
3

G

G’

12
Số hóa bởi Trung tâm Học liệu


Định nghĩa 1
.22[5] [19] (Đồ thị k-liên thông)
Cho trước đồ thị G và một số tự nhiên k > 0. G là đồ thị k-liên thông

nếu G là đồ thị liên thông và nếu như bỏ đi một số t < k đỉnh tùy ý và các cạnh
liên thuộc với các đỉnh đó ta vẫn thu được đồ thị liên thông.
Nhận xét:
- Mọi đồ thị liên thông đều là 1-liên thông
- Đồ thị đầy đủ K
n
là (n-1)-liên thông
- Một đồ thị là k-liên thông thì cũng là h-liên thông với mọi 0 < h < k

Hình 1.13. Đồ thị 4-liên thông
Ví dụ: Đồ thị trong hình 1.12 là đồ thị 4-liên thông vì chỉ khi bỏ đi tới
4 đỉnh bất kì của đồ thị và các cạnh liên thuộc với chúng ta mới thu được đồ
thị không liên thông. Còn khi bỏ đi 1 hoặc 2 hoặc 3 đỉnh tùy ý thì đồ thị vẫn
còn liên thông.
Định nghĩa 1
.23.[5] (Chỉ số liên thông)
Trong đồ thị liên thông G, số đỉnh tối thiểu có thể vứt bỏ để G trở nên
không còn liên thông nữa gọi là chỉ số liên thông của G. Đồ thị có chỉ số liên
13
Số hóa bởi Trung tâm Học liệu


thông bằng k được gọi là k-liên thông. Chỉ số liên thông của G được ký hiệu
k(G)

Hình 1.14. Đồ thị có k(G) = 2 và k(H) = 3
1.1.3. Biểu diễn đồ thị trên máy tính
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên
máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị. Việc
chọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả

của thuật toán. Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn đồ thị phụ
thuộc vào từng tình huống cụ thể (bài toán và thuật toán cụ thể).
Tại sao phải biểu diễn đồ thị trên máy tính?
- Lý thuyết đồ thị ngày càng được ứng dụng rộng rãi.
- Để xây dựng được các ứng dụng của đồ thị trên máy tính thì cần phải
tìm cách biểu diễn đồ thị trên máy tính thích hợp.
- Máy tính không thể hiểu được các đồ thị dưới dạng hình vẽ thông
thường.
Tiêu chuẩn để lựa chọn cách thức biểu diễn đồ thị trên máy tính?
- Cấu trúc dữ liệu phải đơn giản, phù hợp với từng bài toán ứng dụng.
- Dễ biểu diễn, dễ cài đặt các ứng dụng trên đó.
14
Số hóa bởi Trung tâm Học liệu


Dưới đây ta sẽ xét một số phương pháp cơ bản được sử dụng để biểu
diễn đồ thị trên máy tính, đồng thời cũng phân tích một cách ngắn gọn những
ưu điểm cũng như những nhược điểm của chúng.
1.1.3.1. Biểu diễn đồ thị bằng ma trận kề và ma trận trọng số
Định nghĩa 1.24. Ma trận kề:
Giả sử G = (V, E) là một đơn đồ thị có số đỉnh |V| = n.
Ma trận kề của đơn đồ thị G là một ma trận vuông A[n.n] Với các phần
tử được xác định theo quy tắc như sau:
với i,j = 1,2, ,n là các đỉnh của đồ thị
Quy ước A[i,i] = 0 với

i;
Ví dụ: Cho đồ thị vô hướng như hình vẽ







v
1
v
2
v
3
v
4
v
5
v
1
0
0
1
1
0
v
2
0
0
0
1
1
v
3

1
0
0
0

v
4
1
1
0
0
0
v
5
0
1
1
0
0

Hình 1.15. Đồ thị và ma trận kề
- Đối với đồ thị vô hướng G, thì ma trận kề là ma trận đối xứng
(A[i,j]=A[j,i]).
- Nếu G là đồ thị vô hướng và A là ma trận kề tương ứng thì trên ma
trận A: Tổng các số trên hàng i = Tổng các số trên cột i = Bậc của đỉnh i =
deg(i)
v
1

v

5

v
2

v
4

v
3

Ma trận kề
15
Số hóa bởi Trung tâm Học liệu


Ưu điểm của ma trận kề:
- Đơn giản, trực quan, dễ cài đặt trên máy tính
- Đễ kiểm tra xem hai đỉnh (u,v) của đồ thị có kề nhau hay không.
Nhược điểm của ma trận liền kề:
Bất kể số cạnh của đồ thị là nhiều hay ít, ma trận liền kề luôn luôn đòi
hỏi n
2
ô nhớ để lưu các phần tử ma trận, điều đó gây lãng phí bộ nhớ dẫn tới
việc không thể biểu diễn được đồ thị với số đỉnh lớn.
Ma trận trọng số:
Định nghĩa 1.25.
Đồ thị có trọng số là đồ thị ứng với mỗi cạnh (u,v) 
E gán một giá trị C(u,v) nào đó gọi là trọng số của (u,v)
Ma trận trọng số là ma trận vuông A[n,n] trong đó giá trị được xác định

như sau:
Trong đó  được xác định tuỳ theo đề bài toán cụ thể, thường gặp là -
, 0, +
Ví dụ: Cho đồ thị G = (V,E).







Ma trận trọng số tương ứng là:

A
B
C
D
E
F
G
A

5



10
1
B
5


5

3
1

C

5

9
6


D


9

4


E

3
6
4

2


F
10
1


2

2
G
1




2


Hình 1.16. Đồ thị và ma trận trọng số

A
B
C
D
E
F
G
5
5
9
4

6
3
2
1
10
2
1
16
Số hóa bởi Trung tâm Học liệu


1.1.3.2. Biểu diễn đồ thị bằng danh sách cạnh
Dùng trong trường hợp đồ thị có ít cạnh, số cạnh m < 6n, với n là số
đỉnh.
Danh sách cạnh của đồ thị G = (V,E) có m cạnh sẽ bao gồm hai mảng
một chiều có kích thước m.
Mảng Dau sẽ lưu các đỉnh đầu của các cạnh
Mảng Cuoi sẽ lưu đỉnh cuối của các cạnh

Ví dụ:





Dau
Cuoi
1
2
1

4
1
5
2
1
2
3
2
4
3
2
3
4
4
1
4
2
4
3
4
5
5
1
5
4

Hình 1.17. Đồ thị và danh sách cạnh
1
2
3

4
5
17
Số hóa bởi Trung tâm Học liệu


1.1.3.3. Biểu diễn đồ thị bằng danh sách kề
Cho đồ thị G = (V,E) có n đỉnh. Đồ thị G có thể được biểu diễn bằng n
danh sách liên kết. Với mỗi đỉnh u, tạo ra một danh sách các đỉnh kề với đỉnh u.
Ví dụ với đồ thị sau:

Đỉnh
Các đỉnh kề

1
2
3
4
5
2, 4, 5
1, 3, 4
2, 4
1, 2, 3, 5
1, 4

Hình 1.18. Đồ thị và danh sách kề tương ứng

Đối với danh sách kề, 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.
1.2. Lý thuyết lớp các bài toán P và NP

1.2.1. Khái niệm các loại thời gian tính
Thời gian tính tốt nhất: là thời gian tính tối thiểu cần thiết để thực hiện
thuật toán với mọi bộ dữ liệu đầu vào kích thước n.
Thời gian tính tồi nhất: là thời gian tính tối đa cần thiết để thực hiện
thuật toán với mọi bộ dữ liệu đầu vào có kích thước n.
Thời gian tính trung bình: là thời gian tính cần thiết để thực hiện thuật
toán trên một tập hữu hạn các bộ dữ liệu đầu vào có kích thước n. Thời gian
tính trung bình được tính theo công thức sau:
Thời gian tính trung bình = (Tổng thời gian tính tất cả các bộ dữ liệu có
thể)/ Số bộ dữ liệu.
1
2
3
4
5

×