Sơ đồ quy dẫn từ bài toán SAT về các bài toán khác

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 38)

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

Tìm lời giải gần đúng (gần tối ưu) chấp nhận được (bằng các thuật giải heuristic - thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người).

Chương 4

Các thuật toán xấp xỉ giải các bài toán NP-C

4.1. Một số khái niệm

Như đã nói ở chương trước, việc tìm nghiệm của các bài toán NP-C với kích cỡ đầu vào n tương đối lớn là rất khó khăn, thường là không khả thi vì độ phức tạp có thể nói là hàm mũ. Đây là những bài toán nan giải hay còn gọi là bất trị. Vì thế thay cho việc tìm lời giải đúng (lời giải tối ưu) người ta phải tìm nghiệm gần đúng (lời giải gần tối ưu) mà có thể chấp nhận được.

• Giải thuật xấp xỉ: Xét trường hợp dữ kiệnIcủa bài toán tối ưuP. GọiF∗(I)

là giá trị của lời giải tối ưu đối với I. Giải thuậtGđược gọi là giải thuật xấp xỉ cho bài toán P nếu nó luôn tạo ra một lời giải khả thi (feasible solution) mà giá trị Fˆ(I)của lời giải này gần vớiF∗(I)đối với mọi dữ liệuI của bài toánP.

• Giải thuật xấp xỉ tuyệt đối: Giải thuật G được gọi là giải thuật xấp xỉ tuyệt đối cho bài toán P ⇔với mọi trường hợpI củaP tồn tại hằng sốK

|F∗(I)−Fˆ(I)| ≤K

ở đây Fˆ(I)là giá trị của lời giải do Gtạo ra đối với dữ kiệnI.

• Giải thuật f(n)-xấp xỉ: Giải thuật Gđược gọi là giải thuật f(n)-xấp xỉ cho bài toán P ⇔với mọi dữ kiệnI của bài toánP thì

|F∗(I)−Fˆ(I)|

ˆ

F(I) ≤f(n), với n là kích thước củaI.

44 Các thuật toán xấp xỉ giải các bài toán NP-C

4.2. Giới thiệu một số thuật toán xấp xỉ

4.2.1. Bài toán phủ đỉnh bé nhất (thuộc NP-C)

Input: Đồ thị vô hướngG= (V, E). Output: Phủ đỉnh bé nhất.

Thuật toán gần tối ưu: Procedure ApproxVertexCover C:=∅ {C là tập phủ đỉnh gần tối ưu}

E :=Tập các cạnh củaG WhileE 6=∅ do

Chọn (u, v)là một cạnh bất kỳ

C :=C∪ {u, v} {kết nạp 2 đỉnh u, v vào phủ đỉnhC}

Loại bỏ khỏiE cạnhuv và mọi cạnh liên thuộc với uhoặcv End do

Return(C)

4.2.2. Giải thuật tham lam giải các bài toán tối ưu hóa thuộcloại NP-C loại NP-C

Giải thuật tham lam là một heuristic. GrA (Greedy Algorithm) không phải luôn luôn cho lời giải tối ưu. Thường nó chỉ cho lời giải gần tối ưu. Khi nó cho lời giải tối ưu thì việc chứng minh tính đúng đắn của thuật toán cũng không đơn giản.

Để mô tả chính xác GrA cần mô tả chính xác môi trường trong đó các bài toán tối ưu đặt ra. Trong các bài toán tối ưu trong ngữ cảnh GrA người ta có:

- Tập (danh sách) các ứng viên, thí dụ, các nút, các cạnh trong đồ thị. - Tập các ứng viên đã sử dụng.

- Một cách (predicate/solution) để kiểm tra liệu một tập các ứng viên đã cho có lời giải (không nhất thiết là tối ưu) hay không?

- Một hàm lựa chọn (selection function) để chọn các ứng viên chưa được sử dụng. - Hàm mục tiêu gán giá trị cho các lời giải.

4.3. Các thuật toán gần đúng 45

