Tải bản đầy đủ (.docx) (64 trang)

Chu trình hamilton tổng quát trong đồ thị vô hướng

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.26 MB, 64 trang )

1

MỤC LỤC


2

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


3

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


4

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiêu
Từ viết tắt
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

Kn

Đồ thị đầy đủ n đỉnh

Cn

Đồ thị vòng n đỉnh

Wn

Đồ 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

Diễn giải

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


5

DANH MỤC HÌNH
Trang



6

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.


7


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


8

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.


9

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


10

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.

b
c
a

d

j
k

i
h

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


11

deg (a) =4

deg (e) =4

deg (i) =2

deg(b) = 3

deg(f) = 3


deg(j) = 2

deg(c) = 5

deg(g) = 5

deg(k) = 0

deg(d) = 3
deg(h) = 3
Định lý 1.1. Ký hiệu E là số cạnh của đồ thị G = (V,E) khi đó
2E =

∑ deg(v)

v∈V

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ị
2E =

∑ deg(v) = ∑ deg(v) + ∑ deg(v)

v∈V

Ta có
Do


∑ deg(v)

v∈U

v∈O

v∈U

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

∑ deg(v)

⇒ v∈O

- 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à Kn là
đơn đồ thị mà hai đỉnh phân biệt bất kỳ của nó luôn liền kề. Như vậy, Kn có
cạnh và mỗi đỉnh của Kn có bậc là n -1.
Ví dụ:
K2

K4

K5

K3

Hình 1.3. Một số đồ thị đầy đủ



12

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

C3

C4

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

v1

v2
v5

v4
v3

v1

v2

v4


v3

v5

v2

v6
v4

v3

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


13

Ví dụ:

v1
v3

v2

v4

v5
K2,3

v6

v1

v2

v3

v4

v5

v6

K3,3

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ị G1 = (V1,E1) và G2 = (V2,E2). Ta nói G1 và G2 là
đẳng cấu với nhau nếu có một song ánh f: V1  V2 sao cho hai đỉnh u và v kề
nhau trong G1 khi và chỉ khi f(u) kề với f(v) trong G2 (hay nói cách khác (u,v)
∈ E1 khi và chỉ khi (f(u),f(v)) ∈ E2)
Ví dụ: Cho hai đồ thị, hỏi chứng có đẳng cấu với nhau hay không?
2

17
20

12
7
1

6

3
8

15
11

19
14

9

10

16

4

5

13

18
G1

G2

Hình 1.7. Đồ thị G1 đẳng cấu với G2
Theo ví dụ ta thấy, nếu chọn phép ánh xạ biến đỉnh u của đồ thị G1
thành f(u+10) của đồ thị G2 (đỉnh 1 biến thành đỉnh 11, đinh 2 thành đỉnh


14

12..., đỉnh 10 thành đỉnh 20), ta thấy đây là phép ánh xạ mà với hai đỉnh (u,v)
∈ E1 thì (10+u, 10+v) ∈ E2. Vậy hai đồ thị G1 và G2 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
a

a
e

e


b
d

d

c

c

Hình 1.8. Đồ thị G và đồ thị con G’
Định nghĩa 1.13. Hợp của hai đồ thị G1 = (V1,E1) và G2 = (V2,E2) là
một đơn đồ thị có tập các đỉnh là V1 ∪ V2 và tập các cạnh E1 ∪ E2. Ta ký hiệu
hợp của các đồ thị G1 và G2 là G = G1 ∪ G2

G2

G1

G= G1 ∪ G2

Hình 1.9. Đơn đồ thị G1, G2 và đồ thị G = G1 ∪ G2
Đị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’).


15


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
x0, x1,...,xn sao cho:
 x0 = u , x n = v

( xi , xi +1 ) ∈ E , i = 0, n − 1

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
3
5
1

2

4

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.

Đị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.


16

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.

G

G’

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
H1, H2, H3
Định nghĩa 1.22[ 5 ] [19] ( Đồ thị k-liên thông)


17


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 đủ Kn 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
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)


18

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 đó.
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.


19

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ẽ

v1
v5

v2
Ma trận kề


v4

v3

v1

v2

v3

v4

0

0

1

1

0

0

0

1

1


0

0

0

1

1

0

0

0

1

1

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)
Ư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ề:


20

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 n2 ô 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).
A

5

B

5

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

C

9

1

1

10

6
3
4

G

2

F

2

E

D

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ố
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.


21

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ụ:

1

2

4

3

Dau
1
1
1
2
2
2
3
3

4
4
4
4
5
5

5

Hình 1.17. Đồ thị và danh sách cạnh
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:

1

2

4

3

5

Đỉnh
1
2
3
4

5

Các đỉnh kề
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


22

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.
Định nghĩa 1.26. Bài toán quyết định là bài toán mà đầu ra chỉ có thể là
‘yes’ hoặc ‘no’ (đúng/sai, 0/1).
Đối với một bài toán quyết định, có những bộ dữ liệu vào cho ra câu trả

lời (đầu ra) là ‘yes’, chúng ta gọi đây là bộ dữ liệu ‘yes’, nhưng cũng có
những bộ dữ liệu vào cho ra câu trả lời là ‘no’, chúng ta gọi những bộ dữ liệu
này là bộ dữ liệu ‘no’.
1.2.2. Khái niệm phép quy dẫn đa thức
Định nghĩa 1.27. Giả sử chúng ta có hai bài toán quyết định A và B.
Chúng ta nói A có thể quy dẫn về B nếu như sau một thời gian tính đa
thức nếu tồn tại một thuật toán thời gian đa thức R cho phép biến đổi bộ dữ
liệu x của A thành bộ dữ liệu vào R(x) của B sao cho x là bộ dữ liệu yes của A
khi và chỉ khi R(x) là dữ liệu vào yes của B.
Nếu A quy dẫn về được B sau thời gian đa thức và B có thể giải được
sau thời gian đa thức thì A cũng có thể giải được sau thời gian đa thức.


