Tải bản đầy đủ (.doc) (18 trang)

Tiểu luận môn học lý thuyết tính toán THE TURING MACHINE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (233.85 KB, 18 trang )

Tiểu luận Lý thuyết tính toán
BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG
TIỂU LUẬN MÔN HỌC
LÝ THUYẾT TÍNH TOÁN
ĐỀ TÀI:
8.2. THE TURING MACHINE
Giảng viên hướng dẫn : PGS.TS. Phan Huy Khánh
Nhóm học viên: Nguyễn Nương Quỳnh
Lê Nam Trung
Nguyễn Duy Linh
Hoàng Đình Tuyền
Lớp: Khoa học Máy tính - K24 Quảng Bình
Khóa: 2011-2013
Quảng Bình, tháng 12 năm 2012
MỤC LỤC
Nhóm 3 Trang 1
Tiểu luận Lý thuyết tính toán
1
Nhóm học viên: Nguyễn Nương Quỳnh 1
Lớp: Khoa học Máy tính - K24 Quảng Bình 1
Nhóm 3 Trang 2
Tiểu luận Lý thuyết tính toán
8.2 Máy Turing
Mục đích của lý thuyết của các vấn đề không giải được là không chỉ thiết
lập sự tồn tại các vấn đề như vậy - một ý tưởng trí tuệ thú vị của riêng nó – mà
còn để cung cấp hướng dẫn cho các lập trình viên về những gì họ có thể hay
không thể thực hiện thông qua lập trình. Lý thuyết này cũng có tác động tích cực
khi ta thảo luận, như chúng ta quy định trong chương 10, các vấn đề mặc dù giải
quyết được, vẫn cần nhiều thời gian để giải quyết chúng. Những vấn đề này,
được gọi là "vấn đề nan giải", có xu hướng trình bày khó khăn hơn cho các lập


trình viên và các nhà thiết kế hệ thống để làm các vấn đề không thể giải quyết.
Lý do là, trong khi các vấn đề không thể giải quyết thường khá rõ ràng, và giải
pháp của họ hiếm khi cố gắng trong thực tế, những vấn đề nan giải đang phải
đối mặt hàng ngày.
Hơn nữa, người ta thường mang lại thay đổi nhỏ trong các yêu cầu hoặc các
giải pháp dựa trên kinh nghiệm cải tiến. Do đó, người thiết kế khá thường xuyên
phải đối mặt với việc quyết định có hoặc không có một vấn đề là trong lớp nan
giải, và phải làm gì với nó, nếu như vậy.
Chúng ta cần các công cụ cho phép chứng minh các câu hỏi không thể giải
quyết hoặc khó giải quyết hàng ngày. Các công nghệ được giới thiệu trong phần
8.1 là hữu ích cho các câu hỏi đối phó với các chương trình, nhưng nó không
dịch một cách dễ dàng đến các vấn đề trong các lĩnh vực không liên quan. Ví dụ,
chúng ta sẽ gặp khó khăn trong việc giảm vấn đề hello-world các câu hỏi cho dù
ngữ pháp là mơ hồ.
Kết quả là, chúng ta cần xây dựng lại lý thuyết không giải được của chúng
ta, không dựa trên các chương trình trong C hoặc ngôn ngữ khác, nhưng dựa
trên một mô hình rất đơn giản của một máy tính, được gọi là máy Turing. Thiết
bị này chủ yếu là tự động hữu hạn có một băng dài vô hạn mà trên đó nó có thể
đọc và ghi dữ liệu. Một trong những lợi thế của máy Turing qua các chương
trình là đại diện của những gì có thể được tính là máy Turing là đủ đơn giản mà
chúng ta có thể đại diện cho cấu hình của nó một cách chính xác, bằng cách sử
Nhóm 3 Trang 3
Tiểu luận Lý thuyết tính toán
dụng một ký hiệu đơn giản giống như ID của PDA. Trong khi đó, các chương
trình C có một trạng thái, liên quan đến tất cả các biến trong bất cứ trình tự của
các chức năng gọi đã được thực hiện, các ký hiệu để mô tả những trạng thái quá
phức tạp để cho phép chúng tôi làm cho dễ hiểu, chứng minh chính thức.
Sử dụng các ký hiệu máy Turing, chúng ta sẽ chứng minh một số vấn đề
không giải quyết được xuất hiện không liên quan đến lập trình. Ví dụ, chúng ta
sẽ hiển thị tại mục 9,4 rằng "Vấn đề tương ứng của bài viết", một câu hỏi đơn