4.3. Các thuật toán gần đúng

4.3.1. Heuristic đối với bài toán phủ đỉnh

Bài toán: Cho đồ thịG = (V, E). Tìm tập đỉnh C nhỏ nhất phủ Gtheo nghĩa nếu cạnh uv ∈E ⇒u∈C hoặcv ∈C.

Thuật toán tham lam: Input: Đồ thịG= (V, E).

Output: PhủC củaGgần với phủ nhỏ nhất. begin

C :=∅;

while E 6=∅do

Chọn trong V đỉnh có bậc cao nhất, loại nó ra khỏi Gvà bổ sung vàoC. end;

Vì mục đích của ta là phủ tất cả các cạnh củaGbởi số ít đỉnh nhất nên chiến lược chọn trên mỗi bước một đỉnh phủ được nhiều cạnh nhất là hoàn toàn chấp nhận được. Tất nhiên vì bài toán là NP-C nên không hy vọng là thuật giải này hiệu quả để đạt được tập phủ đỉnh bé nhất. Câu hỏi là tập đỉnh tìm được gần với tập đỉnh tối ưu đến mức nào?

áp dụng giải thuật trên cho đồ thị sau

Đầu tiên chon một trong các đỉnha1, a2 hoặca3 có bậc bằng 5. Giả sử ta chọn a1, a2rồia3. Cuối cùng làc1, c2, c3, c4 vàc5. Như vậy phủ đỉnh gồm 8 đỉnh. Nhưng phủ đỉnh tối ưu chỉ gồm 5 đỉnh là {b1, b2, b3, b4, b5}nếu mở rộng thí dụ này và xét đồ thị với nđỉnh loạia,n+ 2đỉnh loạibvàn+ 2đỉnh loạic. Theo giải thuật 1 ta tìm được phủ gồm 2n+ 2đỉnh, nhưng phủ tối ưu chỉ gồmn+ 2đỉnh. Vìn không giới nội nên sai số có thể đạt gần tới 100%.

Phải chăng đây là phương pháp xấu nhất của giải thuật tham, hay có thể có sai số lớn hơn?

Xét đồ thị

Đầu tiên chọna7 với deg(a7) = 5 lớn nhất. Sau khi loại a7 thì a6 có bậc lớn nhất (bậc 4) rồi a5 (bậc 3),... Trên mỗi bước trong số các đỉnh có bậc lớn nhất có một đỉnh loại a, sau đó được loại bỏ. Cuối cùng phủ đỉnh được bổ sung các đỉnh loại c. Kết quả là ta được phủ đỉnh của G gồm 13 đỉnh, trong khi phủ tối ưu chỉ gồm 6 đỉnh {b1, b2, b3, b4, b5, b6}. Như vậy sai số vượt quá 100%.

46 Các thuật toán xấp xỉ giải các bài toán NP-C Để tổng quát hóa phản ví dụ trên đầu tiên ta cần hiểu cấu trúc của nó. Có thể xem nó như 6 cạnh cibi(i = 1,6), được bổ sung thêm các đỉnh loại a một cách thích hợp.

Đầu tiên 6 cạnh loạibđược phân thành 3 cặp và các đỉnh của mỗi cặp được nối với một đỉnh loạia. Sau đó các đỉnh loạib được chia thành hai bộ ba và tất cả các đỉnh của mỗi bộ ba nối với một đỉnhamới. Cũng làm như vậy với mỗi bộ bốn, bộ năm...

Thuật toán 2

input và output như thuật toán 1. begin

c:=∅;

whileE 6=∅do

Chọn trong E cạnh bất kỳ(u, v), rồi loại bỏ các đỉnhu, v từGvà bổ sung nó vàoC

end;

Định nghĩa 4.1. Giả sử A là bài toán tối ưu với hàm giá trịclà nguyên dương,A là thuật toán cho giá trị fA(I) đối với dữ kiện I, lời giải tối ưu là fˆ(I). Khi đó thuật toánAđược gọi là thuật toán -xấp xỉ đối với bài toán A nếu∃≥0sao cho

