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

TIỂU LUẬN MÔN HỌC-PHÂN TÍCH THIẾT KẾ THUẬT TOÁN-LỚP BÀI TOÁN NPC

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 (3.95 MB, 29 trang )


TIU LUN MÔN HỌC

PHÂN TÍCH THIẾT KẾ THUT TOÁN.

Đề tài: LỚP BÀI TOÁN NPC
(Nondeterministic Polynomial Completeness)

Giảng viên hướng dẫn : TS. Hoàng Quang
Thành viên thực hiện : Nhóm 7

1. Trần Lê Ngọc ()
2. Huỳnh Quốc Lực ()
3. Trần Thị Hạnh ()
4. Võ Thị Tình ()
5. Nguyễn Thị Bích Liên ()
NỘI DUNG
• Phân loại bài toán
• Lớp bài toán P
• Lớp bài toán NP
• Lớp bài toán NPC
• Một số bài toán thuộc lớp NPC

2
Phân loại bài toán
Bài toán
Giải được
Không giải
được
Lớp không đa
thức


Lớp đa thức
2 lớp
2 lớp
?
3
NPC
Lớp NP
Lớp bài toán có độ phức tạp đa
thức (Polynomial time – P)
Lớp P
Là tập hợp tất cả những bài toán có thể
giải được bằng thuật toán đơn định trong
thời gian đa thức (tức là tồn tại thuật toán
giải quyết nó với thời gian chạy đa thức).
Độ phức tạp tính toán của những bài toán
này là O(n
k
), k hằng số.
Những bài toán có độ phức tạp dạng O(k),
O(log(n)), O(n), O(nlog(n)), n
k

đều là những bài toán thuộc lớp P.
4
Lớp bài toán có độ phức tạp không đa thức
• Tập các bài toán có độ phức tạp lũy thừa O(a
n
)
hoặc giai thừa O(n!) là không thuộc lớp đa thức
• Các bài toán không thuộc lớp đa thức chỉ giải được

với một độ lớn dữ liệu đầu vào nhất định.
5
Ví dụ: Cho một tập hợp có n phần tử, hãy liệt kê tất cả các
tập con khác trống của tập hợp này.
Số tập con của một tập
hợp có n phần tử là 2
n
-
1. Lời giải tuy đã có
nhưng khi thể hiện lời
giải này bằng bất kỳ
thuật toán nào thì phải
tốn ít nhất 2
n
-1 bước.
N
Số lần thực
hiện
Ghi chú
16 Khoảng vài
chục ngàn
Máy tính có thể giải
32 Khoảng 4 tỷ Cần những máy
tính tốc độ cao và
tốn rất nhiều thời
gian
33 Khoảng 8 tỷ
Lớp bài toán NP (Nondeterministic
Polynomial time)
• Chúng ta đều biết rằng tính xác định là một trong

ba đặc tính quan trọng của thuật toán.
• Mỗi bước của thuật toán phải được xác định duy
nhất và có thể thực thi được.
• Nếu có sự phân chia trường hợp tại một bước thì
thông tin tại bước đó phải đầy đủ để thuật toán có
thể tự quyết định chọn lựa trường hợp nào.
• Vậy thì điều gì sẽ xảy ra nếu ta đưa ra một "thuật
toán" có tính không đơn định?  Tại một bước của
"thuật toán", ta đưa ra một số trường hợp chọn lựa
nhưng không cung cấp đầy đủ thông tin để "thuật
toán" tự quyết định?

6
Lớp bài toán NP …
7
Ví dụ: Ta có một lời chỉ dẫn khi đi du lịch : "Khi đi hết khu vườn này, bạn
hãy chọn một con đường mà bạn cảm thấy thích. Tất cả đều dẫn đến bảo
tàng lịch sử".
Khu
vườn
Viện bảo tàng
1
2 3
Khách du lịch
Máy tính
Tại sao lại đề cập đến những thuật toán
không đơn định dù máy tính không thể thực
hiện một thuật toán như vậy?

Go(“Khu vườn”);