giản liên quan đến hai danh sách các chuỗi, là không giải quyết được, và vấn đề
này làm cho nó dễ dàng để hiển thị câu hỏi về ngữ pháp, chẳng hạn như sự mơ
hồ, là không giải quyết được. tương tự như vậy, khi chúng tôi giới thiệu các vấn
đề khó, chúng ta sẽ thấy rằng câu hỏi nào đó, dường như có ít để làm với tính
toán (ví dụ, khả năng đáp ứng các công thức boolean), là khó chữa.
8.2.1 Các Quest để quyết định tất cả các câu hỏi toán học
Bước vào thế kỷ 20, nhà toán học D.Hilbert hỏi liệu đã có thể tìm thấy một
thuật toán để xác định sự thật hay dối trá của bất kỳ mệnh đề toán học. Đặc biệt,
ông hỏi nếu có một cách để xác định xem bất kỳ công thức trong tính toán vị
đầu tiên để áp dụng cho số nguyên, là sự thật. Kể từ khi các tính toán vị đầu tiên
để tính toán các số nguyên là đủ mạnh để thể hiện báo cáo như "ngữ pháp này là
mơ hồ", hay "Chương trình này in chào, thế giới", có phải Hilbert đã thành công,
những vấn đề này sẽ có các thuật toán mà chúng ta biết không tồn tại.
Tuy nhiên, vào năm 1931, K. Gödel công bố định lý bất toàn nổi tiếng của
ông. Ông đã xây dựng một công thức tính toán vị áp dụng cho số nguyên, trong
đó khẳng định rằng công thức đó có thể được chứng minh không phải và cũng
không bác bỏ trong các tính toán. Gödel kỹ thuật tương tự như việc xây dựng
các chương trình mâu thuẫn sefl-H2 trong phần 8.1.2, nhưng giao dịch với các
chức năng trên các số nguyên, chứ không phải với các chương trình C.
Các tính toán vị không phải là khái niệm duy nhất mà các nhà toán học đã
có "bất kỳ tính toán có thể". Trong thực tế tính toán vị, khai báo chứ không phải
là tính toán, phải cạnh tranh với một loạt các chỉ số, bao gồm cả "một phần các
Nhóm 3 Trang 4
Tiểu luận Lý thuyết tính toán
hàm đệ quy", thay vì một ký hiệu giống như ngôn ngữ lập trình, và các ký hiệu
tương tự khác. Năm 1936, sáng Turing đề xuất các máy Turing là một mô hình
"bất kỳ tính toán có thể". Mô hình này giống như máy tính, chứ không phải là
chương trình như thế, mặc dù điện tử đúng , hoặc thậm chí máy tính điện tử là
của những năm trong tương lai (Turing đã tự mình tham gia trong việc xây dựng
của máy như vậy trong Thế chiến thứ II).

Thật thú vị, tất cả các đề nghị nghiêm trọng cho một mô hình tính toán có
sức mạnh tương tự, có nghĩa là, họ tính toán các chức năng tương tự hoặc nhận
ra các ngôn ngữ tương tự. Giả định Unprovable rằng bất kỳ cách thức chung để
tính toán sẽ cho phép chúng ta tính toán chỉ có một phần các hàm đệ quy (hoặc
tương đương, máy Turing hoặc máy tính hiện đại có thể tính toán) được biết như
là giả thuyết của Church (sau nhà lý luận học A. Church) hoặc luận án Church-
Turing.
8.2.2 Ký hiệu cho Máy Turing
Chúng ta có thể hình dung một máy Turing như trong hình 8.8. Máy bao
gồm một điều khiển hữu hạn, có thể trong bất kỳ tập hợp hữu hạn các trạng thái.
Có một băng được chia thành các hình vuông hoặc các ô, mỗi ô có thể nắm giữ
bất kỳ một trong hữu hạn các biểu tượng.
Hình 8.8: Máy Turing
Ban đầu, đầu vào, là một chuỗi hữu hạn chiều dài của các biểu tượng được
chọn từ bảng chữ cái đầu vào, được đặt trên băng. Tất cả các ô băng khác, mở
rộng vô hạn về bên trái và bên phải, ban đầu giữ một biểu tượng đặc biệt được
gọi là trống. Trống là một biểu tượng băng, nhưng không phải là một biểu tượng
Nhóm 3 Trang 5
Finite control
… B B X
1
X
2
X
i
X
n
B B …
Tiểu luận Lý thuyết tính toán
đầu vào, và có thể có biểu tượng băng khác ngoài những biểu tượng đầu vào và

trống.
Có một đầu băng luôn là vị trí tại một trong những ô của băng. Máy Turing
được cho là được quét ô đó. Ban đầu, đầu băng là các ô ngoài cùng bên trái chứa
các đầu vào.
Một di chuyển của máy Turing là một chức năng của trạng thái kiểm soát
hữu hạn và biểu tượng băng quét. Trong một động thái, máy Turing sẽ:
1. Thay đổi trạng thái. Trạng thái tiếp theo tùy chọn có thể giống như trạng
thái hiện tại.
2. Viết một biểu tượng băng trong các ô được quét. Biểu tượng băng này
thay thế bất cứ biểu tượng từng có trong ô đó. Tùy chọn, biểu tượng được viết
vào có thể là giống như biểu tượng hiện đang có.
3. Di chuyển đầu băng sang trái hoặc phải. Trong hình thức của chúng ta,
chúng ta yêu cầu di chuyển, và không cho phép đầu băng vẫn đứng yên. Hạn chế
này không hạn chế những gì một máy Turing có thể tính toán, từ bất kỳ trình tự
di chuyển với một đầu băng cố định có thể ngưng tụ, cùng với sự di chuyển của
đầu băng tiếp theo, vào một thay đổi trạng thái duy nhất, một biểu tượng băng
mới, và di chuyển sang trái hoặc phải.
Các ký hiệu chính thức chúng ta sẽ sử dụng cho một máy Turing (TM) là
tương tự như được sử dụng cho automat hữu hạn hoặc PDA. Chúng tôi mô tả
một TM bởi các 7 thành phần.
M = (Q, Σ, Г, δ, q
0
, B, F)
Có các thành phần có ý nghĩa sau đây:
Q: tập hữu hạn của các trạng thái kiểm soát hữu hạn.
Σ: tập hợp hữu hạn các ký hiệu đầu vào.
Г: tập hợp đầy đủ các biểu tượng băng;
Σ: luôn luôn là một tập hợp con của Г
δ: chức năng chuyển đổi. Những lập luận của δ (q, X) là một trạng thái q và
một băng biểu tượng X. Giá trị của δ(q, X), nếu nó được định nghĩa, là một bộ

