4. CÁC CHỨNG MINH NP-ĐẦY ĐỦ (NP-COMPLETENESS PROOFS ):
4.1. Thỏa được công thức (Formula satisfiability ):
Bài toán thỏa được công thức của chúng ta bằng thuật ngữ của ngôn ngữ
SAT như sau. Một trường hợp của SAT là một công thức giá trị ∅ bao gồm:
1. n các biến giá trị : x1, x2,...xn;
2. m các liên kết giá trị bất ỳ hàm giá trị nào với một hoặc hai dữ liệu vào và một dữ liệu ra, như ∧ (và), ∨ (hoặc), ¬ (phủ định), → (kéo theo), ↔ (khi và chỉ khi); ...
3. Parentheses Không mất tính chất chung, chúng ta thừa nhận rằng không có thừa Parentheses, có tại hầu hết mỗi cặp Parentheses per liên lết boolean).
Dễ dàng mã hóa một công thức giá trị ∅ trong một độ dài là đa thức n+m. Như trong các mạch kết nối boolean, một chỉ định chân trị cho một công thức giá trị ∅ là một tập các giá trị cho các biến của ∅ và một chỉ định thỏa được là một chỉ định chân trị mà do nó để định giá đến 1. Một công thức với một chỉ định thỏa được là một công thức thỏa được. Bài toán thỏa được yêu cầu khi cho một công thức giá trị là thỏa được : trong các thuật ngữ ngôn ngữ hình thức.
SAT = {<∅> : ∅ là một công thức thỏa được boolean}. Ví dụ, cho công thức : ∅=((x1→x2) ∨ ((¬ x1↔x3) ∨x4)) ∧¬x2 có chỉ định thỏa được <x1=0, x2=0, x3=1, x4=1>, khi ∅ = ((0→0) ∨¬ ((¬ 0↔1) ∨ 1)) ∧¬ 0 = (1∨¬ (1∨1) ∧ 1 = (1∨ 0) ∧ 1 = 1,
và vì thế, công thức ∅ thuộc SAT.
Thuật toán xác định khi một công thức boolean tùy ý là thỏa được không chạy với thời gian đa thức. Có 2n chỉ định có thể trong một công thức ∅ với n
biến. Nếu độ dài của <∅> là đa thức trong n, thì kiểm tra mỗi yêu cầu chỉ định thời gian Ω(2n) là siêu đa thức trong độ dài của <∅>. Theo định lý cho ra, một thuật toán thời gian đa thức là tồn tại không như nhau.
Định lý 9: Thỏa được công thức boolean là NP-đầy đủ.
Chứng minh :
Chúng ta bắt đầu bởi argwing tranh cải rằng : SAT ∈ NP. Sau đó chúng ta
chứng tỏ rằng SAT là NP-khó bằng cách biểu diễn CIRCUIT-SAT ≤ p SAT bởi
Bổ đề 8.
Để chỉ rằng SAT thuộc NP, chúng ta chỉ rằng một chứng nhận chứa một chỉ
định thỏa được cho một công thức dữ liệu vào ∅ có thể bị biến đổi bằng thời
gian đa thức. Thuật toán biến đổi thay thế mỗi biến trong công thức với giá trị tương ứng của nó và sau đó diễn đạt các định giá, như chúng ta đã thấy ở công thức (34.2) ở trên. Công việc này dễ dàng hoàn thành với thời gian đa thức. Nếu diễn đạt định giá đến 1, công thức là thỏa được. Vì thế, điều kiện đầu tiên của Bổ đề 8 đối với NP-đầy đủ holds.
Để chứng tỏ rằng SAT là NP-khó, chúng ta chỉ ra rằng CIRCUIT-SAT ≤ p
SAT . Bằng cách khác, bất ỳ trường hợp nào của mạch thỏa được có thể đã rút gọn bằng thời gian đa thức đến 1 trường hợp của công thức thỏa được. Chỉ dẫn
có thể đã sử dụng để diễn đạt bất kỳ mạch kết nối boolean như một công thức boolean. Đơn giản, chúng ta nhìn tại cổng sinh ra mạch dữ liệu ra và sự diễn đạt mỗi cổng của dữ liệu vào như công thức. Công thức cho mạch đã được chứa bởi một sự diễn đạt mà áp dụng hàm của cổng để đặt vào công thức.
Đáng tiếc, phương pháp hướng thẳng không tạo thành một sự rút gọn thời
gian đa thức. Như Bài tập IV.1, yêu cầu bạn biểu diễn, một phần của các công thức con - mà xuất hiện từ các cổng mà dữ liệu ra các dây có hệ số phân đầu ra (fan-out) của 2 hoặc nhiều hơn - có thể do kích cỡ của công thức đã sinh ra để tăng theo hàm mũ. Vì thế, thuật toán rút gọn phải thông minh hơn.
Hình 10. Việc rút gọn đáp ứng mạch đễn thỏa được công thức. Công thức đã sinh ra bởi thuật toán rút gọn có một biến cho mỗi dây trong mạch đó.
Hình 10., minh họa ý tưởng cơ bản của sự rút gọn từ CIRCUIT-SAT đến SAT trên mạch từ hình 8(a). Đối với mỗi dây xi trong mạch C, công thức ∅ có một biễn xi. Thao tác thích hợp của một cổng có thể biểu diễn như một công thức bao gồm các biến của các dây vốn có của nó. Ví dụ, thao tác của dữ liệu ra cổng AND là x10↔ (x7 ∧x8∧x9).
Công thức ∅ đã sinh ra bởi thuật toán rút gọn là AND của biến mạch-dữ
liệu ra kết hợp các mệnh đề mô tả thao tác của mỗi cổng. Cho mạch trong hình, công thức là : ∅ = x10 ∧ (x4↔¬x3) ∧ (x5↔ (x1∨x2)) ∧ (x6↔¬ x4) ∧ (x7↔ (x1∧x2 ∧x4)) ∧ (x8↔ (x5∨x6)) ∧ (x9↔ (x6∨x7)) ∧ (x10↔ (x7∧x8 ∧x9))
Cho một mạch C, nó là dễ hiểu để kết quả như một công thức ∅ trong thời gian đa thức. Tại sao mạch C thỏa được một cách chính xác khi công thức ∅ là
có thể thỏa được hay không ? Nếu C có một chỉ định thỏa được, mỗi dây của
mạch có một giá trị đã định nghĩa hợp lý và dữ liệu ra của mạch là 1. Bởi vậy, chỉ định của các giá trị dây đến các biến trong ∅ làm cho mỗi mệnh đề của ∅
định giá đến 1. Ngược lại, nếu có một chỉ định mà do ∅ đến định giá đến 1, mạch C là có thể thỏa được bởi một luận cứ tương tự. Vì thế, chúng ta có biểu
diễn rằng CIRCUIT-SAT ≤ p SAT, mà chứng minh đầu đủ.