Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
0,91 MB
Nội dung
NP-Completeness NP-Completeness Nhóm 8: Hoàng Trần Thy Ngọc Nguyễn Duy Thành Trương Thị Ty Thuật toán thời gian đa thức Thuật toán thời gian đa thức • Thuật toán giải một bài toán cụ thể trong thời gian O(T(n)) nếu: mỗi đầu vào i có độ dài n, thuật toán cho kết quả trong thời gian là O(T(n)). • Một bài toán cụ thể giải được trong thời gian đa thức nếu tồn tại thuật toán giải nó trong thời gian O(n k ), k hằng số. Ngôn ngữ Ngôn ngữ Bảng chữ cái A là tập hữu hạn các ký tự. Ví dụ: A = {0,1} Từ là 1 dãy các chữ cái của A. Một ngôn ngữ L trên A là 1 tập các từ trên A. Ví dụ: L={00, 01, 10, 11} Từ rỗng: ε Ngôn ngữ rỗng: Ø Ngôn ngữ gồm tất cả các từ trên A: A* Bài toán - ngôn ngữ Bài toán - ngôn ngữ E = {0,1}. Bài toán quyết đinh Q Ngôn ngữ L = {x Є E*: Q(x) = 1} • Thuật toán A chấp nhận một từ x Є E*: nếu với đầu vào x, A cho kết quả A(x) = 1. • A loại bỏ x nếu A(x) = 0. • Ngôn ngữ L được chấp nhận bởi A: L={x Є E*: A(x)=1} – L được chấp nhận bởi A trong thời gian đa thức nếu có hằng k sao cho mọi từ x có độ dài n được A chấp nhận trong thời gian O(n k ) Ngôn ngữ được quyết định Ngôn ngữ được quyết định • Một ngôn ngữ L được quyết định bởi thuật toán A nếu: – x thuộc L A chấp nhận x – x không thuộc L A loại bỏ x. • L được quyết định bởi A trong trong thời gian đa thức nếu có hằng số k sao cho mọi từ x có độ dài n được A quyết định trong thời gian O(n k ) Lớp P Lớp P • Định nghĩa: Lớp P bao gồm tất cả các bài toán giải được bởi thuật toán đơn định trong thời gian đa thức (tức là tồn tại thuật toán giải quyết nó với thời gian chạy đa thức). – thuật toán đơn định (deterministic algorithm): là thuật toán có kết quả thực hiện mỗi phép toán được xác định duy nhất. • P = {L ngôn ngữ trên E: có thuật toán A quyết định L trong thời gian đa thức} • Định lý: P = {L ngôn ngữ trên E: có thuật toán A chấp nhận L trong t.g.đ.t.} Thuật toán kiểm chứng Thuật toán kiểm chứng • Thuật toán kiểm chứng A: là một thuật toán gồm hai biến, một biến bình thường là một xâu nhị phân đầu vào x, và một biến là xâu nhị phân y (được gọi là xâu kiểm chứng). • Thuật toán A kiểm chứng x nếu tồn tại xâu kiểm chứng y để A(x,y) =1. • Ngôn ngữ L được kiểm chứng bởi A là: L = {x Є E*: tồn tại y Є E*: A(x,y)=1 } Lớp NP Lớp NP • Định nghĩa: Lớp NP bao gồm tất cả các bài toán có thể giải được bởi thuật toán không đơn định trong thời gian đa thức – Thuật toán không đơn định (nondeterministic algorithm): là thuật toán có kết quả không phải là một giá trị được xác định duy nhất mà là một tập hữu hạn các giá trị. • Lớp NP là lớp các ngôn ngữ được kiểm chứng trong thời gian đa thức. • L Є NP tồn tại thuật toán 2 biến thời gian đa thức A và hằng số c sao cho: L= {x Є E*: tồn tại y Є E*, |y|=O(|x| c ): A(x,y)=1} Ta nói: A kiểm chứng L trong thời gian đa thức • Dễ dàng nhận thấy P ⊆ NP. • Khi nào mà P = NP ???? Lớp co-NP Lớp co-NP - L Є co-NP Σ*\L Є NP - 4 trường hợp có thể xảy ra: Phép quy dẫn (Reducibility) Phép quy dẫn (Reducibility) • Ngôn ngữ L1 qui dẫn được về ngôn ngữ L2 trong thời gian đa thức (Ký hiệu: L1 ≤p L2) nếu tồn tại một hàm f tính được trong thời gian đa thức. f: E* -> E* sao cho x Є L1 f(x) Є L2 f: được gọi là hàm quy dẫn [...]... NOT, cổng AND và cổng OR (Cổng vào x và y, cổng ra z) Circuit satisfiability • Đầu vào (Circuit input): các dây không nối với một phần tử vào nào • Đầu ra (Circuit output): các dây không nối với một phần tử ra nào Ta xét các mạch (circuit) chỉ có một đầu ra: Một phép gán giá trị của một mạch là một tập các giá trị đầu vào Một mạch là thỏa mãn (satisfiable) nếu có một phép gán giá trị đầu vào sao cho... Tìm f: E* -> E* , x Є L’ , y Є L x -> f(x) = y - Chứng minh f thỏa mãn: x Є L’ f(x) Є L với mọi x Є Σ* - Tìm thuật toán F để tính hàm quy dẫn f và chứng minh F chạy trong thời gian đa thức Circuit satisfiability • Phần tử bool (Boolean combinational element) là các phần tử có đầu vào và ra thuộc {0,1} (0: sai, 1: đúng) – Một phần tử bool dùng để tính 1 hàm boolean đơn, được gọi là một cổng logic... NP- đầy đủ (NP-completeness) • Ngôn ngữ L là NP-đầy đủ (Ký hiệu: NPC) nếu: 1 L Є NP 2 Với mọi L’ Є NP thì L’ ≤p L • Ngôn ngữ L là NP-khó (NP-hard) nếu L thỏa mãn điều kiện 2 (nhưng không nhất thiết thoả điều kiện 1) P vs NP • Định lý: Nếu có một bài toán NP-đầy đủ nào giải được trong t.g.đ.t thì P = NP Nếu có một bài toán trong NP nào mà không giải được trong t.g.đ.t thì tất cả các bài toán NP-đầy... sinh ra bởi thuật toán rút gọn, có vertex cover V – V’ = {w, z} Bài toán chu trình Hamilton • Cho đồ thị vô hướng G=(V,E), một chu trình Hamilton trong G là một chu trình đơn và đi qua tất cả các đỉnh của G (qua mỗi đỉnh đúng một lần, trừ đỉnh đầu trùng đỉnh cuối) • Đồ thị G được gọi là đồ thị Hamilton nếu nó có chu trình Hamilton, nếu không nó được gọi là đồ thị không phải Hamilton • Bài toán chu trình... không ? • HAM-CYCLE = {: G là đồ thị Hamilton} • Đã chứng minh được: HAM-CYCLE Є NP-đầy đủ Bài toán Người bán hàng • Bài toán: Cho đồ thị đầy đủ G và có trong số c(i,j) cho mỗi cạnh (i,j) Tìm chu trình Hamilton sao cho tổng chi phí nhỏ nhất • TSP = {: G=(V,E) là một đồ thị đầy đủ, c:V*V → Z, k ∈ Z và G có một đường đi TSP với chi phí k} • Đã chứng minh được: TSP Є NP-đầy đủ ... NP-đầy đủ NP-complete problems • Muốn chứng minh một bài toán thuộc lớp NP-đầy đủ đều được quy về từ NP-đầy đủ của CIRCUIT-SAT Bài toán clique • Một Clique trong một đồ thị vô hướng G = (V, E), V’ ⊆ V, mỗi cặp đỉnh trong V’ đều có cạnh E Hay nói cách khác, clique là một đồ thị con đầy đủ của G Kích thước của clique là số đỉnh nó chứa (=|V’|) • Bài toán clique: Tìm một clique có kích thước lớn nhất trong... {(G, k): G là một đồ thị với một clique có kích thước k} • Đã chứng minh được: CLIQUE Є NP-đầy đủ Bài toán vertex-cover • Một vertex cover trong một đồ thị vô hướng G = (V, E), V’ ⊆ V, nếu cạnh (u, v) ∈ E thì u ∈ V’ hoặc v ∈ V’ (hoặc cả 2) Kích thước của vertex cover là số đỉnh nó chứa (=| V’|) • Bài toán vertex-cover: là tìm một vertex cover có kích thước nhỏ nhất trong một đồ thị cho trước • Giả sử... là chuỗi nhị phân được ánh xạ từ mạch C • Bổ đề: CIRCUIT-SAT Є NP • Bổ đề: CIRCUIT-SAT là NP-khó • Định lý: CIRCUIT-SAT Є NP-đầy đủ SAT • Một trạng thái của bài toán SAT là một công thức boolean Φ gồm: 1 Các biến boolean: x1, x2, … 2 Các liên kết boolean: các hàm boolean một hoặc hai biến: AND, OR, NOT, ->, 3 Các dấu ngoặc • Một công thức Φ là satisfiable (thỏa mãn được) nếu có một phép gán giá trị... một phép gán giá trị đầu vào sao cho đầu ra của mạch là 1 Ví dụ • Bài toán Circuit satisfiability: “Cho một mạch bool gồm các cổng AND, OR, NOT; nó có thỏa mãn hay không ?” • Độ dài của mạch là số các phẩn tử tổ hợp bool + số các dây CIRCUIT-SAT • Định nghĩa: CIRCUIT-SAT= {: C có thể thỏa được một mạch bool} là chuỗi nhị phân được ánh xạ từ mạch C • Bổ đề: CIRCUIT-SAT Є NP • Bổ đề: CIRCUIT-SAT . t.g.đ.t.} Thuật toán kiểm chứng Thuật toán kiểm chứng • Thuật toán kiểm chứng A: là một thuật toán gồm hai biến, một biến bình thường là một xâu nhị phân đầu vào x, và một biến là xâu nhị phân y. NP-Completeness NP-Completeness Nhóm 8: Hoàng Trần Thy Ngọc Nguyễn Duy Thành Trương Thị Ty Thuật toán thời gian đa thức Thuật toán thời gian đa thức • Thuật toán giải một bài toán cụ. bài toán giải được bởi thuật toán đơn định trong thời gian đa thức (tức là tồn tại thuật toán giải quyết nó với thời gian chạy đa thức). – thuật toán đơn định (deterministic algorithm): là thuật