Máy Turing
Định nghĩa máy Turing
Ngôn ngữ thừa nhận được và ngôn ngữ xác định được
Các hàm tính được bởi m áy Turing
Các ngôn ngữđệ quy và liệt kê đệ quy
Luận đề Turing-Church
Kỹ thuật xây dựng máy Turing
Mở rộng các máy Turing
Máy turing không đơn định
Máy Turing vạn năng
Ôtômat tuyến tính giới nội
Văn phạm cảm ngữ cảnh
10 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1421 | Lượt tải: 0
Nội dung tài liệu Lý thuyết tính toán - Chương 4: Máy Turing, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Lý thuyết tính toán
(Theory of Computation) i
PGS.TS. Phan Huy Khánh
khanhph@vnn.vn
Chương 4
Máy Turing
2/58
Chương 4 Máy Turing
Máy Turing
Định nghĩa máy Turing
Ngôn ngữ thừa nhận được và ngôn ngữ xác định được
Các hàm tính được bởi máy Turing
Các ngôn ngữ đệ quy và liệt kê đệ quy
Luận đề Turing-Church
Kỹ thuật xây dựng máy Turing
Mở rộng các máy Turing
Máy turing không đơn định
Máy Turing vạn năng
Ôtômat tuyến tính giới nội
Văn phạm cảm ngữ cảnh
3/58
Mở đầu
Ôhh đẩy xuống không thể đoán nhận NN
anbncn dù có hai bộ nhớ lớn tùy ý
Để thừa nhận anbncn, phải tìm kiếm
các lớp ôtômat khác, đó là các máy Turing
Sự khác nhau căn bản giữa máy Turing
và ô đẩy xuống :
Máy Turing chỉ có một bộ nhớ lớn tùy ý
Máy Turing có thể đọc và ghi
Cách sử dụng bộ nhớ là tuỳ ý,
không hạn chế ở nguyên lý danh sách
đẩy xuống (Stack hay LIFO)
Alan Turung
(19121954) :
nhà Toán học
người Anh,
người đầu tiên
nghiên cứu
lý thuyết ôtômat
năm 1936
4/58
Mô tả máy Turing đơn định
Máy Turing đơn định (Deterministic Turing Machine) gồm :
Một băng vào/ra (IO Tape) :
Một đầu đọc-ghi (Read/Write Head) di chuyển trên băng
Một tập hợp hữu hạn các trạng thái trong đó có :
Một trạng thái đầu
Một tập hợp các trạng thái thừa nhận (cuối)
Một hàm chuyển tiếp
qk
X a b a b bY # # . . .
5/58
Mô tả chi tiết
Băng vào/ra :
Là một bộ nhớ vô hạn được chia thành nhiều ô
Mỗi ô có thể chứa một ký tự a nào đó (Tape Alphabet)
Băng chỉ có cận trái, cận phải quy ước có thể kéo dài vô hạn
Hàm chuyển tiếp gồm các tham đối :
Trạng thái hiện hành của máy
Ký tự đọc được ở vị trí dưới đầu đọc
Trạng thái tiếp theo của máy
Ký tự sẽ ghi lên băng tại vị trí ký tự vừa đọc được
Chiều di chuyển của đầu đọc-ghi
(qua trái, phải hay đứng yên)
6/58
Cấu hình ban đầu của máy Turing
Cấu hình ban đầu của máy Turing được mô tả như sau :
Câu vào w * nằm ở mút trái nhất của băng
Mỗi ô còn lại của băng chứa một ký hiệu đặc biệt,
gọi là các ký hiệu trống (Blank Symbol)
Đầu đọc-ghi nằm ở ô đầu tiên của băng (mút trái nhất)
Máy đang ở trạng thái đầu tiên, giả sử q0
Máy sẵn sàng thực hiện bằng cách đọc ký hiệu
ở vị trí đầu đọc
q0
a a b a b bb # # . . .
27/58
Hoạt động của máy Turing
Hoạt động của máy Turing được mô tả như sau :
Máy đọc ký hiệu nằm ở dưới đầu đọc
Tuỳ theo trạng thái hiện hành,
hàm chuyển tiếp cho phép máy thực hiện :
Ghi đè lên ký hiệu vừa đọc một ký hiệu khác
Di chuyển đầu đọc-ghi sang phải, hoặc sang trái một ô
Thay đổi trạng thái
Máy thừa nhận câu khi đạt tới trạng thái thừa nhận,
giả sử qj F
qj
X X Y X X XY # # . . .
8/58
Định nghĩa hình thức máy Turing
Máy Turing được mô tả bởi một bộ bảy :
M = (Q, , , , q0, #, F)
trong đó :
Q là tập hữu hạn các trạng thái
là bảng chữ ghi lên băng
là bảng chữ vào
q0 Q là trạng thái đầu
F Q là tập hợp các trạng thái thừa nhận
# - là ký tự trống
: hàm chuyển tiếp
9/58
Mô tả hàm chuyển tiếp
Hàm chuyển tiếp :
: Q QM
gồm các phần tử (q, a) = (q’, x, m), trong đó :
q, q’ Q ; a ; x ; m M = { L, R }
L chỉ định dịch đầu đọc-ghi sang trái (Left)
R chỉ định dịch đầu đọc-ghi sang phải (Right)
Có thể viết gọn mỗi phần tử của :
hoặc (q, a, x, m, q’)
hoặc qamxq’
10/58
Cấu hình của máy Turing
Cấu hình (hay cấu hình) của máy Turing
là một phần tử của quan hệ : (q, 1, 2) Q**
Trong đó :
q Q : trạng thái hiện hành của máy
1 : phần câu trên băng phía trước vị trí đầu đọc-ghi
2 : Phần câu trên băng từ vị trí đầu đọc-ghi đến hết câu
(ký tự cuối cùng khác ký tự trống #)
q
a a b a b bb # # . . .
1 2
11/58
Chuyển tiếp một bước C ├ C’
Cho cấu hình C = (q, 1, 2) và C’ = (q’, ’1, ’2)
Giả sử 2 = b’2 trường hợp 2 = , lấy b = #
Chuyển tiếp một bước C ├ C’ được định nghĩa như sau :
Trường hợp 1 : Nếu (q, b) = (q’, b’, R), ta có :
(q, 1, b’2) ├ (q’, 1b’, ’2) với ’1 = 1b’
q
a b b a b bb # ...
1
2
q’
a b’ b a b bb # ...
’2’2
’1
├
12/58
Chuyển tiếp một bước C ├ C’
Cho cấu hình C = (q, 1, 2) và C’ = (q’, ’1, ’2)
Giả sử 1 = ’1a 1
2 = b3 trường hợp 2 = , lấy b = #
Chuyển tiếp một bước C ├ C’ được định nghĩa như sau :
Trường hợp 2 : Nếu (q, b) = (q’, b’, L), ta có :
(q, ’1a, 2) ├ (q’, ’1, ab’3) với ’2 = ab’3
q
b a b a b bb # ...
’1
1
q’
b a b’ a b bb # ...
’2
’1
├
2
3 3
313/58
Chuyển tiếp nhiều bước
Cho cấu hình C = (q, 1, 2) và C’ = (q’, ’1, ’2)
Tương tự trong ôhh, ta nói chuyển tiếp nhiều bước
C ├* C’ nễu:
k 0 và các cấu hình trung gian C0, C1, . . ., Ck sao cho :
C C0
C’ Ck
Ci ├ Ci+1 với 0 i k
14/58
Máy Turing đoán nhận câu của ngôn ngữ
Máy Turing đoán nhận câu của một ngôn ngữ như là các
ôtômat hữu hạn đã xét
Cho w :
Câu w được một máy Turing M đoán nhận nễu :
(q0, , w) ├* (qj, , 2) với , 2 *
Câu w được một máy Turing thừa nhận nễu :
(q0, , w) ├* (qj, , 2) với , 2 * và qj F
Một ngôn ngữ L được thừa nhận bởi một máy Turing M,
L = L(M), nễu :
L(M) = { w (q0, , w) ├* (qj, , 2) với qj F }
15/58
Ví dụ
Cho máy Turing M (Q, , , , q0, B, F) với :
Q q0, q1, q2, q3, q4
{ a, b, X, Y, # }, { a, b } F { q4}
được cho bởi bảng dưới đây
(dấu "" chỉ ra rằng hàm chuyển tiếp không được định nghĩa)
q4
(q4, #, R)(q3, Y, R)q3
(q2, Y, L)(q0, X, R)(q1, a, L)q2
(q1, Y, R)(q2, Y, L)(q1, a, R)q1
(q3, Y, R)(q1, X, R)q0
#YXba
16/58
Đánh dấu con a
trái nhất
tr i t
Biểu diễn đồ thị
q4
(q4, #, R)(q3, Y, R)q3
(q2, Y, L)(q0, X, R)(q1, a, L)q2
(q1, Y, R)(q2, Y, L)(q1, a, R)q1
(q3, Y, R)(q1, X, R)q0
#YXba
a/X, R
q1q0
q4
Y/Y, R
q2
b/Y, L
Y/Y, R
a/a, R
a/a, L
X/X, R
Y/Y, R
Y/Y, R
#/#, R
q3
Vượt qua phảit i
17/58
Máy Turing đoán nhận câu a2b2
Các chuyển tiếp đoán nhận câu aabb lần lượt như sau :
q0aabb# q0XaYb# q0XXYY#
q1Xabb# q1XXYb# q3XXYY#
q1Xabb# q1XXYb# q3XXYY##
q2XaYb# q2XXYY# q4XXYY##
q2XaYb# q2XXYY# thừa nhận
18/58
Máy Turing đoán nhận câu a3b3
dãy các chuyển tiếp từ câu vào aaabbb được cho như sau :
q0aaabbb# q2XaaYbb# q2XXXYYY#
q1Xaabbb# q0XaaYbb# q0XXXYYY#
q1Xaabbb# . . . . . . . . . q3XXXYYY#
q1Xaabbb# q1XXXYYb# q3XXXYYY#
q2XaaYbb# q2XXXYYY# q3XXXYYY#
q2XaaYbb# q2XXXYYY# q4XXXYYY##
thừa nhận !
419/58
Ví dụ
Máy Turing thừa nhận ngôn ngữ chính quy aa* + b(a+b)*
q1q0
a|a, R
#|#, L
0q 1q 2q3q
Rxa ,
Raa ,
Ryy ,
Lyb ,
Laa ,
Lyy ,
Rxx ,
Ryy ,
Ryy ,
4q
L,
20/58
Định nghĩa
Máy Turing đoán nhận một câu w là thực hiện (xử lý)
một dãy cực đại các cấu hình :
(q0, , w) = C0 ├ C1 ... ├ Ck = (qk, k, k) ├ ...
nghĩa là sao cho :
Dãy tự kết thúc tại một cấu hình có chứa trạng thái kết thúc
và thừa nhận câu w
hoặc
Dãy tự kết thúc tại một cấu hình không chứa trạng thái kết
thúc mà từ đó, không còn cấu hình nào có thể chuyển đến :
máy bị hóc
hoặc
Dãy cấu hình là vô hạn, máy không bao giờ dừng
21/58
Tính xác định được (Deterministic)
Một ngôn ngữ L được xác định bởi một máy Turing M nễu :
M thừa nhận L
M không có các xử lý vô hạn
Nhận xét :
Tồn tại thuật toán cho phép máy Turing đoán nhận một ngôn
ngữ, hay kiểm tra tính xác định được
Đối với các ôtômát hữu hạn đơn định, điều đó hiển nhiên
Đối với một ôtômát hữu hạn không đơn định,
không phải luôn luôn tồn tại thuật toán,
vì :
Tại mỗi giai đoạn đoán nhận, không thể chỉ ra chuyển tiếp
nào tiếp theo sẽ được chọn một cách tường minh
22/58
Hình thức hóa tính xác định được
Tính xác định được của máy Turing có thể hiểu như sau :
Với mọi phần tử (q, a) QG, tồn tại nhiều nhất một quy tắc
(q, a) (q’, a’, m), viết gọn qama’q’, với m M={L, R}
Hàm bộ phận QG QGM có thể tách thành ba hàm :
Hàm “ký tự mới” nc : QG G
hay nc(q, a) = a’
Hàm “di chuyển đầu đọc” mh : QG M
hay mh(q, a) =m
Hàm “trạng thái mới” ns : QG Q
hay ns(q, a) = q’
23/58
Máy Turing tính hàm
Máy Turing có thể tính hàm theo cách hiểu như sau :
Tham đối của hàm là câu vào w nằm trên băng
Giá trị trả về của hàm là câu được ghi trên băng
sau khi máy Turing kết thúc việc xử lý (đọc hết w)
Máy Turing tính một hàm f : nếu :
Với một câu vào w bất kỳ, máy luôn luôn dừng trong một
cấu hình mà f(w) có mặt ở trên băng
Hàm f đgl tính được bởi một máy Turing nếu tồn tại một
máy Turing tính được nó
24/58
Domain: D Result Region: S
A function f(w) has:
Dw Swf )(
)(wf
Notation of Function
A function may have many parameters:
Example: Addition function
f(x, y) = x + y
525/58
Integer Domain
Unary:
Binary:
Decimal:
11111
101
5
We prefer unary representation:
easier to manipulate with TMs
Data representation
26/58
Definition:
A function is computable if
there is a Turing Machine such that:
f
M
Initial configuration Final configuration
Dw Domain
0q
w
fq
)(wf
final stateinitial state
For all
27/58
Initial
Configuration
Final
Configuration
A function is computable if
there is a Turing Machine such that:
f
M
In other words:
Dw DomainFor all
)(0 wfqwq f├─
28/58
Example
The function yxyxf ),( is computable
Turing Machine:
Input string: yx0 unary
Output string: 0xy unary
yx, are integers
29/58
0
0q
1 1 1 1
x y
1
Start
initial state
The 0 is the delimiter that
separates the two numbers
Input representation
30/58
0
fq
1 1
yx
11Finish
final state
0
0q
1 1 1 1
x y
1 Start
initial state
Computing Function
631/58
0
fq
1 1
yx
11Finish
final state
The 0 helps when we use
the result for other operations
Computing Function
32/58
Turing machine for function
yxyxf ),(
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
33/58
Execution Example (1)
0
0q
1 1 1 1
Time 0
x y
Final Result
0
4q
1 1 1 1
yx
11x (2)
11y (2)
34/58
0
0q
1 1Time 0 1 1
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (2)
35/58
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
0q
01 11 1Time 1
Execution Example (3)
36/58
0
0q
1 1 1 1Time 2
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (4)
737/58
1q
1 11 11Time 3
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (5)
38/58
1q
1 1 1 11Time 4
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (6)
39/58
1q
1 11 11Time 5
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (7)
40/58
2q
1 1 1 11Time 6
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (8)
41/58
3q
1 11 01Time 7
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (9)
42/58
3q
1 1 1 01Time 8
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (10)
843/58
3q
1 11 01Time 9
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (11)
44/58
3q
1 1 1 01Time 10
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (12)
45/58
3q
1 11 01Time 11
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
Execution Example (13)
46/58
4q
1 1 1 01Time 12
0q 1q 2q 3qL, L,01
L,11
R,
R,10
R,11
4q
R,11
HALT & accept
Execution Example (14)
47/58
Another Example: f(x) = 2x (1)
The function xxf 2)( is computable
Turing Machine:
Input string: x unary
Output string: xx unary
x is integer
48/58
1
fq
1 1
x2
11Finish
final state
0q
1 1
x
1Start
initial state
Another Example: f(x) = 2x (2)
949/58
TM Pseudocode for f(x) = 2x
• Replace every 1 with $
• Repeat:
• Find rightmost $, replace it with 1
• Go to right end, insert 1
Until no more $ remain
50/58
Example TM for f(x) = 2x
0q 1q 2q
3q
R,1$
L,1
L,
R$,1 L,11 R,11
R,
0q
1 1
Start
3q
1 11 1
Finish
51/58
T = ; S = { 0, 1, # } ; Q = {q1, q2, q3}
P = { q1, 1 1, R, q1,
q2, 0 1, L, q3,
q1, 0 0, R, q1,
q2, 1 0 L, q2,
q1, # #, L, q2,
q2, # 1, L, q3 }
TM compute succ(n)
1q 3q
0|0, R
2q
1|1, R
1|0, L
#|1, L
#|#, R
0|1, L
52/58
Another Example
The function is
computable ),( yxf
0
1 yx
yx
if
if
Turing Machine for
Input: yx0
Output: 1 0or
53/58
Turing Machine Pseudocode:
Match a 1 from with a 1 from x y
• Repeat
Until all of or is matchedx y
• If a 1 from is not matched
erase tape, write 1
else
erase tape, write 0
x
)( yx
)( yx
54/58
Các ngôn ngữ đệ quy và liệt kê đệ quy
Các ngôn ngữ xác định được bởi một máy Turing được gọi
là đệ quy (Recusive)
Các ngôn ngữ được thừa nhận bởi một máy Turing gọi là
liệt kê đệ quy (Recursively Enumerable)
Từ đó ta có các định nghĩa sau :
Một ngôn ngữ là đệ quy nếu nó được xác định
bởi một máy Turing
Một ngôn ngữ là liệt kê đệ quy nếu nó được thừa nhận
bởi một máy Turing
10
55/58
Luận đề Turing-Church
Luận đề Turing-Church phát biểu như sau :
Các ngôn ngữ được nhận biết bởi một thuật
toán là các ngôn ngữ xác định được bởi một
máy Turing
Người ta có thể phát biểu luận đề Turing -
Church theo nghĩa của phép tính hàm :
Các hàm tính được bởi một thuật toán là các
hàm tính đợc bởi một máy Turing
Alonzo Church
(1903-1995) : nhà
Toán học người Mỹ
đã nghiên cứu phép
tính hàm
(Functional
Calculus) và tính
tính được
(Computability)
56/58
Nhận xét luận đề Turing-Church
Luận đề Turing-Church đóng vai trò quan trọng trong
lý thuyết tính toán (Computability)
Luận đề đưa ra lập luận rằng một số ngôn ngữ không thể
được đoán nhận bởi một thuật toán : thực chất là hình thức
hóa khái niệm tính toán
Luận đề Turing-Church không phải là một định lý,
nên không thể chứng minh được
Luận đề Turing-Church áp dụng mô hình lý thuyết là máy
Turing được định nghĩa chặt chẽ để mô hình hoá quan niệm
về thuật toán là khái niệm không được xác định rõ ràng
Dễ dàng mô phỏng sự hoạt động của một máy Turing nhờ :
Một bút chì và tờ giấy
Một chương trình chạy trên một máy tính cụ thể
57/58
Xây dựng máy Turing
Một số kỹ thuật xây dựng máy Turing
Ghi nhớ ở bộ điều khiển hữu hạn
Mở rộng băng vào vô hạn về cả hai phía
Máy Turing có nhiều băng
Máy Turing có bộ nhớ truy cập trực tiếp
58/58
Các máy Turing vạn năng
Một vấn đề thú vị là liệu có thể có một máy Turing
mô phỏng được bất kỳ máy Turing nào ?
Một cách tường minh, ta muốn cung cấp cho một máy
Turing M sự mô tả của một máy Turing M’ bất kỳ nào đó
sao cho với một câu vào w nào đó, máy Turing M’ có thể
mô phỏng sự đoán nhận của M trên w
Một máy Turing như vậy sẽ là một sự nhại lại các máy
Turing khác, và được gọi là máy Turing vạn năng
(Universal Turing Machine).
Các file đính kèm theo tài liệu này:
- lt3_ch4_turingmachine_3224.pdf