Nhắc lại về dạng chuẩn của các biểu thức Boole

Một phần của tài liệu Giáo trình môn độ phức tạp tính toán (Trang 29)

- Nguyên đề (literal) là một biến hoặc phủ định của một biến.

Thí dụx,ơylà các literal. Ta sẽ dùng ký hiệu phủ địnhy¯thay choơy.

- Phân đề (clause) là một OR của một hay nhiều nguyên đề (tổng của các literal). Thí dụx, x∨y, x∨y¯∨z.

- Dạng chuẩn hội CNF (Conjunctive normal form) là biểu thức dạng AND của các phân đề (hay dạng tích các tổng).

Thí dụ:

-(x∨y¯)∧(¯x∨z)hoặc viết dưới dạng(x+ ¯y).(¯x+z)

-xyz

- Một biểu thức được nói là có dạng chuẩn k-hội hay k-CNF nếu là tích của các tổng, mỗi tổng gồmk literals

Thí dụ:(x+ ¯y)(y+ ¯z)(¯x+z)có dạng 2-CNF vì mỗi phân đề của nó đều có đúng 2 nguyên đề.

Tất cả những hạn chế này trên các biểu thức Boole đều có những bài toán riêng của chúng về tính thỏa được. Vì thế chúng ta sẽ xét các bài toán sau đây:

32 Các bài toán nan giải (intractable problems)

• Bài toán CSAT: Cho một biểu thức Boole ở dạng CNF. Xác định xem nó có thỏa được hay không?

• Bài toán kSAT: Cho một biểu thức Boole ở dạng k-CNF. Xác định xem nó có thỏa được hay không?

Bài tập: Biến đổi biểu thức Boole thành 3-CNF E =xy+xz

Cách làm: Tìm dạng chuẩn tắc tuyển choE, rồi dùng luật DeMorgan E =xy+xz =xy.xz = (x+y)(x+z) =x z+xy+y z =x z(y+y) +xy(z+z) +y z(x+x) =xyz+x y z+xyz+xy z+xy z+x y z =xyz+x y z+xyz+xy z E = (x+y+z)(x+y+z)(x+y+z)(x+y+z) 3.3.2. Tính chất NP-C của CSAT Định lý 3.4. CSAT là NP-C. Định lý 3.5. 3SAT là NP-C.

Bài tập: Bài toán 4TA-SAT được định nghĩa như sau:

Cho trước biểu thức BooleE, xem thửE có ít nhất 4 phép gán chân lý làm thỏa hay không. Chứng minh rằng 4TA-SAT là NP-C.

3.4. Một số bài toán NP-C khác

Quá trình khám phá các bài toán thuộc loại NP-C cho ta biết rằng có rất ít cơ hội phát triển được một thuật toán hiệu quả để giải nó. Điều đó khuyến khích ta tìm kiếm các heuristic, các lời giải từng phần, các xấp xỉ và những cách khác nhằm tránh giải trực diện bài toán.

Mỗi lần đưa thêm một bài toán vào danh sách các bài toán NP-C chúng ta lại củng cố thêm ý tưởng rằng tất cả mọi bài toán NP-C đều đòi hỏi thời gian mũ.

3.4. Một số bài toán NP-C khác 33

3.4.1. Mô tả các bài toán NP-C

Khi giới thiệu các bài toán NP-C ta sẽ dùng các định nghĩa theo đúng kiểu cách sau:

1. Tên của bài toán.

2. Nguyên liệu cho bài toán: cái được biểu diễn và biểu diễn nó như thế nào. 3. Thành phẩm mong muốn: trong những tình huống nào thành phẩm sẽ là "Yes". 4. Bài toán được dùng để thu về bài toán này nhằm chứng minh nó là NP-C. Thí dụ 3.3. Mô tả 3SAT:

1. Bài toán: Tính chất thỏa được của các bài toán 3-CNF (3SAT). 2. Nguyên liệu: Một biểu thức Boole dạng 3-CNF.

3. Thành phẩm: "Yes" nếu và chỉ nếu biểu thức thỏa mãn. 4. Phép thu từ CSAT.

