Tiểu luận Phân tích và thiết kế thuật toán NP-ĐẦY ĐỦ (NP-Completeness)

48 700 2
Tiểu luận Phân tích và thiết kế thuật toán NP-ĐẦY ĐỦ (NP-Completeness)

Đ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

ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC TIỂU LUẬN PHÂN TÍCH VÀ THIẾT KẾT THUẬT TOÁN Đề tài: NP-ĐẦY ĐỦ (NP-Completeness) Giảng viên hướng dẫn: TS. Hoàng Quang Học viên thực hiện: Nhóm 5 Trương Nữ Thùy Duyên Trần Hoài Nhân Trần Văn Hòa Huỳnh Thị Kim Ngân Đoàn Thanh Hòa Lớp Khoa học máy tính Khoá 2009-2011 Huế, tháng 11/2009 MỤC LỤC ĐẠI HỌC HUẾ 1 MỤC LỤC 2 PHẦN I: TỔNG QUAN 1 PHẦN II: NỘI DUNG 6 3. NP-ĐẦY ĐỦ VÀ PHÉP RÚT GỌN (NP-COMLPETENESS AND REDUCIBILITY): 17 3.1. Sự rút gọn (Reducibility): 17 3.2. NP-đầy đủ (NP-completeness): 19 PHẦN I: TỔNG QUAN Phần lớn các thuật toán chúng ta đã học là các thuật toán thời gian đa thức (polynomial-time algorithms) : trên các đầu vào có kích cỡ n, thời gian thực hiện trong trường hợp xấu nhất là O(n k ) với một hằng số k . Quả rất tự nhiên khi ta tự hỏi rằng: có phải tất cả các bài toán đều có thể giải trong thời gian đa thức? Câu trả lời là không. Chẳng hạn, đó là các bài toán, như “bài toán Halting” nổi tiếng của Turing, không thể giải được bằng bất kỳ máy tính nào, bất kể cung ứng bao nhiêu thời gian. Cũng có các bài toán có thể giải được nhưng không phải với thời gian O(n k ) với bất kỳ hằng số k. Nói chung, chúng ta xem các bài toán có thể giải được bằng các thuật toán thời gian đa thức là “dễ trị” và các bài toán đòi hỏi thời gian siêu đa thức là “khó trị”. Chủ đề của chương này là một lớp các bài toán thú vị được gọi là các bài toán “NP-đầy đủ (NP-complete)", mà tình trạng của nó là một ẩn số. Chưa có thuật toán thời gian đa thức nào được khám phá cho bài toán NP đầy đủ, cũng như chưa có ai có thể chứng minh rằng thuật toán không phải thời gian đa thức có thể tồn tại đối với bất kỳ bài toán nào trong số chúng. Cái gọi là P ≠ NP này đã từng là một trong những bài toán nghiên cứu mở gây phức tạp nhất, sâu nhất trong khoa học máy tính lý thuyết được đưa ra vào năm 1971. Một khía cạnh khó khăn riêng của các bài toán NP-đầy đủ là xem chúng giống như các bài toán mà có các thuật toán thời gian đa thức. Trong mỗi cặp của bài toán, một là có thể giải được bằng thời gian đa thức và mặc khác là NP-đầy đủ, nhưng sự khác nhau không đáng kể giữa các bài toán xuất hiện trong : * Các đường đi đơn dài nhất và ngắn nhất (Shortest vs. longest simple paths) : chúng ta thấy rằng, chúng ta có thể tìm thấy các đường đi ngắn nhất từ một nguồn đơn trong một đồ thị có hướng G = (V, E) với thời gian O(V E). Kết thúc đường đi đơn dài nhất giữ hai đỉnh là NP đầy đủ. * Chu trình Hamilton và Euler (Euler tour vs. hamiltonian cycle) : Một chu trình Euler của một kết nối của đồ thị có hướng G = (V, E) là một chu trình đi ngang qua mỗi đỉnh của G chính xác một lần, mặc dù nó có thể thăm một đỉnh hơn một lần. Chúng ta có thể tìm thấy các cạnh của chu trình Euler với thời gian O(E). Một chu trình Hamilton của một đồ thị có hướng G = (V, E) là một chu trình đơn mà chứa mỗi đỉnh trong V. Xác định khi một đồ thị có hướng có một chu trình Hamilton là NP-đầy đủ. * Thỏa được 2-CNF và 3-CNF (2-CNF satisfiability vs. 3-CNF satisfiability) : Một công thức boolean bao gồm các biến mà các giá trị là 0 hoặc 1; boolean liên kết như ∧ (AND), ∨ (OR), and ¬ (NOT); và dấu ngoặc đơn (). Một công thức boolean là thỏa được nếu có một vài chỉ định của các giá trị 0 và 1 đến các biến của nó mà do nó định giá đến 1. Chúng ta sẽ định nghĩa các thuật ngữ hình thức hơn sau chương này, nhưng không hình thức, một công thức boolean là trong k dạng chuẩn tắc hội (conjunctive normal form), hoặc k-CNF, nếu nó là AND của các mệnh đề OR của chính xác k các ___________________ NPC 1 Trình bày: nhóm 5 biến hoặc các phủ định của chúng. Ví dụ, một công thức boolean (x 1 ∨ ¬x 2 ) ∧(¬x 1 ∨ x 3 ) ∧ (¬x 2 ∨¬x 3 ) là trong 2-CNF. (Nó có chỉ định thỏa được x 1 = 1, x 2 = 0, x 3 = 1). Đó là một thuật toán thời gian đa thức để xác định khi một công thức 2-CNF thỏa được, nhưng như chúng ta sẽ thấy ở chương này, sự xác định khi một công thức 3-CNF thỏa mãn là NP-đầy đủ. NP đầy đủ và các lớp P và NP : Qua chương này, chúng ta sẽ đề cập đến 3 lớp bài toán : P, NP và NPC, lớp cuối cùng là các bài toán NP-đầy đủ. Chúng ta mô tả các thông tin này và sẽ định nghĩa chúng một cách hình thức như sau : * Lớp P chứa các bài toán có thể giải được bằng thời gian đa thức. Đặc biệt hơn, chúng là các bài toán có thể giải được với thời gian O(n k ) với một số hằng số k, mà n là kích cỡ vào của bài toán. * Lớp NP chứa các bài toán có thể “xác minh (verifiable)" bằng thời gian đa thức. Nghĩa là nếu chúng ta đưa ra một "chứng chỉ (certificate)" của một lời giải, thì chúng ta có thể xác minh rằng chứng chỉ đó là đúng với thời gian đa thức với kích cỡ vào của bài toán. Chẳng hạn, trong bài toán chu trình Hamilton, cho một đồ thị có hướng G = (V, E), một chứng chỉ có thể là một chuỗi <v 1 , v 2 , v 3 , , v |V| > của các cạnh |V|. Dễ dàng kiểm tra bằng thời gian đa thức mà (v i , v i+1 ) ∈E với i = 1, 2, 3, , |V| - 1 và (v |V| , v 1 ) ∈E. Một ví dụ khác, đối với thỏa được 3-CNF, một chứng chỉ có thể sẽ là một chỉ định của các giá trị đến các biến. Chúng ta có thể dễ dàng kiểm tra bằng thời gian đa thức mà chỉ định này thỏa được công thức boolean. Bất kỳ bài toán nào thỏa được trong P thì cũng thỏa được trong NP, nếu khi một bài toán thỏa được trong P thì có thể giải được nó trong thời gian đa thức ngay cả khi không bị đưa ra một chứng chỉ. Chúng ta sẽ chính thức hóa khái niệm này sau chương này, nhưng bây giờ chúng ta có thể tin rằng P ⊆ NP. Câu hỏi đặt ra là liệu có hay không có P là một tập con thích hợp của NP. Thật tình, một bài toán nằm trong lớp NPC và chúng ta đề cập đến nó như là NP-đầy đủ - nếu nó nằm trong NP và nó như là “khó” như đối với bất kỳ bài toán nào trong NP. Chúng ta sẽ định nghĩa một cách hình thức nó có nghĩa sẽ khó như bất kỳ bài toán nào trong NP trong chương này. Trong khi đó, chúng ta sẽ phát biểu mà không chứng minh nếu bất kỳ bài toán NP-đầy đủ có thể giải được bằng thời gian đa thức thì mỗi bài toán NP-đầy đủ có một thuật toán thời gian đa thức. Phần lớn các nhà khoa học máy tính lý thuyết tin rằng các bài toán NP-đầy đủ đó là khó trị, khi đưa ra nhiều bài toán NP-đầy đủ mà đã nghiên cứu cho đến nay- không có một nghiên cứu nào khám phá được một giải pháp thời gian đa thức- nó sẽ làm kinh ngạc thật sự nếu tất cả chúng có thể giải được bằng thời gian đa thức. Tuy nhiên, đưa ra nổ lực còn quá xa để chứng minh rằng các bài toán NP-đầy đủ là khó trị- không có một kết luận lôgic- chúng ta không thể loại trừ khả năng mà các bài bài toán NP- đầy đủ trong thực tế là có thể giải được bằng thời gian đa thức. Để trở thành một người thiết kế thuật toán giỏi, bạn phải hiểu các nguyên lý cơ bản của lý thuyết NP-đầy đủ. Nếu bạn có thể thiết lập một bài ___________________ NPC 2 Trình bày: nhóm 5 toán như NP-đầy đủ, bạn đưa ra bằng chứng tốt cho tính khó trị của nó. Như một kỹ sư, bạn sẽ sử dụng tốt hơn thời gian của bạn cho việc phát triển một thuật toán xấp xỉ hoặc việc giải quyết một trường hợp đặc biệt dễ trị, khá hơn việc tìm kiếm một thuật toán nhanh mà giải quyết bài toán một cách chính xác. Hơn nữa, nhiều bài toán hấp dẫn dường như không khó hơn việc phân loại, nghiên cứu đồ thị hoặc mạng luồng thực tế là NP-đầy đủ. Vì thế, nó quan trọng trở nên quen với lớp các bài toán đặc biệt này. Khái quát các bài toán NP-đầy đủ : Các phương pháp kỹ thuật chúng ta sử dụng để biểu diễn một bài toán riêng biệt là NP-đầy đủ khác với các phương pháp kỹ thuật đã sử dụng qua hầu hết cuốn sách này để thiết kế và phân tích các thuật toán. Có một lý do cơ bản cho sự khác biệt này là : trong cách biểu diễn một bài toán sẽ là NP-đầy đủ, chúng ta làm một phát biểu về cách nó là khó không theo cách dễ. Chúng ta không cố gắng chứng tỏ tình trạng của một thuật toán hiệu quả, nhưng cố gắng hơn rằng thuật toán không hiệu quả là tồn tại như nhau. Chúng ta dựa vào 3 khái niệm chính để biểu diễn một bài toán sẽ là NP-đầy đủ : * Các bài toán quyết định và các bài toán tối ưu : Nhiều bài toán thú vị là các bài toán tối ưu (optimization problems), bằng cách mỗi lời giải khả thi có một giá trị phù hợp và chúng ta mong ước tìm một lời giải khả thi với giá trị tốt nhất. Chẳng hạn, trong một bài toán mà chúng ta gọi đường đi ngắn nhất (SHORTEST-PATH), chúng ta cho một đồ thị vô hướng G và các đỉnh u và v, chúng ta mong ước tìm đường đi từ u đến v mà sử dụng các cạnh ít nhất. NP-đầy đủ áp dụng trực tiếp không tối ưu hóa các bài toán. Tuy nhiên, để các bài toán quyết định, câu trả lời là đơn giản "có" hoặc "không". Mặc dù biểu diễn cho thấy rằng một bài toán là NP-đầy đủ giới hạn chúng ta đến lĩnh vực của các bài toán quyết định, đó là một mối quan hệ thuận tiện giữa các bài toán tối ưu và các bài toán quyết định. Chúng ta thường có thể gieo một bài toán tối ưu như một bài toán bài toán quyết định liên kết bởi một giới hạn trên giá trị sẽ được tối ưu. Ví dụ, đối với đường đi ngắn nhất (SHORTEST-PATH), một bài toán quyết định liên kết mà chúng ta gọi ĐƯỜNG ĐI (PATH), là khi, cho một đồ thị có hướng G, các đỉnh u và v, và một số nguyên k, một đường đi tồn tại từ u đến v bao gồm tất cả k cạnh. Mối quan hệ giữa một bài toán tối ưu và bài toán quyết định liên kết của nó làm việc trong sự ủng hộ của chúng ta khi chúng ta cố gắng chỉ ra rằng bài toán tối ưu là “khó”. Bởi vì bài toán quyết định là dùng trong một bối cảnh “dễ” hoặc ít nhất “không khó". Như một ví dụ đặc biệt, chúng ta có thể giải quyết ĐƯỜNG ĐI (PATH) bằng cách giải quyết ĐƯỜNG ĐI NGẮN NHẤT(SHORTEST-PATH) và sau đó so sánh số các cạnh trong đường đi ngắn nhất tìm thấy đến giá trị của bài toán quyết định tham số k. Nói cách khác, nếu một bài toán tối ưu là dễ, bài toán quyết định liên kết nó cũng là dễ. Bắt đầu bằng một phương pháp mà có nhiều liên quan đến NP-đầy đủ, nếu chúng ta có thể cung cấp bằng chứng mà một bài toán quyết định là khó, chúng ta cũng cung cấp bằng chứng mà bài toán tối ưu liên kết nó là khó. Vì ___________________ NPC 3 Trình bày: nhóm 5 thế, ngay cả khi nó giới hạn sự chú ý đến các bài toán quyết định, lý thuyết của NP-đầy đủ thường liên quan đến nhiều các bài toán tối ưu. * Các phép rút gọn (Reductions) : Khái niệm trên cho thấy rằng một bài toán là không khó hoặc không dễ hơn các ứng dụng khác thậm chí khi cả hai bài toán là các bài toán quyết định. Chúng ta dẫn thuận tiện của ý kiến này tại phần lớn mỗi chứng minh NP-đầy đủ, như sau : Chúng ta hãy xem như là một bài toán quyết định A, mà chúng ta sẽ giải quyết trong thời gian đa thức. Chúng ta gọi dữ liệu vào đến một bài toán riêng biệt một trường hợp của vấn đề đó; chẳng hạn, trong ĐƯỜNG ĐI (PATH), một instance có thể là một đồ thị đặc biệt G, các cạnh đặc biệt u và v của G và một số nguyên đặc biệt k. Bây giờ cho rằng đó là một bài toán quyết định khác biệt B, mà chúng ta sẵn sàng biết cách để giải quyết bằng thời gian đa thức. Cuối cùng , cho rằng chúng ta có một thủ tục mà biến đổi mất kỳ instance α của A vào một số instance β của B theo các tính chất sau : 1. Sự biến đổi theo thời gian đa thức. 2. Các trả lời là như nhau. Đó là, trả lời cho α is "có" khi và chỉ khi trả lời cho β cũng là "có." Hình 1. Dùng một thuật toán rút gọn thời gian đa thức để giải quyết một bài toán quyết định A trong thời gian đa thức, cho một thuật toán quyết định thời gian đa thức đối với bài toán B khác. Bằng thời gian đa thức, chúng ta biến đổi một trường hợp α của A vào một β của B, chúng ta giải quyết B bằng thời gian đa thức và sử dụng trả lời đối với β như trả lời đối với α . Chúng ta gọi một thủ tục như thế là một thuật toán rút gọn (reduction algorithm) thời gian đa thức và, như hình 1., biểu diễn nó cung cấp cho chúng ta một cách để giải quyết bài toán A bằng thời gian đa thức : a. Cho một instance α của bài toán A, sử dụng một thuật toán rút gọn thời gian đa thức để biến đổi nó đến một instance β của bài toán B. b. Chạy thuật toán quyết định thời gian đa thức cho B trong instance β . c. Sử dụng trả lời cho β như trả lời cho α . Theo mỗi bước mất thời gian đa thức , tất cả ba bước cùng thực hiện, vì thế chúng ta có một cách để quyết định trên α trong thời gian đa thức. Nói cách khác, bằng việc rút gọn giải quyết bài toán A để giải quyết bài toán B, chúng ta sử dụng tính “dễ thuyết phục (easiness)" của B để chứng minh tính dễ thuyết phục của A. Sự lấy lại mà NP-đầy đủ là cách biểu diễn một bài toán khó hơn một bài toán dễ, chúng ta sử dụng các phép rút gọn thời gian đa thức trong cách trái ngược để biểu diễn một bài toán là NP-đầy đủ. Chúng ta hãy lấy ý tưởng một bước xa hơn và biểu diễn cách chúng ta có thể sử dụng các phép rút gọn thời gian đa thức để biểu diễn rằng không một thuật toán thời ___________________ NPC 4 Trình bày: nhóm 5 gian đa thức có thể tồn tại cho một bài toán đặc biệt B. Cho rằng chúng ta có một bài toán quyết định A mà chúng ta luôn biết rằng thuật toán thời gian không đa thức có thể tồn tại. Bây giờ chúng ta có thể sử dụng một chứng minh đơn giản bởi sự trái ngược để chỉ ra rằng thuật toán thời gian không đa thức có thể tồn tại cho B. Mặc khác cho rằng, B có một thuật toán thời gian đa thức. Sau đó, sử dụng phương pháp biểu diễn ở hình 1, chúng ta sẽ có một cách để giải quyết bài toán A bằng thời gian đa thức, mà các trái ngược của chúng ta đều được chấp nhận là đúng mà có thuật toán thời gian không đa thức cho A. Đối với NP-đầy đủ, chúng ta không thể thừa nhận rằng hoàn toàn có một thuật toán thời gian không đa thức cho A. Phương pháp chứng minh là tương tự, tuy nhiên, trong đó chúng ta chứng minh rằng bài toán B là NP-đầy đủ trên sự tuyệt đối mà bài toán A cũng là NP-đầy đủ. Một bài toán NP-đầy đủ đầu tiên (A first NP-complete problem) : Vì kỹ thuật rút gọn dựa trên một bài toán có sẵn biết NP-đầy đủ để chứng minh một bài toán NP-đầy đủ khác, chúng ta cần một bài toán NP-đầy đủ đầu tiên. Bài toán đó chúng ta sẽ sử dụng là bài toán thỏa được mạch (circuit-satisfiability problem), mà chúng ta đã cho một mạch kết nối giá trị (boolean combinational circuit) gồm có các cổng VÀ (AND), HOẶC (OR) và cổng PHỦ ĐỊNH (NOT), chúng ta hy vọng khi mà có bất kỳ tập giá trị các dữ liệu vào đến mạch này mà các lý do các dữ liệu ra của nó là 1. Chúng ta sẽ chứng minh rằng bài toán đầu tiên này là NP-đầy đủ trong phần III. ___________________ NPC 5 Trình bày: nhóm 5 PHẦN II: NỘI DUNG Chương này chúng ta nghiên cứu các khía cạnh của NP-đầy đủ dựa vào sự phân tích các thuật toán. Gồm 5 phần: 1) Chúng ta chú ý đến khái niệm của “bài toán (problem)” và định nghĩa độ phức tạp lớp P của thời gian đa thức có thể giải được các bài toán. Chúng ta cũng xem xét các khái niệm này có phù hợp với khuôn khổ (framework) của lý thuyết ngôn ngữ hình thức (formal) hay không? 2) Định nghĩa lớp NP của các bài toán thỏa được mà các giải pháp có thể thực hiện bằng thời gian đa thức. Từ đó đặt ra câu hỏi P ≠ NP không? 3) Biểu diễn các quan hệ giữa các bài toán có thể nghiên cứu qua thời gian đa thức “các phép rút gọn”. Nó định nghĩa NP-đầy đủ và phát thảo một chứng cứ mà một bài toán được gọi là NP-đầy đủ “ thỏa được mạch” (“circuit satisfiability“). Tìm một bài toán NP-đầy đủ. 4) Biểu diễn các bài toán khác có thể chứng minh NP-đầy đủ đơn giản bằng phương pháp luận của các phép rút gọn. Phương pháp luận này đã được minh hoạ bằng cách biểu diễn hai bài toán thoả được công thức là NP-đầy đủ. 5) Sự đa dạng của các bài toán chỉ ra NP-đầy đủ. 1. THỜI GIAN ĐA THỨC (POLYNOMIAL TIME): Chúng ta bắt đầu nghiên cứu NP-đầy đủ bằng khái niệm của thời gian đa thức có thể giải quyết được các bài toán. Nhìn chung các bài toán này đã đề cập là dễ vận dụng đối với Triết học chứ không phải Toán học, bởi các lý do. Chúng ta có thể đưa ra 3 lý lẽ hỗ trợ: - Thứ nhất, mặc dù có lý khi xem bai toán yêu cầu thời gian θ(n 100 ) là khó trị, song có rất ít bài toán thực tiễn mà yêu cầu thời gian theo thứ tự như một đa thức bậc cao. Các bài toán tính toán được theo thời gian đa thức đã gặp trong thực tế thường yêu cầu ít thời gian hơn nhiều. Thậm chí nếu hiện tại thuật toán cho một bài toán có thời gian chạy tốt hơn sẽ sớm được tìm ra. - Thứ hai, đối với nhiều mô hình tính toán hợp lý, một bài toán có thể đã được giải quyết bằng thời gian đa thức trong một mô hình này có thể được giải quyết bằng thời gian đa thức trong một mô hình khác. Ví dụ, lớp các bài toán thỏa được trong thời gian đa thức bằng máy truy cập ngẫu nhiên nối tiếp được dùng thường xuyên trong cuốn sách này giống như lớp bài toán giải được trong thời gian đa thức trên máy Turing trừu tượng. Nó cũng giống lớp bài toán có thể giải quyết bằng thời gian đa thức trong một máy tính song song, cho dù số lượng các bộ xử lý tăng trưởng theo đa thức với kích cỡ đầu vào. - Thứ ba, lớp các bài toán thời gian đa thức giải được có các tính chất bao đóng chính xác, bởi vì các đa thức đã đóng dưới phép cộng, phép nhân và phép hợp. Ví dụ, nếu kết xuất một thuật toán thời gian đa thức được dẫn vào một thuật toán thời gian đa thức khác, thuật toán phức hợp này là đa thức. ___________________ NPC 6 Trình bày: nhóm 5 Nếu một thời gian đa thức khác tạo một hằng số gọi đến thời gian đa thức các thủ tục con, thời gian chạy của thuật toán phức hợp là đa thức. 1.1. Các bài toán trừu tượng (Abstract problems): Để hiểu lớp các bài toán giải được theo thời gian đa thức, trước hết chúng ta phải có một khái niệm hình thức của một “bài toán” là gì? Chúng ta định nghĩa một bài toán trừu tượng Q là một hệ thức nhị phân trên một tập I các minh dụ (instances) của bài toán và một tập S các nghiệm của bài toán. Chẳng hạn, một minh dụ đối với đường đi ngắn nhất là một bộ ba chứa 1 đồ thị và 2 đỉnh. Một nghiệm là một dãy các đỉnh trong đồ thị, có thể biểu thị dãy rỗng mà không tồn tại đường đi. Bài toán đường đi ngắn nhất chính nó là hệ thức kết hợp từng minh dụ của mỗi đồ thị và 2 đỉnh với một lộ trình ngắn nhất trong đồ thì nối hai đỉnh. Vì các đường đi ngắn nhất này là không nhất thiết phải duy nhất, một minh dụ đã cho có thể có nhiều hơn một nghiệm. Cách trình bày này của một bài toán trừu tượng là chung hơn so với yêu cầu của các mục tiêu của chúng ta. Để đơn giản, lý thuyết về NP-đầy đủ giới hạn sự chú ý đến các bài bài toán quyết định : có một nghiệm có/ không. Trong trường hợp này, chúng ta có thể xem một bài toán quyết định trừu tượng dưới dạng một hàm ánh xạ từ tập minh dụ I đến tập nghiệm {0,1}. Ví dụ, một bài toán quyết định liên quan đến đường đi ngắn nhất (SHORTEST- PATH) là bài toán đường đi mà chúng ta thấy trước đây. Nếu i= <G, u, v, k> là một minh dụ của bài toán đường đi ngắn nhất, thì PATH (i) = 1 (yes) nếu một đường đi ngắn nhất từ u đến v có tại hầu hết k cạnh và ngược lại PATH (i) = 0 (no). Nhiều bài toán trừu tượng không phải là bài toán quyết định mà là bài toán tối ưu, mà một vài giá trị đều phải nhỏ nhất hoặc lớn nhất. Để áp dụng lý thuyết về NP đầy đủ cho các bài toán tối ưu hóa, ta phải áp đổi lại chúng thành các bài toán quyết định. Thông thường để áp đổi lại một bài toán tối ưu hóa, ta áp đặt một cận trên giá trị sẽ được tối ưu hóa. Nói chung, nếu có thể nhanh chóng giải một bài toán tối ưu hóa, ta cũng có thể nhanh chóng giải một bài toán quyết định có liên quan của nó. Do đó, nếu một bài toán tối ưu hóa là dễ thì bài toán quyết định liên quan của nó cũng dễ. 1.2. Các phép mã hóa (encodings): Nếu một chương trình máy tính giải quyết một bài toán trừu tượng, bài toán các trường hợp phải được trình bày bằng một cách mà chương trình hiểu rõ. Phép mã hóa một tập S của các đối tượng trừu tượng là một ánh xạ e từ S đến tập của các chuỗi nhị phân. Ví dụ, chúng ta làm quen với mã hóa các số tự nhiên N = {0,1,2,3,4, } như các chuỗi { 0,1,10,11,100, }. Sử dụng mã hóa này, e(17) = 10001. Bất cứ một ai đã xem xét các phép biểu diễn máy tính về các ký tự trên bàn phím ắt quen với bảng mã ASCII hoặc EBCDIC. Trong bảng mã ASCII, mã hóa của A là 1000001. Thậm chí một đối tượng ghép có thể được mã hóa như một chuỗi nhị phân bằng cách kết nối các phép biểu diễn của các bộ phận cấu tạo của nó. Các hình đa giác, các đồ thị, các hàm, các cặp có thứ tự, các chương trình- Tất cả có thể mã hóa dưới dạng các chuỗi nhị phân. ___________________ NPC 7 Trình bày: nhóm 5 Như vậy, một thuật toán máy tính mà “giải quyết” một vài bài toán quyết định trừu tượng thực tế chấp nhận một mã hóa của minh dụ bài toán như dữ liệu vào. Chúng ta gọi một bài toán mà tập minh dụ là tập của các chuỗi nhị phân một bài toán cụ thể. Chúng ta nói rằng một thuật toán giải quyết một bài toán cụ thể với thời gian O(T(n)) nếu, khi được cung cấp một minh dụ bài toán i có độ dài n= |i|, thuật toán này có thể tạo ra nghiệm trong thời gian tối đa O(T(n)). Do đó, một bài toán cụ thể có thể giải quyết thời gian đa thức, nếu tồn tại một thuật toán để giải quyết nó với thời gian O(n k ) cho một vài hằng số k. Bây giờ chúng ta có thể định nghĩa hình thức lớp P như tập các bài toán quyết định cụ thể giải được thời gian đa thức. Chúng ta có thể sử dụng các phép mã hóa để ánh xạ các bài toán trừu tượng đến các bài toán cụ thể. Đưa ra một một bài toán quyết định trừu tượng Q ánh xạ một tập minh dụ I vào{0,1}, một mã hóa e: I → {0,1}* có thể được dùng để cảm sinh một bài toán quyết định cụ thể có liên quan, mà chúng ta biểu thị bởi e(Q). Nếu nghiệm cho một minh dụ bài toán trừu tượng i thuộc I là Q(i) ∈ {0,1}, thì nghiệm cho minh dụ bài toán cụ thể e(i) ∈{0,1}* cũng là Q(i). Với tư cách là một tính chất kỹ thuật, có thể một số chuỗi nhị phân không biểu diễn một bài toán minh dụ trừu tượng có ý nghĩa. Để thuận tiện, chúng ta sẽ thừa nhận rằng bất kỳ chuỗi nào như vậy được ánh xạ tùy ý đến 0. Vì thế, bài toán cụ thể tạo ra cùng các nghiệm như bài toán trừu tượng trên các minh dụ chuỗi nhị phân biểu thị cho các phép mã hóa của các minh dụ bài toán trừu tượng. Chúng ta hãy mở rộng định nghĩa của thời gian đa thức có thể giải quyết được từ các bài toán cụ thể đến các bài toán trừu tượng bằng cách sử dụng các phép mã hóa như cầu nối, nhưng chúng ta sẽ định nghĩa độc lập bất kỳ mã hóa riêng biệt. Đó là, khả năng giải quyết một bài toán không được phụ thuộc vào cách mã hóa bài toán. Một cách đáng tiếc, nó phụ thuộc khá nhiều vào việc mã hóa. Chẳng hạn, cho rằng một số nguyên k đã được cung cấp dưới dạng dữ liệu vào một thuật toán và cho rằng thời gian chạy của thuật toán là θ(k). Nếu số nguyên k đã đưa ra theo đơn phân- một chuỗi k 1’s- sau đó thời gian chạy của thuật toán là O(n) bằng độ dài n đặt vào, là thời gian đa thức. Tuy nhiên nếu chúng ta sử dụng nhị phân đại diện của số nguyên k, sau đó đặt vào độ dài là n=[lg k ] + 1. Trong trường hợp này, thời gian chạy của thuật toán là θ(k) = θ(2 n ), là số mũ tại kích cỡ của dữ liệu vào. Vì thế, sự phụ thuộc vào việc mã hóa, thuật toán chạy hoặc bằng thời gian đa thức hoặc bằng thời gian siêu đa thức. Việc mã hóa của một bài toán trừu tượng là khá quan trọng để chúng ta hiểu thời gian đa thức. Chúng ta thực sự không thể nói về việc giải quyết một bài toán trừu tượng mà không chỉ rõ một mã hóa đầu tiên. Việc mã hóa thực sự của một bài toán tạo ra một vài sự khác biệt đối với bài toán mà có thể đã giải quyết bằng thời gian đa thức. Chẳng hạn, biểu các số nguyên theo cơ số 3 thay vì nhị phân không ảnh hưởng khi một bài toán có thể giải quyết bằng thời gian đa thức, vì một số nguyên đã được biểu diễn trong cơ số 3 có thể chuyển đến một số nguyên đã được biểu diễn trong cơ số 2 bằng thời gian đa thức. ___________________ NPC 8 Trình bày: nhóm 5 [...]... minh : Lấy A2 là một thuật toán thời gian đa thức mà nó quyết định L2 , và lấy F là thuật toán rút gọn thời gian đa thức mà các phép tính toán hàm rút gọn f Chúng ta sẽ đặt một thuật toán thời gian đa thức A1 quyết định L1 Hình 5 Chứng minh của Bổ đề 3 Thuật toán F là một thuật toán rút gọn mà tính toán hàm rút gọn f từ L 1 thành L2 trong thời gian đa thức và A 2 là một thuật toán thời gian đa thức... cạnh Một thuật toán quyết định đường đi phải loại bỏ dứt khoát các chuỗi nhị phân mà không phụ thuộc vào đường đi Đối với một thuật toán quyết định là dễ thiết kế : thay vì chạy vĩnh viễn khi không có một đường đi từ u đến v tại hầu hết k cạnh, nó đưa ra 0 và halts Đối với các bài toán khác, chẳng hạn như bài toán Turing’s Halting, tồn tại một thuật toán chấp nhận nhưng không tồn tại thuật toán quyết... một chuỗi x ∈ {0,1}* nếu đặt vào x , thuật toán đưa ra A(x) là 1 Ngôn ngữ đã chấp nhận bởi một thuật toán _ NPC 10 Trình bày: nhóm 5 A là tập các chuỗi L = {x ∈ {0,1}* : A(x) = 1}, đó là tập các chuỗi mà thuật toán đó chấp nhận Một thuật toán A loại bỏ một chuỗi x nếu A(x) = 0 Thậm chí nếu ngôn ngữ L là đã chấp nhận bởi một thuật toán A, thuật toán này sẽ không cần thiết loại bỏ một chuỗi x ∉... dữ liệu vào Ví dụ, thuật toán này có thể lặp viễn viễn Một ngôn ngữ L đã thỏa được bởi một thuật toán A nếu mỗi chuỗi nhị phân trong L đã chấp nhận bởi A và mỗi chuỗi nhị phân không phải trong L là đã loại bỏ bởi A Một ngôn ngữ L đã chấp nhận trong thời gian đa thức bởi một thuật toán A nếu nó đã chấp nhận bởi A và nếu thêm vào đó một hằng số k như đối với bất kỳ độ dài - n chuỗi x ∈ L, thuật toán A... ngôn ngữ NP-đầy đủ và phác họa một phần chứng minh rằng một ngôn ngữ như vậy được gọi là CIRCUIT-SAT, là NP-đầy đủ Phần IV và V, chúng ta sẽ sử dụng khái niệm về khả năng rút gọn để chỉ ra rằng nhiều bài toán khác là NP-đầy đủ 3.1 Sự rút gọn (Reducibility): Theo trực giác, một bài toán Q có thể được rút gọn bài toán Q’ khác nếu bất kỳ đầu vào của Q có thể “dễ dàng được đặt lại” dưới dạng một đầu vào của... tồn tại của lớp các bài toán NP-đầy đủ Lớp này có tính chất ngạc nhiên rằng nếu bất kỳ bài toán NP-đầy đủ có thể được giải trong thời gian đa thức, thì mọi bài toán trong NP có một giải pháp thời gian đa thức, đó là, P = NP Mặc dù, nhiều năm nghiên cứu chưa có 1 giải thuật thời gian đa thức nào được khám phá cho bài toán NP đầy đủ Ngôn ngữ HAM-CYCLE là một bài toán NP-đầy đủ Nếu chúng ta có thể quyết... bài toán là NP đầy đủ Một khi chúng ta chứng minh có ít nhất một bài toán là NP-đầy đủ, chúng ta có thể sử dụng khả năng rút gọn thời gian đa thức làm một công cụ để chứng minh NP-đầy đủ của các bài toán khác Vì thế bây giờ chúng ta tập trung vào việc chứng minh sự tồn tại của một bài toán NP đầy đủ : bài toán thỏa mãn mạch _ NPC 20 Trình bày: nhóm 5 Tuy nhiên bằng chứng chính thức bài toán. .. trị đặt vào hai cổng khác lấy 2 nhị phân đặt vào x và y và cho ra một nhị phân ra z Thao tác của mỗi cổng và của bất kỳ phân tử kết nối giá trị có thể đã mô tả bởi 1 bảng chân trị, biễu diễn dưới mỗi cổng ở hình 7 Một bảng chân trị cho các dữ liệu ra của phân tử kết nối được mỗi khả năng có thể của các dữ liệu vào Chẳng hạn, bảng chân trị đối với cổng OR nó cho chúng ta thấy rằng khi các dữ liệu vào là... mà cuộc nghiên cứu vào câu hỏi P ≠ NP xoay quanh các bài toán chính NP-đầy đủ Hầu hết các nhà hoa học máy tính lý thuyết tin rằng P ≠ NP, dẫn đến các mối quan hệ giữa P, NP, và NPC biểu diễn ở hình 6 Nhưng đối với tất cả chúng ta biết rằng, một người nào đó có thể thấy một thuật toán thời gian đa thức cho một bài toán NP-đầy đủ, vì thế chứng tỏ rằng P=NP Tuy nhiên, chưa có thuật toán thời gian đa thức... bài toán NP-đầy đủ được tìm ra, nên chứng minh cho rằng một bài toán là NP-đầy đủ sẽ cung cấp một bằng chứng tuyệt vời cho tính khó của nó Hình 6 Hầu hết các nhà khoa học máy tính lý thuyết xem các mối quan hệ giữa P, NP và NPC như thế nào? Cả P và NPC là hoàn toàn chứa không quá NP và P ∩ NPC = ∅ 3.3 Thỏa mãn mạch (Circuit Satisfiability): Chúng ta đã định nghĩa khái niệm của một bài toán NP-đầy đủ, . ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC TIỂU LUẬN PHÂN TÍCH VÀ THIẾT KẾT THUẬT TOÁN Đề tài: NP-ĐẦY ĐỦ (NP-Completeness) Giảng viên hướng dẫn: TS. Hoàng Quang Học viên. pháp kỹ thuật chúng ta sử dụng để biểu diễn một bài toán riêng biệt là NP-đầy đủ khác với các phương pháp kỹ thuật đã sử dụng qua hầu hết cuốn sách này để thiết kế và phân tích các thuật toán. . toán B là NP-đầy đủ trên sự tuyệt đối mà bài toán A cũng là NP-đầy đủ. Một bài toán NP-đầy đủ đầu tiên (A first NP-complete problem) : Vì kỹ thuật rút gọn dựa trên một bài toán có sẵn biết NP-đầy

Ngày đăng: 11/04/2015, 22:10

Từ khóa liên quan

Mục lục

  • ĐẠI HỌC HUẾ

  • MỤC LỤC

  • PHẦN I: TỔNG QUAN

  • PHẦN II: NỘI DUNG

    • 3. NP-ĐẦY ĐỦ VÀ PHÉP RÚT GỌN (NP-COMLPETENESS AND REDUCIBILITY):

      • 3.1. Sự rút gọn (Reducibility):

      • 3.2. NP-đầy đủ (NP-completeness):

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan