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

TÌM HIỂU ĐỘ PHỨC TẠP MỘT SỐ THUẬTTOÁN (LUẬN VĂN THẠC SĨ)

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 (582.21 KB, 43 trang )

IH
TRƢỜN

GI H


O

I

Ọ TỰ N

N

-----------------------

Nguyễn Thế Quyền

TÌM

ỂU Ộ P Ứ T P MỘT SỐ T UẬTTOÁN

huy n ng nh

o

m to n h c cho m y t nh v hệ thống t nh to n

số 6 46 35

H



H
G

IH

H
G

P S.TS. N UYỄN

H

i - 2013

H

H

ỮU N Ự


MỤ LỤ
MỞ ẦU ....................................................................................................................... 3
ƢƠN

1.

ẾN T Ứ


UẨN BỊ .................................................................... 4

1.1. Máy Turing .............................................................................................................. 4
1.1.1. Máy Turing .................................................................................................. 4

12

13

112

y uring tất ịnh ..................................................................................... 5

113

y uring không tất ịnh .......................................................................... 7

h i niệm thuật to n ............................................................................................... 8
121

h i niệm thuật to n .................................................................................... 8

122

dụ về thuật to n ....................................................................................... 9

123

uận ề Church-Turing ............................................................................. 10


phức tạp của thuật to n .................................................................................... 11
1.3 1

phức tạp về thời gian ............................................................................ 11

1.3.2. Ví dụ c ch t nh
ƢƠN

phức tạp ....................................................................... 12

2. BÀI TOÁN VÀ Ộ PHỨC T P CỦA BÀI TOÁN ......................... 14

2.1. Bài toán là gì? ........................................................................................................ 14
22

t số b i to n quan tr ng.................................................................................... 15

23

phức tạp của bài toán ....................................................................................... 20
ƢƠN

3. P ÂN LỚP Á BÀ TOÁN T EO Ộ PHỨC T P .................. 21

3.1. ớp c c b i to n P, P v mối quan hệ giữa lớp P v lớp P ............................. 21

32

311


ớp P .......................................................................................................... 21

312

ớp P ....................................................................................................... 21

3.1.3.

ối quan hệ giữa lớp P v

P ................................................................... 21

ớp c c bài toán NPC. .......................................................................................... 21
3 2 1 Phép dẫn với thời gian a thức .................................................................. 21
322

ớp c c b i to n P ................................................................................ 22

323

ối quan hệ giữa c c lớp b i to n P, P v

1

P ..................................... 22


t số b i to n lớp P ........................................................................... 23

3.2.4.


1) Bài toán SAT. ịnh lý ook ................................................................ 23
2) Bài toán 3SATIFIABILITY (3SAT) .................................................... 30
3) Bài toán 3-DIMENSIONAL MATCHING (3DM) .............................. 33
4) Bài toán VERTEX COVER (VC) ........................................................ 37
5) Bài toán CLIQUE ................................................................................. 39
6) Bài toán HAMILTON CIRCUIL (HC) ................................................ 39
7) Bài toán PARTITION .......................................................................... 39
8) Bài toán TRAVELING SALEMAN (TSP) .......................................... 39
ẾT LUẬN ................................................................................................................. 41
TÀ L ỆU T

M

ẢO ......................................................................................... 42

2


MỞ ẦU
ý thuyết

phức tạp l m t lĩnh vực trung tâm của khoa h c m y t nh với c c

kết qu li n quan chặt chẽ với sự ph t triển v sử dụng c c thuật to n
thuyết

ghi n cứu về lý

phức tạp sẽ giúp chúng ta hiểu biết sâu sắc và khám phá ra ranh giới của


những vấn ể “có thể” tính toán với c c nguồn t i nguy n hợp lý
Trong b n luận văn n y, trước hết chúng tôi tìm hiểu m t số kh i niệm quan
tr ng của lý thuyết thuật to n như thuật to n v

phức tạp của thuật to n

r n cơ sở

ó, chúng tôi bước ầu tìm hiểu m t số kh i niệm quan tr ng của lý thuyết

phức tạp

như kh i niệm b i to n,

phức tạp của b i to n

uối cùng là chúng tôi tìm hiểu về

c c lớp phức tạp của b i to n v mối quan hệ giữa c c lớp phức tạp ó

rong ó ặc

biệt quan tâm ến lớp phức tạp P- ầy ủ.
N i dung của b n luận văn bao gồm ba chương
hƣơng 1: Trình bày tóm tắt những kiến thức cơ b n v tr ng tâm về lý thuyết
thuật to n như m y uring ơn ịnh, m y uring không ơn ịnh, thuật to n,

phức


tạp thuật to n
hƣơng 2: Gồm có ba phần ch nh trình b y về kh i niệm b i to n, danh sách
các bài toán quan tr ng v kh i niệm

phức tạp của b i to n

hƣơng 3: Gồm có hai phần ch nh trình b y lớp c c b i to n P,

P v lớp bài

toán NP- ầy ủ.
ể ho n th nh b n luận văn n y, chúng tôi
thầy hướng dẫn – PG

nhận ược sự giúp ỡ tận tình của

guyễn Hữu gự v sự chỉ b o góp ý của c c thầy cô trong

B môn in h c, Khoa Toán – ơ – in h c v c c bạn ồng nghiệp
tôi cũng xin c m ơn c c thầy cô v c c bạn ồng nghiệp
trình l m luận văn

3

hân ây, chúng

giúp ỡ chúng tôi trong quá


ƢƠN


1.

ẾN T Ứ

UẨN BỊ

rước khi nói về thuật to n, chúng ta h y xem xét m t mô hình t nh to n thể
hiện kh tốt về c c thuật to n.
1.1. Máy Turing (Turing machine)
1.1.1. Máy Turing
Gồm có
1) ập trạng th i trong hữu hạn
2) ăng vô hạn hai ph a (về lý thuyết có thể kéo d i tuỳ ý c hai phía)
3)

ng tín hiệu v o, b ng t n hiệu tr n băng v m t ầu

