Luận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giảiLuận văn thạc sĩ: Về các bài toán NPC và một số phương pháp giải
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 tốn phức tạp Tuy nhiên, cị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 tốn thực tế q 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 tốn khơng thể giải thời gian đa thức Trong lý thuyết độ phức tạp tính tốn, lớp NP - C (NP - đầy đủ) lớp toán định Một tố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 tốn NP quy L thời gian đa thức) Mặc dù lời giải cho tố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 tố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 tốn NP giải nhanh chóng hay khơng (đây toán P so với NP) Tuy nhiên, tốn NP - C giải nhanh chóng, theo định nghĩa NP - C, toán NP giải nhanh chóng Các tố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 tố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 tốn Ba lơ, tố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 tốn nhánh cận giải tốn Ba lơ 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ả q trình tính tố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 vng, 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 cịn 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 khơng có ký hiệu nào) Có đầu đọc – ghi ln 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ó vng 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 - 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ữ đố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 cịn 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 đố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 đố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 khơng thể 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 đố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 đốn 1.1.2 Bài tố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 tốn định tố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 tốn định: Ví dụ 1.1: Bài tốn kiểm tra số ngun tố Instance: số nguyên n > Question: n có phải số ngun tố hay khơng? Ví dụ 1.2: Bài tố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ề ngun tắc tốn biểu diễn lại tố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 tố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 tố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 tốn sở máy tính Turing) nói có thời gian tính tố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 tốn khơng vượt q 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 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 đố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 tốn dễ Ví dụ 1.3: Bài tố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 tố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 tố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 khơng có dãy bước chuyển M vượt T(n) bước chuyển Ví dụ 1.5: Bài tố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 tốn π1 ( π1: I1 —> {Yes/ No}) mà ta có thuật tốn cho tố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 tố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 ... 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. .. 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ố tố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 tốn Ba lơ, tốn tìm đườ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