1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu độ phức tạp một số thuật toán

44 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 44
Dung lượng 720,72 KB

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - Nguyễn Thế Quyền TÌM HIỂU ĐỘ PHỨC TẠP MỘT SỐ THUẬT TOÁN LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội – Năm 2013 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - Nguyễn Thế Quyền TÌM HIỂU ĐỘ PHỨC TẠP MỘT SỐ THUẬT TỐN Chun ngành: Bảo đảm tốn học cho máy tính hệ thống tính tốn Mã số: 60.46.35 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Hữu Ngự Hà Nội – Năm 2013 MỤC LỤC MỞ ĐẦU CHƢƠNG KIẾN THỨC CHUẨN BỊ 1.1 Máy Turing 1.1.1 Máy Turing 1.1.2 Máy Turing tất định 1.1.3 Máy Turing không tất định 1.2 Khái niệm thuật toán 1.2.1 Khái niệm thuật toán 1.2.2 Ví dụ thuật tốn 1.2.3 Luận đề Church-Turing 10 1.3 Độ phức tạp thuật toán 11 1.3.1 Độ phức tạp thời gian 11 1.3.2 Ví dụ cách tính độ phức tạp 12 CHƢƠNG BÀI TOÁN VÀ ĐỘ PHỨC TẠP CỦA BÀI TOÁN 14 2.1 Bài tốn gì? 14 2.2 Một số toán quan trọng 15 2.3 Độ phức tạp toán 20 CHƢƠNG PHÂN LỚP CÁC BÀI TOÁN THEO ĐỘ PHỨC TẠP 21 3.1 Lớp toán P, NP mối quan hệ lớp P lớp NP 21 3.1.1 Lớp P 21 3.1.2 Lớp NP 21 3.1.3 Mối quan hệ lớp P NP 21 3.2 Lớp toán NPC 21 3.2.1 Phép dẫn với thời gian đa thức 21 3.2.2 Lớp toán NPC 22 3.2.3 Mối quan hệ lớp toán P, NP NPC 22 3.2.4 Một số toán lớp NPC 23 1) Bài toán SAT Định lý Cook 23 2) Bài toán 3SATIFIABILITY (3SAT) 30 3) Bài toán 3-DIMENSIONAL MATCHING (3DM) 33 4) Bài toán VERTEX COVER (VC) 37 5) Bài toán CLIQUE 39 6) Bài toán HAMILTON CIRCUIL (HC) 39 7) Bài toán PARTITION 39 8) Bài toán TRAVELING SALEMAN (TSP) 39 KẾT LUẬN 41 TÀI LIỆU THAM KHẢO 42 MỞ ĐẦU Lý thuyết độ phức tạp lĩnh vực trung tâm khoa học máy tính với kết liên quan chặt chẽ với phát triển sử dụng thuật toán Nghiên cứu lý thuyết độ phức tạp giúp hiểu biết sâu sắc khám phá ranh giới vấn để “có thể” tính tốn với nguồn tài nguyên hợp lý Trong luận văn này, trước hết chúng tơi tìm hiểu số khái niệm quan trọng lý thuyết thuật toán thuật toán độ phức tạp thuật toán Trên sở đó, chúng tơi bước đầu tìm hiểu số khái niệm quan trọng lý thuyết độ phức tạp khái niệm toán, độ phức tạp tốn Cuối chúng tơi tìm hiểu lớp phức tạp toán mối quan hệ lớp phức tạp Trong đặc biệt quan tâm đến lớp phức tạp NP-đầy đủ Nội dung luận văn bao gồm ba chương: Chƣơng 1: Trình bày tóm tắt kiến thức trọng tâm lý thuyết thuật toán máy Turing đơn định, máy Turing khơng đơn định, thuật tốn, độ phức tạp thuật tốn Chƣơng 2: Gồm có ba phần trình bày khái niệm tốn, danh sách toán quan trọng khái niệm độ phức tạp tốn Chƣơng 3: Gồm có hai phần trình bày lớp tốn P, NP lớp tốn NP-đầy đủ Để hồn thành luận văn này, nhận giúp đỡ tận tình thầy hướng dẫn – PGS.TS Nguyễn Hữu Ngự bảo góp ý thầy Bộ mơn Tin học, Khoa Tốn – Cơ – Tin học bạn đồng nghiệp Nhân đây, xin cảm ơn thầy cô bạn đồng nghiệp giúp đỡ trình làm luận văn CHƢƠNG KIẾN THỨC CHUẨN BỊ Trước nói thuật tốn, xem xét mơ hình tính tốn thể tốt thuật toán 1.1 Máy Turing (Turing machine) 1.1.1 Máy Turing Gồm có: 1) Tập trạng thái hữu hạn 2) Băng vơ hạn hai phía (về lý thuyết kéo dài tuỳ ý hai phía) 3) Bảng tín hiệu vào, bảng tín hiệu băng đầu đọc-ghi 4) Bảng chuyển trạng thái q  B B B B a1 a2 an B B B Một bước làm việc máy gồm: - Đầu đọc-ghi đọc tín hiệu băng - Căn vào trạng thái tín hiệu đọc băng, đầu đọc-ghi ghi tín hiệu băng, dịch chuyển sang phải sang trái ô chuyển sang trạng thái Quy ước máy bắt đầu làm việc trạng thái trạng thái đầu máy, với input hữu hạn băng, đầu đọc-ghi nằm ký tự bên trái input Các kết trung gian tính tốn lưu băng tổ chức lưu vào trạng thái (nhưng ý số trạng thái máy phải hữu hạn) 1.1.2 Máy Turing tất định (DTM) Có thể định nghĩa cách hình thức máy Turing tất định sau: bộ: M = đó: - : bảng tín hiệu băng (hữu hạn) - : bảng tín hiệu vào (hữu hạn),    - Q: tập trạng thái (trong) (hữu hạn) - F: hàm chuyển F: Q x   Q x  x {L,R} - q0: trạng thái ban đầu (q0  Q) - t1: trạng thái kết thúc (t1  Q) - B: ký tự trắng, B  , B   Ý nghĩa: -  tín hiệu vào để ghi input -  tín hiệu đọc ghi băng Hàm chuyển F(q, a) = (q', a', D) cho bảng sau: a q (q', a', D) - Ban đầu tín hiệu băng B, băng kéo dài vô hạn hai chiều: trái phải Xâu a1a2 qai ak gọi hình trạng máy, ak , qQ, có nghĩa đầu đọc-ghi đọc thứ i, tín hiệu đọc Tại bước, máy trạng thái q, đầu đọc-ghi đọc tín hiệu băng, hình trạng máy có dạng a1a2 ai-1qai ak Theo hàm chuyển F(q, ai) = (q', c, D), máy chuyển sang trạng thái q', ghi c lên băng (thay cho a i), đầu đọc-ghi chuyển sang phải hay sang trái ô tùy theo D R L Ta nói máy M chuyển từ hình trạng: H = a1a2 ai-1qai ak sang hình trạng: H' = a1a2 q'ai-1cai+1 ak D = L H' = a1a2 ai-1cq'ai+1 ak D = R Ký hiệu H  H' Máy làm việc bước gặp hình trạng mà hàm chuyển F(s,a) không xác định gặp trạng thái kết thúc t1 Xâu x (input) bảng tín hiệu  (tức x  *) gọi đoán nhận máy M tồn dãy hình trạng H0, H1, , Hm cho: H0  H1   Hm H0 hình trạng ban đầu, input x ghi băng, đầu đọc-ghi nhìn vào ký tự input, trạng thái máy q0, tức là: H0 = q0a1a2 ai-1ai an với x = a1a2 ai-1ai an Hm có trạng thái t1 Tập N xâu (ngôn ngữ ) thuộc * gọi đoán nhận máy M N = {x | x*, x đoán nhận máy M} Các tốn có nhiều loại: - Đốn nhận tính chất input - Tính tốn giá trị - Chú ý: Hàm chuyển F khơng xác định khắp nơi Máy dừng gặp trạng thái t1 kết thúc (cho trả lời "yes") dừng trạng thái khác t (cho trả lời "no") gặp (s, a) F(s, a) khơng xác định (cũng cho trả lời "no") Tuy nhiên làm cho hàm chuyển F trở thành xác định khắp nơi thêm trạng thái kết thúc phủ định qp, với (s, a) F(s, a) không xác định cho máy chuyển sang trạng thái qp F(s, a) = (qp, , ) Nếu khác ngầm định bảng tín hiệu vào  = {0,1}, chủ yếu ta xét ví dụ tốn đốn nhận Ký hiệu q0 trạng thái đầu, t1 trạng thái kết thúc khẳng định Ví dụ: Máy Turing đốn nhận ngơn ngữ {x | x có độ dài chẵn} B q0 (q1, 0, R) (q1, 0, R) (t1, B, ' ') q1 (q0, 0, R) (q0, 0, R) - Với input 010110 ta có dãy hình trạng: (q0)010110  0(q1)10110  01(q0)0110  010(q1)110  0101(q0)10  01011(q1)0  010110(q0)  010110(t1) trạng thái cuối trạng thái kết thúc đốn nhận t1 1.1.3 Máy Turing khơng tất định (NTDM) Định nghĩa máy Turing tất định, hàm chuyển F hàm đa trị nghĩa F: Q x   2Q x  x {L,R} Tại bước, chuyển sang bước sau khả tùy theo hàm chuyển F Nếu có nhánh đốn nhận input x xem máy đốn nhận input Giả sử F(s, a) = {(si1, ai1, Di1), (si2, ai2, Di2), , (sim, aim, Dim)} tập (có thể rỗng) Với hình trạng H với trạng thái s tín hiệu a đọc máy chuyển đến hình trạng: H  Hi1, H  Hi2, , H  Him Hik có trạng thái sik tín hiệu ghi aik Có thể biểu diễn bước làm việc máy hàng đợi Ví dụ: B q1 (q2,0,L) (t1,' ',' ') q2 (q0,1,R) (q0,1,R) q0 (q1,1,R) Với w = 010 (q0)010 1(q0)10 1(q1)10 111(q0) 111(q1)B (t1) (q2)100 1(q0)00 11(q0)0 11(q1)0 1.2 Khái niệm thuật toán (algorithm) Bài toán xử lý thông tin: Input  Công cụ  Output Với liệu vào (input) cơng cụ tính tốn cho kết theo u cầu tốn Nói chung ta phân biệt số loại toán: - Những tốn đốn nhận tính chất (xét số ngun n có phải ngun tố hay khơng, ) - Những tốn tính giá trị hàm - Những tốn tìm lời giải (tìm đường đồ thị, tìm chu trình Hamilton, ) Để giải tốn cần thuật tốn Thuật tốn cơng cụ xử lý thông tin 1.2.1 Khái niệm Một cách không hình thức thuật tốn việc mơ tả cách xác q trình thực đối tượng để nhằm đạt kết theo yêu cầu cho trước dựa i, j l không thỏa (ngược lại thỏa được) Do đó, 2(p(n)+1)2(v+1) mệnh đề nhóm thực nhiệm vụ chúng Nhóm mệnh đề G1 Các mệnh đề nhóm {Q[i,0], Q[i,1], , Q[i,r]}, ≤ i ≤ p (n) { Q[i, j ] , Qi, j ' }, ≤ i ≤ p(n), ≤ j < j’ ≤ r G2 {H[i,-p(n)], H[i,-p(n)+1], , H[i,p(n)+1]}, ≤ i ≤ p(n) { H [i, j ] , H i, j ' }, ≤ i ≤ p(n), -p(n) ≤ j < j’ ≤ p(n)+1 G3 {S[i,j,0], S[i,j,1], , S[i,j,v]}, ≤ i ≤ p(n), -p(n) ≤ j≤ p(n)+1 { S[i, j, k ] , S i, j, k '}, ≤ i ≤ p(n), -p(n) ≤ j ≤ p(n)+1, ≤ k≤ k’≤ v G4 {Q[0,0]}, {H[0,1]}, {S[0,0,0]}, {S[0,1,k1]}, {S[0,2,k2]}, …, {S[0,n,kn]}, {S[0,n+1,0]}, {S[0,n+2,0]}, …, {S[0,p(n)+1,0]} x = sk sk sk G5 n {Q[p(n),1]} Hình Năm nhóm mệnh đề fL(x) Nhóm lại G6 đảm bảo chuyển đổi từ cấu hình sang cấu hình phù hợp với hàm chuyển  cho M Với (i, j, k, l), ≤ i < p(n), -p(n) ≤ j ≤ p(n)+1, ≤ k ≤ r, ≤ l ≤ v, nhóm gồm có mệnh đề sau: { H [i, j ] , Qi, k  ], S[i, j, l ] , H[i+1, j+ ]} { H [i, j ] , Q[i, k ] ], S[i, j, l ] , Q[i+1, k’]} { H [i, j ] , Q[i, k ] ], S[i, j, l ] , S[i+1, j,l’]} qk  Q-{qy, qN} giá trị , k’, l’ thoả mãn (qk, sl) = (qk’, sl’, ), qk {qY, qN}  = 0, k’ = k l’ = l Khơng khó để thấy 6(p(n))(p(n) + 1)(r + 1)(v + 1) mệnh đề áp đặt hạn chế mong muốn phép gán thoả Vì vậy, ta cho thấy cách xây dựng nhóm mệnh đề từ G1 tới G6 thực nhiệm vụ nói Nếu x  L có tính tốn chấp nhận M x có chiều dài p(n) hơn, tính tốn bắt buộc phép gán phải thoả mãn tất mệnh đề C = G1  G2  G3  G4  G5  G6 Ngược lại, việc xây dựng C phép gán thoả cho C phải tương ứng với tính tốn chấp nhận M x Nó kéo theo fL(x) có phép gán thỏa x  L Tất cịn cần chứng tỏ ngôn ngữ L cố định, fL(x) xây dựng từ x thời gian bị chặn hàm đa thức n = |x| Cho trước L, chọn chương trình NDTM M đốn nhận L thời gian bị chặn đa thức p Giới hạn đa thức việc tính tốn tập biến U tập mệnh đề C suy trực tiếp chứng tỏ Length[fL(x)] bị chặn hàm đa thức n, Length[I] độ dài chuỗi mã hóa thể I theo lược đồ mã hoá hợp lý Hàm Length “hợp lý” cho SAT cho trước, chẳng hạn |U|.|C| Không mệnh đề chứa nhiều 2.|U| literal (đó tổng số literal), số ký hiệu cần thiết để mô tả literal giới hạn đa thức Vì r v cố định trước thêm vào số vào |U| |C|, có |U| = O(p(n)2) |C| = O(p(n)2) Do đó, Length[fL(x)] = |U|.|C| = O(p(n)4), giới hạn hàm đa thức n mong muốn Vì vậy, biến đổi fL tính thuật tốn thời gian đa thức ta kết luận với L  NP, fL biến đổi đa thức từ L SAT Vậy SAT NPđầy đủ 2) Bài toán 3-SATIFIABILITY (3SAT) Bài toán 3SAT biến thể hạn chế tốn SAT mệnh đề chứa ba literal Cấu trúc đơn giản 3SAT làm cho trở thành toán sử dụng rộng rãi để chứng minh kết NP-đầy đủ khác - Đầu vào: Cho tập mệnh đề C = {c1, c2, , cm} dựa tập hữu hạn biến U cho |ci| = với  i  m - Câu hỏi: Có tồn phép gán cho U mà thỏa mãn tất mệnh đề C? Định lý 3SAT NP-đầy đủ i) 3SAT  NP Dễ dàng thấy 3SAT thuộc lớp NP thuật tốn khơng tất định cần đốn phép gán cho biến kiểm tra thời gian đa thức phép gán thỏa tất mệnh đề có literal cho khơng ii) Ta xây dựng phép biến đổi SAT thành 3SAT Giả sử ta có đầu vào SAT I = (U,C) với U = {u1, , un} tập biến C = {c1, , cm} tập mệnh đề U Chúng ta xây dựng phép biến đổi biến đầu vào toán SAT I thành đầu vào toán 3SAT I’ = (U’,C’) Tập C’ chứa mệnh đề có literal tập biến U’, cho C’ thỏa C thỏa Việc xây dựng C' đơn giản cần thay mệnh đề riêng biệt cj thuộc C tập mệnh đề Cj’ “tương đương” thuộc C’, dựa biến U vài biến bổ sung thêm Uj’ sử dụng mệnh đề Cj’ Ta biểu diễn điều sau: m  U '  U  UU 'j   j 1  m C '  U C 'j j 1 Vì thế, ta cần cách xây dựng Cj’ Uj’ từ cj Giả sử cj = {z1, z2, , zk} với zi tất literal dẫn xuất từ biến tập U Cách mà Cj' Uj' xây dựng phụ thuộc vào giá trị k Trường hợp 1: k = 1: Uj' = { yj1, yj2} Cj' = {{z1, yj1, yj2}, {z1, yj1, y j }, {z1, y j , yj2}, {z1, y j , y j }} Trường hợp 2: k = 2: Uj' = {yj1} Cj' = {{z1, z2, yj1}, {z1, z2, y j }} Trường hợp 3: k = 3: Uj' = ; Cj' = {{cj}} Trường hợp 4: k > 3: Uj' = {yji : i k-3} i Cj' = {{z1, z2, yj1)}}  {{ y j , zi+2, yji+1: i k-4}} k 3 {{ y j , zk-1, zk}} Tiếp theo, để chứng minh phép biến đổi đắn, phải chứng tỏ tập C’ thỏa tập C thỏa - C thỏa C’ thỏa được: Giả sử cho C thỏa phép gán t: U  {T,F} Ta chứng tỏ t mở rộng thành phép gán t’: U’  {T,F} thỏa cho C’ Bởi biến U’-U phân chia vào tập Uj’ biến Uj’ xuất mệnh đề thuộc C j’, nên ta cần phép gán t mở rộng thành tập Uj’ mệnh đề Cj’ nào, trường hợp ta cần xác nhận lại tất mệnh đề tập Cj’ tương ứng thỏa Chúng ta làm sau: Với k ≤ 2: mệnh đề Cj’ ln thỏa t Vì mở rộng t tùy ý cho Uj’ (cho t’(y) = T với y  Uj’) Với k = 3: Uj’ rỗng mệnh đề Cj’ thỏa t Với k > 3: Vì t phép gán thỏa cho C, nên phải có số ngun l cho literal zl True t  Nếu z1 z2 True (tức l = l = 2) ta gán giá trị biến bổ sung “False” (t’(yji) = F với ≤ i ≤ k-3)  Nếu zk-1 zk True (tức l = k-1 k) ta gán giá trị biến bổ sung “True” (t’(yji) = T với ≤ i ≤ k-3)  Các trường hợp lại, ta gán giá trị t’(yji) = T với ≤ i ≤ l-2 gán t'(yji) = F với l-1 ≤ i ≤ k-3 Dễ dàng để xác định trường hợp lựa chọn đảm bảo tất mệnh đề Cj’ thỏa được, tất mệnh đề C’ thỏa theo t’ - Ngược lại, t’ phép gán thỏa cho C’, dễ dàng để xác định thu hẹp t’ cho biến U phép gán thỏa cho C Do C’ thỏa C thỏa iii) Phép biến đổi thực thời gian đa thức Có: |U| = n; |C| = m Trường hợp 1: tạo mệnh đề Trường hợp 2: tạo mệnh đề Trường hợp 3: tạo mệnh đề Trường hợp 4: tạo k-1 mệnh đề mới, với k số lượng literal mệnh đề  I Do có tổng cộng m*(k-1) mệnh đề I’ Vì k  2n nên có nhiều 2mn mệnh đề I’ Vì số lượng mệnh đề C’ bị giới hạn hàm đa thức 2mn Do đó, kích thước thể 3SAT bị giới hạn hàm đa thức với kích thước thể SAT Khơng khó để xác định phép biến đổi đa thức 3) Bài toán 3-DIMENSIONAL MATCHING (3DM) Bài toán đối sánh chiều xuất phát từ tốn cổ "Bài tốn nhân": Cho n người đàn ông n phụ nữ, tất chưa lập gia đình với danh sách tất cặp nam nữ sẵn sàng hôn nhân, liệu để xếp n nhân cho tránh chế độ đa thê (đa phu) tất người nhận người chồng (vợ) chấp nhận Tương tự, toán 3DM tập W, X, Y tương ứng với giới tính khác nhau, cặp ba tập M tương ứng với hôn nhân người mà chấp nhận với người tham gia Nhận xét toán 3DM NP-đầy đủ, cịn tốn nhân thơng thường giải thời gian đa thức Bài toán 3DM mơ tả sau: - Đầu vào: Một tập M  W x X x Y; với W, X, Y tập rời có q phần tử - Câu hỏi: M có chứa đối sánh tập M’  M cho |M’| = q khơng có hai phần tử M’ có chung thành phần với nhau? Định lý 3DM NP-đầy đủ Chứng minh: i) 3DM  NP Dễ dàng thấy 3DM thuộc NP, thuật tốn khơng tất định cần dự đốn tập từ tập M có q = |W| = |X| = |Y| ba kiểm tra thời gian đa thức khơng có hai ba có chung thành phần ii) Chúng ta xây dựng phép biến đổi 3SAT 3DM Cho đầu vào 3SAT I = (U,C), với U = {u1, u2, , un} tập biến C = {c1, c2, , cm) tập mệnh đề Chúng ta phải xây dựng phép biến đổi chuyển kiện thành kiện tương ứng toán 3DM gồm tập rời W, X, Y với |W| = |X| = |Y| tập M  W x X x Y cho M có chứa đối sánh C thỏa Tập M chứa ba có thứ tự phân chia vào ba lớp (thành phần) riêng biệt, nhóm lại theo chức dự định chúng là: “truth-setting and fan-out”, “satisfaction testing”, “garbage collection” Thành phần TSFO (truth-setting and fan-out) Mỗi thành phần TSFO tương ứng với biến ui  U, cấu trúc phụ thuộc vào tổng số m mệnh đề C Trong đó, thành phần TSFO cho biến ui bao gồm phần tử "bên trong" ai[j]  X bi[j]  Y, l ≤ j ≤ m, phần tử không xuất ba bên thành phần này, phần tử “bên ngoài" ui[j], u i  j   W, ≤ j ≤ m, phần tử xuất ba khác Các ba tạo nên thành phần chia thành tập sau: Tit = {( u i  j  , ai[j], bi[j]): ≤ j ≤ m} Tif = {( ui[j], ai[j+1], bi[j]): ≤ j < m}  {(ui[m], ai[1], bi[m])} Vì phần tử bên {ai[j], bi[j]): ≤ j ≤ m } không xuất ba bên tập Ti = Tit  Tfi, nên dễ dàng thấy đối sánh M’ bao gồm xác m ba từ tập Ti (hoặc tất ba thuộc Tit , tất thuộc tập Tfi ) Do coi thành phần Ti bắt buộc đối sánh chọn lựa thiết lập ui true hay false Như vậy, đối sánh M'  M xác định phép gán cho U, với biến ui thiết lập true M’ ∩ Ti = Tit Thành phần ST (satisfaction testing) Mỗi thành phần kiểm tra tính thỏa M tương ứng với mệnh đề cj C Nó bao gồm hai phần tử "bên trong" s1[j] X s2[j]Y, phần tử bên j {ui[j], u i : ≤ i ≤ n} xác định literal xuất mệnh đề cj Tập ba tạo nên thành phần định nghĩa sau: j Cj = {(ui[j], s1[j], s2[j]): ui  cj}  {( u i , s1[j], s2[j]): u i  cj} Vì vậy, đối sánh M'  M phải chứa xác ba từ tập Cj Tuy nhiên, điều thực ui[j] (hoặc u i  j  ) literal ui cj ( u i  cj ) không xuất ba thuộc Ti ∩ M’, nghĩa phép gán xác định M thoả mệnh đề cj Thành phần GC (garbage collection) Việc xây dựng hoàn thành thành phần GC lớn G, gồm có phần tử bên g1[k] X g2[k]  Y, ≤ k ≤ m(n-1), phần tử bên ui[j] u i  j  từ W Nó tập ba sau: G = {(ui[j], g1[k], g2[k]),( u i  j , g1[k], g2[k]): ≤ k ≤ m(n-1), ≤ i ≤ n, ≤ j ≤ m} Như cặp g1[k], g2[k] phải ghép với ui[j] u i  j  , không xuất ba thuộc M’ - G Như G đơn đảm bảo rằng, tập M - G thỏa mãn tất ràng buộc thành phần TSFO, tập mở rộng thành đối sánh cho M Tóm lại, thiết lập tập W, X, Y M sau: W = {(ui[j], u i  j ): 1≤ i ≤ n,1 ≤ j ≤ m} X = A  S1  G1 đó: A = {ai[j]: 1≤ i ≤ n,1 ≤ j ≤ m} S1 = {s1[j]: ≤ j ≤ m} G1 = {g1[j]: ≤ j ≤ m(n-1)} Y = B  S2  G2 đó: B = {ai[j]: 1≤ i ≤ n,1 ≤ j ≤ m} S2 = {s1[j]: ≤ j ≤ m} G2 = {g1[j]: ≤ j ≤ m(n-1)} n m  M = UTi   UC j   G j 1  i 1    Chú ý ba thuộc M phần tử thuộc W x X x Y theo yêu cầu Hơn nữa, M chứa 2mn + 3m + 2m2n(n-1) ba, nên dễ dàng thấy M xây dựng thời gian đa thức iii) Bây ta phải phép biến đổi đắn việc chứng minh M chứa đối sánh M’ C thỏa - Chứng minh C thỏa M chứa đối sánh M’ Cho t: U→{T,F} phép gán thỏa cho C Chúng ta xây dựng đối sánh M'  M sau: Đối với mệnh đề cj  C, lấy zj  {ui, u i : ≤ i ≤ n} ∩ cj literal thiết lập giá trị true t (phải tồn t thỏa cj) Một tập M’ có cấu trúc sau    M   UTi t    UTi f  t (ui )T   t (ui ) F  m    Uz j  j , s1  j , s2  j  U G '    j 1 G’ tập G chọn cách xác, bao gồm tất g1[k], g2[k] ui[j] u i  j  lại Dễ dàng kiểm tra lại tập G’ ln chọn kết M ’ đối sánh - Chứng minh M chứa đối sánh M’ C thỏa Giả sử ta có đối sánh M’ thuộc M (với việc xây dựng trên) + Nếu Ti ∩ M’ = Tif t(ui) = False, t( u i ) = True Mặt khác, điều kiện xây dựng đối sánh M’ nên lựa chọn ba thuộc Cj phải chứa u i  j  (vì Tif chứa ba có chứa phần tử ui[j]), nên cj thỏa + Còn Ti ∩ M’ = Tit t(ui) = True, ta lập luận tương tự cj thỏa Do C thỏa 4) Bài toán VERTEX COVER (VC) - Đầu vào: Cho đồ thị G = (V,E) số nguyên dương k thoả mãn k  |V| - Câu hỏi: Tồn hay không tập V ’ V cho |V’|  k cạnh {u, e}  E hai đỉnh u e phải thuộc V’ Định lý VC NP-đầy đủ i) VC  NP Dễ dàng thấy VC thuộc NP, thuật tốn khơng tất định cần dự đoán tập tập đỉnh kiểm tra thời gian đa thức tập có chứa đầu cạnh có kích thước phù hợp ii) Chúng ta xây dựng phép biến đổi 3SAT VC Cho đầu vào 3SAT I = (U,C), với U = {u1, u2, , un} tập biến C = {c1, c2, , cm) tập mệnh đề Chúng ta phải xây dựng đồ thị G = (V,E) số nguyên dương K  |V| cho G có phủ đỉnh kích thước K bé C thoả Với biến ui  U, có thành phần “truth-setting” Ti = (Vi,Ei) với Vi={ui, u i } Ei = {{ui, u i }}, tức hai đỉnh nối cạnh Chú ý phủ đỉnh chứa ui u i để phủ cạnh Ei Với mệnh đề cj  C, có thành phần “satisfaction test” Sj = (Vj’,Ej’), bao gồm đỉnh cạnh kết nối chúng tạo thành tam giác: Vj’ = {a1[j],a2[j],a3[j]} Ej’ = {{ a1[j],a2[j]}, {a1[j],a3[j]}, {a2[j],a3[j]}} Chú ý phủ đỉnh chứa hai đỉnh Vj’ để phủ cạnh Ej’ Phần lại việc xây dựng tập cạnh kết nối Với mệnh đề c j  C, ký hiệu literal c j xj, yj zj Khi cạnh kết nối bắt nguồn từ Sj cho bằng: Ej” = {{a1[j],xj},{a2[j],yj},{a3[j],zj}} Việc xây dựng thể VC hoàn thành cách thiết lập K = n + 2m G = (V,E) đó: n m  V = UVi   UV j'   i 1   j 1 m     j 1   n  i 1    m  E = U Ei   U E 'j   U E "j   j 1  Dễ dàng thấy cách xây dựng thực thời gian đa thức Còn phải chứng tỏ C thoả G có phủ đỉnh kích thước K bé Trước hết, giả sử V’  V phủ đỉnh G với |V’|  K Theo ý V’ phải chứa đỉnh từ T i chứa hai đỉnh từ Sj Như tổng số n + 2m = K đỉnh, nên thực V’ chứa xác đỉnh từ Ti xác hai đỉnh từ Sj Do sử dụng cách mà V ’ giao với thành phần “truth-setting” để thu phép gán t: U{T,F} Chúng ta cần cho t(ui) = T ui V’ t(ui) = F u i V’ Để thấy phép gán thoả tất mệnh đề c jC, ta xem xét ba cạnh Ej” Chỉ có hai cạnh chúng phủ đỉnh thuộc Vj’V’, cạnh chúng phải phủ đỉnh Vi V’ Nhưng điều có nghĩa literal tương ứng ui u i mệnh đề cj theo t, mệnh đề cj thoả t Bởi điều với cj nên suy t phép gán thoả cho C Ngược lại, giử sử t: U{T,F} phép gán thoả cho C Phủ đỉnh tương ứng V’ bao gồm đỉnh từ Ti hai đỉnh từ Sj Đỉnh từ Ti thuộc V’ ui t(ui) = T, u i t(ui) = F Điều đảm bảo ba cạnh Ej” phủ, t thoả cj Vì vậy, ta cần bao gồm V ’ đỉnh cuối từ Sj hai cạnh lại Ej”, phủ đỉnh mong muốn 5) Bài toán CLIQUE - Đầu vào: Cho đồ thị G = (V,E) số nguyên dương k thoả mãn k  |V| - Câu hỏi: Tồn hay không tập V’ V cho |V’|  k mà cặp đỉnh V’ nối cạnh E 6) Bài toán HAMILTON CIRCUIL (HC) Bài tốn chu trình Hamilton tốn xác định xem với đồ thị G = (V,E) cho trước có chứa chu trình Hamilton (chu trình đơn chứa đỉnh G) Bài toán phát biểu dạng toán định sau: - Đầu vào: Cho đồ thị G = (V,E) - Câu hỏi: G có chứa chu trình đơn qua đỉnh hay khơng? 7) Bài tốn PARTITION - Instance: Một tập hữu hạn A “trọng số” s(a)  Z+ cho a  A - Question: Có tồn tập A’  A cho  s(a)   s(a) aA ' a A A ' 8) Bài toán TRAVELING SALEMAN (TSP) Bài toán người bán hàng phát biểu dạng toán đồ thị là: Cho đồ thị G tham số k nguyên, cạnh e G có trọng số nguyên c(e) Câu hỏi đặt có tồn chu trình qua tất đỉnh G (mỗi đỉnh lần) mà tổng trọng số cạnh qua khơng vượt q k khơng? Bài tốn phát biểu dạng toán định sau: - Đầu vào: Cho tập n thành phố C = {c1,…,cm} với khoảng cách d(c i,cj)  Z+ số nguyên dương B - Câu hỏi: Có tồn hoán vị  {1, 2, , m} cho:  m 1    d (c  (i ) , c  (i !) )   d (c  ( m) , c  (1) )  B hay không?  i 1  Ta có sơ đồ để chứng minh số toán NPC sau: SAT 3SAT 3DM PARTITION VC CLIQUE HC TSP Hình Sơ đồ chứng minh số toán NPC KẾT LUẬN Như luận văn này, chúng tơi tìm hiểu số khái niệm quan trọng lý thuyết thuật toán, lý thuyết độ phức tạp phân lớp độ phức tạp toán Trong lý thuyết thuật tốn cịn nội dung trọng tâm thuật tốn thơng dụng độ phức tạp thuật tốn này, Trong lý thuyết độ phức tạp cịn nội dung quan trọng phương pháp giải toán tối ưu tổ hợp thuật toán xấp xỉ, xác suất, heuristics ứng dụng Trong thời gian tới nghiên cứu tiếp nội dung TÀI LIỆU THAM KHẢO Tiếng Việt Nguyễn Hữu Điển, Một số toán thuật toán, NXB Giáo dục, Hà Nội, 2005 Phan Huy Khánh, Giáo trình Lý thuyết tính tốn, ĐH Đà Nẵng, Đà Nẵng, 1999 Tiếng Anh Agrawal, M., Kayal, N and Saxena, N (2002) PRIMES is in P Tech Report Dept of Computer Science and Engineering Indian Inst of Technology Kanpur Ahuja, R.K., Magnanti, T.L and Orlin, J.B (1993) Network Flows Theory, Algorithms and Applications Prentice–Hall Dietzfelbinger, M (2004) Primality Testing in Polynomial Time LNCS 3000 Springer Garey, M.R and Johnson, D.B (1979) Computers and Intractability A Guide to the Theory of NP-Completeness W.H Freeman Homer, S (2001) Computability and Complexity Theory Springer Hopcroft, J.E., Motwani, R and Ullman, J.D (2001) Introduction to Automata Theory, Languages and Computation Addison-Wesley Longman Ingo Wegener (2005) Complexity Theory Springer 10 Martello, S and Toth, P (1990) Knapsack Problems Wiley 11 Motwani, R and Raghavan, P (1995) Randomized Algorithms Cambridge University Press 12 T Cormen, C Leiserson, R Rivest (1990) Introduction to Algorithms, Mc GrawHill ... thuật toán thuật toán độ phức tạp thuật tốn Trên sở đó, chúng tơi bước đầu tìm hiểu số khái niệm quan trọng lý thuyết độ phức tạp khái niệm toán, độ phức tạp tốn Cuối chúng tơi tìm hiểu lớp phức. .. TA(n), có nghĩa độ phức tạp toán B nhỏ độ phức tạp thuật toán A (một cận trên) Để chứng tỏ T B(n)  f(n) (một cận dưới) ta phải chứng minh thuật toán A giải tốn B có độ phức tạp lớn f(n) CHƢƠNG... toán, lý thuyết độ phức tạp phân lớp độ phức tạp toán Trong lý thuyết thuật tốn cịn nội dung trọng tâm thuật tốn thơng dụng độ phức tạp thuật toán này, Trong lý thuyết độ phức tạp nội dung quan trọng

Ngày đăng: 20/05/2021, 14:22

w