23

1.2.3. Lớp bài toán P
Định nghĩa 1.28. Một máy Turing M được gọi là có độ phức tạp thời
gian T(n) (hoặc thời gian chạy T(n)) nếu mỗi khi M được cho một nguyên liệu
đầu vào w có độ dài n thì M sẽ dừng sau khi thực hiện tối đa T(n) bước
chuyển, bất kể M có kiểm nhận w hay không.
Chúng ta chủ yếu quan tâm khi T(n) là một hàm đa thức.
Một ngôn ngữ L thuộc lớp P nếu có một hàm đa thức T(n) sao cho L =
L(M) với một máy Turing đơn định M nào đó có độ phức tạp thời gian T(n)
Ví dụ: Thuật toán Kruskal tìm cây khung bé nhất của một đồ thị có m
nút và e cạnh với thời gian O(m+ elog2e) (trên máy tính thông thường). Thời
gian thực hiện bởi máy Turing cũng cùng bậc như vậy.
1.2.3. Lớp bài toán NP.
Định nghĩa 1.29: Ngôn ngữ L thuộc lớp NP (Nondeterministic
Polynomial) nếu ∃ máy Turing không đơn định M và một độ phức tạp thời
gian T(n) sao cho L=L(M) và khi M được cho một nguyên liệu có độ dài n thì

nó sẽ kiểm nhận sau không quá T(n) bước chuyển.
Nhận xét: Vì mỗi máy Turing đơn định đều là máy Turing không đơn
định không bao giờ có lựa chọn bước chuyển nên P ⊆ NP. Tuy nhiên, dường
như NP cũng chứa nhiều bài toán không thuộc lớp P. Một câu hỏi toán học
sâu sắc còn bỏ ngỏ là liệu P = NP hay không, nghĩa là mọi thứ có thể thực
hiện được bởi một NTM (Nondeterministic Turing Machine) thật sự trong thời
gian đa thức có thể được thực hiện bởi một DTM (Deterministic Turing
Machines) trong một thời gian đa thức hay không, dù có thể là một hàm đa
thức bậc cao hơn.


24

1.2.4. Lớp bài toán NP-đầy đủ (NP-Complete).
Định nghĩa 1.30. Ta nói L là bài toán thuộc loại NP-C nếu các khẳng
định sau là đúng:
1) L thuộc NP
2) Với mọi ngôn ngữ L’ ∈ NP có một phép thu thời gian đa thức L’ về L
Định lý 1.3 Nếu bài toán P1 là NP-C, P2 là NP và có một phép thu thời
gian đa thức từ P1 về P2 thì P2 cũng là NP-C.
Chứng minh: Ta cần chứng tỏ rằng mỗi ngôn ngữ L thuộc NP đều thu
được P2 trong thời gian đa thức. Khi đó theo định nghĩa P2 sẽ thuộc NP-C.
Thật vậy, vì P1 là NP-C nên có một phép thu đa thức L về P1. Giả sử
thời gian của phép thu này là P(n). Vì thế một chuỗi W∈L có chiều dài n
được biến đổi thành một chuối x ∈ P1 có chiều dài tối đa là P(n). Ta cũng biết
rằng có một phép thu đa thức từ P1 về P2. Giả sử thời gian của phép thu này là
q(m). Thế thì phép thu này biến đổi chuỗi x ∈ P1 về chuỗi y nào đó thuộc P2
với thời gian tối đa là q(p(n)). Vì thế phép biến đổi W ∈ L về y ∈ P2 mất thời
gian tối đa là p(n) + q(p(n)), đây cũng là một đa thức. Như vậy, ta kết luận
rằng L có thể thu về P2 trong thời gian đa thức.

Định lý 1.4. Nếu có một bài toán nào đó là NP-C mà lại thuộc lớp P thì
ta có P = NP.
Chứng minh: Giả sử có bài toán Q ∈ NP-C và Q ∈ P. Thế thì mọi
ngôn ngữ L trong NP đều thu được về Q trong thời gian đa thức. Nếu Q ∈ P
thì L ∈ P. Như vậy NP ∈ P. Kết hợp với điều hiển nhên là P ∈ NP ta được
P = NP.
Nhận xét: Chúng ta vẫn tin tưởng rằng nhiều bài toán thuộc lớp NP
nhưng không thuộc P nên chúng ta sẽ xem việc chứng minh một bài toán là


25

NP-C có giá trị ngang với việc chứng minh rằng nó không thể giải được trong
thời gian đa thức, và vì thế không có lời giải đúng nào bằng máy tính (và ta sẽ
chỉ đi tìm lời giải gần đúng).
1.3. Kết luận
Chúng ta đã tìm hiểu về các khái niệm về lý thuyết đồ thị như: Khái
niệm đồ thị, đồ thị đầy đủ, đồ thị liên thông, cách biểu diễn đồ thị trên máy tính.
Mặt khác chúng ta cũng đã tìm hiểu các kiến thức cơ bản về thời gian
tính, phép quy dẫn đa thức, lớp các bài toán P, NP và NP-C
Trong chương tiếp theo chúng ta sẽ tập chung tìm hiểu về chu trình
Hamilton, thuật toán xác định chu trình Hamilton và đồ thị Hamilton tối đại
cùng thuật toán xây dựng đồ thị Hamilton tối đại.


×