ba (p, Y, D), trong đó:
Nhóm 3 Trang 6
Tiểu luận Lý thuyết tính toán
1. p là trạng thái tiếp theo, trong Q
2. Y là biểu tượng, trong Г, được viết trong các ô được quét, thay thế bất cứ
biểu tượng gì đang có.
3. D là một định hướng, hoặc L hoặc R, đứng "bên trái" hoặc "phải" tương
ứng, và nói với chúng ta hướng di chuyển của đầu đọc.
q
0
: Trạng thái bắt đầu, một thành viên của Q, trong đó kiểm soát hữu hạn
nếu tìm thấy ban đầu.
B: Các biểu tượng trống. Biểu tượng này là trong Г nhưng không phải
trong Σ, tức là, nó không phải là một biểu tượng đầu vào. Trống xuất hiện ban
đầu trong tất cả, nhưng số lượng hữu hạn của các ô ban đầu nắm giữ các ký hiệu
đầu vào.
F: tập hợp các trạng thái cuối cùng hoặc trạng thái chấp nhận, một tập hợp
con của Q.
8.2.3. Mô tả tức thời cho máy Turing
Để mô tả chính thức những gì một máy Turing, chúng ta cần phải phát triển
một ký hiệu cho các cấu hình hoặc các mô tả tức thời (ID), giống như các ký
hiệu đã phát triển cho PDA. Với máy Turing, về nguyên tắc, có một băng dài vô
tận, có thể tưởng tượng rằng không thể mô tả cấu hình của một máy Turing một
cách thật ngắn gọn. Tuy nhiên, sau bất kỳ số lượng hữu hạn các di chuyển, máy
Turing chỉ có thể thăm một số hữu hạn các ô, mặc dù vậy số lượng các ô được
đến thăm có thể phát triển vượt ra ngoài bất kỳ giới hạn hữu hạn nào. Như vậy,
trong mỗi ID, có vô hạn tiền tố và vô hạn hậu tố các ô mà chưa bao giờ được
duyệt. Những ô này đều phải nắm giữ hoặc các khoảng trắng hoặc một số hữu
hạn các ký hiệu đầu vào. Như vậy, chúng ta hiển thị trong một ID chỉ các ô giữa
tận cùng bên trái và tận cùng bên phải khoảng trắng. Dưới những điều kiện đặc

biệt, khi đầu đọc đang quét một trong những khoảng trắng hàng đầu hoặc cuối,
một số hữu hạn các khoảng trắng từ bên trái hoặc bên phải của các ký hiệu
không phải khoảng trắng trên băng cũng phải được bao gồm trong các ID.
Nhóm 3 Trang 7
Tiểu luận Lý thuyết tính toán
Ngoài việc mô tả băng, chúng ta phải mô tả sự kiểm soát hữu hạn và vị trí
đầu đọc băng. Để làm như vậy, chúng ta nhúng các trạng thái trong băng, và đặt
nó ngay bên trái của các ô đã được quét. Để phân biệt với chuỗi băng cộng với
trạng thái, chúng ta phải đảm bảo rằng chúng ta không sử dụng như là một biểu
tượng trạng thái bất kỳ đó cũng là một biểu tượng băng. Tuy nhiên, nó rất dễ
dàng để thay đổi tên của các trạng thái để không có gì chung với các ký hiệu
băng, từ khi hoạt động của máy Turing không phụ thuộc vào tên gọi các trạng
thái. Do đó, chúng ta sẽ sử dụng chuỗi X
1
X
2
X
i-1
qX
i
X
i +1
X
n
để mô tả cho một
ID, trong đó:
1. q là trạng thái của máy Turing.
2. Đầu đọc băng quét qua ký hiệu thứ i từ trái sang.
3. X
1

X
2
X
n
là một phần của băng giữa tận cùng bên trái và tận cùng bên
phải là ký hiệu trắng. Như một ngoại lệ, nếu đầu đọc ở bên trái của tận cùng bên
trái không phải là ký hiệu trắng hoặc bên phải tận cùng bên phải không phải là
ký hiệu trắng, thì tiền tố hoặc hậu tố X
1
X
2
X
n
sẽ được để trống, và i sẽ tương
ứng là 1 hoặc n.
Chúng ta mô tả sự di chuyển của máy Turing M = (Q, Σ, Γ, δ, Q
0
, B, F) bởi
ký hiệu├
M
đã được sử dụng cho PDA. Khi máy Turing được hiểu, chúng ta sẽ sử
dụng ký hiệu ├ để phản ánh sự di chuyển. Thông thường, ├
M
*
hoặc chỉ ├
*
, sẽ
được sử dụng để chỉ không, một hay nhiều bước di chuyển của máy Turing M.
Cho rằng δ(q, X
i

) = (p,Y,L) tức là bước dịch chuyển tiếp theo là sang trái.
Thì :
X
1
X
2
…X
i-1
q X
i
X
i+1
…X
n

