You are on page 1of 8

Giới thiệu chung

Máy Turing là một mô hình thiết bị xử lý kí tự, tuy đơn giản, nhưng có thể thực hiện
tất cả các thuật toán máy tính. Các máy Turing được Alan Turing trình bày năm 1936.

Về cơ bản mô hình máy Turing gồm 3 phần chính sau:

- Một bộ điều khiển hữu hạn.

- Một băng chia thành các ô.

- Một đầu đọc-ghi, mỗi lần đọc có thể duyệt qua một ô trên băng để đọc hay viết ký
hiệu.

Định nghĩa máy Turing :

Máy Turing là một hệ thống M (Q,,,,q0,B,F), trong đó:

Q là tập hữu hạn các trạng thái.

 là bộ ký hiệu nhập.


 là tập hữu hạn các kí tự được phép viết trên băng.

B là ký hiệu thuộc  dùng chỉ khoảng trắng trên băng (Blank).

q0 Q là trạng thái bắt đầu của hệ thống. F  Q là trạng thái kết thúc của hệ thống.

Hàm chuyển  hoạt động như sau:  : Qx  Qxx (trái, phải, không dịch chuyển).

Hàm chuyển  được định nghĩa trước và máy Turing chỉ có thể hoạt động theo hàm
chuyển này.

Cài đặt máy Turing theo các câu lệnh để biểu diễn thuật toán. Trong đó mỗi câu lệnh
có năm thành phần dạng (S, C, R, T, Q)

Trong đó:
S: là trạng thái hiện hành của máy Turing.
C: là ký tự tại ô mà con trỏ đang trỏ.
R: là kí tự sẽ điền thay vào vị trị của C, nếu R = _ tức là giữ nguyên kí tự C. T: là
hướng dịch chuyển của con trỏ bao gồm L: dịch trái.
R: là dịch phải.
N: là không dịch chuyển.
Q: là trạng thái máy Turing chuyển đến sau khi thực hiện dãy lệnh.
Ngoài ra chương trình mặc định các trạng thái của máy Turing theo dạng số nguyên
dương, trạng thái bắt đầu là trạng thái 1, trạng thái kết thúc là trạng thái 0.

1 a b R2
Câu lệnh trên sẽ hoạt động như sau:

Trạng thái hiện hành của máy Turing là 1, con trỏ máy đang chỉ vào ô chứa kí tự “a”,
máy Turing sẽ điền kí tự “b” thay thế vào ô đó. Con trỏ máy sau đó chuyển dịch sang
phải 1 ô, trạng thái máy chuyển thành 2.

Để cải tiến cách soạn thảo học viên cài đặt máy Turing nhận các câu lệnh trong đó
thay thế các thành phần không thay đổi trong lệnh máy thành dấu gạch dưới. Và có
thể dùng câu lệnh gộp khi 1 trạng thái gặp nhiều kí tự khác nhau nhưng có cùng cách
xử lý như nhau.

VD:

1 {a,b,c} _ R _ sẽ hoạt động như sau:


Trạng thái hiện hành của máy Turing là trạng thái “1”.
Đầu đọc ghi trỏ tới một trong các kí tự “a”, “b”, “c” sẽ giữ nguyên kí tự đó. Đầu đọc
ghi dịch chuyển sang phải 1 ô.
Trạng thái máy Turing giữ nguyên là trạng thái “1

Máy Turing đoán nhận ngôn ngữ : VD: đón nhận a n


b nc n
n >=1
Ở mỗi bước, đơn vị điều khiển đọc ký hiệu x hiện thời trên băng. Nếu đơn vị điều khiển ở trạng thái
s và nếu hàm bộ phận xác định đối với cặp (s, x) với δ(s, x) = (s’, x’, d’) thì đơn vị điều khiển :

1. chuyển vào trạng thái s’

2. viết ký hiệu x’ vào ô hiện thời sau khi đã xóa x

3. sau đó chuyển sang phải/trái 1 ô nếu d = R/L

Tại mỗi bước là 1 bộ 5 phần tử (s, x, s’, x’, d). Nếu hàm chuyển δ không xác định đối với cặp (s, x) thì
máy Turing dừng lại.

Nếu định nghĩa TM bằng cách đặc tả bộ năm phần tử như trên , khi đó tập trạng thái và bảng chữ cái
đầu vào đã ngầm được xác định.

Ví dụ về hoạt động của TM :

Xác định băng kết thúc khi TM được xác định bởi 7 bộ 5 phần tử (s 0, 0,s0, 0, R), (s0, 1,s1, 1, R), (s0, B,s3,
B, R), (s1, 0,s0, 0, R), (s1, 0,s0, 0, R), (s1, 1,s2, 0, L), (s1, B,s3, B, R), (s2, 1,s3, 0, R) chạy trên băng như hình :
Dùng bộ năm (s0, 0,s0, 0, R) đọc số 0 trái nhất, dừng lại ở trạng thái s 0, viết 1 số 0 vào ô đó và dịch
sang phải 1 ô.

Dùng bộ (s0, 1,s1, 1, R) đọc số 1 ở hiện ô thời , chuyển sang trạng thái s 1, viết số 1 vào ô đó và dịch
sang phải 1 ô.

Dùng bộ (s1, 0,s0, 0, R) đọc số 0 ở ô hiện tại, chuyển sang trạng thái s 0, viết số 0 vào ô đó và dịch sang
phải 1 ô.