4)

ng chuyển trạng th i

c-ghi

q

...

B


B

B

B

a1

a2

...

...

ai

...

...

an

B

B

B

...


t bước l m việc của m y gồm
- ầu

c-ghi

c t n hiệu tr n băng

- ăn cứ v o trạng th i trong v t n hiệu

c tr n băng, ầu

c-ghi sẽ ghi m t

t n hiệu tr n băng, dịch chuyển sang ph i hoặc sang tr i m t ô v chuyển sang m t
trạng th i trong n o ó
uy ước khi m y bắt ầu l m việc thì trạng th i l trạng th i ầu của m y, với
input hữu hạn tr n băng, ầu

c-ghi nằm ở ký tự b n tr i nhất của input

c kết qu

trung gian trong khi t nh to n có thể lưu tr n băng hoặc có thể tổ chức lưu v o trạng
th i trong (nhưng chú ý l số trạng th i trong của m t m y ph i hữu hạn)

4


1.1.2. Máy Turing tất định (DTM)
ó thể ịnh nghĩa m t c ch hình thức m t m y uring tất ịnh như sau l m t

b
M = <Q, , , F, q0, B, t1>
trong ó:
-  l b ng t n hiệu tr n băng (hữu hạn)
-  l b ng t n hiệu v o (hữu hạn),   
l tập trạng th i (trong) (hữu hạn)

-

- F l h m chuyển F

x   Q x  x {L,R}

- q0 trạng th i ban ầu (q0  Q)
- t1 trạng th i kết thúc (t1  Q)
ký tự trắng,

-

 , B  

Ý nghĩa
-  l c c t n hiệu v o ể ghi input
-  là c c t n hiệu

c v ghi tr n băng

H m chuyển F(q, a) = (q', a', ) có thể cho bằng b ng như sau
a


...

...
q

(q', a', D)

...

-

an ầu c c t n hiệu tr n băng l

, băng có thể kéo d i vô hạn ở c hai chiều

tr i v ph i
Xâu a1a2...qai...ak ược g i l m t hình trạng của m y, trong ó c c ak , qQ,
có nghĩa l

ầu

c-ghi ang

c ô thứ i, t n hiệu ang ược

ại mỗi bước, m y ở trạng th i q, ầu
hình trạng của m y có dạng a1a2...ai-1qai...ak

5


c-ghi

c l ai .

c t n hiệu ai tại ô tr n băng,

