7.d. Vài ví dụ về gap-preserving reduction
Những reduction tầm thường như kiểu từ Gap-Max-Clique về Gap-Max-IndependentSet
sẽ có tính chất gap-preserving một cách hiển nhiên. Chúng ta xét vài ví dụ không tầm thường: Gap-Max-3SAT(d), Gap-Max-E3SAT(Ed) và Gap-Max-LabelCover; sau này sẽ dùng chúng để chứng minh định lý Hastad và làm động cơ giới thiệu Unique Games Conjecture.
Định nghĩa: bài toán Max-3SAT(d). Input của bài toán này là một công thức CNF
sao cho mỗi clause có nhiều nhất là 3 biến, và mỗi biến xuất hiện trong nhiều nhất là
clauses. (Một biến
có thể xuất hiện như
hoặc
.)
Chúng ta sẽ dùng một gap-preserving reduction từ Gap-Max-E3SAT (đã biết là NP-hard từ Bài 2) về Gap-Max-3SAT(d)
để chứng minh rẳng Gap-Max-3SAT(d)
là NP-hard với các hằng số
nào đó. Reduction này chuyển một instance
của Gap-Max-E3SAT
về một instance
của Gap-Max-3SAT(d)
sao cho:
(a) Nếu toàn bộ các clauses của có thể thỏa mãn được, thì toàn bộ các clauses của
cũng thỏa mãn được.
(b) Nếu một truth assignment bất kỳ chỉ có thể thỏa mãn được tối đa một tỉ lệ của tổng số clauses của
, thì một truth assignment bất kỳ cũng chỉ có thể thỏa mãn được tối đa là tỉ lệ
của tổng số clauses của
.
Để mô tả reduction này, chúng ta cần một khái niệm cực kỳ quan trọng là expander graphs. Sẽ nói kỹ hơn nhiều về expander graphs trong bài tới, cho nên ở đây chỉ định nghĩa một trường hợp đặc biệt của expanders. Kỹ thuật dùng expanders trong reductions là một kỹ thuật then chốt trong các chứng Hardness of approximation. Chúng ta sẽ dùng expanders theo vài cách khác nhau. Đôi khi dùng theo cách “tổ hợp” như trong ví đụ đang xét. Đôi khi dùng theo cách xác suất để “trộn” thông tin hoặc khuếch đại gap.
Một trường hợp đặc biệt của expanders. Một đồ thị
được gọi là một
-edge expander nếu, với mọi tập con
của các đỉnh với
, ta đều có
. Trong đó,
ký hiệu tập tất cả các cạnh của
đi từ
sang
. (Còn gọi là cái cut
.) Chú ý rằng đồ thị này có thể có multi-edges (nhiều cạnh giữa cùng một cặp đỉnh).
Chúng ta biết rằng, tồn tại một hằng số
(cỡ khoảng 14), sao cho, với mọi
ta có thể xây dựng một
-edge expander với
đỉnh và regular degree
trong thời gian poly
. Thêm cạnh thì chỉ làm expander “tốt” hơn, do đó nếu có expanders với
thì có expander với
. (Đây là trực quan. Sẽ chứng minh trong bài sau.)
Giả sử instance của Gap-Max-E3SAT có
biến
và
clauses là
. Giả sử biến
xuất hiện
lần. Chú ý rằng
. Tạo một biến
nếu biến
xuất hiện trong clause
. Như vậy, có tổng cộng
biến
này. Chúng sẽ là các biến của công thức
đang cần xây dựng. Có hai loại clauses cho
: clause cơ bản, và clause nhất quán, xây dựng như sau.
-
clause cơ bản: với mỗi clause
(
), tạo một clause cơ bản
cho
. Nếu
chứa phần bù của một biến thì clause cơ bản cũng chứa phần bù của biến
tương ứng. Nói cách khác, chúng ta “tách” sự xuất hiện của mỗi biến
thành
biến độc lập dạng
.
- các clause nhất quán. Kế đến, vì các biến
độc lập với nhau, cần một cách nào đó để ràng buộc cho chúng nó “tương ứng” với một giá trị TRUE/FALSE của biến
. Chúng ta làm như sau. Xây dựng một
-regular
-edge expander
với
đỉnh. Như ở trên đã nói, đồ thị này có thể xây dựng được trong poly-time. Đánh nhãn các đỉnh của
bằng
. Với mỗi cạnh
, thêm hai “clause nhất quán”
và
vào
. Lý do chúng ta thêm chúng vào là vì: nếu giá trị của
khác với
thì ít nhất một trong hai clause nhất quán này sẽ không được thỏa mãn; còn nếu
và
nhất quán với nhau thì cả hai clauses sẽ được thỏa mãn.
Bài tập: chứng minh rằng có tổng cộng
biến và
clauses. Mỗi clause có nhiều nhất 3 biến, và mỗi biến xuất hiện ở nhiều nhất là
clauses. Nói cách khác,
là một instance của Gap-Max-3SAT(2d+1).
Chứng minh (a) rất dễ: gán cho tất cả cùng giá trị với
là xong.
Để chứng minh (b), giả sử có nhiều hơn clauses của
được thỏa mãn bởi một truth assignment
nào đó. (Giả trị cụ thể của
sẽ được xác định sau.) Chúng ta sẽ suy ra điều nghịch lý là nhiều hơn
clauses của
cũng được thỏa mãn bởi một truth assignment nào đó.
Xét một truth assignment cho
xây dựng như sau: với mỗi
cố định, gán cho tất cả các
giá trị TRUE hay FALSE mà phần lớn các
nhận được từ
. (Nghĩ: có tất cả
phiếu “bầu” cho TRUE/FALSE. Cả đám lấy giá trị của số đông.) Nếu có “hòa” thì gán TRUE/FALSE tùy hỉ. Ta khẳng định rằng
thỏa mãn số clauses ít nhất bằng với
thỏa mãn. Tại vì: sau khi chuyển giá trị một (thiểu) số
các
thì có thể một số clause cơ bản đang từ thỏa mãn biến thành không thỏa mãn. Sẽ có nhiều nhất là
clause cơ bản bị chuyển. Định nghĩa
là tập các đỉnh
của
mà
là thiểu số. Thì,
. Do đó, theo định nghĩa của
-edge expander, có ít nhất
cạnh của
nối
sang
. Mỗi cạnh như vậy tương ứng với
clause nhất quán. Với mỗi cặp clause nhất quán này, chỉ có một là thỏa mãn bởi
, nhưng cả hai đều được thỏa mãn bởi
. Vì thế, chúng ta “mất” sự thỏa mãn của
clause cơ bản, nhưng lại kiếm “lời” được
clause nhất quán. Vì thế, tổng số clauses thỏa mãn bởi
ít nhất là bằng tổng số clause thỏa mãn bởi
.
Từ truth assignment dễ dàng tìm được truth assignment cho
bằng các gán cho
cái giá trị mà tất cả các
được gán. Rõ ràng là truth assignment này thỏa mãn nhiều hơn
clauses của
. Do đó, chỉ cần chọn
sao cho
là xong chứng minh. Ta chọn luôn
. Chúng ta vừa chứng minh xong định lý sau đây.
Định lý. Với mọi hằng số
, tồn tại một hằng số
sao cho Gap-Max-3SAT(d)
là NP-hard. (Chú ý: có thể giảm
xuống còn
. Đọc bài của Feige.)
Bài tập: Đôi khi, trong một số ứng dụng, chúng ta cần Gap-Max-E3SAT(Ed): giống như Gap-Max-3SAT(d) nhưng mỗi biến xuất hiện chính xác lần, và mỗi clause chứa đúng
biến. Tìm một gap-preserving reduction từ Gap-Max-3SAT(d)
về Gap-Max-E3SAT(Ed)
để chứng minh rằng Gap-Max-E3SAT(Ed)
là NP-hard với một hằng số
nào đó.
7.e. Bài toán LabelCover
Định nghĩa. Một instance của bài toán Max-LabelCover
bao gồm một bipartite graph
, một alphabet
, và một hàm số
cho mỗi cạnh
. Một phép gán nhãn
sẽ gán một nhãn trong tập
cho mỗi đỉnh của đồ thị. Phép gán nhãn này thỏa mãn cạnh
nếu
. Mục tiêu là thỏa mãn càng nhiều cạnh càng tốt.
Gọi
là tỉ lệ các cạnh thỏa mãn được bởi phép gán nhãn tối ưu. Trong bài toán Gap-Max-LabelCover
thì một input instance
hoặc là thỏa
hoặc là
. Chúng ta phải quyết định xem cái nào là cái nào.
Định lý. Tồn tại một hằng số
sao cho Gap-Max-LabelCover
là NP-hard; trong đó
. Hơn nữa, chúng ta có thể giả sử thêm rằng mỗi bipartite graph instance của bài toán này là left-regular và right-regular với constant left-degree và constant right-degree.
Chứng minh. Ta xây dựng một gap-preserving reduction từ Gap-Max-E3SAT(Ed) về Gap-Max-LabelCover
như sau. Xét một instance
của Gap-Max-E3SAT(Ed)
với tập biến
và tập clauses
. Xây dựng một bipartite graph
trong đó
là tập các biến, và
là tập các clauses. Có một cạnh của
nối biến
với clause
nếu và chỉ nếu
xuất hiện trọng
. Định nghĩa
(có tất cả 7 symbols). Nghĩ về symbol
như đại diện cho FALSE, và symbol
đại diện cho TRUE.
Để cụ thể, giả sử . Chúng ta định nghĩa các hàm
như sau. Đại khái, chúng đại diện cho trực quan là cái nhãn gán cho
phải là một nhãn từ
— đại diện cho một trong 7 cách làm
được thỏa mãn. Hàm số
sẽ chỉ định giá trị nào của
tương ứng với nhãn của
. Ví dụ:
,
,
,
,
,
, và
. Trong khi đó,
tại vì
xuất hiện trong
chứ không phải
.
Chiều thuận: giả sử tồn tại một truth assignment thỏa mãn toàn bộ các clauses của , thì dễ thấy là tất cả các cạnh của
cũng thỏa mãn được.
Chiều nghịch: giả sử là các cạnh của
được thoả mãn bởi một phép gán nhãn nào đó. Chúng ta sẽ chứng minh rằng tồn tại một truth assignment thỏa mãn
các clauses của
. (Giá trị của
xác định sau.) Đơn giản thôi. Xét cái truth assignment tương ứng với các nhãn của
. Xét một clause
bất kỳ. Nếu cả 3 cạnh nối với
đều được thỏa mãn thì clause
dĩ nhiên là được thỏa mãn bởi truth assignment này. Do có
các cạnh của
được thoả mãn, tổng số clauses với cả 3 cạnh kề thỏa mãn sẽ lớn hơn
clauses. (Bài tập: tại sao?) Ta chỉ cần chọn
sao cho
là xong. Chọn
là được.
Cuối cùng: dĩ nhiên là bipartite graph ta xây dựng ở trên có left-degree là và right-degree là
.

