Bài giảng Giải thuật - Chương 12: NP đầy đủ

ª Mã hoá (encodings)

ª Để một chương trình máy tính giải một bài toán trừu tượng thì các thực thể của bài toán cần được biểu diễn sao cho chương trình máy tính có thể đọc và “hiểu” chúng được.

ª Ta mã hóa (encode) các thực thể của một bài toán trừu tượng để một chương trình máy tính có thể đọc chúng được.

– Ví dụ: Mã hoá tập N = {0, 1, 2, 3, 4,.} thành tập các chuỗi {0, 1, 10, 11, 100,.}. Trong mã hoá này, e(17) = 10001.

– Mã hóa một đối tượng đa hợp (chuỗi, tập, đồ thị,.) bằng cách kết hợp các mã hóa của các thành phần của nó.

 

ppt48 trang | Chia sẻ: tranluankk2 | Ngày: 21/03/2022 | Lượt xem: 363 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Giải thuật - Chương 12: NP đầy đủ, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
ùc cạnh của E và tạo nên một chu trình hay không. 
Thời gian chạy: O ( n 2 ). 
13.11.2004 
23 
Ch. 12: NP-Completeness 
Giải thuật chứng thực 
Ta định nghĩa một giải thuật chứng thực (verification algorithm) là một giải thuật A có hai đối số (two-argument algorithm), trong đó một đối số là một chuỗi input thông thường x và đối số kia là một chuỗi nhị phân y , y được gọi là một chứng thư (certificate) . 
 Ngôn ngữ được chứng thực bởi một giải thuật chứng thực A là 
L = { x  { 0, 1 } * : tồn tại y  { 0, 1 } * sao cho A ( x , y ) = 1 }. 
Ví dụ: Trong bài toán chu trình hamilton, chứng thư là danh sách của các đỉnh trong chu trình hamilton. 
13.11.2004 
24 
Ch. 12: NP-Completeness 
Lớp NP 
 Lớp NP (NP: “ n ondeterministic p olynomial time”) là lớp các ngôn ngữ có thể được chứng thực bởi một giải thuật thời gian đa thức. Chính xác hơn: 
Cho một ngôn ngữ L . 
Ngôn ngữ L thuộc về NP 
 
Tồn tại một giải thuật thời gian đa thức hai đối số A cùng với một hằng số c sao cho 
L = { x  { 0, 1 } * : tồn tại một chứng thư y với độ dài  y  = O ( x  c ) sao 	 cho A ( x , y ) = 1 }. 
Ta nói rằng giải thuật A chứng thực ngôn ngữ L trong thời gian đa thức . 
13.11.2004 
25 
Ch. 12: NP-Completeness 
Lớp NP 
Ví dụ: HAM-CYCLE  NP. 
13.11.2004 
26 
Ch. 12: NP-Completeness 
Tính có thể rút gọn được (reducibility) 
Làm thế nào để so sánh “ độ kho ù” của các bài toán? 
Ví dụ 
Bài toán Q : Giải phương trình bậc nhất ax + b = 0 
Bài toán Q’ : Giải phương trình bậc hai px 2 + qx + r = 0 
Giải phương trình bậc nhất ax + b = 0 bằng cách giải phương trình bậc hai: 0 x 2 + ax + b = 0. 
Ta nói: 
Bài toán Q “ có thể rút gọn được ” về bài toán Q’ bằng cách biểu diễn phương trình bậc nhất dưới dạng: 0 x 2 + qx + r = 0 . 
Q là “ không khó hơn ” Q’. 
Điều kiện: thời gian để rút gọn bài toán “không được lâu hơn” thời gian để giải chính bài toán đó. 
13.11.2004 
27 
Ch. 12: NP-Completeness 
Tính có thể rút gọn được (tiếp) 
Một ngôn ngữ L 1 là có thể rút gọn được trong thời gian đa thức ve à một ngôn ngữ L 2 , ký hiệu L 1  P L 2 , nếu tồn tại một hàm có thể tính được trong thời gian đa thức f : { 0, 1 } *  { 0, 1 } * sao cho với mọi x  { 0, 1 } * , 
x  L 1  f ( x )  L 2 . 
Ta gọi hàm f là hàm rút gọn (reduction function). 
13.11.2004 
28 
Ch. 12: NP-Completeness 
Tính có thể rút gọn được (tiếp) 
Nhận xét:  x  {0,1} * , trả lời “ x  L 1 ?” bằng cách trả lời “ f ( x)  L 2 ?” 
khi f ( x)  L 2 thì x  L 1 
khi f ( x)  L 2 thì x  L 1 
{0,1} * 
{0,1} * 
L 1 
L 2 
f 
x 
f ( x ) 
13.11.2004 
29 
Ch. 12: NP-Completeness 
Tính có thể rút gọn được (tiếp) 
Một giải thuật thời gian đa thức F tính f được gọi là một giải thuật rút gọn (reduction algorithm). 
13.11.2004 
30 
Ch. 12: NP-Completeness 
Rút gọn trong thời gian đa thức 
Lemma 36.3 
L 1 , L 2  { 0, 1 } * là các ngôn ngữ sao cho L 1  P L 2 
 