M
X
1
X
2
…X
i-2
p X
i-1
Y X
i+1
…X
n
Chú ý động thái này phản ánh sự thay đổi trạng thái p như thế nào và thực
tế rằng người đầu đọc băng được đặt tại vị trí ô i-1. Có hai trường hợp ngoại lệ

quan trọng:
Nếu i =1, thì M dịch chuyển đến ký tự trắng ở bên trái của X
1
. Trong
trường hợp này,
q X
1
X
2
…X
n

M
p B Y X
2
…X
n
Nhóm 3 Trang 8
Tiểu luận Lý thuyết tính toán
1. Nếu i = n và Y=B, thì ký hiệu B ghi đè lên X
n
tham gia vào chuỗi vô hạn
các khoảng trắng theo sau và không xuất hiện trong ID tiếp theo. Do đó:
X
1
X
2
…X
n-1
q X

n

M
X
1
X
2
…X
n-2
p X
n-1
Bây giờ, cho rằng δ(q, X
i
) = (p,Y,R) ; tức là bước dịch chuyển tiếp theo là
sang phải. Thì:
X
1
X
2
…X
i-1
q X
i
X
i+1
…X
n

M
X

1
X
2
…X
i-1
Y p X
i+1
…X
n
Ở đây, bước dịch chuyển phản ánh sự thay đổi rằng đầu đọc đã dịch chuyển
đến ô i+1. Lại có hai ngoại lệ quan trọng:
Nếu i =n, thì ô thứ 1+1 chứa ký tự trắng , và ô đó không thuộc phần của ID
trước đó. Do đó, thay vì có:
X
1
X
2
…X
n-1
q X
n

M
X
1
X
2
…X
n-1
Y p B

Nếu i = 1 và Y=B, thì ký hiệu B ghi đè lên X
1
tham gia vào chuỗi vô hạn
các khoảng trắng trước đó và không xuất hiện trong ID tiếp theo. Do đó:
q X
1
X
2
…X
n

M
p X
2
…X
n
Ví dụ 8.2: Chúng ta sẽ thiết kế một máy Turing và xem cách nó hoạt động
trên một đầu vào điển hình. Máy Turing sẽ chấp nhận ngôn ngữ {0
n
1
n
| n≥ 1}.
Ban đầu, nó được cung cấp một chuỗi hữu hạn 0 và 1 trên băng, trước và sau bởi
các khoảng trắng đến vô cùng. Luân phiên, TM sẽ thay mỗi ký tự 0 bởi X và mỗi
ký tự 1 bởi Y, cho đến khi tất cả các ký tự 0 và 1 đều được thay thế.
Chi tiết hơn, bắt đầu từ phía bên trái nhất của dãy dữ liệu vào, nó liên tục
thay đổi mỗi ký tự 0 bởi X và di chuyển về bên phải qua bất kỳ ký tự 0 và Y nào
được tìm thấy, cho đến khi nó tìm thấy ký tự 1. Thay 1 bởi Y , và chuyển sang
trái, qua bất kỳ ký tự Y và 0, đến khi tìm thấy ký tự X. Lúc đó, nó tìm kiếm ký tự
0 ngay phía bên phải, và nếu tìm thấy một ký tự, thay nó bởi X và lặp lại tiến

trình, thay 1 bởi Y.
Nếu dữ liệu vào khác ký tự trắng và khác 0*1*, máy Turing sẽ bị lỗi. Tuy
nhiên, nếu nó kết thúc thay đổi tất cả các ký tự 0 bởi X và trong cùng một vòng
nó thay ký tự 1 cuối cùng bởi Y, sau đó nó tìm thấy đầu vào của nó có dạng 0
n
1
n
và chấp nhận. Đặc tả chính thức của máy Turing M là:
M= ({q
0
,q
1
,q
2
,q
3
,q
4
}, {0,1},{0,1,X,Y,B}, δ, q
0
, B, {q
4
})
Nhóm 3 Trang 9
Tiểu luận Lý thuyết tính toán
Trong đó δ được mô tả trong bảng mục 8.9
M thực hiện tính toán của nó, các phần của băng nơi đầu đọc của M đã
duyệt qua, sẽ luôn là một chuỗi các ký hiệu được mô tả bởi các biểu thức chính
quy X*0*Y*1*. Nghĩa là, sẽ có một số ký tự 0 được thay thế bởi X, và theo sau
bởi một số ký tự 0 chưa được thay thế bởi X. Và cũng vậy, có một số ký tự 1

