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