Máy turing và tính khả quyết của thuật toán

29 2K 4
Máy turing và tính khả quyết của thuật toán

Đ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

Máy turing và tính khả quyết của thuật toán

MỤC LỤC CHƯƠNG MÁY TURING VÀ THUẬT TOÁN 1 Mô tả định nghĩa máy Turing 1.1 Mô tả phi hình thức máy turing .1 1.2 Định nghĩa hình thức máy Turing (máy Turing đơn băng – Single tape Turing machine) 1.4 Ví dụ máy Turing 1.5 Sơ đồ chuyển vị cho máy Turing .5 Giới thiệu máy Turing phổ dụng .6 Máy turing với biểu diễn thuật toán 3.1 Khái niệm thuật toán .10 3.2 Biểu diễn thuật toán cách hình thức máy Turing 11 CHƯƠNG TÍNH KHẢ QUYẾT CỦA THUẬT TOÁN 16 Tổng quan tính khả thuật toán 16 Luận đề Church-Turing 17 Các chương trình nhận dạng ngôn ngữ 18 3.1 Các chương trình máy Turing 20 3.2 Các hàm tính toán 20 Máy Turing vấn đề khả 22 4.1 Các tập đệ quy kể khả 22 4.1.1 Một số định nghĩa 22 4.1.2 So sánh RE tính khả .22 4.1.3 Tính kể 22 4.2 Các ngôn ngữ đệ quy liệt kê .24 4.2.1 Ngôn ngữ đệ quy 24 4.2.2 Ngôn ngữ đệ quy liệt kê 24 4.3 Các toán khả .24 Một số vấn đề máy Turing không giải .25 5.1 Bài toán in (printing problem) toán dừng(halting problem) 25 5.2 Hàm dừng 26 5.3 Entscheidungsproblem 26 TÀI LIỆU THAM KHẢO .28 28 Máy Turing tính khả thuật toán CHƯƠNG MÁY TURING VÀ THUẬT TOÁN Mô tả định nghĩa máy Turing 1.1 Mô tả phi hình thức máy turing Khái niệm máy Turing dựa ý tưởng người thực thủ tục rõ ràng cách thay đổi nội dụng băng giấy vô hạn, mà phân thành ô vuông chứa tập hữu hạn ký hiệu Người cần nhớ tập trạng thái hữu hạn thủ tục trình bày nhiều bước dạng “Nếu trạng thái bạn 42 ký hiệu mà bạn thấy ‘0’ thay ‘1’, di chuyển ký hiệu sang phải, thừa nhận trạng thái 17 trạng thái bạn” Trong số mô hình, đầu đọc (head) di chuyển dọc theo băng tĩnh (Stationary tape) Chỉ thị để thực (q1) bên đầu đọc Trong mô hình này, băng trống tất ô Các ô vuông tô đậm, gồm ô quét qua đầu đọc, ô vuông đánh dấu 1, 1, B biểu tượng đầu đọc, tạo thành trạng thái hệ thống Một cách rõ ràng hơn, hình dung máy Turing bao gồm thành phần sau: • Một băng (TAPE), hay gọi nhớ vô hạn, dạng băng gồm nhiều ô, kéo dài vô hạn phía phải Mỗi ô băng chứa ký hiệu thuộc chữ, gọi chữ băng (mà phần chữ vào, dùng cho xâu vào); • Một đầu đọc (HEAD) di chuyển băng, thời điểm nhìn vào ô băng; • Một tập hữu hạn trạng thái, có phân biệt trạng thái đầu tập hợp trạng thái thừa nhận; • Một hàm dịch chuyển chứa tập hữu hạn thị cho phép với trạng thái máy ký hiệu đọc ô đối diện với đầu đọc, máy thực bước sau: o Chuyển trạng thái o In ký hiệu băng ô duyệt (nghĩa thay ký hiệu đọc băng ký hiệu đó) Máy Turing tính khả thuật toán o Dịch chuyển đầu đọc - viết (sang trái (L), sang phải (R) đứng yên(∅)) a1 a1 … … a1 B B Băng Đầu đọc q Trạng thái Hình Các phận máy Turing • Các thao tác máy Turing (thường gọi thao tác nguyên tử - Atomic operations) • Đọc (xác định) ký hiệu mà đầu đọc trỏ tới • Viết ký hiệu lên ô vuông mà đầu đọc trỏ tới (sau xóa lần ký hiệu vừa ghi đó) • Di chuyển băng sang trái ô • Di chuyển băng sang phải ô • Thay đổi trạng thái • Ngắt Máy Turing tính khả thuật toán • Quá trình thực máy Turing mô tả sau: • Lúc khởi đầu, xâu vào đặt băng (tận bên trái) Mọi ô khác băng chứa ký hiệu đặc biệt, B (blank), gọi ký hiệu trống Đầu đọc trỏ vào ô thứ băng máy trạng thái đầu • Cứ bước trình thực (xem hình 2), máy thực hiện: o Đọc ký hiệu đối diện đầu đọc, o Thay ký hiệu ký hiệu tính từ hàm dịch chuyển, o Dời đầu đọc ô sang trái hay sang phải theo hướng định hàm dịch chuyển, o Đổi trạng thái thành trạng thái tiếp theo, cho hàm dịch chuyển • Xâu vào thừa nhận trình thực xâu đạt đến trạng thái thừa nhận 1 B B 1 1 B B q q Hình Một bước dịch chuyển 1.2 Định nghĩa hình thức máy Turing (máy Turing đơn băng – Single tape Turing machine) Sự mô tả máy Turing cách trực quan phần giúp bước đầu dễ dàng hình dung hoạt động Tuy nhiên, mô tả phi hình thức chưa đủ chặt chẽ để tiến hành suy diễn toán học, nhằm sâu nghiên cứu máy Turing Bởi vậy, ta cần có định nghĩa hình thức máy Turing Theo Hopcroft Ullman (1979) định nghĩa cách hình thức máy Turing 7- M = < Q, Γ , b, ∑ , δ , q0, F> đó: • Q tập hữu hạn trạng thái, Máy Turing tính khả thuật toán • Γ chữ băng (bộ chữ dùng băng), • b ∈ Γ ký hiệu trống (ký hiệu cho phép xuất cách vô hạn băng bước trình tính toán), • ∑ ⊆ Γ chữ vào (bộ chữ dùng cho xâu vào), • δ : Q x Γ → Q x Γ x {L, R} hàm phận, hay gọi hàm dịch chuyển (là hàm định nghĩa việc dịch chuyển trạng thái máy Turing máy trạng thái), L R hiểu trái (Left) phải (Right)) • q0 ∈ Q trạng thái đầu (trạng thái khởi tạo), • F ⊆ Q tập trạng thái thừa nhận – accepting state (hoặc trạng thái cuối) 1.4 Ví dụ máy Turing Dưới ví dụ máy Turing ứng đụng việc chấp nhận tập Ví dụ Thiết kế máy Turing chấp nhận ngôn ngữ L = { 0n1n | n ≥ 1} Khởi đầu, máy Turing chứa 0n1n bên trái băng sau vô hạn khoảng trống Blank Máy Turing lặp lại trình sau:  M thay bên trái X chuyển sang phải tới trái nhất, máy Turing thay Y dịch chuyển bên trái gặp X phải chuyển sang phải ô (tới trái nhất) tiếp tục lặp chu trình  Nếu dịch chuyển sang phải để tìm mà máy Turing gặp Blank máy Turing dừng không chấp nhận input Tương tự, máy Turing thay hết X kiểm tra băng máy Turing dừng không chấp nhận input  Máy Turing chấp nhận input không ký hiệu băng Đặt máy Turing M = < Q, Γ , b, ∑ , δ , q0, F> với thành phần : Q = {q0, q1, q2, q3, q4}; ∑= {0, 1}; Γ = {0, 1, X, Y, B} F = {q4} Ta hình dung trạng thái câu lệnh nhóm câu lệnh chương trình Trạng thái q0 trạng thái khởi đầu làm cho ký hiệu bên trái thay X Trạng thái q dùng để tiến sang phải bỏ qua số Y để tìm bên trái Nếu M tìm thấy thay Y vào trạng thái q2 Trạng thái q2 đưa M tiến sang trái X vào trạng thái q 0, dịch chuyển sang phải để tới bên trái tiếp tục chu trình Khi M tiến sang phải trạng thái q1, B X tìm thấy trước input bị loại bỏ (không chấp nhận) có chứa nhiều ký hiệu input dạng 0*1* Trạng thái q0 có vai trò khác Nếu trạng thái q tìm thấy X bên phải sau Y số xét hết, trạng thái bắt đầu chu trình q0 không tìm thấy ký hiệu để thay thành X mà gặp Y máy Turing vào trạng thái q3 duyệt qua Y để kiểm tra có hay ký hiệu Máy Turing tính khả thuật toán lại Nếu theo sau Y B, nghĩa băng nhập không ký hiệu máy Turing vào q4 (trạng thái kết thúc) để chấp nhận input Ngược lại input bị loại bỏ Ta có hàm chuyển δ cho bảng sau : Hình Một máy Turing kiểm nhận {0n1n | n>=1} Các phép chuyển hình thái máy Turing M input 0011 : q00011 ⊢ Xq1011 ⊢ X0q111 ⊢ X q20Y1 ⊢ q2X0Y1 ⊢ X q00Y1 ⊢ XXq1Y1 ⊢ XXY q11 ⊢ XX q2YY ⊢ X q2XYY ⊢ XX q0YY ⊢ XXYq3Y ⊢ XXYYq3 ⊢ XXYYq4 1.5 Sơ đồ chuyển vị cho máy Turing Chúng ta biểu diễn chuyển vị máy Turing cách hình ảnh Một sơ đồ chuyển vị (transition diagram) bao gồm tập nút tương ứng với trạng thái máy Turing Một cung từ trạng thái q đến trạng thái p với nhãn nhiều mục có dạng X/YD, X Y ký hiệu băng, D hướng (L R) Điều có nghĩa δ (q, Xi) = (p, Y, D), thấy nhãn X/YD cung từ q đến p Tuy nhiên, sơ đồ chúng ta, hướng D biểu diễn mũi tên sang trái ( ← ) sang phải ( → ) Giống loại sơ đồ chuyển vị khác, biểu diễn khởi trạng từ “start” mũi tên vào trạng thái Kiểm trạng chi vòng kép Vì thông tin máy Turing không đọc trực tiếp từ sơ đồ ký hiệu dùng cho ô trống Chúng ta xem B trừ nói rõ Ví dụ 1: Hình trình bày sơ đồ chuyển vị cho máy Turing ví dụ vừa trình bày trên, với hàm chuyển vị cho hình Máy Turing tính khả thuật toán Hình Sơ đồ chuyển vị cho máy Turing kiểm nhận chuỗi có dạng 0n1n Giới thiệu máy Turing phổ dụng Máy Turing phổ dụng máy Turing bắt chước hoạt động máy Turing Máy Turing phổ dụng U hiểu sau: Với cách mã hóa thích hợp, ánh xạ chuyển trạng thái máy Turing M từ ω bảng chữ vào Với từ mã hóa máy Turing phổ dụng U dừng máy Turing M dừng với từ ω Hình Máy Turing phổ dụng Chúng ta xem máy Turing phổ dụng mô hình toán học máy tính điện tử ngày hôm Các máy thực công việc cách mã hóa chương trình theo ngôn ngữ bên gọi ngôn ngữ máy Tập kí hiệu ghi lên băng hữu hạn nên ta ký hiệu chúng sau: S0 = B, S1, S2, , Sm mã hóa chữ số Chẳng hạn: B – 1, S1 – 11, S2 – 111, , Sm – 1m+1 Tương tự vậy, tập trạng thái hữu hạn ta mã hóa chúng sau: q0 – 1, q1 – 11, q2 – 111, , qn – 1n+1 Máy Turing tính khả thuật toán Cuối hai ký hiệu L R mã hóa L – R – 11 Bây giờ, để mã hóa ánh xạ chuyển trạng thái máy Turing, ta sử dụng bảng biểu diễn ánh xạ Trong bảng cột ký hiệu ký hiệu ghi lên băng vào, dòng ký hiệu trạng thái Tiếp theo, liệt kê phần tử bảng theo dòng với số dòng cột tương ứng chúng: Các phần tử dòng 1, tiếp đến phần tử dòng 2, Chẳng hạn, dòng xuất có nghĩa δ (qi, Sj) = Giữa dãy mã có chèn hai ký hiệu mã ký hiệu chèn ký hiệu Máy Turing M mã hóa có ký hiệu [M] Ở đây, thừa nhận mà không chứng minh rằng: Với máy Turing M tồn máy Turing tương đương có trạng thái kết thúc Vì vậy, có quyền giải thiết q0 trạng thái đầu q1 trạng thái kết thúc máy Turing M Ví dụ Cho máy Turing M với ánh xạ chuyển trạng thái cho bảng sau: q0 B S1 q1 q2 Các phần tử mảng xếp thành dãy : Dãy mã hóa dạng dãy số 0, [M] = 01010110110010110110110100110110110101 1100111011011010111 Nếu băng vào có ω = S1S1BS1, mã tương ứng là: [ ω ] = 1101101011 Với [M] [ ω ] cho ta dịch M từ ω sau: M = < {q0, q1, q2}, {S1}, B, {S1, B}, q0, {q1}> Trong đó: δ (q0, B) = , δ (q0, S1) = δ (q0, S1) = δ (q0, S1) = Máy Turing tính khả thuật toán ω =S1S1BS1 Bây giả sử máy Turing M có n trạng thái bảng chữ ghi lên băng có m ký hiệu, thêm vào ký hiệu, trạng thái, ánh xạ chuyển trạng thái M mã hóa nói Mô hình hóa hoạt động máy Turing M máy Turing phổ dụng U mô tả khái quát sau: Trước hết [M] [ ω ] cần phải ghi lên băng máy Turing phổ dụng U theo quy cách sau đây: Ký hiệu X ghi lên băng, chia băng thành nửa vô hạn Nửa băng bên phải dành đoạn kề kể từ vị trí ký hiệu sau X: Đoạn gọi Buffer gồm n + m + vị trí ký hiệu tất nhận ký hiệu 0; đoạn gọi vùng mã hóa M, bắt đầu ký hiệu Y, tiếp sau Y [M] kết thúc chữ số ; đoạn sau gọi đoạn mã hóa ω , bắt đầu ký hiêu Z [ ω ] Hình ảnh băng lúc đầu sau: B X Buffer Y 0 Z Mã hóa M B B Mã hóa Hình Hình ảnh Băng lúc đầu Buffer phục vụ cho việc ghi nhận nhận cấu hình M bước Chúng ta chép vào vùng trạng thái bên mã hóa ký hiệu đọc Ký hiệu Y thường đứng trước xác định trạng thái hành M, ký hiệu hành hành băng, hướng chuyển động đầu đọc băng Z đánh dấu ký hiệu đọc băng M Quá trình tính toán U mô hoạt động máy Turing M với xâu vào ω chia pha thích hợp với việc dịch chuyển cấu hình M Một giai đoạn (pha) hoạt động máy Turing phổ dụng U tóm tắt sau: Đầu tiên chép vào buffer khối ký hiệu nằm sau Y (gọi khối Y), sau ghi vào cuối khối vừa chép ký hiệu X, xóa ký hiệu Y, chạy sang phải tìm ký hiệu Z chép khối ký hiệu sau Z (gọi khối Z) vào buffer sau ký hiệu X ghi lại ký hiệu Y trước [M] Như vậy, sau giải đoạn này, Buffer chứa mã trạng thái ký hiệu hành máy Turing M Bước tiếp theo, máy Turing phổ dụng U so sánh khối ký hiệu liên tiếp sau Y với nội dung buffer Nếu trùng tìm cần tìm Nếu ngược lại, tìm đến mã hóa sau Y lại tiếp tục so sánh Trong trường hợp mô tả M không tìm thấy thích hợp U dừng Ngược lại, tìm cần tìm xóa nội dung buffer chuyển Y đến trước phần tử thứ Đổi nội Máy Turing tính khả thuật toán dung khối sau Z nội dung khối sau Y chuyển Y đến trước phần tử thứ tư Sau đọc xong phần tử thứ tư mà xác định hướng chuyển động đầu đọc/ghi M U chuyển ký hiệu Y đến sau phần tử trước phẩn tử thứ Tùy thuộc vào nội dung khối thứ (một ký hiệu hay hai ký hiệu 1) mà U chuyển Z qua phải hay qua trái khối Nếu Z lúc đầu nằm tận bên trái băng ghi M cần dịch chuyển sang phải U đẩy mã từ sang phải ghi mã hóa ký hiệu trắng vào sau Z Nếu Z nằm tận bên phải cần chuyển sang phải U ghi mã ký hiệu trắng vào cuối từ Khi hoàn thành công việc khối ký hiệu đứng sau Y ký hiệu trạng thái hành M, khối sau Z xác định ký hiệu M cần đọc Như vậy, giai đoạn việc mô bước M bắt đầu Các giai đoạn hoạt động máy Turing phổ dụng U mô hình hóa hoạt động bước máy Turing M Ngoài ra, U thực công việc sau đây: Đầu tiên U thay tất ký hiệu đoạn băng vào khoảng trắng, cuối công việc, M dừng máy U kiểm tra liệu trạng thái cuối M có phải trạng thái kết thúc hay không Các pha máy Turing phổ dụng U chia thành phần sau: • Phần Thay ký hiệu ký hiệu B đầu đọc/ghi chuyển đến trước Y • Phần Sao chép mã trạng thái hành vào buffer • Phần Sao chép mã ký hiệu cần đọc băng M vào buffer • Phần Đặt X Y vào trước buffer trước vị trí [M] • Phần Tìm có mã trạng thái ký hiệu băng trùng với buffer • Phần Xóa buffer • Phần Thay mã ký hiệu đọc mã ký hiệu M • Phần Đẩy Z sang phải hay sang trái khối mà mã ký hiệu khối đọc pha Nếu cần ghi mã khoảng trắng vào phải trái từ băng M • Phần Máy Turing phổ dụng U dừng trạng thái kết thúc M dừng trạng thái kết thúc Đồng thời vùng mã hóa từ băng chứa mã từ đáng lại băng M, mã trạng thái cuối M thấy buffer Chúng ta ký hiệu [M] [ ω ] ghi băng U gọi T(U) ngôn ngữ chấp nhận máy Turing phổ dụng U Chúng ta nhận thấy thuộc T(U) ω chấp nhận M, có nghĩa là: T(U) = { : ω ∈ T(M)} Máy turing với biểu diễn thuật toán Máy Turing tính khả thuật toán 14 Ta xây dựng mô hình tính toán sau: Vấn đề xây dựng hàm tính toán yêu cầu chuyển thành xây dựng so sánh, cộng xóa Điều có nghĩa toán phức tạp chuyển thành kết hợp phép toán Với nhiều chứng mạnh mẽ chưa đủ chứng minh chặt chẽ, chấp nhận miêu tả xác ý tưởng tổng quát thuật toán chữ thực máy Turing hoàn toàn đầy đủ Có nghĩa rằng, thuật toán bảng chữ cụ thể, xây dựng thuật toán Turing cho kết với liệu ban đầu thuật toán Sự chấp nhận gọi luận đề Turing lý thuyết thuật toán, định nghĩa “sự tính toán học” Cụ thể, • Bất máy tính số tồn thực máy Turing • Không đưa toán, giải mà cách trực quan xem thuật toán, mà không tồn máy Turing giải • Các mô hình thay khác đưa cho tính toán học số chúng mạnh mô hình máy Turing Bằng việc chấp nhận luận đề Turing, sẵn sàng để định nghĩa xác khái niệm thuật toán, khái niệm khoa học máy tính Một thuật toán cho hàm f: D → R máy Turing M cho cho chuỗi nhập w∈D băng nhập, cuối M dừng với kết f(w) ∈R băng Một cách cụ thể là: q0w M qf f(w), qf ∈F, ∀w ∈ D Luận đề Turing chấp nhận rộng rãi Thông qua việc thực phép tính dựa kế hoạch chọn trước, nhà khoa học tiến hành theo cách tương đương với máy Turing: xem xét số vị trí viết “trạng thái trí tuệ”nhất định, họ tiến hành sửa đổi viết thúc đẩy “trạng thái trí tuệ” mới, chuyển sang suy ngẫm phần viết sau Máy Turing tính khả thuật toán 15 Tóm lại, thuật toán xem chuỗi thao tác thực hệ thống Turing-đầy đủ (Turing complete) (còn gọi Turing-tương đương (Turing equivalent) hay phổ dụng ((computationally) universal) Trong đó, máy trừu tượng hay ngôn ngữ lập trình gọi Turing-đầy đủ có khả tính toán tương đương mô hình đơn giản hóa máy tính có khả lập trình, máy Turing phổ dụng “Lý luận không hình thức Turing luận đề ông giải thích cho luận đề mạnh hơn: Mọi thuật toán mô máy Turing” Gurevich (2000) Còn theo Savage [1987], “Một thuật toán trình tính định nghĩa máy Turing” Máy Turing tính khả thuật toán 16 CHƯƠNG TÍNH KHẢ QUYẾT CỦA THUẬT TOÁN Tổng quan tính khả thuật toán Trong phần này, tìm hiểu tảng khoa học khoa học máy tính, tính khả toán Đó “Những vấn đề thực thuật toán hay máy tính?” Trong lý thuyết tính toán, toán định câu hỏi số hệ thống hình thức với câu trả lời có/không Ví dụ, toán “cho số x y, x có chia hết y không?” Câu trả lời “có” hay “không”, phụ thuộc vào giá trị x y Bên cạnh đó, toán định liên hệ mật thiết với toán hàm (function problem) có câu trả lời phức tạp so với có/không Một toán hàm “cho số x, y, tìm x chia hết y?” Các toán định quan hệ với toán tối ưu, xét đến với việc tìm lời giải tối ưu cho vấn đề cụ thể Trong hướng tiếp cận vấn đề tính khả toán, nhà khoa học quan tâm đến họ toán tìm thuật toán để định họ toán Theo đó, thuật toán lời giải cho toán nên phương pháp sử dụng để giải toán định gọi thủ tục định hay thuật toán Từ đó, toán tổng quát khả lời giải dừng khoảng thời gian hữu hạn, không toán bất khả Chúng ta cần ý vấn đề tính khả phần lý thuyết tính toán không quan tâm đến lượng thời gian mà lời giải cần mà cần khoảng thời gian hữu hạn Ví dụ, thuật toán cho toán định giải thích làm cách để xác định x có chia hết cho y không, với x y cho trước Một toán định giải số thuật toán gọi khả Năm 1936, Church hình thức hóa họ toán mà ông chứng minh định thuật toán Để phát biểu có nghĩa, khái niệm toán học thuật toán phải đưa Và Church sử dụng công cụ từ logic, khái niệm hàm đệ quy, để hình thức hóa khái niệm khả giải mặt thuật toán Trong năm Church công bố công trình mình, Turing đưa khái niệm máy Turing Và ngày nay, gọi toán có khả tính mặt thuật toán (algorithmic solvability) chúng tính máy Turing Tuy nhiên, nhà khoa học thống lớp hàm tính thuật toán trùng với lớp hàm tính máy Turing Nhiều mô hình tính toán khác đề xuất (một số mô hình tương đối khác với máy Turing) chưa tìm mô hình máy giải nhiều vấn đề tính toán máy Turing Trong phần sau đây, khảo sát luận đề Church-Turing, luận đề tảng lý thuyết tính khả toán Máy Turing tính khả thuật toán 17 Luận đề Church-Turing Luận đề Church-Turing đề cập đến khái niệm thuật toán hiệu logic toán học Một thuật toán, hay thủ tục, M, cho việc thu kết mong muốn gọi “hiệu quả” trường hợp: • M thiết lập với hình thức số hữu hạn lệnh xác (từng lệnh biểu diễn dạng số hữu hạn ký hiệu) • Nếu thực không lỗi, M đưa kết mong muốn số hữu hạn bước Khái niệm thuật toán hiệu khái niệm không hình thức, nỗ lực để xác định tính hiệu cho yêu cầu quan trọng mà thuật toán đòi hỏi được phát triển Một thành tựu hàng đầu Turing – bước phát triển lớn trình phát triển lý thuyết tính toán – đề xuất biểu thức định nghĩa cách nghiêm ngặt, qua phát biểu không quy “bằng thuật toán hiệu quả” thay “bằng máy Turing” Tầm quan trọng đề xuất Turing chỗ: đề xuất xác, việc nói tồn không tồn thuật toán hiệu thay thế, toán học logic, cách nói tồn hay không tồn chương trình máy Turing Ví dụ, người thiết lập thuật toán hiệu để thực vấn đề cách chứng minh máy Turing thực vấn đề Khái niệm hình thức đề xuất Turing khái niệm tính khả máy Turing Ông cho có thuật toán hiệu thu giá trị hàm toán học, hàm tính máy Turing Chúng ta cần ý phần đảo luận đề - thuật toán giải vấn đề thực máy Turing hiệu - Đó chương trình máy Turing tự đặc tả thuật toán hiệu quả, nên người có thể, mặt lý thuyết, làm việc với chương trình máy Turing nào, theo lệnh định nghĩa trước thực thao tác yêu cầu Trước đó, Church độc lập đề xuất cách khác để thay cách nói thuật toán hiệu với ngôn ngữ xác cách quy, sử dụng khái niệm khả định nghĩa-lambda (lambda-definability) thay “khả tính máy Turing” Trong đó, hàm số nguyên dương gọi có khả định nghĩa-lambda giá trị hàm tính trình phép lặp lại Và ông sử dụng biểu diễn (phi hình thức) “có thể tính hiệu quả” để có thuật toán hiệu để tính giá trị hàm qua đề xuất: “Xác định khái niệm hàm tính hiệu số nguyên dương cách xác định khái niệm khái niệm hàm đệ quy số nguyên dương (hay với khái niệm hàm có khả định nghĩa-lambda số nguyên dương” Trong thực tế, Church đề xuất “Một hàm số nguyên dương có khả tính hiệu hàm đệ quy” Sự đảo lại, hàm đệ quy số nguyên dương có khả tính hiệu quả, thường xem định lý đảo luận đề Church Máy Turing tính khả thuật toán 18 Sau tìm hiểu đề xuất Church, Turing nhanh chóng chứng minh cấu trúc khái niệm khả định nghĩa-lambda Church cấu trúc khái niệm khả tính ông tương đương Do đó, đề xuất Church, từ “hàm đệ quy số nguyên dương” thay từ “hàm số nguyên dương tính máy Turing” Và với quan điểm kết tìm hiểu đây, giới hạn hàm số nguyên dương, luận đề Church Turing đề xuất, khác nhau, lại trở thành tương đương nhau, theo nghĩa hướng đề đưa chung tập hàm toán học Luận đề Church-Turing khẳng định tập bao gồm hàm có giá trị thu thuật toán thỏa mãn điều kiện cho tính hiệu Tuy nhiên, Turing Church đề nhận cách triển khai Turing “có sức thuyết phục hơn” [turing] “có ưu điểm việc đưa khả nhận dạng với tính hiệu quả… hiển nhiên lập tức” [Church] Tóm lại, luận đề Church-Turing, mà trở thành chuẩn, đề xuất Kleene sau: “Các luận đề Turing Church tương đương Chúng ta xem luận đề vừa luận đề Church, hay liên hệ với phiên … có quan hệ với máy Turing Luận đề Church-Turing” Các chương trình nhận dạng ngôn ngữ Như tiểu luận trình bày, ưu điểm bật máy Turing tính đơn giản, cần ý thay đổi đơn giản máy automat hữu hạn (thêm nhớ đọc/viết) mang lại cho khả tính toán phổ dụng Tuy nhiên, việc máy Turing thuộc loại “bậc thấp” dẫn đến hạn chế số tình sau: Xây dựng máy Turing để thực công việc đơn giản kiểm tra số nguyên có phải số nguyên tố hay không công việc rắc rối thời gian Chính lý đó, tiểu luận này, tiến hành theo cách tương đối phi truyền thống Chúng ta sử dụng chương trình để nghiên cứu khả tính toán túy khái niệm, định lý … phần đảm bảo cho việc có sử dụng máy Turing hay chương trình cách hình thức hóa “chính thức” vấn đề quan trọng Đầu tiên, cần xác định chương trình chấp nhận ngôn ngữ có ý nghĩa Để cụ thể, xét lại số quy ước chương trình (mà chương trình C): • Một file văn mô hình hóa chuỗi ký tự (được kết thúc dấu hiệu đánh dấu) Trong thuật ngữ ngôn ngữ hình thức chuẩn, file văn đơn giản từ bảng ký tự ASCII • Một chương trình p lấy đầu vào từ file đầu vào chuẩn, xuất kết đầu vào file đầu chuẩn • Khi chương tình dừng, trả điều kiện thoát cho hệ điều hành cách gọi hàm exit(status) Trạng thái sử dụng để thông báo thực thành công mà ký hiệu exit(0) Chúng Máy Turing tính khả thuật toán 19 ta ký hiệu trạng thái thoát khác exit(1) minh họa điều kiện khác sử dụng để báo hiệu không thành công • Và chương trình tự thân file văn Vì vậy, cho p chương trình, x file văn bản, giả sử p thực với x đầu vào Hãy tạm bỏ qua đầu trọng vào cách kết thúc p Có khả sau đây: • p dừng với exit(0), hay • p dừng với điều kiện dừng khác, hay • p dừng lại, có nghĩa trình tính toán thực mãi (chú ý mô hình tính toán chúng ta, không cho phép hệ điều hành dừng chương trình tràn stack hay ràng buộc khác) Theo cách này, xét chương trình p để định nghĩa tập từ bảng chữ ASCII: từ làm cho chương trình thực lệnh exit(0) Nghĩa là, chương trình định nghĩa (đoán nhận) ngôn ngữ ASCII Qua đây, thấy mối liên quan khăng khít tự nhiên lý thuyết tính toán lý thuyết ngôn ngữ Tóm lại: Định nghĩa Cho bảng ký tự ASCII ký hiệu ΣA Giả sử p chương trình, x từ ΣA Xét kết việc thực chương trình p đầu vào chuẩn file với nội dung x Nếu p dừng với exit(0) (tức thành công), phát biểu P chấp nhận x Tập ngôn ngữ chấp nhận p tập tất từ chấp nhận p ký hiệu L(p): L(p) Với {x∈ | p dừng với điều kiện thoát exit(0) đầu vào x} tập tất từ thành lập từ Σ A Ví dụ Cho p chương trình có giả mã sau: //Chấp nhận anbncn Đọc đầu vào vào mảng; oksofar = true; duyệt mảng, đếm số a, lưu kết đếm vào n1; duyệt mảng, đếm số b, lưu kết đếm vào n2; thấy a, exit(1); duyệt mảng, đếm số c, lưu kết đếm vào n3; thấy a hay b, exit(1); không eof, exit(1); n1 == n2 == n3 exit(0) không exit(1) Lúc L(p) {anbncn | n ≥ 0} Máy Turing tính khả thuật toán 20 Thực tế, rút nhiều điều từ việc chương trình p chấp nhận ngôn ngữ {a b c | n ≥ 0} Vì p dừng, xét exit(0) “đúng vậy, từ đầu vào a nbncn với số n”, xét exit(1) “không, từ đầu vào không a nbncn với n nào” Có nghĩa là, xét cách tự nhiên p thủ tục định để kiểm tra phần tử ngôn ngữ {anbncn | n ≥ 0} n n n Định nghĩa Cho p chương trình Ta nói p định với đầu vào x, p dừng với exit(0), p dừng với exit(1) Đôi định gọi chương trình toàn thể (total program) Điểm cần ý p không thực mãi đầu vào nào, không dừng với trạng thái thoát exit(0) hay exit(1) Chúng ta thấy p định Sự phân biệt quan trọng [], nguyên tắc trung tâm mà lý thuyết tính khả sử dụng làm tảng Chúng ta xét điểm chi tiết phần sau 3.1 Các chương trình máy Turing Với tảng lý thuyết phần (khả biểu diễn thuật toán cách hình thức máy Turing + khả nhận dạng ngôn ngữ máy Turing), suy kết sau: Định lý Cho chương trình p, có máy Turing M mô p cho từ x với nghĩa sau: • Nếu p dừng với exit(0) đầu vào x M chấp nhận x dừng, • Nếu p dừng với số điều kiện thoát khác đầu vào x M dừng x mà không chấp nhận x, • Nếu p không dừng đầu vào x M dừng đầu vào x Hơn nữa, cho máy Turing M, có chương trình p mô M theo cách Chú ý rằng, quan sát mang lại cho khái niệm đáng ý trình tính toán chương trình Đó khái niệm mạnh (robust) không phân biêt theo ngôn ngữ lập trình khác Và lần thấy khái niệm máy Turing, dù đơn giản nhiều so với ngôn ngữ lập trình đại, sẵn sàng thực tất thao tác phức tạp có trình tính toán 3.2 Các hàm tính toán Trên xét chương trình đơn giản chấp nhận từ, nghĩa định nghĩa ngôn ngữ Dĩ nhiên, chương trình thường cho đầu đầu vào, chương trình tính hàm Trong phần trên, xét định nghĩa hình thức thuật toán tổng quát với máy Turing Phần này, xét số định nghĩa thuật ngữ hàm khía cạnh nhận dạng ngôn ngữ Định nghĩa Một hàm phần từ Σ* vào Σ* hàm f từ D Σ*, D tập Σ* Máy Turing tính khả thuật toán 21 Chú ý rằng, f hàm phần từ vựng, hoàn toàn xảy trường hợp miền D f tất Σ*, lúc ta gọi f hàm toàn phần từ Σ* vào Σ* Định nghĩa Cho p chương trình, w từ Xét kết chương trình thực thi p đầu vào chuẩn file với nội dung w Nếu p dừng với exit(0), nội dung file đầu chuẩn từ x, nói trình tính toán p w trả x Hàm phần tính p hàm phần từ từ vựng vào từ vựng miêu tả phần Và cần ý miền hàm tính p xác L(p) Dĩ nhiên, có mối quan hệ chung máy Turing chương trình bối cảnh hàm cho nhận dạng ngôn ngữ sau: Định lý Cho chương trình p, có máy Turing M cho M tính hàm phần từ vựng mà p thực Cho máy Turing M có chương trình p cho p tính hàm phần từ vựng mà M thực Lúc này, • Một hàm phần f từ Σ* vào Σ* gọi hàm phần T-tính tồn máy Turing cho: o Với xâu đầu vào w thuộc miền xác định f, máy Turing dừng hình trạng mà f(w) băng, o Với xâu đầu vào w không thuộc miền xác định f, máy Turing chạy không dừng dừng thông báo, nhờ giá trị quy ước băng hàm không xác định • Một hàm toàn phần f từ Σ* vào Σ* gọi hàm T-tính tồn máy Turing cho với đầu vào w, máy dừng hình trạng mà f(w) băng Trong tiểu luận này, xét toán định câu hỏi có/không tập đầu vào vô hạn Do đó, định nghĩa toán định hình thức tập đầu vào mà toán trả kết có Với nghĩa này, toán định tương đương với toán định chuỗi cho có thuộc tập chuỗi hay không, với tập chuỗi gọi ngôn ngữ hình thức, chuỗi đầu vào thuộc tập trả CÓ Hay phát biểu cách hình thức hơn, thuật toán khả dừng với câu trả lời CÓ hay KHÔNG chuỗi đầu vào ngôn ngữ L cho Đối với vấn đề cụ thể, thuật toán định xác chuỗi có thuộc ngôn ngữ không toán khả Do đó, tính khả nhiều ngôn ngữ xác định theo thuật toán Và theo đó, việc ngôn ngữ khả tương đương với việc toán khả Trong đó, toán khả T-quyết định tồn máy Turing định ngôn ngữ liên kết với toán (có nghĩa ngôn ngữ liên kết với đệ quy) Còn toán khả T-nửa định tồn máy Turing thừa nhận ngôn ngữ liên kết với toán (có nghĩa ngôn Máy Turing tính khả thuật toán 22 ngữ liên kết với đệ quy kể được) Trong phần sau, xét khái niệm đệ quy đệ quy kể cách cụ thể Máy Turing vấn đề khả 4.1 Các tập đệ quy kể khả 4.1.1 Một số định nghĩa Định nghĩa Cho p chương trình Người ta nói p định (decider) với đầu vào x, p ngắt với EXIT_SUCCESS p ngắt với EXIT_FAILURE Điểm mấu chốt p không chạy đầu vào nào, không ngắt với trạng thái kết thúc EXIT_SUCCESS EXIT_FAILURE Định nghĩa Cho A tập ∑ * • A nửa khả (semi-decidability), đệ quy kể (RE) ngôn ngữ L(p) cho chương trình p • A khả ngôn ngữ L(p) cho định p Định đề Cho A tập ∑ * Thì : • A RE có máy Turing M cho A = L(M) • A khả có máy Turing M mà ngắt đầu vào cho A = L(M) 4.1.2 So sánh RE tính khả Điểm khác RE khả gì? Một điều chắn rằng, tập A khả A RE Điều suy trực tiếp từ định nghĩa: Nếu A khả L(p) cho định p đó, L(p) cho chương trình p đó, suy RE Vậy, điều ngược lại nào? Đó là, A RE, liệu A có khả không? Trong số tài liệu điều ngược lại không có tập RE chúng lại không khả Tóm lại: Nếu nói “A RE” điều có nghĩa “A nửa khả quyết, khả quyết” 4.1.3 Tính kể Thuật ngữ “đệ quy kể được” nêu định nghĩa dường nghịch lý, thấy liên quan đến “đếm được” Chúng ta xem định nghĩa đây: Định nghĩa Một chương trình E kể tập A nếu, xử lý với file đầu vào rỗng, tạo chuỗi từ bao gồm thành phần A Máy Turing tính khả thuật toán 23 Nó không yêu cầu kể (enumerator) tạo từ A thứ tự cụ thể Nó không yêu cầu kể tạo từ lần Nghĩa kể E cho tập A tạo x từ A sau nhiều lần thực Nó yêu cầu thành phần A xuất lần đầu E Nói cách khác, bạn A RE có kể cho A mà in thành phần A lần Chú ý kể không ngắt Nếu ngắt nghĩa đếm tập hữu hạn Ngay không ngắt đếm tập hữu hạn Tuy nhiên, hoàn toàn đếm tập vô hạn, kể không yêu cầu ngắt Định lý phần là: Một tập đệ quy kể kể chương trình Đến đây, thấy tên “đệ quy kể được” không ẩn lúc trước Chiều “nếu” chứng minh kiểm chứng cách dễ dàng Chiều lại phức tạp Giả sử A RE, chương trình p với L(p) = A Ở đây, phải tìm chương trình E để tạo danh sách thành phần A Ý tưởng hoàn toàn thực được: việc đếm tất từ x0, x1, x2, … xem xi đầu vào p Bất kể p chấp nhận xi, thêm xi vào đầu E Một rắc rối xảy với ý tưởng không cẩn thận, rơi vào vòng lặp vô hạn để cố gắng định phải p chấp nhận xi cụ thể chưa có hội để xem xét x i+1, xi+2, … Một thủ thuật chạy cách có hiệu tất kiểm tra tất giá trị x i cách đồng thời Đoạn mã cho bên (trong chứng minh nửa thứ hai mệnh đề nếu) đưa kỹ thuật thực Định lý Một tập A ⊆ ∑ * RE có chương trình máy tính mà đếm A Chứng minh Giả sử có chương trình E Ở đây, ta có chương trình p cho L(p) = E Trên đầu vào x; Bắt đầu chương trình E xem đầu ra; Nếu x xuất đầu E, exit(0) Ngược lại, giả sử A RE Ở đây, ta có chương trình E mà kể A int k = 0; while true For each xi with ≤ i ≤ k Chạy p xi k bước; Bất kể xi chấp nhận p print(xi); k = k+1; Máy Turing tính khả thuật toán 24 Chú ý rằng, với việc kể chương trình E mà xây dựng phần 2, x A hoàn toàn in E nhiều lần cách vô hạn 4.2 Các ngôn ngữ đệ quy liệt kê 4.2.1 Ngôn ngữ đệ quy Ngôn ngữ đệ quy tập tất ngôn ngữ mà chúng định máy Turing LREC = {L : Tồn máy Turing M, cho M định L} 4.2.2 Ngôn ngữ đệ quy liệt kê Ngôn ngữ đệ quy liệt kê tập tất ngôn ngữ mà chúng định nửa (semi-decided) máy Turing LR.E = {L : Tồn máy Turing, cho M định nửa L } 4.3 Các toán khả Có quan hệ gần gũi câu hỏi mối quan hệ ngôn ngữ loại câu hỏi “yes/no” mà thường muốn giải giới thực, chẳng hạn kiểm tra tính nguyên thủy (primality) số nguyên, kiểm tra đồ thị có đồ thị phẳng hay không, hay kiểm tra tính đắn chương trình Mối quan hệ đơn giản sau: đặt ký tự ∑ lên mà biểu diễn trường hợp toán, trường hợp mà cho câu trả lời ứng với câu hỏi “đúng” định nghĩa ngôn ngữ ∑ , tập ∑ * Với cách này, hiểu toán khả RE Sự liên hệ đáng để ý: Chúng ta xác định vấn đề cho với ngôn ngữ chứa tất đầu vào lấy từ câu trả lời “đúng” cho vấn đề Chẳng hạn, định nghĩa trên, ngôn ngữ sau đây: {w ∈ [0, 1] * | w mã hóa số nguyên tố} xác định với toán: Đầu vào: Một số nguyên n dạng nhị phân Câu hỏi: n có phải số nguyên tố hay không? Như vậy, nói toán RE khả ngôn ngữ kết hợp RE khả quyết, nghĩa ngôn ngữ kết hợp có chương trình nhận chí định Ví dụ Bài toán khả Đầu vào: Một số nguyên n dạng nhị phân Câu hỏi: Có phải n số nguyên tố không? Những mà muốn nói đây, là: số nguyên mã hóa dạng từ tập {0, 1} sử dụng số Tập từ để mã hóa số nguyên tố ngôn ngữ Và khai báo ngôn ngữ ngôn ngữ khả Để định nghĩa khai báo này, trình bày chương trình mà Máy Turing tính khả thuật toán 25 định ngắt với exit(0) đầu vào w w mã hóa số nguyên tố Rõ ràng chương trình làm điều này, chẳng hạn tìm kiếm hoàn thiện tất ước số có Ví dụ Bài toán nửa khả Đầu vào: Một chương trình viết Java P Câu hỏi: Với đầu vào 17, p có dừng cách thông thường hay không? Xem chương trình từ S Tập S từ mà chúng mã hóa chương trình hợp lệ để chương trình dừng cách thông thường với đầu vào 17 ngôn ngữ Để nói tập RE toán nửa khả quyết, cần rằng: Có thể viết chương mà dừng với điều kiện ngắt thành công đầu vào w w mã hóa chương trình Cách mà nhìn thấy viết chương trình TermTst mà vào đầu vào p, biên dịch p thành mã máy trừu tượng Java _ JAM (Java Abstract Machine codee) (nếu p chương trình hợp lệ loại bỏ p) sau mô mã JAM đầu vào 17 Nếu việc mô phòng dừng, chương trình TermTst quan sát kiện ngắt với exit(0) Nếu việc mô ngắt không bình thường (chẳng hạn bị ngắt lỗi division by 0), chương trình TermTst ngắt với exit(1) Thảo luận tập S tập nửa khả RE Tuy nhiên, ví dụ có điểm nguy hiểm, bạn dễ nhầm lẫn TermTst với chương trình Java kiểm tra Đừng nhầm lẫn! TermTst chương trình để kiểm tra chương trình; xử lý chương trình java mà bạn chuyển cho Hãy bạn chứng minh S nửa khả quyết, khả quyết, chương trình TermTst không đảm bảo ngắt tất đầu vào Tóm lại biết chắn điều TermTst bị lỗi ngắt số đầu vào đó, đơn giản số chương trình Java lặp vô hạn lấy 17 đầu vào, TermTst, chương trình đơn giản, chuyển dịch sang phải Với quan điểm này, hy vọng viết chương trình SuperTermTst thông minh mà xoay xở để phân tích chương trình Java cách thông minh, dự đoán phải chương trình p dừng cách bình thường mà mô p cách mù quáng Nếu xây dựng chương trình SuperTermTst thế, chứng minh S khả Tuy nhiên, thực điều này, thấy …nhiều ứng dụng phải chờ tiến hành xong nghiên cứu dựa kiến thức sở Một số vấn đề máy Turing không giải 5.1 Bài toán in (printing problem) toán dừng(halting problem) Turing miêu tả số toán toán học giải máy Turing, có toán in Một số chương trình in “0” số bước trình tính toán mình; tất chương trình lại không in Máy Turing tính khả thuật toán 26 “0” Bài toán in toán định, với chương trình cho, chương trình thuộc loại hai loại Turing toán giải máy Turing phổ dụng Bài toán dừng ví dụ khác toán giải máy Turing phổ dụng Đây toán xác định, với máy Turing cho, máy cuối có dừng hay không bắt đầu băng trống Trong số trường hợp, xác định rõ ràng từ bảng máy máy có dừng hay không Trong trường hợp máy hoạt động chưa dừng lại, cách thức hiệu để định máy Turing dừng hay không 5.2 Hàm dừng Một hàm ánh xạ từ “các đối số” (đầu vào) vào “các giá trị” (đầu ra) Ví dụ, phép + hàm ánh xác cặp số vào số Một hàm gọi tính máy Turing số máy Turing dùng đối số hàm (hay cặp đối số…) và, sau thực số hữu hạn thao tác bản, đưa giá trị tương ứng – và, thực đối số hàm trình bày Ví dụ, phép cộng số nguyên tính máy Turing, máy Turing thiết lập cho số nguyên đưa vào băng (nhị phân), máy đưa kết phép cộng hai số Hàm dừng miêu tả sau: Giả sử máy Turing xếp theo trật tự đó, cho nói đến máy Turing danh sách, máy thứ hai, … Các đối số hàm dừng đơn giản 1, 2, 3, … Giá trị hàm dừng cho đối số n máy Turing thứ n trật tự xếp cuối dừng bắt đầu băng trống, máy thứ n chạy mãi (ví dụ máy Turing lập trính để đưa liên tiếp biểu diễn thập phân π) Định lý máy Turing phổ dụng giải toán dừng thường biểu diễn dạng hàm dừng 5.3 Entscheidungsproblem Entscheidungsproblem, hay toán định, động lực Turing công trình “Về số tính được” Vào đầu kỷ 20, nhà toán học D Hilbert tự hỏi liệu tìm thuật toán xác định tính sai cho mệnh đề toán học hay không ông W.Ackermann đưa định nghĩa Entscheidungsproblem sau: “Entscheidungsproblem giải biết thủ tục qua định số hữu hạn thao tác biểu thức logic cho có hay thỏa mãn không Lời giải Entscheidungsproblem đóng vai trò quan trọng tảng cho lý thuyết tất lĩnh vực, cho định lý có khả phát triển logic từ tiên đề hữu hạn” [] Trong đó, Hilbert cộng đề xuất nhà toán học nên biểu diễn toán theo dạng hệ thống hình thức hoàn chỉnh, quán, khả – hệ thống biểu diễn “toàn nội dung ý tưởng toán học theo cách thống nhất” [] Một hệ thống quán có nghĩa không chứa mâu thuẫn, hệ thống đầy đủ phát biểu toán học chứng minh “Khả quyết” hàm ý có phương pháp hiệu biết, với phát biểu toán học, phát biểu Máy Turing tính khả thuật toán 27 chứng minh hệ thống hay không, qua phát biểu hay sai Tuy nhiên, năm 1931, nhà toán học người Uc Kurt Gödel chứng minh ý tưởng Hilbert thỏa mãn Đây xem Định lý tính không đầy đủ Gödel, thấy có câu hỏi toán học hình thức hóa hoàn hảo lại không đầy đủ bất khả Gödel dù nhà toán học có xây dựng hệ thống hình thức theo tư tưởng Hilbert hoàn thiện đến mức kết quả, dù có quán, đầy đủ Gödel sau tổng quát hóa kết này, “với tảng công trình Turing, ta đưa định nghĩa xác bàn cãi khái niệm tổng quát hệ thống hình thức”, với hệ không đầy đủ “có thể chứng minh cách nghiêm ngặt cho hệ thống hình thức thống có chứa lý thuyết số hữu hạn định”[] Tuy nhiên, định lý Gödel không đề cập đến tính khả Khía cạnh Turing Church [] đề cập đến, cách độc lập, hệ thống hình thức quán số học khả Họ trình bày điều cách chứng minh hệ thống logic giả sử trước hệ thống hình thức số học gọi phép tính vị từ bậc (first-order predicate calculus) khả Ông cách hình thức máy Turing xác định, số hữu hạn bước, công thức cho phép tính vị từ có phải định lý (theorem) phép tính không Hướng tiếp cận Turing việc chứng minh phép tính vị từ bậc bất khả liên quan đến toán in Ông máy Turing có thể, với phát biểu nào, xác định phát biểu chứng minh phép tính vị từ bậc nhất, máy Turing có thể, với máy Turing cho, xác định có in “0” hay không Vì, Turing thiết lập, máy Turing giải toán in, máy Turing giải toán Entscheidungsproblem Và bước cuối áp dụng luận đề Turing: không tồn máy Turing thực tác vụ hỏi, thuật toán hiệu để thực tác vụ Do đó, theo luận đề Turing, tìm thuật toán thỏa yêu cầu Máy Turing tính khả thuật toán 28 TÀI LIỆU THAM KHẢO Dan Dougherty Notes on Decidability Worcester Polytechnic Institute, 2007 Jack Copeland Computation www.blackwellpublishing.com/pci/downloads/SampleChapter.pdf Jack Copeland The Church-Turing Thesis Stanford Encyclopedia of Philosophy, 2002 Lê Mạnh Thạnh Nhập môn Ngôn ngữ hình thức Ôtômat hữu hạn NXB Giáo dục, Đà Nẵng, 1998 Nguyễn Gia Định Giáo trình Lý thuyết Ngôn ngữ hình thức Ôtômat Huế, 2004 Nguyễn Văn Ba Lý thuyết Ngôn ngữ Tính toán NXB Đại học Quốc gia Hà Nội, Hà Nội, 2006 Peter Gács and László Lovász Algorithmic decidability Lecture Notes, Yale University, 1999 Wikipedia, http://en.wikipedia.org/wiki/Wiki [...]... hóa của máy tính có khả năng lập trình, đó chính là máy Turing phổ dụng “Lý luận không hình thức của Turing trong luận đề của ông đã giải thích cho một luận đề mạnh hơn: Mọi thuật toán có thể được mô phỏng bởi một máy Turing Gurevich (2000) Còn theo Savage [1987], “Một thuật toán là một quá trình tính được định nghĩa bởi một máy Turing Máy Turing và tính khả quyết của thuật toán 16 CHƯƠNG 2 TÍNH KHẢ... khác với máy Turing) nhưng chúng ta vẫn chưa tìm được một mô hình máy có thể giải quyết được nhiều vấn đề tính toán hơn máy Turing Trong phần sau đây, chúng ta sẽ khảo sát về luận đề Church -Turing, một luận đề nền tảng trong lý thuyết về tính khả quyết của bài toán Máy Turing và tính khả quyết của thuật toán 17 2 Luận đề Church -Turing Luận đề Church -Turing đề cập đến khái niệm của một thuật toán hiệu... của thuật toán 16 CHƯƠNG 2 TÍNH KHẢ QUYẾT CỦA THUẬT TOÁN 1 Tổng quan về tính khả quyết của thuật toán Trong phần này, chúng ta sẽ tìm hiểu về một trong nền tảng khoa học cơ bản nhất của khoa học máy tính, đó là tính khả quyết của bài toán Đó là “Những vấn đề nào có thể và không thể thực hiện được bởi thuật toán hay máy tính? ” Trong lý thuyết tính toán, một bài toán quyết định là một câu hỏi trong một... nếu một thuật toán có thể quyết định chính xác một chuỗi có thuộc một ngôn ngữ không thì bài toán sẽ khả quyết Do đó, tính khả quyết của nhiều ngôn ngữ có thể được xác định theo thuật toán Và cũng theo đó, việc chỉ ra rằng một ngôn ngữ là khả quyết cũng sẽ tương đương với việc chỉ ra rằng một bài toán là khả quyết Trong đó, một bài toán khả quyết là T -quyết định được nếu tồn tại một máy Turing quyết. .. một thuật toán giải bài toán, qua đó điều chỉnh thuật toán thành một chương trình máy tính Nhiều thuật toán rất hữu dụng trong nhiều ứng dụng máy tính đa dạng Những thuật toán cơ sở này được nghiên cứu rộng rãi và được xem là một thành phần thiết yếu của khoa học máy tính, bao gồm các thuật toán sắp xếp, tìm kiếm, xử lý chuỗi, đồ thị, thực hiện các phép tính toán toán học phổ biến, … Ví dụ 3 Thuật toán. .. trình bày khả năng máy Turing kết hợp các phép toán này lại với nhau Giả sử chúng ta thiết kế máy Turing tính toán hàm sau: Máy Turing và tính khả quyết của thuật toán 14 Ta xây dựng mô hình tính toán như sau: Vấn đề xây dựng được hàm tính toán được yêu cầu của chúng ta bây giờ sẽ được chuyển thành xây dựng các bộ so sánh, bộ cộng và bộ xóa Điều này cũng có nghĩa rằng bài toán phức tạp của chúng ta đã... vấn đề máy Turing không giải được 5.1 Bài toán in (printing problem) và bài toán dừng(halting problem) Turing đã miêu tả một số các bài toán toán học không thể giải được bởi máy Turing, trong đó có bài toán in Một số chương trình in “0” ở một số bước trong quá trình tính toán của mình; còn tất cả các chương trình còn lại thì không bao giờ in Máy Turing và tính khả quyết của thuật toán 26 “0” Bài toán. .. cận mới trong vấn đề về tính khả quyết của bài toán, những nhà khoa học quan tâm đến một họ các bài toán và tìm một thuật toán để quyết định từng họ bài toán đó Theo đó, vì các thuật toán là lời giải cho các bài toán nên các phương pháp được sử dụng để giải các bài toán quyết định được gọi là thủ tục quyết định hay thuật toán Từ đó, một bài toán tổng quát khả quyết nếu lời giải của nó sẽ dừng trong một... bài toán đó (có nghĩa ngôn ngữ liên kết với nó là đệ quy) Còn một bài toán khả quyết là T-nửa quyết định được nếu tồn tại một máy Turing thừa nhận ngôn ngữ liên kết với bài toán đó (có nghĩa ngôn Máy Turing và tính khả quyết của thuật toán 22 ngữ liên kết với nó là đệ quy kể được) Trong những phần sau, chúng ta sẽ xét các khái niệm đệ quy và đệ quy kể được một cách cụ thể hơn 4 Máy Turing và vấn đề khả. .. có máy Turing nào có thể thực hiện được cùng vấn đề đó Khái niệm hình thức được đề xuất bởi Turing là khái niệm về tính khả quyết của máy Turing Ông cho rằng mỗi khi có một thuật toán hiệu quả có thể thu được các giá trị của một hàm toán học, hàm đó cũng có thể được tính bởi máy Turing Chúng ta cần chú ý rằng phần đảo của luận đề - bất kỳ thuật toán giải quyết vấn đề nào có thể thực hiện bởi máy Turing ... Mọi thuật toán mô máy Turing Gurevich (2000) Còn theo Savage [1987], “Một thuật toán trình tính định nghĩa máy Turing Máy Turing tính khả thuật toán 16 CHƯƠNG TÍNH KHẢ QUYẾT CỦA THUẬT TOÁN.. .Máy Turing tính khả thuật toán CHƯƠNG MÁY TURING VÀ THUẬT TOÁN Mô tả định nghĩa máy Turing 1.1 Mô tả phi hình thức máy turing Khái niệm máy Turing dựa ý tưởng người thực... TOÁN Tổng quan tính khả thuật toán Trong phần này, tìm hiểu tảng khoa học khoa học máy tính, tính khả toán Đó “Những vấn đề thực thuật toán hay máy tính? ” Trong lý thuyết tính toán, toán định câu

Ngày đăng: 15/11/2015, 15:46

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

Tài liệu liên quan