heo h m chuyển F(q, ai) = (q', c, D), máy


sẽ chuyển sang trạng th i q', ghi c l n băng (thay cho ai), ầu

c-ghi chuyển sang ph i

hay sang tr i m t ô tùy theo

chuyển từ hình trạng:

l R hoặc

Ta nói rằng m y

H = a1a2...ai-1qai...ak
sang hình trạng:
H' = a1a2...q'ai-1cai+1...ak nếu

=

hoặc

H' = a1a2...ai-1cq'ai+1...ak nếu


=R

ý hiệu H  H'.
y sẽ l m việc từng bước cho ến khi gặp hình trạng m h m chuyển F(s,a)
không x c ịnh hoặc gặp trạng th i kết thúc t1.
Xâu x (input) tr n b ng t n hiệu  (tức l x  *) g i l
m y

ược o n nhận bởi

nếu tồn tại d y hình trạng H0, H1, ..., Hm sao cho:
H0  H1  ... Hm.
H0 l hình trạng ban ầu, input x ược ghi tr n băng, ầu

c-ghi nhìn v o ký tự

ầu ti n của input, trạng th i của m y l q0, tức l
H0 = q0a1a2...ai-1ai...an với x = a1a2...ai-1ai...an.
Hm có trạng th i l t1.
ập
nếu

c c xâu (ngôn ngữ tr n ) thu c * g i l

= {x | x*, x ược o n nhận bởi m y

ược o n nhận bởi m y M

}


C c b i to n có thể có nhiều loại
- o n nhận m t t nh chất của input
- T nh to n m t gi trị
- ...
Chú ý: H m chuyển F có thể không x c ịnh khắp nơi

y sẽ dừng khi gặp

trạng th i t1 kết thúc (cho tr lời "yes") hoặc dừng ở trạng th i kh c t1 (cho tr lời "no")
hoặc gặp b (s, a) tại ó F(s, a) không x c ịnh (cũng cho tr lời "no")

uy nhi n có

thể l m cho h m chuyển F trở th nh x c ịnh khắp nơi nếu th m m t trạng th i kết

6


thúc phủ ịnh qp, v với m i b (s, a) tại ó F(s, a) không x c ịnh cho m y chuyển
sang trạng th i qp
F(s, a) = (qp, , ).
ếu không có gì kh c thì ngầm ịnh b ng t n hiệu v o l  = { ,1}, v chủ yếu
ta chỉ xét v dụ tr n c c b i to n o n nhận
ý hiệu q0 l trạng th i ầu, t1 l trạng th i kết thúc khẳng ịnh
dụ

y uring o n nhận ngôn ngữ {x | x có

d i chẵn}


0

1

B

q0

(q1, 0, R)

(q1, 0, R)

(t1, B, ' ')

q1

(q0, 0, R)

(q0, 0, R)

-

ới input 1 11 ta có d y hình trạng
(q0)010110  0(q1)10110  01(q0)0110  010(q1)110 
0101(q0)10  01011(q1)0  010110(q0)  010110(t1)
trạng th i cuối cùng l trạng th i kết thúc o n nhận t1.
1.1.3. Máy Turing không tất định (NTDM)
ịnh nghĩa như m y uring tất ịnh, trong ó h m chuyển F l h m a trị nghĩa
là F: Q x   2Q x  x {L,R}.

ại mỗi bước, có thể chuyển sang bước sau bằng m t trong c c kh năng tùy
theo h m chuyển F

ếu có m t nh nh o n nhận input x thì xem như m y o n nhận

input ó
Gi sử F(s, a) = {(si1, ai1, Di1), (si2, ai2, Di2), ..., (sim, aim, Dim)} là m t tập (có thể
rỗng)

ới hình trạng H với trạng th i s v t n hiệu a ược

c m y có thể chuyển ến

m t trong c c hình trạng:
H  Hi1, H  Hi2, ..., H  Him
trong ó Hik có trạng th i sik v t n hiệu ược ghi l aik.
ó thể biểu diễn c c bước l m việc của m y bằng h ng ợi hoặc bằng cây

7


dụ
0

1

B

q1


(q2,0,L)

(t1,' ',' ')

q2

(q0,1,R)

(q0,1,R)

q0

(q1,1,R)

ới w = 1
(q0)010

1(q0)10

1(q1)10

111(q0)

111(q1)B

(t1)

1.2.

(q2)100


1(q0)00

11(q0)0

11(q1)0

hái niệm thuật toán (algorithm)
Bài toán xử lý thông tin:
Input 

ông cụ

 Output

ới dữ liệu v o (input) công cụ sẽ t nh to n v cho kết qu theo y u cầu của b i
toán. Nói chung ta phân biệt m t số loại b i to n
-

hững b i to n o n nhận m t t nh chất (xét số nguy n n có ph i nguy n tố

hay không,...)
- hững b i to n t nh gi trị m t h m
-

hững b i to n tìm m t lời gi i (tìm ường i tr n ồ thị, tìm chu trình

Hamilton, ...).
ể gi i quyết b i to n cần thuật to n
1.2.1.


huật to n l công cụ xử lý thông tin.

hái niệm

t c ch không hình thức thì thuật to n l việc mô t m t c ch ch nh x c qu
trình thực hiện tr n c c ối tượng ể nhằm ạt ược m t kết qu n o ó theo m t y u
cầu cho trước

8


ần chú ý ặc trưng hữu hạn trong thuật to n
- ối tượng hữu hạn, thao t c hữu hạn
- Cho kết qu qua m t số hữu hạn bước.
Ta phân biệt hai loại thuật to n tất ịnh v không tất ịnh
ịnh tại mỗi thời iểm chỉ có không qu m t bước tiếp theo

ối với thuật to n tất

ối với thuật to n không

tất ịnh tại mỗi thời iểm có thể có m t số kh năng ể lựa ch n bước tiếp theo
hông thường ể mô t thuật to n (tức l chỉ dẫn ở mỗi bước cần thực hiện
những công việc gì) ta dùng m t văn b n hướng dẫn c c bước, m t sơ ồ khối, m t
ngôn ngữ lập trình n o ó, hoặc m t ngôn ngữ tựa Pascal,
1.2.2. Ví dụ về thuật toán
dụ

huật to n sắp d y số tăng bằng ổi chỗ trực tiếp


Input n v d y số n phần tử a1, a2, ..., an .
utput

y số a1, a2, ..., an ược sắp xếp tăng

ô t cụ thể c c bước
1. i = 1
2. k = i + 1
3

ếu ai > ak thì ho n vị ai với ak

4. k = k + 1
5

ếu k <= n thì trở lại 3

6. i = i + 1
7

ếu i < n thì trở lại 2

Ngôn ngữ gi Pascal:
For i = 1 to n - 1 do
For k = i + 1 to n do
if ai > ak then ho n vị gi trị ai với ak cho nhau.

9



ơ ồ khối:
hập n, d y số a1, ..., an
i=1
k = i+1

ai>ak

ho n vị ai với ak

S
k = k+1
kS
i = i+1

iS
S
ưa ra d y số a1, ..., an
1.2.3. Luận đề Church-Turing
t vấn ề ược ặt ra l

liệu có b i to n n o gi i ược bằng m t c ch n o ó

( ược biết cho ến nay) m không thực hiện ược tr n m y uring (hoặc tr n c c mô
hình thuật to n tương ương)?
uận ề hurch- uring ph t biểu như sau những b i to n có thể gi i ược tr n
m t mô hình t nh to n n o ó ược biết cho ến nay ều có thể t nh ược tr n m y
Turing.


10


1.3. ộ phức tạp của thuật toán


nh gi hiệu qu của m t thuật to n, ta có thể

nh gi

phức tạp của

thuật to n về mặt thời gian, tức l thời gian m y t nh l m việc v về không gian, tức l
dung lượng b nhớ của m y t nh cần thiết ể thực hiện thuật to n
khi nói ến

phức tạp của thuật to n ta luôn hiểu l

rong luận văn n y,

phức tạp về thời gian

1.3.1. ộ phức tạp về thời gian
Thời gian l m việc của m y t nh khi chạy m t thuật to n n o ó không chỉ phụ
thu c v o thuật to n, m còn phụ thu c v o m y t nh ược sử dụng
ti u chuẩn chung, ta sẽ o
thực hiện

ì thế, ể có m t


phức tạp của m t thuật to n bằng số c c phép t nh ph i

hi thực hiện cùng m t thuật to n, số c c phép t nh ph i thực hiện còn phụ

thu c v o cỡ của b i to n, tức l
sẽ l m t h m số phụ thu c

lớn của ầu v o

ì thế,

lớn của ầu v o

phức tạp của thuật to n

rong những ứng dụng thực tiễn,

chúng ta không cần biết ch nh x c h m n y, m chỉ cần biết “cỡ” của chúng, tức l cần
có m t ước lượng ủ tốt của chúng
Gi sử

l m t thuật to n

ý hiệu (X) l thời gian t nh to n với ầu v o X

phức tạp của thuật t nh trong trường hợp xấu nhất
T(n) = max {T(X), X có
ếu


d i bằng n}

l thuật to n không tất ịnh, thì (n) l

d i d i nhất trong c c nh nh

l m việc với ầu v o X.
Tr n thực tế còn xét ến

phức tạp trong trường hợp trung bình:

T(X), X có
Ttb(n) =
ể ước lượng
(bậc heta)

d i bằng n

số c c dữ liệu có thể với

d in

phức tạp của thuật to n, ta dùng kh i niệm bậc

-lớn v bậc

Gi sử f(n) và g(n) l hai h m x c ịnh tr n tập hợp c c số nguy n dương

a


nói f(n) có bậc O-lớn của g(n), v viết f(n) = O(g(n)) hoặc f = O(g), nếu tồn tại n0 và
hằng số dương C sao cho với m i n  n0 luôn có f(n)  C.g(n).

11


ếu tồn tại n0 v c c hằng số dương

1

và C2 sao cho với m i n  n0 luôn có

C1g(n)  f(n)  C2g(n), thì ta ký hiệu f(n) = (g(n)).
ý hiệu

nói rằng h m f(n) bị chặn tr n bởi g(n) (sai kh c m t hằng số dương),

còn ký hiệu  nói rằng h m f(n) tương ương với g(n) (sai kh c c c hằng số dương)
ếu thuật to n

có T(n) = O(g(n)) thì g(n) mới chỉ l chặn tr n của (n), còn

nếu T(n) =(g(n)) thì g(n) mới l tượng trưng ch nh x c cho
toán

uy nhi n việc t nh

dễ hơn việc t nh 

ếu T(n) =


phức tạp của thuật
(g(n)) (hoặc tốt hơn l

(g(n))) trong ó g(n) l m t a thức theo n thì ta nói rằng thuật to n l m việc với thời
gian a thức, g i tắt l thuật to n a thức

huật to n a thức thường ược xem l tốt

1.3.2. Ví dụ cách tính độ phức tạp
dụ 1: huật to n tìm kiếm nhị phân
Input d y số tăng a1, ..., an; số x
utput tr lời x có thu c d y hay không
ùng thuật to n ệ quy
1

(a, b) (tìm tr n oạn con [d, c])

ếu d = c v a(c) = x return "yes"

2. c = (a + b)/2
3

ếu a(c) = x return "yes"

4

ếu x < a(c) thì g i

ể tìm nghiệm, g i

nh gi

(a, c-1) else g i

(1, n)

phức tạp T(2*k) = T(k) + 2.

T(1) = 1
T(2) = T(1) + 2
...
T(2k) = T(2k-1) + 2
ấy 2k xấp xỉ n,
T(n) = T(2k) (c ng từng vế v khử)
= 2*k – 1 = 2*log2n - 1 = O(logn).

12

(c+1, b)


dụ 2 (t nh

phức tạp trung bình)

y uring o n nhận ngôn ngữ {X | X  {0,1}* có t nhất m t chữ số 1}
d i n l s = 2n

ố dữ liệu có thể với


ố c c X không có chữ số 1 (không ược o n nhận) l 1 (duy nhất "
thời gian (X) = n, tỷ lệ không o n nhận l

0(n)

"),

= n/s.

ới i  n thì số c c X ( ược o n nhận) có X(i) = '1', v X(k) = ' ' với k < i, l
2n-i, với thời gian (X) = i
ổng thời gian t nh với c c X n y l :
h = 1*2n-1 + 2*2n-2 + ... + n*2n-n
ỷ lệ o n nhận l

1(n)

= h/s = t

t = 1*2-1 + 2*2-2 + ... + (n-1)*2-(n-1) + n*2-n
ặt c = 1/2 (khi ó

0(n)

= n/s = n*cn)

t = c + 2*c2 + ... + (n-1)*cn-1 + n*cn
c*t = c2 + 2*c3 + ... + (n-1)*cn + n*cn+1
t - c*t = c + c2 + ... + cn + n*cn+1 = c*[(1- cn)/(1- c) - n*cn]
T1(n) = t = c*[(1- cn)/(1- c) - n*cn ]/(1-c) (vì c/(1-c) = 1)

ậy

tb(n)

= T1(n) + T0(n) = (1- cn)/(1- c) - n*cn + n*cn = 2 - 1/2n-1.

rong khi ó

phức tạp (n) = n

13


ƢƠN

2. BÀI TOÁN VÀ Ộ P Ứ T P Ủ BÀI TOÁN

2.1. Bài toán là gì?
rong giới hạn của chúng ta, sẽ chỉ xem xét các bài toán là m t vấn ề phù hợp
với t nh to n của m y t nh v m t tập hợp c c kết qu ch nh x c
m t b n n th ch

ấn ề về tìm kiếm

ng d nh cho bị c o không ph i là bài toán vì nó phụ thu c v o tư

ph p v do ó nó không th ch hợp cho việc xử lý của máy tính
việc dịch m t văn b n tiếng

ặt kh c, vấn ề về


ức sang m t ngôn ngữ kh c thì phù hợp với việc xử lý

của phép t nh, nhưng trong trường hợp n y không rõ c c kết qu có ch nh x c hay
không

ì vậy vấn ề dịch thuật cũng không ph i l m t bài toán.

t v dụ rõ r ng về

m t bài toán l việc t nh to n con ường ngắn nhất từ ỉnh s ến ỉnh t trong m t ồ thị
m trong ó mỗi cạnh ược gắn với m t chi ph dương (chúng ta có thể diễn gi i như
kho ng c ch hay thời gian di chuyển)
t bài toán ược x c ịnh bởi:


t mô t tập hợp ầu v o ược phép, mỗi m t ầu v o có thể ược thể hiện
như l m t chuỗi hữu hạn tr n m t b ng chữ c i hữu hạn (tập hợp ký hiệu của
máy tính)



t ph t biểu về c c t nh chất m câu tr lời (hoặc gi i ph p) cần ph i tho
mãn.
Thông thường bài toán ược mô t như trong v dụ sau
ầu v o: M t số nguy n dương n
âu hỏi n có nguy n tố không?
Trong mỗi trường hợp, khi chúng ta tìm kiếm m t trong nhiều câu tr lời chính

x c tiềm năng, chúng ta coi bài toán như l m t bài toán tìm kiếm. Nếu chúng ta tìm

kiếm m t gi i ph p tối ưu về mặt n o ó, chúng ta coi bài toán ó như l m t bài toán
tối ưu (v dụ như trường hợp tìm kiếm m t ường i ngắn nhất). Thông thường, tính
to n gi trị của m t gi i ph p tối ưu l

ủ (v dụ,

d i của m t con ường ngắn nhất)

hững biến thể n y ược g i l các bài toán đánh giá. Bài toán

14

nh gi luôn luôn có


gi i ph p duy nhất

rong trường hợp ặc biệt, khi câu tr lời có thể chỉ l

(không) v

1 (có) và chúng ta ph i quyết ịnh kh năng n o trong hai kh năng n y l ch nh x c,
thì lúc ó chúng ta nói về m t bài toán quyết định. Các bài toán quyết ịnh ph t sinh tự
nhiên trong nhiều tình huống

ừ m t cấu hình cho trước của m t b n cờ, liệu quân cờ

m u trắng có m t chiến lược gi nh chiến thắng không? ó ph i con số ưa ra l m t số
nguy n tố không? ó thể tho m n c c iều kiện


quy ịnh không?

Các bài toán bao gồm tất cả các vấn đề có thể xử lý được bởi máy tính và chúng
ta có thể phân biệt một cách rõ ràng giữa các giải pháp chính xác và không
chính xác. Trong số này có các bài toán tối ưu và các bài toán với các giải pháp
duy nhất như các bài toán đánh giá và các bài toán quyết định. Các định dạng
đầu vào khác nhau cho cùng một “bài toán” sẽ đưa đến các bài toán khác nhau,
nhưng thông thường những bài toán này về mặt thuật toán rất giống nhau.
2.2. Một số bài toán quan trọng
1) Các bài toán về ngƣời bán hàng
Bài toán người bán hàng (TSP): là bài toán tìm kiếm m t chu trình ngắn nhất
qua n th nh phố, mỗi th nh phố úng m t lần v quay trở lại iểm xuất ph t của nó
c th nh phố ược ký hiệu bằng các nhãn là 1, ..., n v c c kho ng c ch giữa c c
th nh phố l di,j (1 ≤ i, j ≤ n)

c kho ng c ch ược ch n từ tập

 {∞}, v gi trị ∞

có nghĩa l không có sự kết nối trực tiếp giữa hai th nh phố cụ thể
m t phép ho n vị π của {1, …, n}, do ó c c th nh phố

ỗi chu trình là

ến ược sắp xếp theo thứ tự

là π(1), π(2), …, π(n), π(1) Gi trị của m t chu trình π ược t nh bởi
dπ(1), π(2) + dπ(2), π(3) + … + dπ(n-1), π(n) + dπ(n), π(1)
và m t chu trình có gi trị cực tiểu cần ược t nh to n
toán n y


P (hoặc

ó nhiều biến thể ối với bài

POPT) l ký hiệu cho bài toán tối ưu nói chung. TSPEVAL và

TSPDEC ký hiệu cho c c bài toán ước lượng và bài toán quyết ịnh có li n quan
với bài toán quyết ịnh, ầu v o bao gồm m t giới hạn

15

ối

v ph i x c ịnh có hay


không m t chu trình có gi trị không vượt qu

Chúng ta cũng sẽ xem xét c c biến

thể bị giới hạn sau ây
 TSPSYM c c kho ng c ch l

ối xứng (di,j = dj,i)

 TSP∆ c c kho ng c ch tho m n bất ẳng thức tam gi c, có nghĩa l di,j≤di,k+dk,j
 TSPd-Euclid: các thành phố l c c iểm trong không gian Euclide d chiều Rd và
kho ng c ch tương ứng với kho ng c ch Euclide (chuẩn L2)
 TSPN c c kho ng c ch thu c {1, …, } ( l m t số tự nhi n x c ịnh)

 DHC (Chu trình Hamilton ịnh hướng) kho ng c ch thu c {1, ∞}, v c c ịnh
dạng ầu v o thông thường l m t ồ thị ịnh hướng chỉ chứa những cạnh có
gi trị bằng 1
 HC = DHCSYM biến thể ối xứng của

H , m

ịnh dạng ầu v o thông

thường l m t ồ thị vô hướng chỉ chứa những cạnh có gi trị bằng 1
2)

