3SAT vẫn là bài toán về sự thỏa mãn các biểu thức logic, nhưng những biểu thức này có dạng rất phổ biến: AND của "mệnh đề", OR “biến” hoặc “biến phủ định”.. Một biểu thức ở dạng chuẩn hộ
Trang 1Tiểu luận môn Lý thuyết tính toán Bài toán có giới hạn điều kiện
Trong mục này chúng ta đi chứng minh một loạt các bài toán như: bài toán TSP được trình bày trong phần 10.1.4, là NP-đầy đủ Về nguyên tắc, chúng ta làm như vậy bằng cách tìm sự giảm thời gian theo đa thức từ bài toán SAT cho mỗi vấn đề quan tâm Tuy nhiên, có một bài toán trung gian quan trọng, được gọi là "3SAT"
dễ hơn nhiều so với SAT để giảm các bài toán mẫu 3SAT vẫn là bài toán về sự thỏa mãn các biểu thức logic, nhưng những biểu thức này có dạng rất phổ biến: AND của "mệnh đề", OR “biến” hoặc “biến phủ định”
Trong phần này sẽ trình bày một số thuật ngữ quan trọng về biểu thức logic Sau
đó ta đơn giản điều kiện cho mọi biểu thức để thỏa với các biểu thức ở dạng chuẩn 3SAT Ta thấy rằng trong mỗi biểu thức logic E luôn có biểu thức tương đương F ở dạng chuẩn của 3SAT, kích cở của F có thể là theo cấp số nhân kích cở của E Vì vậy, để giảm thời gian đa thức của SAT để 3SAT tối ưu hơn các thao tác đại số logic đơn giản Ta cần chuyển đổi biểu thức E trong SAT thành biểu thức F ở dạng chuẩn 3SAT Tuy nhiên, F không nhất thiết phải tương đương với E Chúng ta chắc chắn rằng F thỏa mãn nếu và chỉ nếu E đúng
10.3.1 Hình thức chuẩn cho biểu thức logic
Sau đây là 3 định nghĩa:
• Chữ A là một biến hoặc biến phủ định Ví dụ x và ¬ y Ta thường sử dụng y để thay thế cho ¬ y
• Mệnh đề A là OR hoặc AND của nhiều biến Ví dụ là x, x y, và x y z
• Một biểu thức logic được cho là ở dạng chuẩn hội hay CNF, nếu nó AND các mệnh đề
Để rút gọn các biểu thức, chúng ta dùng ký hiệu thay thế như là tổng thay cho toán tử +, và là tích Đối với tích, ta viết liền nhau, tức là không dùng toán tử
Ví dụ 10.10: Biểu thức (x y ) (x z) được viết lại (x + y )(x + z) Đây là dạng chuẩn tắc hội, vì AND (tích) mệnh đề (x + y) và (x + z)
1
Trang 2Biểu thức (x + yz )(x + y + z)( y +z ) không phải CNF Nó AND biểu thức (x + yz ), (x + y + z), và ( y +z ) Hai biểu thức cuối là mệnh đề, nhưng biểu thức đầu tiên không phải, vì là tổng của một biến và tích của hai biến
Biểu thức xyz là CNF Lưu ý rằng một mệnh đề có thể chỉ có một biến Như vậy, biểu thức của xyz là tích của ba mệnh đề (x), (y), và (z) Một biểu thức ở dạng chuẩn hội k (k-CNF) nếu nó tích của các mệnh đề, trong đó mỗi mệnh đề có tổng k biến riêng biệt Chẳng hạn (x + yz), (x + y + z),
và ( y +z ) là dạng 2-CNF, bởi vì mỗi mệnh đề có đúng 2 biến Tất cả giới hạn này trong biểu thức logic tạo ra một số bài toán riêng của chúng mà thỏa mãn biểu thức giới hạn Vì vậy, ta xem xét các bài toán sau đây:
Bài toán CSAT: cho một biểu thức logic ở dạng CNF, nó có thỏa mãn không?
Bài toán fcSAT: cho biểu thức logic là k-CNF, nó có thỏa mãn hay không?
Ta thấy rằng CSAT, 3SAT, và kSAT với mọi k lớn hơn 3 là NP-đầy đủ Tuy nhiên,
có thuật toán mất thời gian tuyến tính để giải 1SAT và 2SAT
10.3.2 Chuyển đổi biểu thức sang dạng CNF
Hai biểu thức logic được cho là tương đương nếu chúng có cùng một kết quả với bất kỳ giá trị của các biến trong biểu thức Nếu hai biểu thức là tương đương, thì chắc chắn hoặc là cả hai đều thỏa mãn hay không thỏa mãn Vì vậy, chuyển đổi
Xử lý đầu vào lỗi Mỗi bài toán đã trình bày - SAT, CSAT, 3SAT,… - là ngôn ngữ trên bảng chữ cái 8-ký tự cố định, đôi khi ta có thể xem như các biểu thức logic Một chuỗi không có thể dịch được là một biểu thức tồn tại
trong ngôn ngữ SAT Tương tự như vậy, khi ta xem xét biểu thức giới hạn, một chuỗi được tạo ra ở dạng biểu thức logic đúng, nhưng không phải là biểu thức ở của người dùng đặt ra, không phải là ngôn ngữ Như vậy, thuật toán quyết định cho bài toán CSAT, Chằng hạn, nói "không" nếuđưa ra biểu thức logiclà thỏa mãn, nhưng nó không phảiCNF.
Trang 3biểu thức bất kỳ thành biểu thức CNF tương đương là cách tiếp cận để làm giảm thời gian phi tuyến tính từ SAT thành CSAT Sự giảm đó xác nhận CSAT là NP-đầy đủ
Tuy nhiên, mọi thứ không hoàn toàn đơn giản như vậy Trong khi ta có thể chuyển đổi bất kỳ biểu thức nào thành CNF, việc chuyển đổi chúng mất nhiều thời gian Đặc biệt, thời gian có thể tăng theo cấp số mũ chiều dài của biểu thức, và do
đó chắc chắn mất rất nhiều công sức để tìm ra kết quả
May mắn, việc chuyển biểu thức logic bất kỳ thành biểu thức CNF chỉ có một cách mà là chuyển SAT thành CSAT, vì vậy ta chứng minh CSAT là NP-đầy đủ
Ta lấy ví dụ E là SAT và chuyển đổi thành F dạng CSAT, như vậy F thỏa mãn nếu
và chỉ nếu E đúng Không cần thiết rằng E và F là tương đương Thậm chí không cần thiết E và F có cùng tập hợp các biến, một cách tổng quát, F có một siêu tập hợp các biến E
Việc chuyển SAT thành CSAT bao gồm hai phần Đầu tiên, ta đưa tất cả ¬'s xuống cây biểu thức để phủ định các biến, ví dụ biểu thức logic trở thành AND và OR các biến Chuyển đổi này hình thành biểu thức tương đương và mất thời gian theo hàm bậc nhất kích cở biểu thức Trên máy tính thông thường, với một cấu trúc dữ liệu thiết kế chuẩn, nó chỉ mất thời gian tuyến tính
Biểu thức Quy tắc
Bước thứ hai để viết biểu thức AND và OR các biến là tích các mệnh đề, … chuyển nó thành CNF Bằng cách đưa ra các biến mới, ta có thể thực hiện việc chuyển đổi này ngay, đó là đa thức trong kích cở của biểu thức đã cho Nhìn chung, biểu thức F mới không tương đương với biểu thức E cũ Tuy nhiên, F sẽ
3
Trang 4thỏa mãn nếu và chỉ nếu E đúng Cụ thể hơn, nếu T được gán bằng E đúng, sau đó
là phần triển khai của T, là S, mà làm cho F đúng, chúng ta nói S là phần triển khai của T nếu S gán cùng giá trị với T, mỗi biến T được gán, nhưng S cũng có thể gán một giá trị cho các biến mà T không đề cập đến
Bước đầu tiên là khử phủ định ¬’s và chuyển thành dạng ’s và ’s Các quy tắc ta cần là:
1 ¬(E F) => ¬(E) ¬(F) Quy tắc này cho phép chúng ta chuyển sang Đây
là một trong các luật DeMorgan
2 ¬(E F) => ¬(E) ¬(F) Cho phép ta chuyển sang
3 ¬ (¬ (E)) => E Luật phủ định hai lần
Định lý 10.11: Mỗi biểu thức logic E tương đương với biểu thức F, trong đó các
biến đều phủ định Hơn nữa, chiều dài của F là tuyến tính theo số lượng biểu tượng của E và F có thể được xây dựng từ E mất thời gian phi tuyến tính
Chứng minh: Dùng phương pháp quy nạp trên số lượng toán tử (, , và ) Ta đưa
ra một biểu thức tương đương F có ’s các biến, hơn nữa nếu E có ≥ 1 toán tử thì F không có nhiều hơn 2n – 1 toán tử
Vì F không cần có nhiều hơn một cặp dấu ngoặc đơn cho toán tử, và số lượng biến trong một biểu thức không vượt quá số lượng toán tử một lần, ta kết luận rằng độ dài của F là tuyến tính tỷ lệ thuận với độ dài của E Quan trọng hơn, ta thấy rằng,
vì xây dựng F khá đơn giản, thời gian cần để xây dựng F tỷ lệ thuận với chiều dài của nó, do đó tỷ lệ thuận với độ dài của E
Cơ sở: Nếu F có một toán tử, thuộc các dạng x, x y, hay x y cho các biến x và
y Trong mỗi trường hợp, E tồn tại ở dạng đã cho, vậy F = E Lưu ý rằng, vì E và F chỉ có một toán tử F có nhiều nhất bằng hai lần toán tử của E trừ đi cho 1
Quy nạp: Giả sử phát biểu trên là đúng cho tất cả biểu thức có ít toán tử hơn E Nếu toán tử đầu của E là ¬, E có dạng E1 E2 hoặc E1 E2 Trong cả hai trường hợp, giả thuyết quy nạp áp dụng cho E1 và E2 có biểu thức tương đương F1 và F2
F = F1 F2 hoặc F = F1 F2 là một tương đương thỏa mãn E E1 và E2 có a và b
Trang 5toán tử Thì E có a + b + 1 toán tử Giả thuyết quy nạp, F1 và F2 có nhiều nhất 2a
-1 và 2b - -1 toán tử Như vậy, F có nhiều nhất là 2a + 2b - -1 toán tử, không quá 2 (a + b +1) - 1, hay hai lần số lượng các toán tử của E trừ đi 1
Bây giờ, xem xét trường hợp E có dạng ¬E1 Có ba trường hợp, tùy thuộc vào toán
tử đầu tiên của E1 Lưu ý rằng E1 phải có một toán tử, hay E là một trường hợp cơ bản
1 E1 = ¬E2 Luật phủ định kép, E = ¬(¬ E2) tương đương với E2 Vì E2 có ít toán
tử hơn E, giả thuyết quy nạp được áp dụng Chúng ta có thể tìm thấy F tương đương E2 trong đó ¬’s là các biến Vì số lượng toán tử của F nhiều nhất là hai lần của E2 trừ đi 1, chắc chắn không quá hai lần số toán tử của E trừ đi 1
2 E1 = E2 E3 Theo luật DeMorgan E = (E2 E3) tương đương với ((E2))
((E3)) Cả hai (E2) và (E3) có ít toán tử hơn F, vì vậy giả thuyết quy nạp chúng tương đương E2 và E3 có ’s các biến Thì F = F2 F3 tương đương E Ta cũng cho rằng số lượng toán tử trong F không quá lớn E2 và E3 có toán tử là a và
b Thì E có a + b + 2 toán tử Vì (E2) và (F3) có a+1 và b +1 toán tử, F2 và F3 được xây dựng từ các biểu thức này, bằng quy nạp, ta biết rằng F2 và F3 có nhiều nhất là 2(a + 1) - 1 và 2(b + 1) - 1 toán tử Như vậy, F có nhiều nhất 2a + 2b + 3 toán tử Con số này là gấp đôi số lượng toán tử của E, trừ đi 1
5
Mô tả thuật toán Thông thường, thời gian hoạt động là thời gian cần để thực thi
trên máy Turing một băng, các thuật toán này không cần thiết
phức tạp Chúng ta biết rằng các bài toán được giải có thể được
giải quyết trên máy tính bình thường, trên máy Turing nhiều băng
và máy Turing một băng trong một khoảng thời gian tính theo đa
thức là như nhau, mặc dù độ khó của các đa thức có thể khác
nhau Vì vậy, như ta trình bày một vài thuật toán khá phức tạp
cần thiết để chuyển bài toán NP-đầy đủ thành bài toán khác, ta
chấp nhận thời gian được đo bằng việc triển khai hiệu quả trên
máy tính thông thường Sự hiểu biết đó cho phép ta tránh các chi
tiết liên quan đến nhiều băng và sẽ cho phép ta nắm những ý
tưởng quan trọng của thuật toán
Trang 63 E1 = E2 E3 Đối với biểu thức này, sử dụng luật DeMorgan thứ 2, về cơ bản giống (2)
10.3.3 NP-Tính đầy đủ của CSAT
Bây giờ, ta cần chuyển biểu thức E là AND và OR các biến sang CNF Như ta đã trình bày, để hình thành biểu thức F từ E với thời gian đa thức thỏa mãn nếu và chỉ nếu E thỏa mãn, ta phải loại bỏ sự chuyển đổi duy trì tính tương đương, và đưa ra một số biến mới cho F mà không xuất hiện trong E Ta đưa ra "bẫy" bằng chứng của định lý CSAT là NP-đầy đủ, và sau đó cho một ví dụ về bẫy để xây dựng rõ ràng hơn
Định lý 10.13: CSAT là NP-đầy đủ
Chứng minh: Ta trình bày làm thế nào để chuyển SAT thành CSAT theo thời gian
đa thức Đầu tiên, sử dụng định lý 10.12 để chuyển đổi ví dụ đã cho SAT sang biểu thức E mà 's chỉ có các biến Sau đó, ta trình bày cách chuyển đổi E thành CNF trong thời gian đa thức và thấy rằng F thỏa mãn nếu và chỉ nếu E đúng Việc xây dựng F dùng phương pháp quy nạp trên độ dài của E Các thuộc tính đặc biệt mà F
có nhiều hơn chúng ta cần Chính xác, chúng ta trình bày bằng quy nạp số lần xuất hiện biểu tượng ("chiều dài") E:
a) F là CNF, và bao gồm nhiều mệnh đề n nhất
b) F xây dựng từ E trong thời gian lớn nhất là c|E|2
c) Một phép gán T cho E làm E đúng nếu và chỉ nếu tồn tại phần mở rộng S của T mà làm cho F đúng
Trang 7Cơ sở: Nếu E gồm một hoặc hai biến Biến A là một mệnh đề, vậy E là CNF.
Phương pháp quy nạp: Giả sử rằng mỗi biểu thức nhỏ hơn E có thể được chuyển đổi thành tích của các mệnh đề, và chuyển đổi này tốn nhiều nhất cn2 thời gian trên biểu thức của chiều dài n Có hai trường hợp, tùy thuộc vào toán tử đầu tiên của E Trường hợp 1: E = E1 E2, giả thuyết quy nạp, biểu thức F1 và F2 được tính từ E1
và E2 là CNF Chúng thỏa mãn phép gán E1, có thể thỏa F1, tương tự cho E2 và F2 Ta giả định rằng các biến F1 và F2 riêng biệt, trừ những biến xuất hiện trong E, tức là, nếu ta đưa các biến vào F1 hoặc F2, sử dụng các biến riêng biệt
Đặt F = F1 F2 Rõ ràng F1 F2 là biểu thức CNF nếu F1 và F2 đúng Ta phải trình bày gán T cho E được triển khai để thỏa mãn phép gán cho F khi và chỉ khi T thỏa E
7
Trang 8Giả sử T thỏa E Đặt T1 bị giới hạn bởi T, nó chỉ áp dụng cho biến có trong E1, và đặt T2 tương tự cho E2 Bằng giả thuyết quy nạp, T1 và T2 được triển khai để gán S1 và S2 thỏa F1 và F2 Lưu ý rằng, vì các biến và F2 có điểm chung là những biến số của E, và S1 Nhưng S là một phần mở rộng của T thỏa mãn F
Ngược lại, giả sử rằng T có một mở rộng S thỏa mãn F Để T1 (., T2) bị T hạn chế các biến E1 (., E1) Hãy để S giới hạn biến F1 (., F1) là S1 (., S2) Sau đó, S1 là phần mở rộng của T1, và S2 là phần mở rộng của T2 Vì F và F1 và F2, S1 thỏa F1, và S2 thỏa mãn F2 Giả thuyết quy nạp, T1 (., T2) thỏa E1 (., E2) Như vậy, T thỏa E
Trường hợp 2: E = E1 E2 Như trong trường hợp 1, ta gọi giả thuyết quy nạp để khẳng định rằng đó là F1 và F2 là CNF có các thuộc tính:
1 Một phép gán cho E1 (., E2) thỏa E1 (., E2), nếu và chỉ nếu nó có thể được mở rộng để thỏa mãn phép gán F1 (., F2)
2 Các biến F1 và F2 riêng biệt, ngoại trừ các biến này trong E
3 F1 và F2 là CNF
Không chỉ đơn giản dùng OR của E1 và E2 để xây dựng F, vì biểu thức kết quả sẽ không là CNF Tuy nhiên, một xây dựng phức tạp, có nhiều ưu điểm thực tế mà ta muốn duy trì sự thỏa mãn hơn là tương đương, sẽ tối ưu Giả sử
F1 = g1 g2 … gp
Và F2 = h1 h2 hq, trong đó g’s và h’s là các mệnh đề Đưa ra một biến mới
là y và đặt:
Ta phải chứng minh rằng phép gán T cho E, thỏa mãn E nếu và chỉ nếu T có thể được mở rộng đến phép gánS thỏa F
Giả sửTthỏa mãnE. Như trong trường hợp 1, đặt T1(., T2) bị T giới hạn biếnE1(.,
E2) Vì E = E1 E2, hoặcTthỏa mãn E1 hoặcT thỏa E2 Ta giả sử T thỏa mãn E1.
Trang 9Thì T1 mà T giới hạn các biến của E1, có thể được mở rộng đến S1, thỏa F1 Xây dựng phầnmởrộng S choTnhưsau:Ssẽ thỏa biểuthức F được định nghĩa ở trên:
1 Đối với tất cả các biến x trong F, S (x) = S1(x)
2 S(y) = 0 Lựa chọn này làm cho tất cả các mệnh đề của F được mở rộng F2 đúng
3 Đối với tất cả các biến x trong F2 nhưng không trong Fx, S(x) là T(x) nếu sau này được xác định, và nếu không có thể là 0 hoặc 1
Sau đó S làm tất cả các mệnh đề từ g’s đúng vì quy tắc 1 S làm tất cả các mệnh đề
từ h’s đúng theo quy tắc 2 – gán cho y Như vậy, S thỏa mãn F
Nếu T không thỏa E1, nhưng thỏa E2, thì tham số giống nhau, ngoại trừ S(y) = 1 theo quy tắc 2 Ngoài ra, S(x) phải thỏa với S2(x) bất cứ khi nào S2(x) được định nghĩa, nhưng S(x) chỉ xuất hiện trong S1 bất kỳ Chúng ta kết luận rằng trong trường hợp này S thỏa mãn F
Giả sử rằng gán T cho E được mở rộng để gán S cho F và S thỏa mãn F Có hai trường hợp, tùy thuộc vào những gì giá trị thật được gán cho y Đầu tiên giả sử rằng S(y) = 0 Thì tất cả các mệnh đề của F xuất phát từ h’s đúng Tuy nhiên, y không hỗ trợ mệnh đề có dạng (y + gi) xuất phát từ g’s, đều này có nghĩa là S đúng với mỗi giá trị g’s, S làm cho F1 đúng
Chính xác hơn, để S1 bị S hạn chế đến các biến F1 Thì S1 thỏa mãn F1 Bằng giả thuyết quy nạp, T1, mà bị T hạn chế đến các biến của E1, phải thỏa mãn Ex Vì S1
là phần mở rộng của T1 Nên từ T1 thỏa mãn F1, T thỏa mãn E, đó là E1 E2 Chúng ta cũng phải xem xét trường hợp S(y) = 1, nhưng trường hợp này là đối xứng với kết quả ta đã nêu Chúng ta kết luận rằng T thỏa mãn E bất cứ khi nào S thỏa mãn F
Bây giờ, chúng ta xem xét thời gian để xây dựng F từ E là bậc nhất theo n, n chiều dài của E Bất kể trường hợp này áp dụng tách rời E thành E1 và E2, và xây dựng
F từ F1 và F2 Đặt dn là ràng buộc trên về thời gian để xây dựng E1 và E2 từ E
9
Trang 10cộng với thời gian xây dựng F từ F1 và F2 Có một phương trình tái phát cho T(n), thời gian để xây dựng F từ bất kỳ E theo chiều dài n, dạng của nó là:
T( 1) = T(2) ≤ e với một vài hằng số e
T ( n ) ≤ d n + c.maxo < i <n-i (T ( i ) + T ( n - 1 - i)) với n ≥ 3
Trong đó c là một hằng số chưa được xác định, vậy T(n) ≤ c n 2
Quy tắc cơ bản cho T(l) và T(2) là nếu E là một ký hiệu duy nhất hoặc một cặp ký hiệu, thì chúng ta không cần một đệ quy vì E chỉ có thể là một biến duy nhất, và toàn bộ quá trình có mất một khoảng thời gian e Các quy tắc đệ quy sử dụng là nếu E bao gồm các biểu thức con E1 và E2 kết hợp với nhau bằng toán tử hay ,
và E1 có độ dài là i, E2 có độ dài n - i - 1 Hơn nữa, việc chuyển đổi E sang F bao gồm hai bước đơn giản thay đổi E sang E1 và E2 và thay đổi F1 và F2 sang F mà chúng ta biết thời gian lớn nhất dn, cộng với hai lần chuyển đổi đệ quy của E1 sang F1 và E2 sang F2
Chúng tôi cần phải trình bày phương pháp quy nạp trên n là có một hằng số c với
mọi n, thỏa T(n) ≤ c n 2
Căn cứ: Đối với n = 1, chúng tôi chỉ cần chọn c lớn bằng e Quy nạp: Giả sử câu lệnh có độ dài nhỏ hơn n Thì T(i) ≤ ci2 và T (n i 1) ≤ c(n
-i - l)2 Vì vậy:
T (i) + T (n - i - 1) ≤ n2 - 2i(n-i) - 2(n- i) + l (10.1)
Vì n ≥ 3 và 0 <i <n - 1, 2i(n - i) nhỏ hơn n, và 2(n - i) nhỏ hơn 2 Vì vậy, phía bên phải của (10.1) nhỏ hơn n2 - n, với mọi i trong phạm vi cho phép Theo quy tắc đệ quy trong định nghĩa của T(n) thì T (n) ≤ dn + cn2 - cn Nếu chúng ta chọn c ≥ d, chúng ta có thể suy ra rằng T (n)< cn2 với mọi n Vì vậy, việc xây dựng F từ E mất thời gian 0(n2)