3.4.2. Bài toán các tập độc lập (independent set)

Cho Glà một đồ thị vô hướng. Ta nói tập con I của các đỉnh thuộc Glà một tập độc lập nếu không có 2 đỉnh nào của I được nối bởi một cạnh củaG(tức là I là tập các đỉnh mà không có 2 đỉnh nào là liền kề nhau). Một tập độc lập là cực đại nếu nó có nhiều nút nhất trong số các tập độc lập.

Thí dụ: Đồ thị trong Hình 3.1 có tập độc lập gồm các đỉnh{1,4}. Đó cũng là tập độc lập cực đại.

Bài toán:Cho một đồ thị G. Tìm tập độc lập cực đại.

Giống như mọi bài toán trong lý thuyết các bài toán nan giải, ta sẽ phát biểu bài toán trong dạng Yes/No. Để làm việc này ta đưa thêm một cận dưới vào phát biểu của bài toán và diễn tả lại câu hỏi là: đồ thị đã cho có một tập độc lập tối thiểu bằng với cận đó hay không.

Khi đó định nghĩa hình thức của bài toán tập độc lập cực đại là 1. Bài toán: Tập độc lập hay IS (independent set).

34 Các bài toán nan giải (intractable problems)

3.4. Một số bài toán NP-C khác 35 2. Nguyên liệu: Một đồ thị Gvà một cận dướik,1≤ k ≤ n, n là số đỉnh của

G.

3. Thành phẩm: Yes nếu và chỉ nếu Gcó một tập độc lập gồmk đỉnh. 4. Phép thu từ 3SAT.

Định lý 3.6. Bài toán tập độc lập là NP-C

Chứng minh: Trước tiên dễ thấy rằng bài toán IS∈ NP.

Cho trước đồ thị G= (V, E)và một cận k. Đoán thửk nút và kiểm tra chúng độc lập (có nhiều khả năng chọn k nút nên bài toán là NP).

Tìm cách thu bài toán 3SAT về IS.

GọiE = (e1)(e2)...(em) là một biểu thức 3-CNF. Ta xây dựng từE đồ thị G có 3mnút mà ta sẽ đặt tên là [i, j] với 1≤i ≤m;j = 1,2,3. Nút [i, j]biểu diễn nguyên đề (literal) thứ j trong phân đề (clause)ei.

Thí dụ 3.4. Cho biểu thức 3-CNF

(x1+x2+x3)(¯x1+x2+x4)(¯x2+x3+x5)(¯x3+ ¯x4+ ¯x5)

Hình 3.2. Xây dựng một tập độc lập từ một biểu thức Boole thỏa được có dạng 3-CNF

Mục đích xây dựngGlà dùng các cạnh để buộc mọi tập độc lập cómnút biểu diễn một cách làm thỏa biểu thứcE.

36 Các bài toán nan giải (intractable problems) Có 2 ý tưởng chính ở đây:

1. Ta muốn đảm bảo chỉ có thể chọn 1 nút tương ứng với 1 phân đề đã cho. Cách thực hiện: Đặt các cạnh giữa tất cả các cặp nút trong một cột, nghĩa là chúng ta tạo ra các cạnh([i,1],[i,2]),([i,1],[i,3]) và ([i,2],[i,3])∀i.

2. Ta ngăn không chọn các nút cho tập độc lập nếu chúng biểu diễn các nguyên đề là bù của nhau. Vì thế nếu có 2 nút [i1, j1] và [i2, j2], trong đó một nút biểu diễnxvà nút còn lại biểu diễnx¯thì ta đặt một cạnh giữa 2 nút này. Như thế ta không thể chọn cả 2 nút này cho một tập độc lập.

Cậnk cho đồ thịG được xây dựng bằng 2 quy tắc này chính làm.

Có thể thấy rằng đồ thịGvà cận k có thể được xây dựng từ biểu thứcE trong thời gian tỉ lệ với bình phương chiều dài củaE. Vì thế biến đổiE thànhGlà phép thu thời gian đa thức.