Nếu L 2  P thì L 1  P . 
13.11.2004 
31 
Ch. 12: NP-Completeness 
NP-đầy đủ 
Một ngôn ngữ L  { 0, 1 } * là NP-đầy đủ (NP-complete) nếu 
1 . L  NP 
2. L’  P L với mọi L’  NP. 
Một ngôn ngữ L  { 0, 1 } * là NP-kho ù (NP-hard) nếu tính chất 2 ở trên được thỏa (trong khi tính chất 1 không nhất thiết phải được thỏa.) 
“Mọi bài toán trong NP đều không khó hơn bài toán L ” 
Ta định nghĩa NPC là lớp các ngôn ngữ NP-đầy đủ. 
“NPC là lớp các bài toán khó nhất trong NP” 
13.11.2004 
32 
Ch. 12: NP-Completeness 
NP-đầy đủ (tiếp) 
Định lý 36.4 
Nếu có bất ky ø một bài toán NP-đầy đủ nào có thể giải được trong thời gian đa thức, thì P = NP. 
Tương đương như thế: 
Nếu có bất kỳ một bài toán nào trong NP là không thể giải được trong thời gian đa thức, thì không có bài toán NP-đầy đủ nào là giải được trong thời gian đa thức. 
13.11.2004 
33 
Ch. 12: NP-Completeness 
Bài toán thỏa mãn mạch 
Cổng logic 
Mạch tổ hợp bool 
x 
z 
x 
y 
x 
y 
z 
z 
Cổng NOT 
Cổng AND 
Cổng OR 
x 1 
x 2 
x 3 
x 4 
x 5 
x 6 
x 7 
x 8 
x 9 
x 10 
13.11.2004 
34 
Ch. 12: NP-Completeness 
Bài toán thỏa mãn mạch (tiếp) 
Tính chất thỏa mãn mạch 
Một cách gán trị bool (truth assignment) cho một mạch tổ hợp bool là một tập các trị input bool 
Một mạch tổ hợp bool với chỉ một output là có thể thoả mãn được (satisfiable) nếu nó có một cách gán thỏa mãn (satisfying assignment), tức là một cách gán trị bool khiến cho output của mạch là 1. 
x 1 
x 2 
x 3 
x 4 
x 5 
x 6 
x 7 
x 8 
x 9 
x 10 
1 
1 
0 
1 
0 
0 
1 
1 
1 
1 
1 
13.11.2004 
35 
Ch. 12: NP-Completeness 
Bài toán thỏa mãn mạch (tiếp) 
 Bài toán thỏa mãn mạch là “Cho một mạch tổ hợp bool tạo bởi các cổng AND, OR, và NOT, nó có thể thỏa mãn được không?” 
CIRCUIT-SAT = {  C  : C là một mạch tổ hợp bool có thể thỏa mãn được }. 
Lemma 36.5 
Bài toán thỏa mãn mạch thuộc về lớp NP. 
Lemma 36.6 
Bài toán thỏa mãn mạch là NP-khó. 
Theorem 36.7 
Bài toán thỏa mãn mạch là NP-đầy đủ. 
13.11.2004 
36 
Ch. 12: NP-Completeness 
Cách chứng minh NP-đầy đủ 
Lemma 36.8 
Nếu L là một ngôn ngữ sao cho L’  P L với một L’  NPC, thì L là NP-khó. Thêm vào đó, nếu L  NP, thì L  NPC. 
13.11.2004 
37 
Ch. 12: NP-Completeness 
Bài toán thỏa mãn biểu thức bool 
 Biểu thức bool 
 = (( x 1  x 2 )  (( x 1  x 3 )  x 4 ))   x 2 
Một cách gán trị bool (truth assignment) cho một biểu thức bool  là một tập các trị cho các biến của  . 
Một cách gán thoả mãn (satisfying assignment) là một cách gán trị bool khiến cho biểu thức bool có trị là 1. 
Một biểu thức bool có một cách gán thỏa mãn gọi là một biểu thức có thể thỏa mãn được . 
 Bài toán thỏa mãn biểu thức bool 
SAT = {    :  là biểu thức bool có thể thỏa mãn được }. 
Theorem 36.9 
Bài toán thỏa mãn biểu thức bool là NP-đầy đủ. 
13.11.2004 
38 
Ch. 12: NP-Completeness 
Bài toán thỏa mãn biểu thức bool dạng 3-CNF 
 Biểu thức bool dạng 3-CNF ( 3 - c onjunctive n ormal f orm) 
 = ( x 1   x 1   x 2 )  ( x 3  x 2  x 4 )  ( x 1   x 3   x 4 ) 
 Bài toán thỏa mãn biểu thức bool dạng 3-CNF 
3-CNF-SAT = {    :  là biểu thức bool dạng 3-CNF có thể thỏa mãn được }. 
Theorem 36.9 
Bài toán thỏa mãn biểu thức bool dạng 3-CNF là NP-đầy đủ. 
13.11.2004 
39 
Ch. 12: NP-Completeness 
Bài toán clique 
Các định nghĩa 
Một clique của một đồ thị vô hướng G = ( V , E ) là một đồ thị con đầy đu û của G . 
 Kích thước của một clique là số đỉnh mà nó chứa. 
13.11.2004 
40 
Ch. 12: NP-Completeness 
Bài toán clique (tiếp) 
 Bài toán clique là bài toán tối ưu tìm clique có kích thước lớn nhất của một đồ thị. 
Bài toán quyết định tương ứng với bài toán clique là 
CLIQUE = {  G , k  : G là một đồ thị có một clique có kích thước k }. 
Theorem 36.11 
Bài toán clique là NP-đầy đủ. 
13.11.2004 
41 
Ch. 12: NP-Completeness 
Bài toán che phủ đỉnh 
Các khái niệm cơ bản 
Một che phu û đỉnh (vertex cover) của một đồ thị vô hướng G = ( V , E ) là một tập con V’  V sao cho nếu ( u , v )  E thì u  V’ hoặc v  V’ (hoặc cả hai). 
 Kích thước của một che phủ đỉnh là số đỉnh trong đó. 
13.11.2004 
42 
Ch. 12: NP-Completeness 
Bài toán che phủ đỉnh (tiếp) 
 Bài toán che phủ đỉnh là tìm một che phủ đỉnh có kích thước nhỏ nhất trong một đồ thị cho trước. 
Bài toán quyết định tương ứng dưới dạng một ngôn ngữ là: 
VERTEX-COVER = {  G , k  : đồ thị G có một che phủ đỉnh có kích 	thước k }. 
Theorem 36.12 
Bài toán che phủ đỉnh là NP-đầy đủ. 
13.11.2004 
43 
Ch. 12: NP-Completeness 
Bài toán tổng của tập con 
Cho một tập hữu hạn S  N và một trị đích t  N . 
 Bài toán tổng của tập con là hỏi có tồn tại một tập con S ’ S sao cho tổng các phần tử của nó bằng t hay không. 
Ví dụ: với S = {1, 3, 5, 7, 11, 13}, và t = 12 thì tập con S’ = {1, 11} là một lời giải. 
Bài toán tổng của tập con dưới dạng một ngôn ngữ: 
SUBSET-SUM = {  S , t  : tồn tại một tập con S ’ S sao cho 
 t =  s  S ’ s }. 
Theorem 36.13 
Bài toán tổng của tập con là NP-đầy đủ. 
13.11.2004 
44 
Ch. 12: NP-Completeness 
Bài toán chu trình Hamilton 
Bài toán chu trình Hamilton 
HAM-CYCLE = {  G  : G là một đồ thị hamilton } 
Theorem 36.14 
Bài toán chu trình hamilton là NP-đầy đủ. 
13.11.2004 
45 
Ch. 12: NP-Completeness 
Bài toán người bán hàng rong 
Các khái niệm cơ bản 
Cho một đồ thị đầy đu û G . Mỗi cạnh ( i , j ) nối hai đỉnh i và j của G có một chi phí là một số nguyên c ( i , j ) 
Ta định nghĩa một tua (tour) là một chu trình hamilton của G , chi phí của tua là tổng của các chi phí của mỗi cạnh của tua. 
13.11.2004 
46 
Ch. 12: NP-Completeness 
Bài toán người bán hàng rong (tiếp) 
 Bài toán người bán hàng rong (TSP, t ravelling- s alesperson p roblem) là tìm một tua có chi phí nhỏ nhất. 
Ngôn ngữ hình thức cho bài toán quyết định tương ứng là 
TSP = {  G , c , k  : G = ( V , E ) là một đồ thị đầy đu û, 
 c là một hàm số V  V  Z , 
 k  Z , và 
 G có một tua với chi phí  k }. 
Theorem 36.15 Bài toán người bán hàng rong là NP-đầy đủ. 
13.11.2004 
47 
Ch. 12: NP-Completeness 
P  NP? 
Bài toán mở quan trọng nhất trong khoa học máy tính lý thuyết. 
13.11.2004 
48 
Ch. 12: NP-Completeness 

File đính kèm:

  • pptbai_giang_giai_thuat_chuong_12_np_day_du.ppt