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

11 258 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 VÀ 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 MỞ ĐẦU Ngày nay, với phát triển mạnh mẽ khoa học công nghệ, đặc biệt máy tính, người ta có khả giải nhiều toán phức tạp Tuy nhiên, vấn đề ―không giải được‖ cho dù kỹ thuật máy tính có phát triển có vấn đề xem ―quá phức tạp‖, vượt khả tính toán thực tế nhiều thời gian Việc nghiên cứu độ phức tạp thuật toán cho phép phân loại lớp toán theo mức độ phức tạp khác nhau, ranh giới lớp toán giải lớp toán giải 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ớp toán định Một toán L NP - C nằm lớp NP (lời giải cho L kiểm chứng thời gian đa thức) NP Hard (mọi toán NP quy L thời gian đa thức) Mặc dù lời giải cho toán kiểm chứng nhanh chóng, chưa có cách tìm lời giải cách hiệu Thời gian thực thi tất thuật toán cho toán tăng nhanh theo kích thước toán Vì 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 toán lớp NP - C tập hợp toán NP - Hard NP Các toán lớp NP - C quan tâm nghiên cứu khả kiểm chứng nhanh chóng lời giải (NP) dường có liên hệ với khả tìm kiếm nhanh chóng lời giải (P) Hiện chưa biết toán NP giải nhanh chóng hay không (đây toán P so với NP) Tuy nhiên, toán NP - C giải nhanh chóng, theo định nghĩa NP - C, toán NP giải nhanh chóng Các toán NP- C xuất thường xuyên thực tế nên, chưa có giải thuật thời gian đa thức cho chúng, nhà nghiên cứu tìm cách giải chúng thông qua phương pháp khác thuật toán xấp xỉ, thuật toán gần nhân tử hóa, v.v Việc tìm hiểu nghiên cứu phương pháp giải toán lớp NP- C toán mở khoa học máy tính Vì em chọn đề tài: Về toán NP-C số phương pháp giải để làm luận văn tốt nghiệp Cấu trúc luận văn gồm: Phần mở đầu, phần kết luận chương nội dung, cụ thể: Chương 1: Khái niệm lớp toán P, NP, NP-C Trong chương em giới thiệu chung lớp toán P, NP, NP – C, minh họa ví dụ cụ thể đưa mối quan hệ lớp P, NP NP-C Chương 2: Phương pháp tham phương pháp nhánh cận giải số toán NP-C Trong chương em trình bày phương pháp tham giải toán đồ thị phương pháp nhánh cận giải toán Ba lô, toán tìm đường ngắn Chương 3: Chương trình thử nghiệm Chương thể chương trình cài đặt thuật toán nhánh cận giải toán Ba lô 3 Chƣơng 1: KHÁI NIỆM CÁC LỚP BÀI TOÁN P, NP, NP – C 1.1 Vài khái niệm lý thuyết độ phức tạp 1.1.1 Máy Turing tất định không tất định Máy Turing máy tính trừu tượng mô tả trình tính toá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) mô tả sau: Máy Turing tất định Mô tả cách làm việc máy: Máy Turing tất định gồm điều khiển hữu hạn trạng thái, đầu đọc ghi, băng vô hạn chia thành ô vuông, ô lưu giữ ký hiệu thuộc tập hữu hạn ký hiệu Hình 1.1 Mô tả máy tính Turing tất định Khởi đầu, xâu Input đặt băng, chuỗi ký hiệu có chiều dài hữu hạn chọn từ chữ Những ô lại băng vô hạn theo hai bên phải trái, chứa ký hiệu đặc biệt ký hiệu trống ( diễn tả trạng thái ô ký hiệu nào) Có đầu đọc – ghi vào ô băng Ta nói máy Turing đọc – ghi ô Lúc khởi hoạt, đầu đọc – ghi nằm tận bên trái xâu Input Một bước hoạt động máy Turing quy định hàm phụ thuộc trạng thái điều khiển ký hiệu đọc chuyển vị Trong bước hoạt động, máy Turing sẽ: - Thay đổi trạng thái Trạng thái trạng thái - Ghi ký hiệu băng vào ô quét Ký hiệu băng thay ký hiệu băng có ô vuông Ký hiệu ghi ký hiệu - Di chuyển đầu đọc – ghi sang trái sang phải Một cách không hình thức, ta định nghĩa sau: Định nghĩa 1.1 Một máy Turing M tất định M = (Q, Σ, Γ, δ, q0, B, F) Trong thành phần M có ý nghĩa sau: Q: tập hữu hạn trạng thái điều khiển hữu hạn Σ: Tập hữu hạn chữ Γ: Tập đầy đủ kí hiệu băng; Σ tập Γ : Hàm chuyển vị, : Γ ×Q x {1, 0, 1}.Đối (q, X) trạng thái q kí hiệu băng X Giá trị (q, X) định nghĩa ba (p, Y, D) đó: p: trạng thái Y: Một ký hiệu thuộc Γ ghi vào ô quét, thay cho ký hiệu ô D: Một hai ký hiệu L (sang trái) R (sang phải) để hướng di chuyển đầu đọc – ghi q0: Trạng thái bắt đầu, phần tử Q trạng thái khởi đầu điều khiển B: ký tự trắng (blank) B Γ F: Tập kiểm hợp trạng thái kết thúc, tập Q 5 - Các chức đặc trưng máy Turing tất định: Ngôn ngữ xác định máy Turing ngôn ngữ đoán nhận Cho M = ( Q, Σ, Γ , δ, q0, B, F) máy tính Turing Một hình trạng máy tính Turing M từ có dạng aqb, a Γ*, b Γ*, biểu thị nội dung: 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 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 q0w (trong w Z*) chuyển đổi liên tiếp sau 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, ta nói máy tính Turing M chấp nhận từ vào w Ta ký hiệu LM = {w\ w Z*, M chấp nhận w) Định nghĩa 1.2 Ngôn ngữ LM gọi ngôn ngữ xác định máy Turing hay gọi ngôn ngữ tương ứng với máy tính Turing M Định nghĩa 1.3 Cho L ngôn ngữ bảng chữ Σ Ngôn ngữ L gọi đoán nhận máy tính Turing tồn M cho LM = L (tức tồn máy tính Turing cho ngôn ngữ tương ứng trùng với 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 dạng đặc biệt 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 Nhưng máy tính Turing không tất định có hàm chuyển vị cho trạng thái q ký hiệu đọc (q, X) ba {(q1, Y1, D1), (q2, Y2, D2),… (qk, Yk, Dk), k số nguyên hữu hạn Tại bước máy tính Turing không tất định chọn ba để thực bước chuyển Tuy nhiên lấy trạng thái từ ba này, ký hiệu băng từ ba khác hướng lại từ ba khác So sánh hai định nghĩa ta thấy máy tính Turing không tất định định nghĩa cách hình thức giống máy tính Turing tất định có thêm môđun đoán, nhằm để chọn bước thực thi tùy ý tập cho trước lệnh có khả xử lý song song đoán 1.1.2 Bài toán định ngôn ngữ tƣơng ứng Định nghĩa 1.4 Cho tập kiện (instance) câu hỏi (question) kiện thuộc tập Bài toán định toán mà câu trả lời ―Yes‖ hay ―No‖ (tương ứng với True/1 hay False/0) Sau vài ví dụ minh họa cho toán định: Ví dụ 1.1: Bài toán kiểm tra số nguyên tố Instance: số nguyên n > 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 toán biểu diễn lại toán định tương ứng Ngôn ngữ tƣơng ứng với toán định: Giả sử cho toán định π với tập kiện I biểu diễn xâu bảng chữ Σ đó, với question Q tập I Ký hiệu L(π) tập xâu (thuộc Σ* ) biểu diễn kiện mà câu hỏi Q có trả lời “đúng” Khi ta nói ngôn ngữ L(π) ngôn ngữ tương ứng với toán π 2.3.1 Thời gian tính máy tính Turing Cho trước toán định π với tập kiện I biểu diễn xâu bảng chữ Σ đó, với câu hỏi Q tập I Ký hiệu L(π) tập xâu (thuộc Z* ) biểu diễn kiện instance cụ thể toán π Ta biết ngôn ngữ L(π) ngôn ngữ tương ứng với toán π Với instance I cụ thể, ta có input biểu diễn nó, mà ta ký hiệu x(I) Bây ta biểu diễn thời gian tính toán π máy tính Turing cho trước Với input x(I) L(π), máy tính chạy lúc dừng trạng thái ―Yes/No‖ Thời gian tính x(I) số bước đoán nhận xâu x(I) máy máy dừng lại Thông thường số bước chạy máy phụ thuộc vào I, tất nhiên hàm số độ dài biểu diễn I, tức độ dài xâu x(I) Bằng cách ta định nghĩa: TM(n):= max{m: tồn xâu x Z* với |x| = n mà thời gian đoán nhận xâu m} Một máy tính Turing (hay chương trình tính toán sở máy tính Turing) nói có thời gian tính toán đa thức (gọi tắt thời gian đa thức) tồn đa thức p(n) cho số tự nhiên n ta có TM(n) ≤ p(n) Khi ta nói chương trình máy tính Turing có độ phức tạp tính toán không vượt p(n) 1.1.4 Lớp P, NP mối quan hệ lớp P lớp NP Định nghĩa l.5 ( Lớp P - Polynomial time) Ta gọi lớp P lớp toán định giải máy tính Turing tất định thời gian đa thức 8 Một toán định π giải thời gian đa thức, ngôn ngữ L(π) tương ứng với thuộc lớp P, tức đoán nhận thời gian đa thức Như vậy, lớp P gần tương ứng với lớp toán định giải thời gian đa thức, mặt lý thuyết, xem lớp toán dễ Ví dụ 1.3: Bài toán kiểm tra số nguyên tố Instance: số nguyên n > Question: n có phải số nguyên tố hay không? Ví dụ 1.4: Thuật toán Kruskal tìm khung bé đồ thị có m nút e cạnh Instance: đồ thị có m nút e cạnh Question: tìm khung bé nhất? Định nghĩa l.6 ( Lớp NP - Nondeterministic Polynomial) Ta gọi lớp NP lớp toán định giải máy tính Turing không tất định khoảng thời gian đa thức Một cách không hình thức, nói ngôn ngữ L thuộc lớp NP có máy tính Turing không tất định độ phức tạp thời gian T(n) cho L = LM M cho nguyên liệu có chiều dài n dãy bước chuyển M vượt 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? Để nói mối quan hệ lớp P lớp NP ta thấy máy tính Turing tất định trường hợp đặc biệt máy tính Turing không tất định nên toán thuộc lớp P thuộc lớp NP Tuy P NP hiển nhiên song ta chưa biết P = NP hay không, hầu hết nhà nghiên cứu tin P NP Từ ta có mô hình mô sau: NP P Hình 1.3 Mối quan hệ 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 toán π1 ( π1: I1 —> {Yes/ No}) mà ta có thuật toán cho toán π2 (trong π2: I2 —> {Yes/ No}, giả sử ta có hàm f: I1 —> I2 mà kiện x π1 sinh kiện f(x) cho π2 cho câu trả lời cho π1 x ―Yes‖ câu trả lời cho π2 f(x) ―Yes‖ ngược lại, ta sử dụng thuật toán cho π2 để giải toán π1 Định nghĩa 1.7 Cho π1 π2 hai toán định, πi (Y) lớp Instance ứng với YES, πi (N) lớp Instance ứng với No 10 Một cách biến đối f biến Instance π1 thành Instance π2 gọi phép dẫn thời gian đa thức thỏa mãn: - Phép dẫn f thực thời gian đa thức máy tính Turing - Mỗi kiện π1 (Y) thành kiện thuộc π2 (Y) - Mỗi kiện π1 (N) thành kiện thuộc π2 (N) Thuật toán π1 Dữ kiện π1 f(x) Thuật toán π2 f Dữ kiện π2 Yes/No Hình 1.4 Một phép dẫn toán π1 thành π2 thời gian đa thức Có thể phát biểu lời sau: toán π1 dẫn toán π2 thời gian đa thức, giải toán π2 thời gian đa thức, ta giải toán π1 thời gian đa thức Theo nghĩa thời gian đa thức toán π2 khó toán π1 Địnhnghĩa 1.8 f phép dẫn đa thức từ π1 π2 f tính thời gian đa thức Với kiện đầu vào x cho toán π1 câu trả lời cho toán π2 f (x) giống câu trả lời cho π1 x Định nghĩa 1.9 Bài toán định π1 dẫn toán định π2 [...]... gian đa th c Có thể phát biểu bằng lời như sau: nếu bài toán π1 c thể dẫn đư c về bài toán π2 trong thời gian đa th c, và giải đư c bài toán π2 trong thời gian đa th c, thì ta sẽ giải đư c bài toán π1 trong thời gian đa th c Theo nghĩa thời gian đa th c thì bài toán π2 khó hơn ho c bằng bài toán π1 Địnhnghĩa 1.8 f là phép dẫn đa th c từ π1 về π2 1 f c thể đư c tính trong thời gian đa th c 2 Với dữ...10 Một c ch biến đối f biến mỗi Instance c a π1 thành Instance c a π2 đư c gọi là phép dẫn thời gian đa th c nếu nó thỏa mãn: - Phép dẫn f th c hiện đư c trong thời gian đa th c bởi máy tính Turing - Mỗi dữ kiện π1 (Y) thành dữ kiện thu c π2 (Y) - Mỗi dữ kiện π1 (N) thành dữ kiện thu c π2 (N) Thuật toán π1 Dữ kiện π1 f(x) Thuật toán π2 f Dữ kiện π2 Yes/No Hình 1.4 Một phép dẫn bài toán π1 thành... bài toán π1 Địnhnghĩa 1.8 f là phép dẫn đa th c từ π1 về π2 1 f c thể đư c tính trong thời gian đa th c 2 Với dữ kiện đầu vào x cho bài toán π1 c u trả lời đúng cho bài toán π2 trên f (x) là giống như c u trả lời đúng cho π1 trên x Định nghĩa 1.9 Bài toán quyết định π1 dẫn về bài toán quyết định π2

Ngày đăng: 30/09/2016, 16:42

Từ khóa liên quan

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

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

Tài liệu liên quan