Ta phải chứng minh nó thu đúng đắn 3SAT về IS tức là:E thỏa được⇔ Gcó một tập độc lập với kích thướcm.

Chứng minh:

• Đủ: Đầu tiên nhận xét rằng một tập độc lập không chứa 2 nút từ cùng một phân đề, chẳng hạn[i, j1]và [i, j2], j1 6=j2. Vì thế nếu một tập độc lập với kích thước m nó phải chứa đúng một nút từ mỗi phân đề.

Ngoài ra, tập độc lập có thể không bao gồm các nút tương ứng với cả xvà phủ định x¯của nó.

Vì thế tập độc lập I kích thước m sinh ra một phép gán chân trị T làm thỏa E như sau:

Nếu một nút tương ứng với một biến xthuộc I thì gán T(x) = 1, nếux¯∈I thì gán T(x) = 0. Nếu không có nút nào thuộc I tương ứng với x hoặc x¯ thì gán T(x)tùy ý.

Ta khẳng định: T làm thỏaE vì mỗi phân đề của E đều có nút tương ứng với 1 trong các nguyên đề thuộc I vàT được chọn để nguyên đề đó nhận giá trị đúng qua T.

• Cần: Giả sử Eđược thỏa bằng một phép gán chân trị nào đó, chẳng hạnT. VìT làm cho mỗi phân đề của E đúng nên ta có thể xác định một nguyên đề từ mỗi phân đề đã làm choT đúng. Với một số phân đề ta có thể chọn 2 hoặc 3 nguyên

3.4. Một số bài toán NP-C khác 37 đề và lấy tùy ý một trong chúng. Ta xây dựng một tập I gồm m nút bằng cách lấy ra nút tương ứng với nguyên đề đã được chọn từ mỗi phân đề.

Ta sẽ chứng minhI là một tập độc lập. Các cạnh giữa các nút có nguồn gốc từ cùng một phân đề không thể có cả 2 đầu đều thuộc I vì ta chỉ chọn một nút từ mỗi phân đề. Một cạnh nối một biếnx và phủ định của nóx¯ không thể có cả 2 đầu đều thuộcI do ánh xạT sẽ làm cho một trongxhoặcx¯đúng chứ không cả hai. Kết luận rằngE thỏa được thì Gcó tập độc lập cỡm.

Thí dụ 3.5. Ap dụng cho trường hợp

(x1+x2+x3)(¯x1+x2+x4)(¯x2+x3+x5)(¯x3+ ¯x4+ ¯x5)

Ta chọn được tập độc lập gồm 4 nút biểu diễn 4 nguyên đềx1, x2, x3,x¯4. Xây dựng phép gán chân trị

T(x1) = 1, T(x2) = 1, T(x3) = 1, T(x4) = 0

Gán cho x5 hoàn toàn tùy ý, chẳng hạnT(x5) = 0. Ta thấy T làm thỏaE và tập các nút I chỉ ra một nguyên đề từ mỗi phân đề đã đượcT làm cho đúng.

Bài toán quyết định Yes/No liệu có dễ hơn bài toán tối ưu?

Có thể rất khó tìm một tập độc lập cực đại nhưng nếu choknhỏ ta dễ ràng xác nhận rằng có một tập độc lập với kích thướck. Mặc dù điều đó đúng nhưng ta cũng có thể gặp trường hợp số k bằng kích thước của một tập độc lập cực đại.

Với tất cả các bài toán thông dụng thuộc nhóm NP-C các phiên bản Yes/No và các phiên bản tối ưu hóa đều tương đương nhau về độ phức tạp (có thể hơn kém nhau trong khoảng đa thức).

3.4.3. Bài toán phủ đỉnh (vertex cover)

Phủ đỉnh của một đồ thị là tập các đỉnh sao cho mỗi cạnh liên thuộc với ít nhất một đỉnh thuộc tập này.

Bài toán đặt ra là tìm phủ đỉnh bé nhất.