c(fA(I))−c( ˆf(I))

cfˆ(I) ≤ ∀I

Thí dụ: Thuật toán 2 là thuật toán 1-xấp xỉ, thuật toán 1 không phải là-xấp xỉ

∀ > 0, vì sai số tương đối của nó đối với các bài toán riêng biệt có thể lớn hơn hằng số bất kỳ. Để mô tả trường hợp xấu nhất của thuật toán đôi khi người ta lấy =(n). Thí dụ nếunlà số đỉnh trong bài toán phủ đỉnh người ta chỉ ra rằng thuật toán 1 làlnn-xấp xỉ. Có nghĩa là với mọi đồ thị G với n đỉnh thuật toán cho tập phủC thỏa mãn

|C| − |Cˆ|

|Cˆ| ≤lnn,

trong đóCˆ là phủ tối ưu.

4.3.2. Bài toán TSP

Sử dụng các ý tưởng của mục trước vào bài toán này. Mục đích: xây dựng thuật toán hiệu quả cho kết quả gần đúng.

4.3. Các thuật toán gần đúng 47 Xét ma trận cỡnìncác khoảng cách[dij], dij >0. Như thường lệ ta giả thiết dij =dji và dii= 0. Ta nói ma trận(dij)thỏa mãn bất đẳng thức tam giác nếu

dij +djk ≥dik ∀1≤i, j, k ≤n.

Bất đẳng thức này thỏa mãn nếu dij là khoảng cách thông thường giữa 2 điểm

(xi, yi)và(xj, yj):

dij =

q

(xi−xj)2+ (di −dj)2

Có thể có các ma trận (dij)khác thỏa mãn bất đằng thức tam giác.

Bài toán: Hãy tìm cách nhận số tiền S đã cho dùng ít tờ tiền nhất với mệnh giá khác nhau.

4.3.3. Thuật toán tham giải bài toán chọn đồng tiền

input: Tổng số tiềnS, tập các mệnh giá M ={m1, m2, ..., mn}.

i) Sắp xếp các mệnh giá theo thứ tự giảm dần. Giả sử đó làm1 > m2 > ... > mn. ii) Nếu mệnh giá bé nhất mn > S thì bài toán không có lời giải. Thuật toán kết

thúc.

Nếu khác (tức là mn ≤ S) thì chọn các đồng tiền theo thứ tự mệnh giá giảm cho đến khi đủ S hoặc không thể chọn thêm.

begin

k1 = [S/m1](số đồng tiền mệnh giám1). b = 0

fori= 2 ton b =b+ki−1mi−1

Si = S − b (số tiền còn lại sau khi đã chọn các đồng tiền mệnh giá m1, ..., mi−1)

ki = [Si]/mi ( số đồng tiền mệnh giámi) end;

48 Các thuật toán xấp xỉ giải các bài toán NP-C Bước Mệnh giámi Số đồng tiền Tổng giá trị đã có Giá trị còn lại

1 50 5 250 48 2 20 2 290 8 3 10 0 290 8 4 5 1 295 3 5 2 1 297 1 6 1 1 298 0

Thuật toán cho lời giải tối ưu

Thí dụ 4.2. S = 40, M ={30,20,5,2}

Bước mi ki Tổng giá trị đã có Giá trị còn lại

1 30 1 30 10

2 20 0 30 10

3 5 2 40 0

Tổng cộng: 3 tờ tiền

Phương án tối ưu hơn: 2 tờ, mỗi tờ mệnh giá 20. Thí dụ 4.3. S = 6

Thuật toán tham sau khi chọn 1 tờ mệnh giá 5 không thể chọn tiếp được, trong khi để có giá trịS= 6 có thể dùng 3 tờ mệnh giá 2.

Kết luận: Như vậy thuật toán tham không phải khi nào cũng cho lời giải tối ưu. Nhưng khi tập dữ liệu lớn thì thuật toán nhanh chóng cho lời giải tối ưu hoặc gần tối ưu.