Dùng bộ (s0, 1,s1, 1, R) đọc số 1 ở ô hiện tại, chuyển sang trạng thái s 1, viết số 1 vào ô đó và dịch sang
phải 1 ô.

Dùng bộ (s1, 1,s2, 0, L) đọc số 1 ở ô hiện tại, chuyển sang trạng thái s 2, viết số 0 vào ô đó và dịch sang
trái 1 ô.
Dùng bộ (s2, 1,s3, 0, R) đọc số 1 ở ô hiện tại, chuyển sang trạng thái s 3, viết số 0 vào ô đó và dịch sang
phải 1 ô.

Sau bước trên máy dừng vì không có cấu hình nào bắt đầu bằng s 3 và 0.

Như vây sau khi kết thúc có thể thấy rằng TM đã đọc và ghi dữ liệu vào băng và làm thay đổi cặp số 1
liên tiếp đầu tiên trên băng thành 0 và sau đó dừng lại.

Cấu hình :

Một cấu hình (configuration) của máy Turing M = (K, Σ, δ,s, H) là một phần tử của K × αΣ* × (Σ* (Σ −
{B}) ∪ {ε}).

Chú ý:

− Mọi cấu hình đều được giả thiết là bắt đầu bởi ký hiệu trái nhất α và không bao giờ kết thúc với
một dấu cách trừ khi dấu cách đang là ký tự hiện tại được đọc. Vì vậy, (q, αa, aba),(h, αBBB, Ba) và
(q, αBaBB, ε) là các cấu hình, nhưng (q, αbaa,bcB) và (q, Baa, ba) thì không phải.

− Một cấu hình mà thành phần của nó có chứa trạng thái trong H được gọi là một cấu hình dừng
(halted configuration)

− Ta cũng qui ước dùng một kí hiệu đơn giản để mô tả nội dung băng vào của cấu hình. Cụ thể, ta sẽ
viết wau để diễn tả nội dung băng vào của cấu hình (q,wa, u). Kí hiệu được gạch dưới chỉ ra vị trí của
đầu đọc. Từ đây, ta có thể viết gọn, chẳng hạn (q,wau) thay cho (q,wa, u)
Hàm chuyển :

Cho máy Turing M = (K, Σ, δ,s, H) và hai cấu hình của M, (q 1,w1a1, u1) và (q2,w2a2, u2), với a1, a2 ∈ Σ.

Và δ(q1,a1) = (q2,𝞴,L/R) trong đó 𝞴 𝟄 Σ

Khi đó, ta có :

(q1,w1a1, u1) ⱵM (q2,w2a2, u2)

Máy Turing đoán nhận ngôn ngữ :

Cho máy Turing M = (K, Σ, δ,s, H) với H = {y, n} gồm hai trạng thái dừng phân biệt (y và n tương ứng
với "yes" và "no"). Bất kỳ cấu hình nào có chứa thành phần y được gọi là cấu hình chấp nhận, còn
cấu hình chứa thành phần n được gọi là cấu hình bác bỏ.

Định nghĩa : máy Turing M chấp nhận sâu x nếu và chỉ nếu T xuất phát từ vị trí ban đầu khi x đã
được viết trên băng sẽ dừng lại ở cấu hình chấp nhận

Ngôn ngữ đệ quy :

Ngôn ngữ L là ngôn ngữ đệ quy nếu tồn tại 1 máy Turing chấp nhận mọi xâu trong L và bác
bỏ tất cả xâu không trong L.

Máy Turing sẽ luôn dừng và trả về 1 kết quả (chấp nhận hoặc bác bỏ) với mỗi và mọi xâu cho
vào máy.

Ngôn ngữ đệ quy liệt kê :


Ngôn ngữ L là ngôn ngữ đệ quy liệt kê nếu tồn tại 1 máy Turing chấp nhận mọi xâu vào trong
L.

Nhưng có thể có hoặc không dừng đối với các xâu không thuộc L.

VD : xây dựng máy Turing M chấp nhận ngôn ngữ : L = 01*0

Xâu 0110 :

Hàm tính được

Máy Turing T khi đã cho xâu đầu vào x sẽ dừng lại với xâu y ở trên băng của nó. Khi đó ta có thể định
nghĩa T(x) = y. Miền xác định của T là tập các xâu làm cho T sẽ dừng lại. T(x) sẽ không xác định nếu T
không dừng lại khi x đã cho như 1 đầu vào.

Ta dùng biểu diễn nhất phân để xem máy Turing như một máy tính các hàm từ tệp các bộ k số
nguyên không âm đến tập các số nguyên không âm (hàm lý thuyết số).

Hàm tính được bằng máy Turing gọi là hàm tính được.

Biểu diễn số nguyên không âm n bằng xâu n+1 số 1, dấu * ngăn cách giữa các xâu tương ứng với các
số.

VD : Xây dựng máy Turing tính hàm :

f(n) = n – 3 nếu n ≥ 3

= 0 nếu n = 0,1,2
Luận đề Church – Turing

Luận đề Church – Turing : Đối với một bài toán đã cho bất kỳ có thể giải được bằng một thuật toán
hiệu quả, thì sẽ tồn tại một máy Turing có thể giải được bài toán đó.

You might also like