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.