ác bài toán về xếp ba lô
m thế n o ể m t hành khách thu xếp h nh lý của mình trong giới hạn W

từ n ồ vật muốn mang theo với gi thiết rằng ồ vật thứ i (i = 1, n ) có tr ng lượng
wi

và có gi trị ui 

ược g i l bài toán xếp ba lô (KNAPSACK). Hành khách

không ược phép mang c c ồ vật có tổng tr ng lượng vượt qu W

o hạn chế n y,

mục ti u l tối a ho tổng gi trị của tất c c c ồ vật ược ch n Ở ây, cũng có các
biến thể m trong ó c c gi trị ui v /hoặc c c tr ng lượng wi ều bị chặn Trong
trường hợp tổng qu t, c c ồ vật có những gi trị kh c nhau tr n mỗi ơn vị tr ng
lượng

KNAPSACK* biểu thị trường hợp ặc biệt với ui = wi cho tất c c c ồ vật Mục
ti u chỉ l

ể ạt tới c ng gần c ng tốt giới hạn tr ng lượng m không bị vượt qu mức

quy ịnh Hơn nữa, nếu W = (w1 + w2 + … + wn)/2, và chúng ta xem xét bài toán quyết
ịnh là liệu chúng ta có thể ạt ược tr ng lượng tối a cho phép hay không, thì bài
toán sẽ tương ương với câu hỏi liệu tất c c c ồ vật có thể ược chia th nh hai nhóm

16


có tổng tr ng lượng giống nhau không. Trường hợp ặc biệt này ược g i l bài toán
phân hoạch (PARTITION).
3) Các bài toán về phân hoạch
Bài toán phân hoạch (PARTITION) cũng l m t trường hợp ặc biệt của bài
toán đóng thùng ( I P

I G), trong ó c c thùng có k ch thước b có sẵn, chúng ta

ph i óng thùng n ồ vật với c c k ch cỡ u1, u2, ..., un v o c ng t thùng c ng tốt
hưng chúng ta cũng có thể xem

I P

I G như l m t trường hợp rất ặc biệt

của bài toán lập lịch. Lớp của c c bài toán lập lịch l gần như không thể ạt ược về
mặt tổng qu t


rong mỗi trường hợp, c c nhiệm vụ ph i ược phân chia giữa con

người hoặc m y móc với những hạn chế ở c c mặt kh c nhau

hông ph i tất c m i

người ều th ch hợp cho m i nhiệm vụ, những người kh c nhau có thể cần những
kho ng thời gian kh c nhau ể ho n th nh cùng m t nhiệm vụ, những nhiệm vụ nhất
ịnh có thể cần ược ho n th nh theo m t trình tự cụ thể, có thể x c ịnh những thời
iểm bắt ầu sớm nhất hoặc những thời iểm ho n th nh chậm nhất (c c thời hạn
chót), v có thể sử dụng c c iều kiện tối ưu kh c nhau
4)

