Về các bài toán NP C và một số phương pháp giải

68 1.2K 1
Về các bài toán NP C và một số phương pháp giải

Đ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

TRẦN THỊ DƯƠNG VỀ CÁC BÀI TOÁN NP-C MỘT SỐ PHƯƠNG PHÁP GIẢI Chuyên ngành : Khoa học máy tính Mã số : 60480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - 2014 1 MỞ ĐẦU Ngày nay, cùng với sự phát triển mạnh mẽ của khoa học công nghệ, đặc biệt là máy tính, người ta có khả năng giải quyết được nhiều bài toán rất phức tạp. Tuy nhiên, còn những vấn đề là ―không giải được‖ cho dù kỹ thuật máy tính có phát triển cũng có những vấn đề được xem là ―quá phức tạp‖, vượt mọi khả năng tính toán thực tế vì mất quá nhiều thời gian. Việc nghiên cứu về độ phức tạp của thuật toán đã cho phép chúng ta phân loại được các lớp bài toán theo từng mức độ phức tạp khác nhau, chỉ ra ranh giới giữa các lớp bài toán giải được những lớp bài toán không thể giải được trong thời gian đa thức. Trong lý thuyết độ phức tạp tính toán, lớp NP - C (NP - đầy đủ) là một lớp các bài toán quyết định. Một bài toán L là NP - C nếu nó nằm trong lớp NP (lời giải cho L có thể được kiểm chứng trong thời gian đa thức) NP - Hard (mọi bài toán trong NP đều có thể quy về L trong thời gian đa thức). Mặc dù bất kì lời giải nào cho mỗi bài toán đều có thể được kiểm chứng nhanh chóng, hiện chưa có cách nào tìm ra được lời giải đó một cách hiệu quả. Thời gian thực thi của tất cả các thuật toán hiện tại cho những bài toán này đều tăng rất nhanh theo kích thước bài toán. Vì vậy ngay cả những trường hợp có kích thước tương đối lớn đã đòi hỏi thời gian hàng tỷ năm để giải. Các bài toán lớp NP - C là tập hợp các bài toán NP - Hard trong NP. Các bài toán lớp NP - C được quan tâm nghiên cứu bởi khả năng kiểm chứng nhanh chóng lời giải (NP) dường như có liên hệ với khả năng tìm kiếm nhanh chóng lời giải (P). Hiện vẫn chưa biết được nếu mọi bài toán trong NP đều có thể được giải quyết nhanh chóng hay không (đây chính là bài toán P so với 2 NP). Tuy nhiên, nếu bất kì một bài toán nào trong NP - C có thể được giải quyết nhanh chóng, thì theo định nghĩa của NP - C, mọi bài toán trong NP đều có thể được giải quyết nhanh chóng. Các bài toán NP- C xuất hiện thường xuyên trong thực tế nên, mặc dù chưa có giải thuật trong thời gian đa thức cho chúng, các nhà nghiên cứu vẫn tìm cách giải quyết chúng thông qua các phương pháp khác như thuật toán xấp xỉ, thuật toán gần đúng nhân tử hóa, v.v Việc tìm hiểu nghiên cứu các phương pháp giải bài toán lớp NP- Cmột trong những bài toán mở của khoa học máy tính hiện nay. Vì vậy em đã chọn đề tài: Về các bài toán NP-C một số phương pháp giải để làm luận văn tốt nghiệp. Cấu trúc của luận văn gồm: Phần mở đầu, phần kết luận 3 chương nội dung, cụ thể: Chương 1: Khái niệm các lớp bài toán P, NP, NP-C. Trong chương này em giới thiệu chung về các lớp bài toán P, NP, NP – C, minh họa bằng các ví dụ cụ thể đưa ra mối quan hệ giữa lớp P, NP NP-C Chương 2: Phương pháp tham phương pháp nhánh cận giải một số bài toán NP-C Trong chương này em trình bày phương pháp tham giải bài toán về đồ thị phương pháp nhánh cận giải bài toán Ba lô, bài toán tìm đường đi ngắn nhất. Chương 3: Chương trình thử nghiệm Chương này thể hiện chương trình cài đặt thuật toán nhánh cận giải bài toán Ba lô. 3 Chƣơng 1: KHÁI NIỆM CÁC LỚP BÀI TOÁN P, NP, NPC 1.1. Vài khái niệm cơ bản của lý thuyết độ phức tạp 1.1.1 Máy Turing tất định không tất định Máy Turing là một máy tính trừu tượng mô tả các quá trình tính toán trên máy tính. Máy Turing có hai loại: Máy Turing tất định (Deterministic Turing Machine) Máy Turing không tất định (Nondeterministic Turing Machine) được mô tả như sau: Máy Turing tất định Mô tả cách làm việc của máy: Máy Turing tất định gồm một bộ điều khiển hữu hạn trạng thái, một đầu đọc ghi, một băng vô hạn được chia thành từng ô vuông, mỗi ô có thể lưu giữ một ký hiệu thuộc tập hữu hạn các ký hiệu. Hình 1.1. Mô tả máy tính Turing tất định Khởi đầu, một xâu Input được đặt trên một băng, đó là chuỗi ký hiệu có chiều dài hữu hạn được chọn từ một bộ chữ cái. Những ô còn lại của băng vô hạn theo cả hai bên phải trái, chứa một ký hiệu đặc biệt là ký hiệu trống ( diễn tả trạng thái ô không có ký hiệu nào). Có một đầu đọc – ghi luôn chỉ vào một trong các ô của băng. Ta nói rằng máy Turing đang đọc – ghi ô đó. Lúc khởi hoạt, đầu đọc – ghi nằm 4 tận bên trái của xâu Input. Một bước hoạt động của máy Turing được quy định bởi một hàm phụ thuộc trạng thái của bộ điều khiển ký hiệu đang được đọc chuyển vị. Trong một bước hoạt động, máy Turing sẽ: - Thay đổi trạng thái. Trạng thái tiếp theo cũng chính là trạng thái hiện tại. - Ghi một ký hiệu băng vào ô đang được quét. Ký hiệu băng này thay thế ký hiệu băng đang có ở ô vuông đó. Ký hiệu được ghi cũng có thể chính là ký hiệu hiện đang ở đó. - Di chuyển đầu đọc – ghi sang trái hoặc sang phải. Một cách không hình thức, ta có thể định nghĩa như sau: Định nghĩa 1.1 Một máy Turing M tất định là một bộ M = (Q, Σ, Γ , δ, q 0 , B, F) Trong đó các thành phần của M có ý nghĩa như sau: Q: là tập hữu hạn các trạng thái của bộ điều khiển hữu hạn. Σ: Tập hữu hạn các chữ cái. Γ: Tập đầy đủ các kí hiệu băng; Σ luôn là tập con của Γ : Hàm chuyển vị, : Γ ×Q x {1, 0, 1}.Đối của (q, X) là một trạng thái q một kí hiệu băng X. Giá trị của (q, X) nếu được định nghĩa sẽ là một bộ ba (p, Y, D) trong đó: p: trạng thái tiếp theo Y: Một ký hiệu thuộc Γ sẽ được ghi vào ô đang được quét, thay thế cho ký hiệu đang ở trong ô đó. D: Một trong hai ký hiệu L (sang trái) hoặc R (sang phải) để chỉ ra hướng di chuyển của đầu đọc – ghi. q 0: Trạng thái bắt đầu, một phần tử Q là trạng thái khởi đầu của bộ điều khiển. B: ký tự trắng (blank). B Γ F: Tập kiểm hợp các trạng thái kết thúc, một tập con của Q. 5 - Các chức năng đặc trưng cơ bản của máy Turing tất định: Ngôn ngữ xác định bởi máy Turing ngôn ngữ đoán nhận được Cho M = ( Q, Σ, Γ , δ, q 0 , B, F) là một máy tính Turing. Một hình trạng của máy tính Turing M là một từ có dạng aqb, trong đó a Γ * , b Γ *, biểu thị nội dung: trên băng có từ ab, đầu đọc - ghi nhìn kí tự đầu b máy ở trạng thái q. Hàm chuyển δ dho ta quy tắc chuyển đổi các hình trạng. Nếu máy tính Turing M bắt đầu làm việc với hình trạng q 0 w (trong đó w Z * ) chuyển đổi liên tiếp sau một số hữu hạn bước đến hình trạng kết thúc aFb ở trạng thái chấp nhận F, thì ta nói rằng máy tính Turing M chấp nhận từ vào w. Ta ký hiệu L M = {w\ w Z * , M chấp nhận w). Định nghĩa 1.2. Ngôn ngữ L M gọi là ngôn ngữ xác định bởi máy Turing hay còn gọi là ngôn ngữ tương ứng với của máy tính Turing M. Định nghĩa 1.3. Cho L là một ngôn ngữ trên bảng chữ cái Σ Ngôn ngữ L gọi là đoán nhận được bởi máy tính Turing nếu tồn tại M sao cho L M = L (tức là tồn tại một máy tính Turing sao cho ngôn ngữ tương ứng của nó trùng với một ngôn ngữ cho trước L). Ta nói máy tính Turing đoán nhận ngôn ngữ L. Máy tính Turing không tất định Máy tính Turing tất định là một dạng đặc biệt của máy tính Turing không tất định. Hình 1.2. Mô tả máy tính Turing không tất định 6 Nhưng máy tính Turing không tất định có một hàm chuyển vị sao cho mỗi trạng thái q ký hiệu đọc được (q, X) là một bộ ba {(q 1 , Y 1, D 1 ), (q 2 , Y 2, D 2 ),… (q k , Y k, D k ), trong đó k là một số nguyên hữu hạn nào đó. Tại mỗi bước máy tính Turing không tất định có thể chọn một trong các bộ ba để thực hiện bước chuyển tiếp theo. Tuy nhiên nó không thể lấy một trạng thái từ một trong các bộ ba này, một ký hiệu băng từ bộ ba khác một hướng lại từ bộ ba khác nữa. So sánh hai định nghĩa trên ta thấy máy tính Turing không tất định được định nghĩa một cách hình thức giống máy tính Turing tất định có thêm môđun phỏng đoán, nhằm để có thể chọn bước thực thi kế tiếp tùy ý trong một tập cho trước các lệnh có khả năng xử lý song song các phỏng đoán. 1.1.2 Bài toán quyết định ngôn ngữ tƣơng ứng Định nghĩa 1.4 Cho một tập các dữ kiện (instance) câu hỏi (question) trên các dữ kiện thuộc tập đó. Bài toán quyết định là bài toán mà câu trả lời của nó là ―Yes‖ hay ―No‖ (tương ứng với True/1 hay False/0) Sau đây là vài ví dụ minh họa cho bài toán quyết định: Ví dụ 1.1: Bài toán kiểm tra số nguyên tố Instance: một số nguyên n > 2 Question: n có phải số nguyên tố hay không? Ví dụ 1.2: Bài toán HC ( Hamilton Cycle) Instance: đồ thị vô hướng G = (V, E) Question: đồ thị vô hướng G = (V, E) có chu trình Hamilton hay không? Về nguyên tắc mọi bài toán đều có thể biểu diễn lại dưới bài toán quyết định tương ứng. Ngôn ngữ tƣơng ứng với bài toán quyết định: Giả sử cho một bài toán quyết định π với tập các dữ kiện I được biểu diễn bởi các xâu trên bảng chữ cái Σ nào đó, với question Q trên tập 7 I. Ký hiệu L(π) là tập các xâu (thuộc Σ * ) biểu diễn các dữ kiện mà câu hỏi Q có trả lời “đúng”. Khi đó ta nói ngôn ngữ L(π) là ngôn ngữ tương ứng với bài toán π. 2.3.1 Thời gian tính của một máy tính Turing Cho trước một bài toán quyết định π với tập các dữ kiện I được biểu diễn bởi các xâu trên bảng chữ cái Σ nào đó, với câu hỏi Q trên tập I. Ký hiệu L(π) là tập các xâu (thuộc Z * ) biểu diễn các dữ kiện của một instance cụ thể của bài toán π. Ta biết rằng ngôn ngữ L(π) là một ngôn ngữ tương ứng với bài toán π. Với mỗi instance I cụ thể, ta sẽ có một input biểu diễn nó, mà ta ký hiệu là x(I). Bây giờ ta có thể biểu diễn thời gian tính của bài toán π đối với một máy tính Turing cho trước. Với một input x(I) L(π), máy tính sẽ chạy cho đến lúc dừng tại trạng thái ―Yes/No‖. Thời gian tính x(I) sẽ là số bước đoán nhận xâu x(I) của máy cho tới khi máy dừng lại. Thông thường số bước chạy máy này phụ thuộc vào I, tất nhiên là một hàm số của độ dài biểu diễn I, tức là độ dài của xâu x(I). Bằng cách đó ta định nghĩa: T M (n):= max{m: tồn tại một xâu x Z * với |x| = n mà thời gian đoán nhận xâu là m} Một máy tính Turing (hay một chương trình tính toán trên cơ sở máy tính Turing) được nói là có thời gian tính toán đa thức (gọi tắt là thời gian đa thức) nếu như tồn tại một đa thức p(n) sao cho mọi số tự nhiên n ta có T M (n) ≤ p(n). Khi đó ta cũng nói rằng chương trình máy tính Turing có độ phức tạp tính toán không vượt quá p(n). 1.1.4. Lớp P, NP mối quan hệ giữa lớp P lớp NP Định nghĩa l.5 ( Lớp P - Polynomial time) Ta gọi lớp P là lớp những bài toán quyết định giải được bằng máy tính Turing tất định trong thời gian đa thức. 8 Một bài toán quyết định π là giải được trong thời gian đa thức, nếu ngôn ngữ L(π) tương ứng với nó thuộc lớp P, tức nó đoán nhận được trong thời gian đa thức. Như vậy, lớp P gần như tương ứng với lớp các bài toán quyết định giải được trong thời gian đa thức, về mặt lý thuyết, có thể xem là lớp các bài toán dễ. Ví dụ 1.3: Bài toán kiểm tra số nguyên tố Instance: một số nguyên n > 2 Question: n có phải là số nguyên tố hay không? Ví dụ 1.4: Thuật toán Kruskal tìm cây khung bé nhất của một đồ thị có m nút e cạnh. Instance: một đồ thị có m nút e cạnh Question: tìm cây khung bé nhất? Định nghĩa l.6 ( Lớp NP - Nondeterministic Polynomial) Ta gọi lớp NP là lớp các bài toán quyết định có thể giải được bằng máy tính Turing không tất định trong khoảng thời gian đa thức. Một cách không hình thức, chúng ta nói một ngôn ngữ L thuộc lớp NP nếu có một máy tính Turing không tất định một độ phức tạp thời gian T(n) sao cho L = L M khi M được cho nguyên liệu có chiều dài n thì không có dãy bước chuyển nào của M vượt quá T(n) bước chuyển. Ví dụ 1.5: Bài toán chu trình Hamilton Instance: đồ thị vô hướng G = (V, E) Question: đồ thị vô hướng G = (V, E) có chu trình Hamilton hay không? 9 Để nói về mối quan hệ giữa lớp P lớp NP ta thấy do máy tính Turing tất định là trường hợp đặc biệt của máy tính Turing không tất định nên các bài toán thuộc lớp P sẽ thuộc lớp NP. Tuy P NP là rất hiển nhiên song ta vẫn chưa biết P = NP hay không, nhưng hầu hết các nhà nghiên cứu đều tin rằng P NP. Từ đó ta có mô hình mô phỏng sau: Hình 1.3 Mối quan hệ giữa lớp P NP 1.1.5 Phép dẫn với thời gian đa thức (Polynomial Time Reduction) Giả sử ta muốn giải quyết bài toán π 1 ( trong đó π 1 : I 1 —> {Yes/ No}) mà ta có thuật toán cho bài toán π 2 (trong đó π 2 : I 2 —> {Yes/ No}, giả sử ta có hàm f: I 1 —> I 2 mà dữ kiện x của π 1 sinh ra dữ kiện f(x) cho π 2 sao cho câu trả lời đúng cho π 1 trên x là ―Yes‖ nếu chỉ nếu câu trả lời đúng cho π 2 trên f(x) là ―Yes‖ ngược lại, thì ta có thể sử dụng thuật toán cho π 2 để giải quyết bài toán π 1 . Định nghĩa 1.7 Cho π 1 π 2 là hai bài toán quyết định, π i (Y) là lớp các Instance ứng với YES, π i (N) là lớp các Instance ứng với No. NP P [...]... phá c c bài toán thu c loại NP- C cho biết rằng c rất ít c hội phát triển đư c một thuật toán hiệu quả để giải để giải c c bài toán NP- C đó thường dùng c c phương pháp tìm kiếm c c heuristic, c c lời giải từng phần, c c xấp xỉ những c ch kh c nhằm tránh giải tr c diện bài toán Mọi bài toán NP- C đều đòi hỏi thời gian mũ để giải Sau đây là một số ví dụ về bài toán NP- C Ví dụ 1.9 Bài toán tô màu... Nếu c một bài toán NP- C bất kỳ giải đư c theo thời gian đa th c, thì P = NP Nếu một bài toán trong NP bất kỳ không giải đư c theo thời gian đa th c, thì tất c c c bài toán NP- C đều không giải đư c theo thời gian đa th c 1.2.3 Mối quan hệ giữa c c bài toán lớp P, NP, NPC Nếu c một giải thuật trong thời gian đa th c cho một bài toán NPC, vậy thì chứng minh đư c P = NP Tuy nhiên cho đến nay chưa c ... th c để giải một bài toán nào đó trong số chúng thì c ng c thuật toán thời gian đa th c để giải mọi bài toán trong lớp NP Những bài toán như vậy đư c gọi là NP - Complete (NP- C) Định nghĩa 1.10 Một bài toán thu c lớp NP mà mọi bài toán thu c lớp NP kh c đều dẫn đư c về nó với thời gian đa th c đư c gọi là bài toán NP- C Ví dụ 1.6: Bài toán Satisfiability problem hay c n đư c gọi là bài toán SAT Bài toán. .. lấy một số lựa chọn nhất định một c ch quá sớm, điều này dẫn đến hậu quả là trong giai đoạn sau, c c thuật toán này không thể tìm ra c c lời giải toàn c c tốt nhất Ví dụ, đối với bài toán tô màu đồ thị tất c c c bài toán NP- C kh c, không một thuật toán tham lam đã đư c biết nào đảm bảo tìm thấy c c lời giải tối ưu Tuy nhiên, c c thuật toán này vẫn hữu ích vì chúng dễ thiết kế cho ra c c ư c lượng... vi c chứng minh tính đúng đắn c a thuật toán c ng không đơn giản Để mô tả chính x c GrA c n mô tả chính x c môi trường trong đó c c bài toán tối ưu đặt ra Trong c c bài toán tối ưu trong ngữ c nh GrA người ta c : - Tập (danh sách) c c ứng viên, thí dụ, c c nút, c c c nh trong đồ thị - Tập c c ứng viên đã sử dụng - Một c ch (predicate/solution) để kiểm tra liệu một tập c c ứng viên đã cho c lời giải. .. nghiệm gần đúng (lời giải gần tối ưu) mà c thể chấp nhận đư c Trong khoa h c máy tính , thuật toán xấp xỉ là c c thuật toán tìm lời giải xấp xỉ cho c c bài toán tối ưu hóa Thuật toán xấp xỉ thường đư c sử dụng cho c c bài toán NP- C, ho c c c bài toán giải đư c trong thời gian đa th c nhưng quá chậm cho dữ liệu lớn Nhiều bài toán NP- C có thể đư c biểu diễn dưới dạng quy hoạch nguyên giải trong thời gian... c một thuật toán thời gian đa th c nào để giải cho bài toán NPC Chính vì lý do này mà cu c nghiên c u vào c u hỏi P ≠ NP tập trung vào c c bài toán NPC Hầu hết c c nhà khoa h c máy tính lý thuyết đều tin rằng khả năng P ≠ NP rất c thể xảy ra, do đó NPC P = Mối quan hệ giữa lớp P, NP NP- C có thể biểu diễn như hình sau: NP P NP- C Hình 1.7 Mối quan hệ giữa lớp P, NP NP- C 22 Chƣơng 2: PHƢƠNG PHÁP... trị c c biến sao cho tất c c c t c biến c a A đều c ít nhất một giá trị True Bài toán SAT là bài toán đầu tiên đư c chứng minh là thu c bài toán NPC Từ định nghĩa ta thấy một bài toán là NP- C nếu nó thoả mãn đồng thời hai điều kiện sau: 1 NP 2 Với ’ thu c NP thì ’ dẫn đư c về với thời gian đa th c Như vậy để chứng minh một bài toán là NP- C ta c n chứng minh hai điều: 1 Bài toán phải thu c lớp NP 2... c n mang theo sao cho tổng giá trị sử dụng là lớn nhất? Bài toán ba lô thường đư c giải bằng quy hoạch nguyên, tuy chưa c một thuật toán thời gian đa th c cho bài toán tổng quát C bài toán ba lô tổng quát bài toán ba lô 0 - 1 đều là c c bài toán NPC th c tế là một trong 21 bài toán NP- C đầy đủ c a Karp Bài toán c thể giải đư c bởi một số thuật toán như thuật toán quay lui, giải thuật di truyền…... nói tập con I c a c c đỉnh thu c G là một tập đ c lập nếu không c 2 đỉnh nào c a I đư c nối bởi một c nh c a G (t c là I là tập c c đỉnh mà không c 2 đỉnh nào là liền kề nhau) Một tập đ c lập là c c đại nếu nó c nhiều nút nhất trong số c c tập đ c lập Đồ thị trong hình 1.5 c tập đ c lập gồm c c đỉnh {1, 4} Đó c ng là tập đ c lập c c đại 1 2 3 4 1 1 Hình 1.5 Ví dụ về tập đ c lập Bài toán: Cho một đồ . NP và NP-C Chương 2: Phương pháp tham và phương pháp nhánh cận giải một số bài toán NP-C Trong chương này em trình bày phương pháp tham giải bài toán về đồ thị và phương pháp nhánh cận giải. hiểu và nghiên cứu các phương pháp giải bài toán lớp NP- C là một trong những bài toán mở của khoa học máy tính hiện nay. Vì vậy em đã chọn đề tài: Về các bài toán NP-C và một số phương pháp giải. 1.2.3 Một số bài toán NP-C khác Quá trình khám phá các bài toán thuộc loại NP-C cho biết rằng có rất ít cơ hội phát triển được một thuật toán hiệu quả để giải nó. Và để giải các bài toán NP-C

Ngày đăng: 18/06/2014, 12:11

Từ khóa liên quan

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

Tài liệu liên quan