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ó.
ù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:
- bai_giang_giai_thuat_chuong_12_np_day_du.ppt