ác bài toán giám sát (hoặc phủ)
t bài toán gi m s t iển hình l bài toán triển l m nghệ thuật Y u cầu ưa ra

là giám s t tất c c c bức tường của m t phòng triển l m với c ng t m y quay c ng tốt
Chúng ta sẽ hạn chế trong các bài toán gi m s t tr n c c ồ thị vô hướng, trong trường
hợp

ó chúng thường

ược g i l

c c bài toán phủ. Trong bài toán phủ đỉnh

(VERTEXCOVER), mỗi ỉnh sẽ theo dõi tất c c c cạnh li n quan tới nó, v tất c c c
cạnh

ược theo dõi với c ng


(E GE

ER), c c vai trò

t

ỉnh c ng tốt

rong bài toán phủ cạnh

o ngược lại mỗi cạnh theo dõi hai ỉnh li n quan ến

nó, c c ỉnh sẽ ược gi m s t với c ng t cạnh c ng tốt
5) Các bài toán clique
c ỉnh của ồ thị có thể ược sử dụng ể biểu diễn con người, c c cạnh sẽ
biểu diễn mối quan hệ giữa m i người

t clique ược ịnh nghĩa l m t nhóm trong

17


ó mỗi người th ch những người kh c trong nhóm Trong bài toán phủ clique
ER), c c ỉnh của m t ồ thị ph i ược phân chia th nh c ng t tập hợp

(CLIQUE

c ng tốt, theo c ch như vậy mỗi tập hợp tạo th nh m t clique. Trong bài toán clique
(ký hiệu l


I

E), m t clique lớn nhất có thể sẽ ược t nh to n

t anti-clique

(“không ai th ch ai c ”, giữa hai ỉnh bất kỳ không có m t cạnh n o) ược g i l m t
tập hợp độc lập, và bài toán t nh to n m t tập hợp

c lập lớn nhất ược g i l

INDEPENTSET.
ác bài toán xây dựng nhóm

6)

Xây dựng nhóm có nghĩa l phân chia những người với kh năng kh c nhau v o
c c nhóm hợp t c, trong ó c c th nh vi n của mỗi nhóm ph i l m việc cùng nhau

ối

với bài toán k-DM ( ối s nh k chiều, nghĩa l xây dựng c c nhóm có k ch thước k),
chúng ta có sẵn k nhóm người (mỗi nhóm ại diện cho m t trong k kh năng), v danh
sách các nhóm k th nh vi n tiềm năng, trong ó mỗi người ến từ c c nhóm kh năng
ục

ch l

ể hình th nh n n c ng nhiều nhóm c ng tốt với hạn chế l mỗi người chỉ


có thể ược tham gia vào m t nhóm 2-

cũng ược biết ến như l bài toán hôn

nhân: hai “kh năng” ược hiểu như l hai giới t nh, m t nhóm có tiềm năng ược xem
như l m t cu c “hôn nhân bền vững”, v mục ti u l tối a ho số lượng c c cu c hôn
nhân bền vững.
7)

ác bài toán luồng tối ƣu trong các mạng

Trong bài toán luồng qua mạng (NETWORKFLOW), người ta tìm kiếm c c
luồng tối a trong các mạng. Chúng ta chỉ quan tâm ến bài toán cơ b n m trong ó
chúng ta tìm kiếm ể tối a ho luồng từ s ến t trong m t ồ thị có hướng

uồng f(e)

chạy theo m t cạnh e ph i l số nguy n không âm bị chặn tr n bởi kh năng c(e) của
cạnh ó

uồng tổng ạt ến m t ỉnh v  {s, t}, nghĩa l tổng số f(e) với e = ( , v) ph i

bằng luồng tổng rời khỏi v, tức l tổng số f(e) với e = {v, }. ỉnh nguồn s không có bất
kỳ cạnh n o i vào v

ỉnh

ch t không có bất kỳ cạnh n o i qua.


18


ác bài toán vô địch trong các giải đấu thể thao

8)

Bài toán vô địch ( H

PI

HIP) cơ b n l m t bài toán quyết ịnh

t cổ

ng viên tự hỏi tại m t thời iểm cụ thể trong mùa gi i liệu có thể ( t nhất l về mặt lý
thuyết)

i bóng y u th ch của mình sẽ vô ịch trong gi i ấu ược không

xếp hạng hiện tại của mỗi

ho biết

i chơi v có m t danh s ch c c trận ấu còn ược chơi

i ược ch n có thể trở th nh nh vô ịch nếu có kết qu tiềm năng của c c các trận
ấu còn lại sao cho ến cuối gi i không

i n o khác có nhiều iểm hơn (nếu cần thiết,


i chơi có thể cũng cần ph i có hiệu số b n thắng thua tốt nhất)

go i ra, m t trong

những quy tắc sau ây ph i chỉ rõ bao nhi u iểm ạt ược trong mỗi trận ấu


uy tắc a- iểm