??? Choose(1,2,3);
Go(“Viện bảo tàng);
Khi nghiên cứu về thuật toán không đơn định,
dù không dùng để giải bài toán nào đi nữa,
chúng ta sẽ có những hiểu biết về hạn chế
của những thuật toán đơn định thông thường.
2
Ví dụ 2: Bài toán người bán hàng (TSP)
- Có một người giao hàng cần đi giao hàng tại n thành phố.
- Xuất phát từ một thành phố nào đó, đi qua các thành phố khác để
giao hàng và trở về thành phố ban đầu.
- Mỗi thành phố chỉ đến một lần
- Khoảng cách từ một thành phố đến các thành phố khác là xác định.
Hãy tìm một chu trình sao cho tổng độ dài các cạnh nhỏ hơn M?
Lớp bài toán NP …
- Liệt kê từng con đường có thể đi
- So sánh chiều dài mỗi con đường
tìm được với M
+ Tìm được một con đường phù hợp
+ Xét hết tất cả các con đường
- Chọn một con đường có thể và
tính chiều dài của nó.
- So sánh chiều dài này với M
+ Nếu <=M thì báo là thành công
+ Ngược lại báo chọn lựa sai
- Dùng thuật toán đơn định  độ phức tạp không thuộc lớp đa thức
- Dùng thuật toán không đơn định  độ phức tạp đa thức
8
Lớp bài toán NP …
9

Những bài toán khi được giải bằng thuật toán
không đơn định mà có độ phức tạp đa thức.
Lớp
NP
• Lớp bài toán NP chưa thể phân loại là thuộc lớp đa thức
hay không?





• Lớp NP chứa những bài toán thuộc lớp P, bởi vì nếu
một bài toán được giải bằng thuật toán đơn định có độ
phức tạp đa thức thì chắc chắn khi dùng thuật toán
không đơn định thì cũng sẽ có độ phức tạp đa thức.
Giải được
Không giải được
Độ phức tạp
đa thức
Độ phức tạp không phải
đa thức
Bài toán NP chưa được phân loại
P
NP
Lớp NP đầy đủ (NP Completeness-NPC)
10
Có những bài toán đã biết là thuộc lớp NP
nhưng không rõ có thuộc về lớp P hay
không. (Tức là chúng ta có thể giải chúng
dễ dàng trên một máy không đơn định

(thuật toán không đơn định), nhưng chưa
tìm ra được một lời giải hữu hiệu chạy trên
máy thông thường (thuật toán đơn định) để
giải chúng).
Những bài toán NP này lại thêm một tính
chất nữa là: “Nếu bất kỳ một trong những
bài toán này có thể giải được trong thời
gian đa thức thì tất cả những bài toán thuộc
lớp NP cũng sẽ được giải trong thời gian đa
thức trên một máy đơn định”.
Những
bài toán
như vậy
được
gọi là
lớp bài
toán NP
đầy đủ
(NPC).
Lớp NPC …
11
Định nghĩa: Chúng ta nói L là bài toán thuộc lớp NPC nếu các
khẳng định dưới đây đều đúng:
1. L Є NP
2. Với mọi L’ Є NP thì L’ ≤ pL (Với mọi ngôn ngữ L’ thuộc
NP, có một phép thu thời gian đa thức từ L’ về L).
(Nếu L chỉ thoã điều kiện 2 thì L thuộc lớp NP-Khó)
Định lý:
Nếu có một bài toán NPC nào giải được trong thời gian đa
thức thì P = NP.

Nếu có một bài toán trong NP nào mà không giải được trong
thời gian đa thức thì tất cả các bài toán NPC đều không giải
được trong thời gian đa thức.
P
NPC
NP
• Lớp NPC là lớp con của những bài toán khó nhất
trong lớp NP.
• Công cụ chính để chứng minh một bài toán thuộc
lớp NPC là ý tưởng về tính thu giảm đa thức
• Bất cứ giải thuật nào giải được bài toán NP có thể
được dùng để giải bài toán NPC nào đó đã biết
bằng cách:
Biến một thể hiện bất kỳ của bài toán NPC đã
biết thành một thể hiện của bài toán mới
Giải BT này bằng giải thuật đã có để tìm ra một
lời giải
Biến lời giải này về thành một lời giải của bài
toán NPC đã biết.

12
Tính thu giảm đa thức (polinomial reducibility)
13
Tính thu giảm đa thức …
Định nghĩa: (Thu giảm về)
Ta nói rằng bài toán L
1
thu giảm về bài toán L
2
(kí

hiệu L
1


L
2
) nếu bất kỳ giải thuật nào giải được L
2
thì
cũng có thể được dùng để giải L
1
.
Bổ đề:
Để chứng minh một bài toán mới L là NPC chúng ta
cần chứng minh:
1. L thuộc lớp NP
2. Một bài toán L’ Є NPC đã biết thì L’ thu giảm
được về L
• Giả sử ta biết HCP là NPC và muốn xác định xem TSP có là NPC
hay không?
• Bất kỳ giải thuật nào có thể dùng để giải TSP cũng có thể dùng để
giải HCP thông qua sự thu giảm sau: Cho G=(V,E) là một thể hiện
của HCP, tạo ra một thể hiện của TSP tương ứng G’=(V,E’), trong
đó:
– Các thành phố trong TSP tương ứng tập đỉnh trong HCP
– Khoảng cách giữa hai thành phố ta gán giá trị:
0 nếu (i,j)  E
1 nếu (i,j)  E