được thay thế bởi Y, một số ký tự 1 chưa được thay thế bởi Y. Có thể có hoặc
không có một số ký tự 0 và 1 theo sau.
Bảng 8.9: TM chấp nhận {0
n
1
n
| n≥ 1}.
Khởi động bởi trạng thái q
0
, M cũng nhập từ trạng thái q
0
mỗi khi nó quay
về ký tự 0 còn lại bên trái nhất. Nếu M đang ở trạng thái q
0
và quét qua ký tự 0,
theo quy tắc góc trên bên trái trong hình 8.9 thì nó sẽ dịch chuyển đến trạng thái
q
1
, thay 0 bởi X, và chuyển sang phải. Mỗi lần ở trạng thái q
1
, M chuyển sang
phải qua tất cả các ký tự 0 và Y được tìm thấy trên băng, lưu lại trạng thái q
1
.
Nếu M tìm thấy ký tự X hoặc B, nó lỗi. Tuy nhiên, nếu M thấy 1 ở trạng thái q
1
,
nó thay 1 bởi Y, chuyển sang trạng thái q
2
, và bắt đầu dịch chuyển sang trái.

Ở trạng thái q
2
, M dịch chuyển trái qua các ký tự 0 và Y, lưu lại lại ở trạng
thái q
2
. Khi M nhận ra ký tự X ở bên phải nhất, đánh dấu vị trí cuối cùng bên
phải của dãy các ký tự 0 đã được thay bởi X, M quay về trạng thái q
0
và chuyển
sang phải. Có hai trường hợp:
1. Nếu M thấy ký tự 0, nó lặp lại chu kỳ phù hợp đã được mô tả.
2. Nếu M thấy ký tự Y, nó đã thay đổi tất cả ký tự 0 bởi X. Nếu tất cả các ký
tự 1 đã được thay bởi Y, thì đầu vào đã ở dạng 0
n
1
n
, và M chấp nhận. Do đó, M
chuyển sang trạng thái q
3
, và di chuyển sang phải, qua các ký tự Y. Nếu ký tự
đầu tiên khác Y, M xem là ký tự trắng, sau đó thực sự đã có một số lượng tương
đương ký tự 0 và 1, vì vậy, M chuyển sang trạng thái q
4
và chấp nhận. Mặt khác,
Nhóm 3 Trang 10
Tiểu luận Lý thuyết tính toán
nếu M gặp ký tự 1 khác, tức là có quá nhiều ký tự 1, thì M không chấp nhận và
bị lỗi. Nếu nó gặp ký tự 0, thì dữ liệu vào sai định dạng, và M lỗi.
Đây là một ví dụ của tính toán được M chấp nhận. Dữ liệu vào là 0011.
Khởi động ở trạng thái q

0
, quét ký tự 0 đầu tiên, tức là ID khởi động của M là
q
0
0011. Toàn bộ các bước di chuyển của M là:
q
0
0011 ├ Xq
1
011 ├ X0q
1
11 ├ Xq
2
0Y1 ├q
2
X0Y1 ├ Xq
0
0Y1 ├ XXq
1
Y1 ├
XXYq
1
1├ XXq
2
YY ├ Xq
2
Xyy ├ XXq
0
YY ├ XXYq
3

Y ├ XXYYq
3
B ├
XXYYBq
4
B
Ví dụ khác cách M thực hiện trên dữ liệu vào 0010, ngôn ngữ không được
chấp nhận.
q
0
0010 ├ Xq
1
010 ├ X0q
1
10 ├ Xq
2
0Y0 ├ q
2
X0Y0 ├ Xq
0
0Y0 ├ XXq
1
Y0 ├
XXYq
1
0├ XXY0q
1
B
Hoạt động của M trên 0010 tương tự như với 0011, đến khi trong ID
XXYq

1
0 M quét ký tự 0 cuối cùng lần đầu tiên. M phải dịch chuyển sang phải,
dừng lại ở trạng thái q
1
, và có ID là XXY0q
1
B. Tuy nhiên, ở trạng thái q
1
M
không di chuyển trên băng ký hiệu B; do đó M lỗi và không chấp nhận dữ liệu
vào.
8.2.4. Sơ đồ quá trình chuyển đổi cho máy Turing
Chúng ta có thể đại diện cho các quá trình chuyển đổi hình ảnh của một
máy Turing, nhiều như chúng ta đã làm cho các PDA. Sơ đồ chuyển đổi bao
gồm một tập các nút tương ứng với các trạng thái của máy Turing. Một vòng
cung từ trạng thái q đến trạng thái p được dán nhãn của một hoặc nhiều mục của
mẫu X / YD, trong đó X và Y là biểu tượng băng, và D là một hướng, hoặc L
hoặc R. Đó là, bất cứ khi nào δ (q, X) = (p, Y, D), chúng ta tìm thấy nhãn X/YD
trên vòng cung từ q để p. Tuy nhiên, trong sơ đồ của chúng ta, hướng D được
thể hiện bởi hình ảnh ← "trái" và → cho "phải".
Đối với các loại biểu đồ chuyển đổi, chúng ta đại diện cho trạng thái bắt
đầu bằng từ "Start" và một mũi tên vào trạng thái đó. Trạng thái chấp nhận được
chỉ định bởi các vòng tròn đôi. Như vậy, thông tin duy nhất về máy Turing
Nhóm 3 Trang 11
Tiểu luận Lý thuyết tính toán
không thể đọc trực tiếp từ biểu đồ là biểu tượng được sử dụng trống. Chúng ta sẽ
giả định rằng biểu tượng là B trừ khi chúng ta trạng thái khác.
Ví dụ 8.3: Hình 8.10 cho thấy sơ đồ chuyển tiếp cho máy Turing của ví dụ
8.2, có chức năng chuyển đổi đã được đưa ra trong hình. 8.9.
Ví dụ 8.4: Trong khi ngày nay chúng ta tìm thấy nó thuận tiện nhất để suy