au mỗi trận ấu, a iểm ược t nh (a 

a thành b iểm cho

i chơi 1 và a – b iểm d nh cho

i chơi 2 với 0 ≤ b ≤ a và

uy tắc ( , a, b)- iểm c c kh năng chỉ l b : 0 (

i nh chiến thắng), a : a

b


), v mỗi phân chia

l có thể

(hoà) và 0 : b.

rong thực tế, ở c c môn thể thao kh c nhau, c c quy tắc t nh iểm kh c nhau
ược sử dụng gồm quy tắc 1- iểm ược sử dụng trong môn thể thao không cho phép
có kết qu ho (bóng rổ, bóng chuyền, …)

uy tắc 2- iểm (tương ương với quy tắc

(0, 1, 2)- iểm) l quy tắc cổ iển trong thể thao chấp nhận tỷ số ho (bóng ném ồng
i, ...)

uy tắc 3- iểm ược sử dụng trong gi i khúc côn cầu tr n băng ở ức ( E ).

uy tắc ( , 1, 3)- iểm hiện tại ang ược sử dụng trong bóng
9) Các bài toán xác minh
ối với lớp của c c bài toán xác minh, chúng ta ề cập tới lĩnh vực phần cứng
Bài toán cơ b n l liệu ặc t S v nhận dạng R của m t ch p có mô t cùng m t h m
số oolean không

ức là, chúng ta có các mô t S v R của c c h m oolean f v g v

tự hỏi liệu f(a) = g(a) với tất c c c yếu tố ầu v o a không.

ì chúng ta thực hiện c c

thao tác bit xác minh, có thể gi sử rằng f, g { , 1}n → { , 1}
ương với tồn tại m t a mà (f  g)(a) = 1 ( = X R)

19

nh chất f ≠ g tương


ì vậy, chúng ta ặt ra câu hỏi


liệu h = f  g có thể tho

ược không, tức l liệu h có thể cho ra gi trị 1 không. Bài

toán quyết ịnh n y ược g i l bài toán thoả được.
 SATCIR: ầu v o ược biểu diễn như m t mạch logic.
 SAT = CNF-SAT = SATCNF: ầu v o ược biểu diễn như m t h i của c c mệnh
ề (l tuyển của c c literal), nghĩa l ở dạng chuẩn tắc h i.
 DNF-SAT = SATDNF: ầu v o ược biểu diễn như l m t tuyển của c c ơn
thức (l h i của c c literal), nghĩa l ở dạng chuẩn tắc tuyển
10) Các bài toán lý thuyết số
ật m h c hiện ại có kết nối chặt chẽ với c c bài toán lý thuyết số, trong ó
c c số rất lớn ược sử dụng

từng ược h c trong trường, hầu hết chúng ta h c thuật

to n về c ng c c phân số òi hỏi chúng ta ph i t nh to n mẫu số chung v

ể l m ược

iều ó, chúng ta sẽ phân chia các mẫu số th nh các thừa số nguy n tố. ây l bài toán
tạo thừa số nguyên tố (FACT).
2.3. ộ phức tạp của bài toán
ối với m t b i to n có rất nhiều thuật to n ể gi i Ta ký hiệu:
TA(n) = max {T(X), X ầu v o có
l


d i n}

phức tạp của thuật to n
phức tạp của b i to n

ược ịnh nghĩa như sau

TB(n) = inf {TA(n),
Rất khó t nh ược
TB(n)
nghĩa l

B(n),

l thuật to n gi i b i to n }
m thường chỉ biết ược cận dưới v cận tr n của

ếu ta xây dựng ược m t thuật to n

gi i b i to n

phức tạp của bài toán B nhỏ hơn hoặc bằng

(m t cận tr n)
bất kỳ thuật to n

ể chứng tỏ

B(n)


thì

B(n)

 TA(n), có

phức tạp của thuật to n

 f(n) (m t cận dưới) thì ta ph i chứng minh rằng

n o gi i b i to n

cũng ều có

f(n).

20

phức tạp lớn hơn hoặc bằng


ƢƠN

3. P ÂN LỚP Á BÀ TOÁN T EO Ộ P Ứ T P

3.1. Lớp các bài toán P, NP và mối quan hệ giữa lớp P và lớp NP
3.1.1. Lớp P
ịnh nghĩa:
ớp P l lớp những b i to n gi i ược bằng m y t nh uring tất ịnh trong thời
gian a thức.

dụ

i to n tìm ước chung lớn nhất của hai số nguy n dương, b i to n kiểm

nghiệm t nh nguy n tố
3.1.2. Lớp NP
ịnh nghĩa:
ớp

P l lớp c c b i to n có thể gi i ược bằng m y uring không tất ịnh

trong thời gian a thức.
dụ

i to n người b n h ng, bài toán chu trình Hamilton, ...

3.1.3. Mối quan hệ giữa lớp P và lớp NP
-

ến nay vẫn chỉ có thể khẳng ịnh l P 

P m chưa kết luận ược P  NP

hay không.
NP
P

Hình 1.

ối quan hệ giữa lớp P v


3.2. Lớp các bài toán NP-đầy đủ (NPC)
3.2.1. Phép dẫn với thời gian đa thức
ịnh nghĩa:
Cho 1 và 2 l hai b i to n quyết ịnh
i(y) l lớp c c ầu v o ứng với Yes (với i  {1, 2})
i(n) l lớp c c ầu v o ứng với o

21

P.


t c ch biến ổi f biến mỗi ầu v o của 1 thành ầu v o của 2 ược g i l
phép dẫn thời gian a thức (ký hiệu l ) nếu nó tho m n
- iến ổi f thực hiện ược trong thời gian a thức bởi m y t nh uring tất ịnh
-

ỗi dữ kiện thu c 1(y) th nh dữ kiện thu c 2(y)

-

ỗi dữ kiện thu c 1(n) th nh dữ kiện thu c 2(n)

3.2.2. Lớp các bài toán NPC (NP-Complete, NP-đầy đủ)
ịnh nghĩa:
t b i to n thu c lớp