10 Comments
Bài tập 1:
có 3m biến vì
. Số lượng clauses cũng đếm được dễ dàng:
, ta có m clauses cơ bản và
clauses nhất quán (đặt các
cạnh nhau thu được
là d-regular với 3m đỉnh)
Mỗi clause có nhiều nhất 3 biến.
xuất hiện trong nhiều nhất là 1 clause cơ bản, và tương ứng với
cạnh adjacent với nó là
clauses nhất quán nên nó xuất hiện ở nhiều nhất
clauses.
Mỗi biến
Bài tập 2: (chờ comment sau)
(Thử Latex plugin là chính)
Cái expander này chắc phải học cả một textbook về nó thì mới hiểu được cặn kẽ. Em thấy là ta đang bước vào đoạn đường khó khăn đầu tiên của “Phi lộ” đề ra trong bài post PCP1.
Trước hết, em thấy chuỗi bài PCP rất trực quan sinh động, giúp readers từng bước phác hoạ được bức tranh PCP theory ở thời kỳ đầu. Đây là một ưu điểm chính của chuỗi bài này. Lẽ dĩ nhiên khi ta đã trung thành với phương châm “trực quan sinh động” trong cách trình bày thì sẽ phải rất cẩn thận với các chi tiết dễ bị bỏ qua vì bức tranh đẹp trước mắt B-) B-)
Cụ thể lần này em lại có góp ý như sau:
tăng lên thì
cũng tăng theo (như trong chứng minh). Nói cách khác, khi
tăng lên thì “gap” phải “thu hẹp” lại thì mới có hi vọng vẫn là NP-hard (ít nhất là theo cách chứng minh của ta). Nếu góp ý này sai một cách tầm thường, rất mong được bỏ qua
Định lý ở cuối mục 7d hình như chưa mạnh như vậy được. Vì khi
Em chưa có đủ ability để đọc survey của Linial et. al. cũng như paper của Feige nên không biết khẳng định mạnh nhất sẽ như thế nào. Cứ chậm mà chắc cõ lẽ vẫn hơn.
@Thinh:
Cảm ơn, đây là vấn đề ngôn ngữ.
Ý tôi muốn viết là “Với mọi
, tồn tại
, blah blah blah. Sẽ sửa lại.
Thêm nữa là Gap-Max-3SAT(Ed)(
) vì mỗi biến
xuất hiện trong chính xác
(với the latter
ở đây là của expander). Việc này liên quan đến phát biểu của định lý và bài tập 2.
Em đang pó tay với bài tập 2. Anh Hưng có thể cho hint được không ạ (sau khi phát biểu lại problem statement
). Đương nhiên bước sang mục 7e, ta có thể coi như đã có gap-preserving reduction trong bài tập 2 rồi và đọc ngon lành
Bài tập 3: (chờ comment sau)
Thanks Thinh,
đã sửa thành 29.
Bài tập 2 dùng các kỹ thuật “well-known”. Đại khái, clause nào thiếu biến thì có thể thêm vào literal mới
, rồi thêm vào các clauses
,
,
,
. Sau quá trình này thì chỉ cần chữa vụ “mỗi biến xuất hiện
lần. Gom các biến xuất hiện dưới
lần lại (gọi chúng là biến “thiếu tháng”). Sau đó thêm vào một mớ biến dummy rồi thêm các clause dùng các biến “thiếu tháng” và các biến dummy mới. Phải cẩn thận tính xem cần bao nhiêu biến dummy và dàn xếp chúng với các biến “thiếu tháng” như thế nào. Chọn d=29 cho dễ làm.
Có làm bài tập mới biết mình còn kém
Tuy rằng các instances thu được trong mục 7d chỉ là tập con của Gap-Max-3SAT(d)(
) nhưng ta sẽ làm trong trường hợp tổng quát để luyện tập, dù rằng các tính toán sẽ cồng kềnh hơn đôi chút.
Kĩ thuật “
-hoá” đã rất quen thuộc trong phép qui dẫn cổ điển từ SAT về 3-SAT. Cần chú ý là giá trị
sẽ bị tăng lên nhiều nhất là 4 lần (trong trường hợp có clause 1 literal).
Kĩ thuật “
-hoá” thì có vẻ khó hơn. Giả sử có
biến “thiếu tháng” với số tháng bị thiếu tương ứng là
Reduction từ Gap-Max-E3SAT về Gap-Max-3SAT sử dụng Expander hay một cách bất ngờ!
Hơi tiếc là cái Reduction này không cho ta length-preserving witness. Số biến trong
bằng cỡ input length của
. Do ở đây là 3SAT nên m = poly(n). Nhưng giả dụ ta áp dụng cho trường hợp tổng quát thì rất có thể witness của
sẽ có chiều dài bằng exp() chiều dài của witness của
.
Vì đây là 2 bài toán “cùng loại” nên rất có thể sẽ có một reduction tốt hơn cho length-preserving witness?
Chú ý thêm là sau khi “3-hoá” thì cái “gap” của ta cũng bị “thu hẹp” một cách đáng kể (nhưng vẫn là constant
). Chưa tính bước “d-hoá” còn lại thì đã có thể khẳng định là kết quả thu được sẽ rất yếu. Để đạt được result of hardness mạnh quả là khó.
Để đảm bảo progress em đề nghị anh Hưng Ngô kết thúc nốt bước “d-hoá” (hoặc nếu có thể thì chỉ cho bọn em cách improve cái result hiện đang rất yếu).
Ý Thịnh nói “yếu” là
gần 1 quá hả? Miễn là hằng số là được rồi. (Nhớ là
cũng là hằng số, nên cái gap của bạn phụ thuộc vào
cũng không sao.)
Kết quả mạnh nhất cũng chỉ có gap là
thôi, mà khi đó phải hy sinh perfect completeness nữa. Nếu khăng khăng với perfect completeness thì tôi không biết kết quả mạnh nhất là gì (à, cũng
nhờ GLTS ở FOCS 1998). Cái gap
thì bạn phải chờ xong expanders, đến Fourier analysis of long code rồi mới tới. Be patient