nghĩ của TM như các ngôn ngữ đoán nhận, hoặc tương đương, giải quyết các
vấn đề, xem nguồn gốc của máy của Turing như là một máy tính của chức năng
giá trị số nguyên. Trong kế hoạch của mình, số nguyên đã được đại diện trong
nguyên phân, như các khối của các ký tự đoen, và máy tính bằng cách thay đổi
độ dài của các khối hoặc bằng cách xây dựng khối mới ở những nơi khác trên
băng. Trong ví dụ đơn giản này, chúng ta sẽ hiển thị bằng thế nào một máy
Turing có thể tính toán chức năng -, được gọi là Monus hoặc thích hợp trừ và
được xác định bởi m - n = max (mn, 0). Đó là, m - n là m-n nếu m> = n và 0 nếu
m <n.
TM có thể thực hiện hoạt động này được xác định bởi
M = ({q0, q1, , q6}, {0, 1}, {0, 1, B}, δ, q0, B)
Lưu ý rằng, kể từ khi máy Turing này không được sử dụng để chấp nhận
đầu vào, chúng ta đã bỏ các thành phần thứ bảy, đó là tập các trạng thái chấp
nhận. M sẽ bắt đầu với một băng gồm 0
m
10
n
bao quanh bởi các khoảng trống. M
tạm dừng với 0
m-n
trên băng của nó, bao quanh bởi các khoảng trống.
Nhóm 3 Trang 12
Tiểu luận Lý thuyết tính toán
Hình 8.10: Sơ đồ chuyển đổi cho một máy Turing chấp nhận chuỗi có dạng
0
n
1
n
.
M tìm thấy nhiều lần 0 còn lại tận cùng bên trái của nó và thay thế nó bằng

một chỗ trống. Nó sau đó tìm kiếm bên phải, tìm kiếm một 1. Sau khi tìm thấy
một 1, nó tiếp tục sang phải, cho đến khi nó đến 0, mà nó thay thế bởi một 1. M
sau đó trở về trái, tìm kiếm số 0 tận cùng bên trái, nó xác định khi lần đầu tiên
gặp một chỗ trống và sau đó di chuyển một ô sang bên phải.
Lặp đi kết thúc nếu một trong hai trường hợp:
1. Tìm kiếm bên phải với một 0, M gặp một chỗ trống. Sau đó, các n của ký
tự 0 trong 0
m
10
n
tất cả được thay đổi thành 1, và n +1 của m ký tự 0 đã được
thay đổi thành B. M thay thế các n + 1 ký tự 1 thành một ký tự 0 và n ký tự B,
để lại m-n ký tự 0 trên băng. Kể từ khi m> = n trong trường hợp này, m-n = m_
+ n.
2. Bắt đầu chu kỳ, M không thể tìm thấy một ký tự 0 để thay thế thành một
chỗ trống, bởi vì n ký hiệu 0đầu tiên đã được thay đổi thành B. Sau đó, n> = m,
do đó, m-+ n = 0. M thay thế tất cả các ký tự 1 và 0 còn lại thành B và kết thức
với một băng hoàng toàn trống.
Hình 8.11 đưa ra các quy tắc của chức năng chuyển đổi δ, và chúng ta cũng
đã đại diện δ như một sơ đồ chuyển đổi trong hình 8.12. Sau đây là một bản tóm
tắt vai trò của từng trạng thái trong 7 trạng thái:
q
0
: Trạng thái này bắt đầu chu kỳ, và cũng có thể phá vỡ chu kỳ khi thích
hợp. Nếu M đang quét một ký tự 0, chu kỳ phải lặp lại. 0 được thay thế bằng B,
đầu đọc di chuyển sang bên phải, và trạng thái q1 được nhập. Mặt khác, nếu M
đang quét ký tự 1, sau đó tất cả các trận đấu (matches) có thể có giữa hai nhóm
của ký tự 0 trên băng đã được thực hiện, và M đi đến trạng thái q5 để làm trống
băng.
Nhóm 3 Trang 13

Tiểu luận Lý thuyết tính toán
Hình 8.11: Một máy Turing tính chức năng thích hợp-trừ.
Hình 8.12: Sơ đồ chuyển đổi cho TM của Ví dụ 8.4.
q
1
: Trong trạng thái này, M tìm kiếm bên phải, thông qua khối ban đầu của
0, tìm ký tự 1 tận cùng bên trái. Khi tìm thấy, M đi vào trạng thái q
2
.
q
2
: M di chuyển sang phải, bỏ qua ký tự 1, cho đến khi nó tìm thấy một ký
tự 0. Nó thay đổi ký tự 0 thành ký tự 1, quay ở về bên trái, và đi vào trạng thái
q
3
. Tuy nhiên, nó cũng có thể là không có thêm ký tự 0 bên trái sau khối ký tự 1.
Trong trường hợp đó, M ở trạng thái q
2
gặp một trống. Chúng ta có trường hợp
(1) mô tả ở trên, nơi m ký tự 0 trong khối thứ hai của các khối ký tự 0 đã được
sử dụng để hủy bỏ n của m ký tự 0 trong khối đầu tiên. Và phép trừ hoàn tất. M
vào trạng thái q
4
, mà mục đích là để chuyển đổi các ký tự 1 trên băng thàng
khoảng trống.
q
3
: M di chuyển sang trái, bỏ qua các 0 và 1 của, cho đến khi nó tìm thấy
một trống. Khi nó tìm thấy B, nó di chuyển phải và trở lại trạng thái q
0

