Uploaded by Hải Nguyễn

Phép dẫn về thời gian đa thức

advertisement
Chứng minh các bài toán thuộc phân lớp NPC
Để chứng minh một bài toán là NP-Complete, ta cần chứng minh
+ Bài toán đấy thuộc phân lớp NP
+ Bài toán đấy được dẫn về từ 1 bài toán khác thuộc phân lớp NPC
Dưới đây là một vài cách chứng minh mình đã có viết đơn giản nhất nhằm giúp các bạn hiểu sơ
sơ và kiếm được 50-70% số điểm hoặc 100% số điểm (nếu thầy dễ) của câu này :v
Nếu muốn điểm cao hơn hoặc muốn hiểu sâu hơn, hãy kết hợp ôn file này, file pptx của thầy và
tìm kiếm trên mạng
Bước 1: Chứng minh bài toán thuộc phân lớp NP
- Để chứng minh bài toán thuộc phân lớp NP ta cần chỉ ra thuật toán để kiểm tra
nghiệm của bài toán trong thời gian đa thức (tùy bài toán)
1.1 Bài toán 3-SAT
Bài toán 3-SAT thì không phải chứng minh vì theo định lý Cook-Levin, 3-SAT
là NPC rồi nên bài toán 3-SAT dùng để dẫn về bài toán khác để chứng minh bài
toán đấy là NP-C hoặc NP-hard
1.2 Bài toán clique
- Input : G=(V,E), k, tập S ⊂ V
- Output : tập đỉnh S là clique và |S| ≥ k hay không ?
- Thuật toán kiểm tra một tập S ⊂ V là 1 clique của G=(V,E) và |S| ≥ k
if (|S| ≥ k)
for (u ∈ S) do
for (v ∈ S\{u}) do
if (u,v) ∉ E
return false
break
Return true;
⇒ độ phức tạp O(n2)
⇒ Bài toán thuộc phân lớp NP
1.3 Bài toán tập độc lập (independent set)
- Thuật toán
- Input : G=(V,E), k, tập I ⊂ V
- Output : Tồn tại tập độc lập có tập đỉnh I và |I| ≥ k hay không ?
Nếu |I| ≥ k, Với mỗi đỉnh trong tập I chúng ta kiểm tra mọi cạnh kề với
đỉnh đó trong đồ thị G để xem cạnh đó có nối với đỉnh nào trong I không.
Nếu có cạnh đó nếu có thì ta kết luận I không phải là tập độc lập của G, còn
không thì I là tập độc lập của G.
⇒ Độ phức tạp O(n2)
⇒ Thuộc phân lớp NP
1.4 Bài toán phủ đỉnh (Vertex cover)
- Input : Đồ thị G=(V,E), k, tập V’
- Output : Tập V’ có là 1 phủ đỉnh và |V’| ≤ k ?
- Thuật toán kiểm tra :
Count =0;
For v ∈ 𝑉′
Xóa tất cả cạnh kề với v trong E
Count = Count +1
If (count = k ) and ( E = ∅ ) return true;
Else return false;
⇒ Độ phức tạp O(n2)
⇒ Thuộc phân lớp NP
1.5 Bài toán chu trình Hamilton
- Input : G = (V,E), tập T ⊂ E
- Output : G’=(T,E) là đồ thị Hamilton không ?
- Thuật toán kiểm tra:
For v ∈ V
If ( v không
⇒ Độ phức tạp O(n2)
⇒ Thuộc phân lớp NP
Bước 2: Chứng minh bài toán được dẫn về từ 1 bài toán NPC (để chứng
minh NP-Hard chỉ cần làm bước 2)
1.1 Bài toán 3-SAT
Theo định lí Cook-Levin, 3-SAT là NPC
1.2 Bài toán clique
3-SAT <p Clique
- Mỗi đỉnh là một biến của một mệnh đề. Nối mỗi đỉnh của các mệnh đề khác
nhau với nhau, ngoại trừ cạnh giữa 𝑥𝑖 với 𝑥̅𝑖 . Nếu ta có m mệnh đề ⇒ ta sẽ có
clique n đỉnh
Ví dụ (𝑥1 v 𝑥
̅̅̅2 v 𝑥3 ) ^ (𝑥1 v 𝑥2 v 𝑥
̅̅̅)
3
1.3 Bài toán tập độc lập (independent set)
Clique <p Independent set
- Từ đồ thị đầy đủ G = (V,E) ta xây dựng một đồ thị mới G’=(V’,E’) có :
+ V’ = V
+ E’= {𝑥 |𝑥 ∉ 𝐸}
→ G’ là đồ thị bù của G
→ Với đồ thị G và G’, giả sử ta có tập S ⊂ V là tập độc lập cực đại của G ⇒
S cũng là clique cực đại của G’
(Nhớ vẽ lấy 1 hình làm ví dụ)
⇒ Clique <p Independent set
1.4 Bài toán phủ đỉnh (Vertex cover)
Independent set <p Vertex cover
- Phủ đỉnh : tập W ⊆ V với mọi đỉnh uv ∈ E : u ∈ W or v ∈ W
- W là phủ đỉnh của đồ thị G ⇔ V – W là tập độc lập của G
- W là phủ đỉnh cực tiểu của đồ thị G ⇔ V- W là tập độc lập cực đại của G
(Nhớ vẽ lấy 1 hình làm ví dụ)
1.5 Bài toán chu trình Hamilton
3-SAT <P Hamiltonian Cycle
- Bước 1:
Với k là số mệnh đề
Xây dựng k đường đi từ P1,P2,...,Pn tượng tự với k biến
Mỗi đường đi chứa 2k nút (vi,1, vi,2, vi,3, ... vi,2k)
Ví dụ : (𝑥1 + 𝑥2 + 𝑥
̅̅̅)(𝑥
̅̅̅2 + 𝑥4 )
3 ̅̅̅
2 + 𝑥3 + 𝑥4 )(𝑥1 + 𝑥
- Bước 2:
Nối các đỉnh từ vi,j-1 tới vi,j (trái sang phải) trên Pi tương ứng với gán xi = true
Nối các đỉnh từ vi,j tới vi,j-1 (phải sang trái) trên Pi tưởng ứng với gán xi = false
Nối đỉnh s với vi,1 và vi,6 với vi+1,1 và vi+1,6 với t
- Bước 3:
Đường thẳng từ t tới s luôn luôn có mặt trong bất kì chu trình hamilton của
đồ thị
- Bước 4:
Thêm cái nút C1, C2, C3,.. thể hiện các mệnh đề
Bước 5
Nếu mệnh đề Cj chứa biến xi
1. Nối Cj với vi,2j-1 và vi,2j
2. Hướng của đường đi từ Cj; vi,2j-1 và vi,2j là :
a. Trái sang phải nếu Cj chứa xi
b. Phải sang trái nếu Cj chứa 𝑥̅𝑖
2. Đồ thị có thể được xây dựng lên trong thời gian đa thức
3. Nếu tồn tại 1 phép gán cho bài toán 3-SAT
Chọn đường đi đi qua Pi từ trái qua phải nếu xi = true và ngược lại nếu
xi = false bao gồm các mệnh đề trong đường đi
Vì đường đi là 1 hướng nên không có nút nào bị lặp lại.
⇒Đường đi thu được là chu trình Hamilton
Download