Bài toán phủ đỉnh và bài toán tập độc lập liên quan chặt chẽ với nhau: Bù của một tập độc lập là một phủ đỉnh và ngược lại.

Thí dụ 3.6. Trong đồ thị trên bù của phủ đỉnh là tập các đỉnh{2,4}. Hai đỉnh này độc lập nhau.

38 Các bài toán nan giải (intractable problems)

Hình 3.3. Thí dụ về phủ đỉnh

Chúng ta sẽ phát biểu bài toán phủ định dưới dạng bài toán quyết định Yes/No: Cho một đồ thịGvà một sốk: 0< k <|v| −1.

Hỏi:∃? phủ đỉnh với số đỉnh≤k. Định lý 3.7. Bài toán phủ đỉnh là NP-C. Chứng minh:

a) Rõ ràng bài toán phủ đỉnh thuộc NP: Lấy một tập k đỉnh và kiểm tra xem đó có phải là phủ đỉnh hay không tức là mỗi cạnh bất kỳ của G có một đầu nằm trong tập đó.

b) Quy dẫn bài toán tập độc lập về bài toán phủ đỉnh. Trước hết nhận xét rằng bù của một tập độc lập là một phủ đỉnh. Chẳng hạn trong hình 3.8 tập các nút không tô màu đỏ tạo thành một phủ đỉnh. Vì các nút đỏ là tập độc lập cực đại nên các nút còn lại tạo thành một phủ đỉnh cực tiểu.

Xây dựng phép quy dẫn: GọiGvới một cận dướik là một thể hiện của bài toán tập độc lập. NếuGcónnút, gọiGvới cận trênn−k là một thể hiện của bài toán phủ đỉnh. Phép biến đổi này có thể thực hiện được trong thời gian tuyến tính. Ta khẳng định rằng:

Gcó tập độc lập kích thướck ⇔Gcó một phủ đỉnh kích thước n−k. Chứng minh:

3.4. Một số bài toán NP-C khác 39

• Đủ: GọiN là tập các nút của Gvà C là phủ đỉnh với kích thước n−k. Ta chứng minh:N\Clà một tập độc lập. Giả sử không phải, nghĩa là tồn tại cặp đỉnhv, w∈N\C sao cho có cạnh nối chúng thuộcG. Thế thì, vìv, w6∈C, cạnh (v, w)∈ Gkhông được phủ bởi C. Mâu thuẫn. Như vậyN \C là tập độc lập với k nút.

• Cần: Giả sửI là tập độc lập có k nút. Ta sẽ chứng minh rằng N \I là một phủ đỉnh cón−k nút. Ta cũng chứng minh bằng phản chứng. Giả sử N \I không phải là phủ đỉnh. Khi đó tồn tại một cạnh (v, w)không được phủ bởi N \I, tức là cảv, w6∈N \I ⇒v, w∈I. Mâu thuẫn vì I là tập độc lập.

3.4.4. Bài toán về chu trình Hamilton

Cho một đồ thịG. HỏiGcó chứa chu trình Hamilton không (tức chu trình qua tất cả các đỉnh mỗi đỉnh đúng một lần).

Bài toán này là NP-C. Chứng minh: Thu từ 3SAT.

3.4.5. Bài toán so khớp 3 chiều (3D-matching)

Dữ kiện: Cho một tập M ⊆W ìXìY, trong đóW, X, Y là 3 tập rời nhau (không có phần tử chung), đều cóq phần tử.

Câu hỏi:M có chứa một đối sánh không? (một đối sánh là một tập conM0 ∈M sao cho |M0|=q và không có hai phần tử nào củaM0 trùng nhau ở bất cứ tọa độ nào).

3.4.6. Bài toán phân hoạch (Partition)

Dữ kiện: Một tập hữu hạnA và một hàm s : A → Z+, tức ∀a ∈ A có một số s(a)∈Z+.

Câu hỏi: Có hay không một tập conA0 ⊆A sao cho

X

a∈A0

s(a) = X

a∈A\A0

s(a)

3.4.7. Bài toán clique

40 Các bài toán nan giải (intractable problems)