P m m i b i to n thu c lớp P kh c ều dẫn ược về


nó với thời gian a thức ược g i l b i to n P .
t b i to n  l

P nếu nó tho m n

-   NP
- ới  ’  NP thì ’ dẫn ược về  với thời gian a thức.
Như vậy ể chứng minh m t b i to n l

P ta cần chứng minh hai iều

- Bài toán ó ph i thu c lớp P
-

i b i to n thu c lớp P ều dẫn ược về b i to n ó với thời gian a thức.

3.2.3. Mối quan hệ giữa các lớp bài toán P, NP và NPC
o b i to n P =

P chưa ược gi i quyết, nếu có thể quy m t b i to n

ủ Π2 về b i to n Π1 thì chưa có thuật to n thời gian a thức n o cho Π1

P- ầy

ởi vì nếu có

thuật to n thời gian a thức cho Π1 thì cũng có thuật to n thời gian a thức cho Π2.
ương tự như vậy, do m i b i to n trong P ều có thể quy về c c b i to n P- ầy ủ,
nếu có thể gi i ược m t b i to n P- ầy ủ trong thời gian a thức thì P = P.


NP

NPC
P

Hình 2.

ối quan hệ giữa lớp P, P v

22

P .


3.2.4. Một số bài toán lớp NP
Cho U = {u1, u2, ..., un} là m t tập c c biến oolean.
t phép gán (truth assignment) cho

l m th mt

 { ,F}

ếu t(u) =

chúng ta nói rằng u l true theo t; nếu t(u) = F chúng ta nói rằng u l false theo t

ếu u

l m t biến trong , thì u v u là các literal trên U.

t mệnh ề tr n

l m t tập c c literal tr n , v dụ {u1,, u 3 ,u8). M t mệnh ề

biểu diễn dạng tuyển của c c literal ó, và “thỏa ược” bởi m t phép gán nếu v chỉ
nếu có t nhất m t literal là True theo phép gán ó
dụ

ệnh ề ở tr n sẽ thỏa ược theo t, ngoại trừ trường hợp t(u1)=F,

t(u3)=T, t(u8)=F.
ập c c mệnh ề
n o ó cho

tr n

l “thỏa ược” nếu v chỉ nếu tồn tại m t phép gán

m “thỏa ược” với tất c mệnh ề trong

t phép gán như vậy ược

g i l m t phép gán thỏa ược cho
1) Bài toán SAT. ịnh lý ook
Bài toán SAT ược mô t như sau
- ầu v o: Cho m t tập c c mệnh ề
- âu hỏi
dụ

tr n tập c c biến .


ó tồn tại m t phép gán thỏa ược cho

không?

= {u1, u2} và
C = {c1, c2} với c1 = {u1, u 2 }; c2 = { u 1 , u2}

âu tr lời l “yes”

t phép gán thỏa ược ó l t(u1) = t(u2) = T.

rong trường hợp, ta thay

bởi



= {{u1, u2}, {u1, u 2 }, { u 1 }} thì kết qu sẽ l

“no”, do ó C’ l không thỏa ược
ịnh lý ook. SAT là NP- ầy ủ.
hứng minh
i)

thu c P

23



ễ d ng thấy ược l

thu c

P

t thuật to n không tất ịnh ể gi i b i

toán SAT chỉ cần phỏng o n m t phép gán t v kiểm tra xem phép g n t có tho m n
tập mệnh ề

không

iều n y dễ d ng thực hiện trong thời gian a thức

ii) ồn tại m t biến ổi a thức fL từ mỗi b i to n  trong P về SAT
ược biểu diễn bởi m t ngôn ngữ

SAT =

[

,e] với m t lược ồ m ho

hợp lý e n o ó Chúng ta ph i chứng tỏ rằng với m i ngôn ngữ
Ký hiệu

l m t chương trình

 NP, L  LSAT.


TM thời gian a thức tuỳ ý, x c ịnh bởi ,

*, b, Q, q0, qY, qN v p, o n nhận ngôn ngữ L = LM. Ngoài ra, cho p(n) l m t a thức
tr n tập c c số nguy n, nó giới hạn hàm phức tạp thời gian

M(n).

( hông mất t nh

tổng qu t, ta có thể gi sử p(n)  n với m i n  Z+) Phép biến ổi tổng qu t fL sẽ nhận
ược dưới dạng

, , *, b, Q, q0, qY, qN,  và p.

fL có t nh chất là ối với m i x  *, x 
tho

ược

nếu v chỉ nếu fL(x) có m t phép gán

iểm mấu chốt khi xây dựng fL l cho thấy c ch m tập c c mệnh ề ược

sử dụng ể kiểm tra xem m t ầu v o x có ược chấp nhận bởi chương trình

l

không, tức l x  L không.
ếu ầu v o x   * ược chấp nhận bởi

toán chấp nhận ược cho

, thì chúng ta biết rằng có m t tính

tr n x sao cho c số bước trong giai oạn kiểm tra v số ký

hiệu trong xâu phỏng o n giới hạn bởi p(n) với n = |x|.
li n quan ến c c ô ược

nh số từ -p(n) tới p(n)+1, vì ầu

t t nh to n như vậy sẽ chỉ
c-ghi bắt ầu từ ô 1 di

chuyển tối a l m t ô tại mỗi bước chuyển Trạng thái của việc t nh to n kiểm tra tại
m t thời iểm có thể ược x c ịnh hoàn toàn, bằng c ch ưa ra n i dung của c c ô
này, trạng th i hiện tại, v vị tr của ầu

c-ghi Hơn nữa, vì có không nhiều hơn p(n)

bước trong việc t nh to n kiểm tra, có nhiều nhất l p(n) +1 thời iểm ri ng biệt ph i
xem xét

iều n y cho phép chúng ta mô t m t tính toán như vậy m t c ch ầy ủ, chỉ

sử dụng m t số giới hạn c c biến oolean và m t phép gán cho chúng.

24



×