Tính thu giảm đa thức …
14
1. Bài toán người bán hàng (TSP): Cho một tập các thành phố và
khoảng cách giữa các cặp thành phố. Hãy tìm một lộ trình đi qua tất
cả các thành phố sao cho tổng khoảng cách của lộ trình nhỏ hơn M
2. Bài toán chu trình Hamilton (HCP): Cho một đồ thị, hãy tìm một
chu trình đơn đi qua tất cả các đỉnh.
c(i,j) =
Tính thu giảm đa thức

15
1. Bài toán TSP: Cho một
tập các thành phố và khoảng
cách giữa các cặp thành
phố. Hãy tìm một lộ trình đi
qua tất cả các thành phố sao
cho tổng khoảng cách của lộ
trình nhỏ hơn M
2. Bài toán HCP: Cho một
đồ thị, hãy tìm một chu trình
đơn đi qua tất cả các đỉnh.
• Để chứng tỏ HCP ≤ p TSP: Ta chỉ ra G có một chu
trình hamilton khi và chỉ khi G’ có một tua có mức hao
phí tối đa là 0.
– Thật vậy: Giả sử G có chu trình hamilton h  h là một tua
trong G’ với mức hao phí 0.
– Ngược lại: Giả sử G’ có tua h’ với mức hao phí tối đa là 0
(Vì E’={c(i,j)=(0,1)})  h’ chỉ chứa các cạnh trong E  h’ là

một chu trình hamilton trong G.
• Nghĩa là HCP thu giảm về TSP  Tính chất NPC của
HCP bao hàm tính chất NPC của TSP. Hay TSP là bài
toán NPC

1
2
5
4
3
1
2
5
4
3
0
0
0
0
0
0
G=(V,E) của HCP
G’=(V,E’) của STP
1
1
1
1
Định lý Cook
Bài toán thoả mạch logic (circuit satisfiability problem-
CSP):

• Phần tử bool (Boolean combinational element) là các
phần tử có đầu vào và ra thuộc {0,1} (0: sai, 1: đúng)
• Một phần tử bool dùng để tính 1 hàm boolean đơn,
được gọi là một cổng logic (logic gate). Có 3 cổng logic
cơ bản: cổng NOT, cổng AND và cổng OR (Cổng vào x
và y, cổng ra z)








• Mạch bool (Boolean combinational circuit) xây dựng từ
các phần tử bool, được nối với nhau bằng các dây
(wire).


16
x
z
x  x
0 1
1 0
x y X Λ y
0 0 0
0 1 0
1 0 0
1 1 1

x y X v y
0 0 0
0 1 1
1 0 1
1 1 1
x
y
z
x
y
z
Bài toán CSP …
• Đầu vào (Circuit input): các dây không nối với một
phần tử vào nào
• Đầu ra (Circuit output): các dây không nối với một
phần tử ra nào
• Ta xét các mạch (circuit) chỉ có một đầu ra:
1. Một phép gán giá trị của một mạch là một tập các giá trị
đầu vào.
2. Một mạch là thỏa mãn (satisfiable) nếu có một phép gán
giá trị đầu vào sao cho đầu ra của mạch là 1.
• Bài toán CSP là xác định xem có tồn tại một phép
gán các trị logic vào các biến logic sao cho toàn
công thức trở thành đúng (đầu ra là 1).
17
Định lý Cook …
Bài toán CSP …
Ví dụ:










• CSP là một bài toán NPC
18
Định lý Cook …
• Mạch với đầu vào (x
1
,x
2,
x
3
) = (1,1,0)
• Đầu ra =1
 Mạch là thõa được
• Mạch không xác định đầu vào
• Đầu ra không xác định
 Mạch là không thõa được
Định lý Cook
19
• Vì kỹ thuật rút gọn dựa trên một bài toán có sẵn
biết NPC để chứng minh một bài toán NPC khác,
chúng ta cần một bài toán NPC đầu tiên. Đó là bài
toán thỏa được mạch (circuit-satisfiability problem)
• S.A Cook (1971) đã đề xuất chứng minh trực tiếp
đầu tiên rằng bài toán thoã mạch logic-CSP là bài

toán NPC.