Hình 3.4. Phép thu giữa các bài toán NP-C

Câu hỏi: Gcó chứa một clique cỡk (tức đồ thị con đầy đủk đỉnh) Thí dụ đồ thị chứa clique cỡ 3 (đồ thị con chứa các đỉnh1,2,5) Năm 1972 Karp đã chứng tỏ 21 bài toán là NP-C.

3.4.8. Sơ đồ quy dẫn từ bài toán SAT về các bài toán khác3.4.9. Bài toán tô màu đồ thị (Graph k-colorability, k ≥ 3) 3.4.9. Bài toán tô màu đồ thị (Graph k-colorability, k ≥ 3)

Dữ kiện: Đồ thịG= (V, E), số nguyên dươngk.

Câu hỏi: Có cách tô k màu cho các đỉnh của Ghay không, tức là tồn tại hay không một hàmf :V → {1,2, ..., k}sao cho nếu(u, v)∈E thìf(u)6=f(v).

3.4. Một số bài toán NP-C khác 41 Người ta đã chứng minh được rằng bài toán Graph 2-color giải được trong thời gian đa thức, còn tất cả các bài toán Graph k-color với k ≥3đều là NP-C.

3.4.10. Maximum cut problem

Dữ kiện: Cho G= (V, E). Ký hiệu dij là độ dài của cạnh từ đỉnh iđến đỉnhj (cạnheij ∈E).

Câu hỏi: Tìm phân hoạchV thànhA vàB: A∪B =V, A∩B =∅sao cho

X i∈A j∈B dij →max 3.4.11. Một số bài toán NP-C khác 1. Subset-sum Dữ kiện: Các số tự nhiênC1, C2, ..., Cn, K.

Câu hỏi: Tồn tại hay không S ⊂ {1,2, ..., n}sao cho

X

i∈S

Ci =K

2. Bất đẳng thức tuyến tính nguyên

Dữ kiện: Ma trận nguyên A∈Zmìn, vectorb ∈Zm. Câu hỏi: Tồn tại hay không x∈Zn thỏa mãnAx≤b. 3. Bài toán ba lô (knapsack problem) nguyên

Giả sử có một cái ba lô có thể chứa được trọng lượng C (nguyên dương) và n loại đồ vật có trọng lượng s1, s2, ..., sn tương ứng và giá trị sử dụng là p1, p2, ..., pn tương ứng. Các sốsi, pi đều là nguyên dương.

Cho số K.

Hỏi: Tồn tại hay không tập hợp con các đồ vật chứa vào ba lô sao cho tổng giá trị sử dụng ≥ K, cụ thể là có tồn tại hay không một bộ n số nhị phân

42 Các bài toán nan giải (intractable problems) x= (x1, x2, ..., xn), xi ∈ {0,1}sao cho n X i=1 xipi ≥K, n X i=1 xisi ≤W.

4. Bài toán đóng thùng (Bin packing)

Giả sử có một số các thùng có kích thước1vànvật có kích thước tương ứng làs1, s2, ..., sn,0< si ≤1.

ChoK là số nguyên dương.

Có tồn tại cách đóng các đồ vật vàoK thùng không?

3.5. Các bài toán NP-khó (NP-hard)

Định nghĩa 3.4. Ta nóiLlà một bài toán NP-hard nếu nó thỏa mãn điều kiện thứ hai trong định nghĩa NP-C, tức là

∀L0 ∈NP ∃ phép thu đa thứcL0 vềL Như vậy mọi bài toán NP-C đều là NP-khó.

Các bài toán sau đây là NP-hard, nhưng không biết có thuộc NP- không: bài toán cái túi, bài toán đóng thùng.

Lớp các bài toán NP-hard rộng hơn lớp NP-C vì nó bao gồm cả các bài toán thuộc NP, cũng như các bài toán không thuộc NP.

Giả thiết về quan hệ giữa các lớp NP, NP-C và NP-hard Hướng giải quyết các bài toán NP-C hoặc NP-hard

Một phần của tài liệu Giáo trình môn độ phức tạp tính toán (Trang 29)