Định nghĩa: Bài toá nA được gọi là co-NP-đầy đủ nếu bài toán phủ định của A là NP-đầy đủ.

Một phần của tài liệu Giới thiệu về trình biên dịch (Trang 28 - 31)

2. LỚP NP-ĐẦY ĐỦ.

2.12.Định nghĩa: Bài toá nA được gọi là co-NP-đầy đủ nếu bài toán phủ định của A là NP-đầy đủ.

Những khái niệm khoá của file dữ liệu và khoá của sơ đồ quan hệ đóng vai trò rất quan trọng trong việc xử lý dữ liệu. Chúng dùng để tìm kiếm các bản ghi và

nhờ có chúng người ta mới tìm cách tiến hành xử lý dữ liệu được. Dưới đây là một bài toán co-NP-đầy đủ liên quan đến việc so sánh giữa hai tập khoá của sơ đồ quan hệ và file dữ liệu.

Gottlob và Libkin đã chỉ ra rằng bài toán phần bù giới hạn các tập con (SDC- Subset delimiter complementarity) sau là co-NP-đầy đủ.

2.13. Định lý (G. Gottlob − L. Libkin, 1990): Bài toán sau là co-NP-đầy đủ: Cho một tập hữu hạn T, hai họ P={P1, …, Pn} và Q={Q1, …, Qm} các tập con của T. một tập hữu hạn T, hai họ P={P1, …, Pn} và Q={Q1, …, Qm} các tập con của T. Kiểm tra xem với mọi A⊂T có tồn tại Pi để Pi⊂A hoặc có Qj để A⊂Qj, với 1≤i≤n, 1≤j≤m.

Gottlob và Libkin cũng chứng minh rằng nếu Q1, …, Qm là một hệ Sperner trên T thì bài toán trên vẫn là co-NP-đầy đủ.

Bài toán SDC này sẽ được chứng tỏ chuyển đa thức về bài toán dưới đây. Ký hiệu Lr và Ls tương ứng là tập tất cả các khoá của quan hệ r và sơ đồ quan hệ s. Bài toán kiểm tra Lr⊂Ls hay không cũng là co-NP-đầy đủ.

2.14. Định lý (J. Demetrovics − V.Đ. Thi, 1993): Bài toán sau là co-NP-đầy đủ: Cho quan hệ r và sơ đồ quan hệ s = (U, F), kiểm tra xem Lr có là tập con của Ls Cho quan hệ r và sơ đồ quan hệ s = (U, F), kiểm tra xem Lr có là tập con của Ls hay không.

Chứng minh: Đối với mỗi A⊂U, ta kiểm tra rằng A là hoặc không là một khoá của r bằng một thuật toán đa thức. Từ thuật toán tìm bao đóng A+ và định nghĩa khoá của sơ đồ quan hệ, ta cũng có thể kiểm tra trong thời gian đa thức A là hoặc không là khoá của s. Do đó ta chọn tuỳ ý một tập con A⊂U sao cho A là khoá của r nhưng không là khoá của s. Như vậy, vấn đề của ta thuộc co-NP.

Xét bài toán SDC với tập hữu hạn T và hai họ P={P1, …, Pn}, Q={Q1, …, Qm}, ởđây Q là một hệ Sperner trên T. Ký hiệu

P’ = {Pi∈P | không tồn tại Pjđể Pj⊂Pi, 1≤i, j≤n}.

Rõ ràng P’ là tập các phần tử nhỏ nhất của P và P’ là một hệ Sperner trên T. Từ P ta có thể tính P’ trong thời gian đa thức theo |P| và |T|. Dễ thấy {T, P’, Q} là một thể hiện tương đương của {T, P, Q}. Từ đó ta có thể giả thiết rằng P là một hệ Sperner trên T. Ta sẽ chứng minh rằng bài toán SDC được dẫn về bài toán của ta bằng một thuật toán thời gian đa thức.

Đặt U = T, s = (U, F), ở đây F = {P1→U, …, Pn→U}.

Đặt M = {Qi \ {a} | i=1, 2, …, m và a∈U} = {M1, …, Mt}. Xây dựng quan hệ r = {h0, h1, …, ht} như sau:

Với mỗi a∈U, h0(a)=0; hi(a)=0 nếu a∈Mi và hi(a)=i trong trường hợp ngược lại, với i=1, 2, …, t.

Rõ ràng r và s được xây dựng trong thời gian đa thức theo kích thước |T|, |P| và |Q|. Có thể thấy rằng Fr và s = (U, F) là dạng chuẩn BCNF.

Do s là BCNF nên với mỗi A⊂U, ta có A+=A hoặc A+=U. Từ định nghĩa của khoá, đối với mỗi khoá A của s đều có một Pi sao cho Pi⊂A, ởđây 1≤i≤n.

Có thể thấy rằng Q là tập phản khoá của r. Do Fr là BCNF nên với mỗi A⊂U, HFr(A)=U hoặc HFr(A)=A, ở đây HFr(A)={a∈U | (A, {a})∈Fr}. Từ định nghĩa phản khoá của r, ta thấy A là khoá của r khi và chỉ khi với mọi i=1, 2, …, m, A⊄Qi.

Vậy Lr⊂Ls khi và chỉ khi với mỗi A⊂T, với mỗi i=1, 2, …, m, A⊄Qi thì có một Pj để Pj⊂A. Từ đây ta thấy rằng bài toán SDC được dẫn về bài toán của ta bằng một thuật toán thời gian đa thức.

Một phần của tài liệu Giới thiệu về trình biên dịch (Trang 28 - 31)