, bắt đầu
chu kỳ một lần nữa.
Nhóm 3 Trang 14
Tiểu luận Lý thuyết tính toán
q
4
: Ở đây, trừ hoàn tất, nhưng chưa từng có một ký tự 0 trong khối đầu tiên
đã được thay đổi không chính xác thành B. M do đó di chuyển trái, thay đổi 1
thành B, cho đến khi nó gặp một B trên băng. Nó thay đổi mà B trở về 0, và vào
trạng thái q
6
, trong đó M tạm dừng.
q
5
: Trạng thái q
5
được nhập vào từ trạng thái q
0
khi nó được tìm thấy rằng
tất cả các ký tự 0 trong khối đầu tiên đã được thay đổi thành B. Trong trường
hợp này, được mô tả trong (2) ở trên, kết quả của phép trừ thích hợp là 0. M thay
đổi tất cả 0 và 1 còn lại thành B và đi vào trạng thái q6.
q
6
: Mục đích duy nhất của trạng thái này là cho phép M dừng khi nó đã
hoàn tất nhiệm vụ của mình. Nếu phép trừ là một xử lý con của một số chức
năng phức tạp hơn, sau đó q
6
sẽ bắt đầu bước tiếp theo của tính toán lớn hơn đó.
8.2.5. Ngôn ngữ của máy Turing

Chúng ta đã thấy theo trực giác cách mà một máy Turing chấp nhận một
ngôn ngữ. Chuỗi đầu vào được đặt trên băng, và đầu băng bắt đầu từ biểu tượng
đầu vào tận cùng bên trái. Nếu máy Turing cuối cùng đi vào một trạng thái chấp
nhận, sau đó đầu vào được chấp nhận, và nếu không thì không.
Chính thức, cho M = () là một máy Turing. Sau đó, L (M) là tập hợp các
chuỗi w trong Σ như q
0
w ├ * αpβ cho một số trạng thái p trong F và bất kỳ
chuỗi băng α và β. Định nghĩa này được giả định khi chúng ta thảo luận về máy
Turing của ví dụ 8.2, cái mà chấp nhận chuỗi của có hình thức 0
n
1
n
.
Tập các ngôn ngữ chúng ta có thể chấp nhận bằng cách sử dụng một máy
Turing thường được gọi là ngôn ngữ liệt kê đệ quy hoặc các ngôn ngữ RE.
Thuật ngữ "liệt kê đệ quy” đến từ các hình thức tính toán cái mà có trước máy
Turing nhưng đó xác định cùng lớp các ngôn ngữ hoặc các chức năng số học.
Chúng ta thảo luận về nguồn gốc của thuật ngữ này như một hướng (sang một
bên) (hộp) tại mục 9.2.1.
Quy ước ký hiệu cho máy Turing
Các biểu tượng chúng ta thường sử dụng cho các máy Turing tương tự như
đối với các loại automat khác mà chúng ta đã thấy.
Nhóm 3 Trang 15
Tiểu luận Lý thuyết tính toán
1. Các chữ thường ở đầu bảng chữ cái chữ cái đứng cho các ký hiệu đầu
vào.
2. Các chữ hoa, thường ở gần cuối của bảng chữ cái được sử dụng cho các
ký hiệu băng có thể có hoặc có thể không có biểu tượng đầu vào. Tuy nhiên, B
thường được sử dụng cho các biểu tượng trống.

3. Các chữ thường gần cuối của bảng chữ cái là chuỗi các ký hiệu đầu vào.
4. Chữ Hy Lạp là chuỗi các ký hiệu băng.
5. Các chữ cái như q, p và chữ gần đó là những trạng thái.
8.2.6 Máy Turing và Tạm dừng
Còn có một khái niệm khác về "chấp nhận" thường được sử dụng cho máy
Turing: chấp nhận do tạm ngừng. Chúng tôi nói một TM tạm dừng nếu nó đi vào
một trạng thái q, quét một biểu tượng băng X, và không có di chuyển trong tình
huống này, tức là, δ(q, X) là không xác định.
Ví dụ 8.5: Các máy Turing M Ví dụ 8.4 không được thiết kế để chấp nhận
một ngôn ngữ mà w xem nó như là tính toán một chức năng số học. Lưu ý, tuy
nhiên, rằng M tạm dừng tất cả các chuỗi của 0 và 1, kể từ khi không có đồng hồ
đo những gì chuỗi M tìm thấy trên băng của nó, nó cuối cùng sẽ hủy bỏ nhóm 2
của số 0, nếu nó có thể tìm thấy một nhóm nhạc, so với nhóm 1 của nó = 0 , và
do đó phải đạt trạng thái q
6
và dừng lại.
Chúng ta luôn luôn có thể giả định rằng một máy Turing tạm dừng nếu nó
chấp nhận. Đó là, mà không thay đổi ngôn ngữ được chấp nhận, chúng ta có thể
làm cho δ (q, X) không xác định bất cứ khi nào q là một trạng thái chấp nhận.
Nói chung, không có nếu không nói như vậy:
* Chúng ta cho rằng một TM luôn luôn tạm dừng khi nó là một trong trạng
thái chấp nhận.
Thật không may, nó không phải lúc nào cũng có thể yêu cầu rằng một TM
tạm dừng thậm chí nếu nó không chấp nhận. Những ngôn ngữ với các máy
Turing mà làm dừng cuối cùng, bất kể chúng có chấp nhận hay không, được gọi
là đệ quy, và chúng tôi sẽ xem xét các thuộc tính quan trọng của chúng bắt đầu
Nhóm 3 Trang 16
Tiểu luận Lý thuyết tính toán
trong mục 9.2.1. Máy Turing mà luôn luôn dừng, bất kể chúng có chấp nhận hay
không, là một mô hình tốt của một "thuật toán". Nếu một thuật toán để giải