4.3.4. Bài toán ba lô nguyên (0-1)

Giả sử ba lô có dung lượng làW. Có các vậtb1, ..., bnvới dung lượng wi và giá trịpi (profit). Xếp các vật vào ba lô sao cho đạt tổng giá trị lớn nhất (giả thiết là các vật không thể chia nhỏ).

Ký hiệuxi là biến quyết định (loại 0-1):

xi =

(

1 nếu chọn vậtbi

0 nếu khác Khi đó bài toán được phát biểu như sau:

Tìm vectorx= (x1, x2, ..., xn), xi ∈ {0,1}sao choPn

i=1pixi →maxvới ràng buộcPn

4.3. Các thuật toán gần đúng 49

4.3.5. Các phương pháp tham (GrM) đối với bài toán ba lô 0-1

GrM dựa trên việc đặt các vật vào ba lô từng cái một. Các chiến lược chọn vật đặt vào ba lô:

* Greedy-by-profit: Tại mỗi bước chọn trong các vật còn lại vật có giá trị lớn nhất (với điều kiện dung lượng của ba lô cho phép).

* Greedy-by-weight: Tại mỗi bước chọn vật có trọng lượng bé nhất trong các vật còn lại. Đặt càng nhiều vật vào ba lô càng tốt.

* Greedy-by-profit-density: Tại mỗi bước chọn trong số các vật còn lại vật có mật độ giá trị di =pi/wi lớn nhất. Thí dụ 4.4. Cho các vật trong bảng và W = 100. i wi pi di =pi/wi 1 100 40 0.4 2 50 35 0.7 3 45 18 0.4 4 20 4 0.2 5 10 10 1.0 6 5 2 0.4 * Greedy-by-profit-density Step 0:x1 =x2 =...=x+ 6 = 0 Bước Biến Σwixi Σpixi 1 x5 = 1 10 10 2 x2 = 1 60 45 3 x6 = 1 65 47 4 x4 = 1 85 51 * Greedy-by-profit Start:x1 =x2 =...=x+ 6 = 0 Bước Biến Σwixi Σpixi 1 x1 = 1 100 40 * Greedy-by-weight Bước Biến Σwixi Σpixi 1 x6 = 1 5 2 2 x5 = 1 15 12 3 x4 = 1 35 16 4 x3 = 1 80 34

50 Các thuật toán xấp xỉ giải các bài toán NP-C Nhận xét 1. Greedy-by-profit-density tốt hơn theo profit hoặc theo weight nhưng còn xa mới tới giá trị tối ưu khiW = 100và profit = 55.

Bảng dưới đây trình bày 4 lời giải

i wi pi di G-profit G-weight G-density Optimal solution

1 100 40 0.4 1 0 0 0 2 50 35 0.7 0 0 1 1 3 45 18 0.4 0 1 0 1 4 20 4 0.2 0 1 1 0 5 10 10 1.0 0 1 1 0 6 5 2 0.4 0 1 1 1 Total weight 100 80 85 100 Total profit 40 34 51 55

Nhận xét 2. Bài toán ba lô 0-1 là bài toán NP-C, do đó có thể không có lời giải tối ưu.

Tài liệu tham khảo

[1] Trần Đức Quang (biên dịch) Cơ sở lý thuyết tính toán, Nhà XB Đại học quốc gia TP Hồ Chí Minh, 2003.

[2] Nguyễn Văn Ba Lý thuyết ngôn ngữ và tính toán, Nhà XB Đại học quốc gia Hà nội, 2006.

[3] Nguyễn Hữu Điển, Một số vấn đề về thuật toán, Nhà XB Giáo dục, Hà nội, 2006.

[4] Hopcroft, John E.; Rajeev Motwani, Jeffrey D. Ullman, Introduction to Au- tomata Theory, Languages and Computation, 1st edition, Addison-Wesley, 1979.

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 38)