Định lý Cook: “Nếu tồn tại một giải thuật thời gian đa
thức để giải bài toán thoả mãn mạch logic thì tất cả mọi
bài toán trong lớp NP có thể giải được trong thời gian đa
thức”
Một số bài toán NPC
• Hàng nghìn bài toán khác nhau được biết là
NPC.
20
CIRCUIT-SAT
SAT
3-CNF-SAT
CLIQUE
VERTEX-COVER
HAM-CYCLE
TSP
SUBSET-SUM
Bài toán thỏa được công thức - SAT
• Một trạng thái của bài toán SAT là một công
thức boolean Φ gồm:
1. Các biến boolean: x1, x2, …
2. Các liên kết boolean: các hàm boolean một hoặc hai
biến: AND, OR, NOT, , 
3. Các dấu ngoặc tròn để nhóm các toán tử và toán
hạng nếu cần làm thay đổi thứ bậc (độ ưu tiên) của

các toán tử: ¬ (cao nhất), rồi Λ và cuối cùng là V.
• Một công thức Φ là thỏa mãn được nếu có một
phép gán giá trị để giá trị ra của Φ là 1.
SAT = {<Φ>: Φ là một công thức thỏa mãn được}
• SAT là NPC
• Để chứng minh vấn đề này chúng ta chứng tỏ:
– SAT  NP
– CIRCUIT-SAT  p SAT
21
Bài toán SAT…
 = x
10
 (x
4
  x
3
)
 (x
5
 (x
1
 x
2
))

 (x
6
  x
4
)

 (x
7
 (x
1
 x
2
 x
4
))
 (x
8
 (x
5
 x
6
))
 (x
9
 (x
6
 x
7
))
 (x
10
 (x
7
 x
8
 x

9
))

CIRCUIT-SAT SAT
Nếu có một chỉ định thỏa được CIRCUIT-SAT, mỗi dây của mạch có
một giá trị đã eđịnh nghĩa hợp lý và dữ liệu ra của mạch là 1. Do đó,
phép gán của các giá trị dây dẫn cho các biến trong  làm cho mỗi
mệnh đề của  có giá trị 1.
Ngược lại, nếu có một phép gán làm cho  có giá trị 1, thì mạch C
cũng thỏa được.
Vậy, CIRCUIT-SAT  p SAT
22
Bài toán 3-CNF SAT (conjunctive
normal form)
• 1 literal trong một công thức boolean là một biến x
hoặc ¬x.
• 1 công thức boolean là có dạng hợp chuẩn nếu nó
được biểu diễn như là một phép AND của các
mệnh đề, mỗi mệnh đề là một phép OR của các
literal.
• 1 công thức boolean là một dạng 3-CNF nếu mỗi
mệnh đề của nó có đúng 3 literal khác nhau.
• 3-CNF SAT={Ф Є 3-CNF, Ф là công thức thoả mãn
được}
• Ví dụ: (x
1
  x
1
  x
2

)  (x
3
 x
2
 x
4
)  ( x
1
 
x
3
  x
4
)
• 3-CNF SAT là NPC
• Để chứng minh vấn đề này chúng ta chứng tỏ:
– 3-CNF SAT  NP
– SAT  p 3-CNF SAT


23
Bài toán clique
• Một Clique trong một đồ thị vô hướng G = (V, E)
là một tập con V’ ⊆ V, mỗi cặp đỉnh trong V’ đều
có cạnh E. Hay nói cách khác, clique là một đồ thị
con đầy đủ của G. Kích thước của clique là số
đỉnh nó chứa (=|V’|).




• Bài toán clique: Tìm một clique có kích thước lớn nhất trong một đồ thị
cho trước.
• Giả sử tồn tại số k là kích thước của một clique trong đồ thị G ta định
nghĩa:
CLIQUE = {(G, k): G là một đồ thị với một clique có kích thước k}
• CLIQUE là NPC
G=(V,E)
G’=(V’,E’)
u
z
v
w
y
x
u v
y
x
24
Bài toán vertex-cover
• Một vertex cover trong một đồ thị vô hướng G
= (V, E), V’ ⊆ V, nếu cạnh (u, v) ∈ E thì u ∈ V’
hoặc v ∈ V’ (hoặc cả 2). Kích thước của vertex
cover là số đỉnh nó chứa (=|V’|).




• Bài toán vertex-cover: tìm một vertex cover
có kích thước nhỏ nhất trong một đồ thị cho
trước.

• Giả sử tồn tại số k là kích thước của một
vertex cover trong đồ thị G ta định nghĩa:
VERTEX-COVER = {(G, k): G là một đồ thị với một
vertex cover có kích thước k}.
• VERTEX-COVER là NPC
25
G=(V,E)
u
z
v
w
y
x
u
z
v
w
y
x
G’

×