quyết một vấn đề nhất định tồn tại, sau đó chúng tôi nói vấn đề là "giải quyết
được", do đó Máy Turing mà luôn luôn ngăn chặn con số quan trọng vào lý
thuyết decidability trong Chương 9.
8.2.7 Các bài tập cho Phần 8.2
Bài tập 8.2.1: Các ID của máy Turing hình 8.9 nếu băng đầu vào có chứa:
Bảng 8.9: TM chấp nhận {0
n
1
n
| n≥ 1}.
*a) 00.
Ta có:
q
0
00 ├ Xq
1
0 ├ X0q
1
B
Ngôn ngữ không được đoán nhận.
b) 000111.
q
0
000111├ Xq
1
00111├ X0q
1
0111├ X00q
1
111├ X0q

2
0Y11├ Xq
2
00Y11
├ q
2
X00Y11├ Xq
0
00Y11├ XXq
1
0Y11├ XX0q
1
Y11├ XX0Yq
1
11
├ XX0q
2
YY1├ XXq
2
0YY1├ Xq
2
X0YY1├ XXq
0
0YY1├ XXXq
1
YY1
├ XXXYq
1
Y1├ XXXYYq
1

1├ XXXYq
2
YY├ XXXq
2
YYY├ XXq
2
XYYY
├ XXXq
0
YYY├ XXXYq
3
YY├ XXXYYq
3
Y├ XXXYYYq
3
B
├ XXXYYYBq4B
Ngôn ngữ được đoán nhận.
c) 00111.
q
0
00111├ Xq
1
0111├ X0q
1
111├ Xq
2
0Y11├ q
2
X0Y11├ Xq

0
0Y11
├ XXq
1
Y11├ XXYq
1
11├ XXq
2
YY1├ Xq
2
XYY1├ XXq
0
YY1
├ XXYq
3
Y1├ XXYYq
3
1
Nhóm 3 Trang 17
Tiểu luận Lý thuyết tính toán
Tiếp theo không có luật để áp dụng do đó ngôn ngữ không được đoán nhận.
! Bài tập 8.2.2: Thiết kế máy Turing cho các ngôn ngữ sau:
*a) Các thiết lập các chuỗi với một số lượng bằng 0 và 1.
b) {a
n
b
n
c
n
| n> = 1}

c) {WWR | w là bất kỳ chuỗi 0 và 1}
Bài tập 8.2.3: Thiết kế một máy Turing có một đầu vào một số N và thêm 1
trong hệ nhị phân. Để được chính xác, băng ban đầu có chứa một theo sau bởi N
trong hệ nhị phân. Đầu đọc ban đầu quét trạng thái q
0
. TM của bạn nên Galt với
N +1, trong hệ nhị phân, trên băng của nó, quét các biểu tượng ngoài cùng bên
trái của N +1, trạng thái QF. Bạn có thể phá hủy trong việc tạo ra N +1, nếu cần
thiết. Ví dụ - q
0
$ 10.011 - $ q
f
10100, và q
0
$ 11.111 - q
f
100000.
a) Cung cấp cho các quá trình chuyển đổi của máy Turing của bạn, và giải
thích mục đích của mỗi trạng thái.
b) Các trình tự của ID của TM của bạn khi cho đầu vào $ 111.
Bài tập: 8.2.5: Hãy xem xét các máy Turing
M = ({q
0
, q
1
, q
2
, q
f
}, {0, 1}, {0, 1, B}, δ, q

0
, B, {q
f
})
Chính thức nhưng mô tả rõ ràng ngôn ngữ L(M) nếu δ bao gồm các bộ quy
tắc sau đây:
*a) δ (q
0
, 0) = (q
1
, 1, R), δ (q
1
, 1) = (q
0
, 0, R); δ (q
1
, B) = (q
f
, B, R).
L(M) = 01.
b) δ (q
0
, 0) = (q
0
, B, R), δ (q
0
, 1) = (q
1
, B, R); δ (q
1

, 1) = (q
1
, B, R);
δ (q
1
, B) = (q
f
, B, R).
L(M) = 1.
c) δ (q
0
, 0) = (q
1
, 1, R), δ (q
1
, 1) = (q
2
, 0, L); δ (q
2
, 1) = (q
0
, 1, R);
δ (q
1
, B) = (q
f
, B, R).
Nhóm 3 Trang 18

×