An toàn thông tin – Nhóm 14 – Turing
Giới thiệu về turing
Turing (đặt theo tên của Alan Turing) là một thuật toán nghiên cứu mã hóa
dòng thiết kế. Đặc điểm:
- Xử lý nhanh.
- Sử dụng ít bộ nhớ trên bộ xử lý nhúng.
- Khai thác song song.
Turing được thiết kế để đáp ứng nhu cầu của các ứng dụng nhúng như giọng
nói mã hóa trong máy điện thoại không dây, ….
Turing có bốn thành phần:
- Trọng tải
- Khởi động
- LFSR
- Một khóa tuyến tính không lọc.
Hình 1: Các thành phần của mật mã dòng turing
I. Máy turing và thuật toán
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
1
An toàn thông tin – Nhóm 14 – Turing
Máy Turing có một băng nhớ, dùng để ghi mọi loại dữ liệu (dữ liệu nhập,
dữ liệu dùng cho việc điều khiển tương tự như một chương trình máy tính và
các kết quả trung gian khi làm việc). Với một bộ điều khiển chứa một số hữu
hạn trạng thái, TM cũng như các ôtômát khác, làm việc theo lối "ngắt quãng"
theo từng bước chuyển.
1. Mô tả về máy Turing
Máy Turing có rất nhiều mô hình và định nghĩa khác nhau nhưng tất cả
chúng đều tương đương nhau. Mô hình cơ bản của một máy Turing gồm :
- Một bộ điều khiển hữu hạn.
- Một băng được chia thành các ô.
- Một đầu đọc-viết, mỗi lần đọc có thể duyệt qua một ô trên băng để đọc
hay viết ký hiệu.
Mỗi ô có thể giữ được một ký hiệu trong số hữu hạn các ký hiệu băng (các
ký hiệu được phép viết trên băng). Khởi đầu xem như n ô bên trái của băng (n
≥ 0) giữ chuỗi nhập (input), chuỗi nhập là một chuỗi các ký tự được chọn từ
một tập hợp con của tập hợp các ký hiệu băng, tập hợp con này gọi là tập các
ký hiệu nhập. Phần còn lại của băng coi như có vô hạn khoảng trống, ký hiệu
B (Blank), B là một ký hiệu đặc biệt của băng nhưng không phải là ký hiệu
nhập.
Hình 2: Mô tả một TM
Mỗi bước chuyển của máy Turing, phụ thuộc vào ký hiệu do đầu đọc đọc
được trên băng và trạng thái của bộ điều khiển, máy sẽ thực hiện các bước sau :
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
2
An toàn thông tin – Nhóm 14 – Turing
1) Chuyển trạng thái
2) In một ký hiệu trên băng tại ô đang duyệt (nghĩa là thay ký hiệu đọc được
trên băng bằng ký hiệu nào đó)
3) Dịch chuyển đầu đọc-viết (sang trái (L), sang phải (R) hoặc đứng yên(∅))
- Các thao tác có thể của một máy Turing:
• Đọc (xác định) ký hiệu hiện tại mà đầu đọc đang trỏ tới
• Viết một ký hiệu lên ô vuông hiện tại mà đầu đọc đang trỏ tới
(sau khi xóa lần đầu tiên ký hiệu vừa được ghi ở đó)
• Di chuyển băng sang trái một ô
• Di chuyển băng sang phải một ô
• Thay đổi trạng thái
• Ngắt
- Quá trình thực hiện của máy Turing có thể được mô tả như sau:
• Lúc khởi đầu, xâu vào được đặt trên băng (tận cùng bên trái).
Mọi ô khác trên băng đều chứa một ký hiệu đặc biệt, B (blank), được
gọi là ký hiệu trống. Đầu đọc trỏ vào ô thứ nhất trên băng và máy ở
trạng thái đầu.
• Cứ mỗi bước trong quá trình thực hiện (xem hình), máy sẽ
thực hiện:
o Đọc ký hiệu đối diện đầu đọc,
o Thay ký hiệu đó bằng ký hiệu tính được từ hàm dịch chuyển,
o Dời đầu đọc một ô sang trái hay sang phải theo hướng chỉ định
bởi hàm dịch chuyển,
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
3
An toàn thông tin – Nhóm 14 – Turing
o Đổi trạng thái hiện tại thành trạng thái tiếp theo, cho bởi hàm
dịch chuyển.
Xâu vào là được thừa nhận khi quá trình thực hiện đối với xâu đó đạt
đến một trạng thái thừa nhận
Hinh 3:
2. Định nghĩa về máy turing
Một cách hình thức, ta định nghĩa một máy Turing (TM) như sau :
Định nghĩa: TM là một hệ thống M (Q, Σ, Γ, δ, q
0
, B, F), trong đó:
. Q : tập hữu hạn các trạng thái.
. Σ: bộ ký hiệu nhập.
. Γ : tập hữu hạn các ký tự được phép viết trên băng.
. B : ký hiệu thuộc Γ dùng chỉ khoảng trống trên băng (Blank).
. δ : hàm chuyển ánh xạ : Q × Γ → Q × Γ × {L, R, ∅}
(δ có thể không xác định với một vài đối số)
. q
0
∈
Q là trạng thái bắt đầu
. F
⊆
Q là tập các trạng thái kết thúc
Ví dụ 1. Thiết kế máy Turing chấp nhận ngôn ngữ L = { 0
n
1
n
| n ≥ 1}
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
4
An toàn thông tin – Nhóm 14 – Turing
Khởi đầu, máy Turing chứa 0
n
1
n
bên trái nhất trên băng sau đó là vô hạn
khoảng trống Blank. Máy Turing lặp lại quá trình sau:
M thay 0 bên trái nhất bằng X rồi chuyển sang phải tới
1 trái nhất, máy Turing thay 1 này bằng Y rồi dịch chuyển về bên trái
cho tới khi gặp X phải nhất nó chuyển sang phải một ô (tới 0 trái nhất)
rồi tiếp tục lặp một chu trình mới.
Nếu trong khi dịch chuyển sang phải để tìm 1 mà máy
Turing gặp Blank thì máy Turing dừng và không chấp nhận input.
Tương tự, khi máy Turing đã thay hết 0 bằng X và kiểm tra còn 1 trên
băng thì máy Turing cũng dừng và không chấp nhận input.
Máy Turing chấp nhận input nếu như cũng không còn
ký hiệu 1 nào nữa trên băng.
Đặt máy Turing M = < Q,
Γ
, b,
∑
,
δ
, q
0
, F> với các thành phần :
Q = {q
0
, q
1
, q
2
, q
3
, q
4
}; ∑= {0, 1}; Γ = {0, 1, X, Y, B} và F = {q
4
}.
Ta có thể hình dung mỗi trạng thái là một câu lệnh hoặc một nhóm các câu
lệnh trong chương trình. Trạng thái q
0
là trạng thái khởi đầu và nó làm cho ký
hiệu 0 bên trái nhất thay bằng X. Trạng thái q
1
được dùng để tiến sang phải bỏ
qua các số 0 và Y để tìm 1 bên trái nhất. Nếu M tìm thấy 1 nó thay 1 bằng Y rồi
đi vào trạng thái q
2
. Trạng thái q
2
đưa M tiến sang trái cho tới X đầu tiên và đi vào
trạng thái q
0
, dịch chuyển sang phải để tới 0 bên trái nhất và tiếp tục một chu trình
mới. Khi M tiến sang phải trong trạng thái q
1
, nếu B hoặc X được tìm thấy trước 1
thì input bị loại bỏ (không chấp nhận) vì có chứa nhiều ký hiệu 0 hơn 1 hoặc
input không có dạng 0
*
1
*
.
Trạng thái q
0
còn có vai trò khác. Nếu trạng thái q
2
tìm thấy X bên phải nhất
và ngay sau đó là Y thì các số 0 đã được xét hết, do đó ở trạng thái bắt đầu một
chu trình mới q
0
không tìm thấy ký hiệu 0 nào để thay thành X mà chỉ gặp Y thì
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
5
An toàn thông tin – Nhóm 14 – Turing
máy Turing đi vào trạng thái q
3
duyệt qua các Y để kiểm tra có hay không có ký
hiệu 1 còn lại. Nếu theo ngay sau các Y là B, nghĩa là trên băng nhập không còn
ký hiệu 1 nào nữa thì máy Turing sẽ đi vào q
4
(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 δ được cho trong bảng sau :
Hình 4. Một máy Turing kiểm nhận {0
n
1
n
| n>=1}
Các phép chuyển hình thái của máy Turing M trên input 0011 :
q
0
0011 ⊢ Xq
1
011 ⊢ X0q
1
11 ⊢ X q
2
0Y1 ⊢ q
2
X0Y1 ⊢ X q
0
0Y1 ⊢
XXq
1
Y1 ⊢ XXY q
1
1 ⊢ XX q
2
YY ⊢ X q
2
XYY ⊢ XX q
0
YY ⊢ XXYq
3
Y
⊢ XXYYq
3
⊢ XXYYq
4
3 . Sơ đồ chuyển vị cho máy turing
Một sơ đồ chuyển vị (transition diagram) 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 cung từ trạng thái q đến trạng thái p với
nhãn là một hoặc nhiều mục có dạng X/YD, trong đó X và Y là các ký hiệu băng,
D là một hướng (L hoặc R). Điều này có nghĩa là mỗi khi
δ
(q, X
i
) = (p, Y, D),
chúng ta thấy nhãn X/YD trên cung từ q đến p. Tuy nhiên, trong sơ đồ của chúng
ta, hướng D được biểu diễn bằng các mũi tên chỉ sang trái (
←
) hoặc chỉ sang phải
(
→
).
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
6
An toàn thông tin – Nhóm 14 – Turing
Giống như các loại sơ đồ chuyển vị khác, chúng ta biểu diễn khởi trạng
bằng từ “start” và một mũi tên đi vào trạng thái đó. Kiểm trạng được chi ra bằng
vòng kép. Vì thế thông tin duy nhất của máy Turing không đọc trực tiếp được từ
sơ đồ là ký hiệu được dùng cho ô trống. Chúng ta sẽ xem như đó là B trừ khi
được nói rõ.
Ví dụ: sơ đồ chuyển vị của một máy turing
4. Máy turing biểu diễn thuật toán
Máy Turing là một thành phần rất quan trọng trong nền khoa học của thế kỷ
XX, một phần vì máy Turing đóng vai trò trung tâm trong lý thuyết về tính toán
và khả năng tính toán. Đặc biệt, máy Turing không chỉ được quan tâm như là một
bộ chấp nhận ngôn ngữ mà còn cung cấp một định nghĩa nghiêm ngặt về thuộc
tính hay phương pháp.
Các thuật toán rất cần thiết cho máy tính xử lý thông tin
Thông thường, khi một thuật toán được kết hợp với thông tin xử lý, dữ liệu
được đọc từ một nguồn hay thiết bị đầu vào, được viết trên một thiết bị đầu ra,
và/hoặc được lưu trữ cho các xử lý tiếp sau. Trong khi đó, một máy Turing có thể
được biểu diễn như một hệ thống thực hiện chức năng tự động có khả năng ở một
số hữu hạn các trạng thái bên trong và được hỗ trợ bởi một bộ nhớ bên ngoài vô
hạn, gọi là băng (nhập/xuất).
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
7
An toàn thông tin – Nhóm 14 – Turing
Khái niệm máy Turing có thể được sử dụng để đảm bảo mô hình hóa ý tưởng
tổng quát của một thuật toán được chính xác với một bảng chữ cái đã cho như
sau:
• Input của một sự tính toán là tất cả các kí hiệu không trắng
trên băng tại thời điểm khởi đầu.
• Tại thời điểm kết thúc của sự tính toán, output sẽ là bất kì cái
gì có trên băng.
• Vậy có thể xem một máy Turing M như là một sự hiện thực
của một hàm f được định nghĩa bởi = f(w) trong đó q
0
w
M
q
f
với q
f
là
một trạng thái kết thúc nào đó.
• Lúc đó, một hàm f với miền xác định D được gọi là khả tính
toán-Turing hay đơn giản là khả tính toán nếu tồn tại một máy Turing
nào đó M = < Q,
Γ
, b,
∑
,
δ
, q
0
, F> sao cho q
0
w
M
q
f
f(w), q
f
∈F, ∀w ∈ D.
Ví dụ 4. Xét bài toán cộng hai số nguyên viết ở dạng nhị phân f(x, y) = x + y .
Thủ tục thực hiện phép cộng có thể dựa trên phương pháp thông thường là cộng
cặp chữ số nhị phân với nhau (có nhớ) để tính tổng của hai số nguyên.
Để cộng a và b, trước hết cộng hai bit ở phải cùng của chúng, tức là:
a
0
+ b
0
= c
0
.2 + s
0
.
Ở đây s
0
là bit phải cùng trong khai triển nhị phân của a+b, c
0
là số nhớ, nó có
thể bằng 0 hoặc 1. Sau đó ta cộng hai bit tiếp theo và số nhớ
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
8
An toàn thông tin – Nhóm 14 – Turing
a
1
+ b
1
+ c
0
= c
1
.2 + s
1
.
Ở đây s
1
là bit tiếp theo (tính từ bên phải) trong khai triển nhị phân của a+b và
c
1
là số nhớ. Tiếp tục quá trình này bằng cách cộng các bit tương ứng trong hai
khai triển nhị phân và số nhớ để xác định bit tiếp sau tính từ bên phải trong khai
triển nhị phân của tổng a+b. Ở giai đoạn cuối cùng, cộng a
n-1
, b
n-1
và c
n-2
để nhận
được c
n-1
.2+s
n-1
. Bit đứng đầu của tổng là s
n
=c
n-1
. Kết quả, thủ tục này tạo ra được
khai triển nhị phân của tổng, cụ thể là a+b = (s
n
s
n-1
s
n-2
s
1
s
0
)
2
.
Triển khai thuật toán này với máy Turing, chúng ta phải quyết định các số x và
y vào lúc ban đầu được đặt như thế nào trên băng và tổng của chúng xuất hiện
như thế nào lúc kết thúc sự tính toán.
• Chúng ta giả thiết rằng w(x) và w(y) được phân cách bằng một
kí hiệu , với đầu đọc ở trên kí tự phải cùng của w(y).
• Chúng ta vì vậy muốn thiết kế một máy Turing để thực hiện
sự tính toán (trong đó q
f
là một trạng thái kết thúc)
q
0
w(x) w(y)
M
q
f
w(x + y) ,
Q = {q0, q1, q2, q3,…., q9, q
f
}, F = {q
f
}
Với bảng trạng thái được cho bởi đồ thị trạng thái như sau:
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
9
An toàn thông tin – Nhóm 14 – Turing
• Sau khi tính toán, w(x + y) sẽ ở trên băng và được theo sau bởi
một kí tự , và đầu đọc sẽ được đặt trên kí tự phải cùng của kết quả.
Như trên, chúng ta đã thấy máy Turing có thể thực hiện được các phép toán cơ
bản và quan trọng những cái mà có trong tất cả các máy tính. Vì trong các máy
tính số, các phép toán cơ bản như vậy là các thành phần cơ bản cho các lệnh phức
tạp hơn, sau đây là một ví dụ 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:
Ta xây dựng mô hình tính toán như sau:
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
10
An toàn thông tin – Nhóm 14 – Turing
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 đã được chuyển thành kết hợp các
phép toán cơ bản.
Với khá nhiều bằng chứng mạnh mẽ tuy chưa đủ là một chứng minh chặt chẽ,
nhưng chúng ta chấp nhận miêu tả chính xác của ý tưởng tổng quát về thuật toán
trong một bộ chữ cái được thực hiện bởi máy Turing là hoàn toàn đầy đủ. Có
nghĩa rằng, đối với mọi thuật toán trong bảng chữ cái cụ thể, có thể xây dựng
một thuật toán Turing cho cùng các kết quả với cùng dữ liệu ban đầu như thuật
toán . Sự chấp nhận này được gọi là luận đề Turing trong lý thuyết thuật toán,
như một định nghĩa của một “sự tính toán cơ học”. Cụ thể,
• Bất kỳ cái gì có thể được thực hiện trên bất kỳ máy tính số
đang tồn tại nào đều có thể được thực hiện bởi một máy Turing.
• Không ai có thể đưa ra một bài toán, có thể giải quyết được
bằng những gì mà một cách trực quan chúng ta xem là một thuật toán,
mà đối với nó không tồn tại máy Turing nào giải quyết được.
• Các mô hình thay thế khác có thể được đưa ra cho sự tính toán
cơ học nhưng không có cái nào trong số chúng là mạnh hơn mô hình
máy Turing.
Bằng việc chấp nhận luận đề Turing, chúng ta sẵn sàng để định nghĩa chính
xác khái niệm thuật toán, một khái niệm cơ bản trong khoa học máy tính.
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
11
An toàn thông tin – Nhóm 14 – Turing
Một thuật toán cho một hàm f: D → R là một máy Turing M sao cho cho
một chuỗi nhập w∈D trên băng nhập, cuối cùng M dừng với kết quả f(w) ∈R trên
băng. Một cách cụ thể là:
q
0
w
M
q
f
f(w), q
f
∈F, ∀w ∈ D.
5. Ngôn ngữ và hàm tính được
Ngôn ngữ được chấp nhận bởi máy turing là ngôn ngữ đệ quy liệt kê
Máy Turing như là một máy tính hàm số nguyên
II. Một số kỹ thuật xây dựng máy turing
1. Lưu trữ trong bộ điều khiển (Storage in the finite control)
Bộ điều khiển có thể dùng để lưu trữ một lượng hữu hạn thông tin.
Ví dụ: Xét máy Turing M nhận vào ký hiệu đầu tiên trên chuỗi nhập (viết trên
bộ chữ ái {0, 1}), lưu trữ vào bộ điều khiển và kiểm tra rằng ký hiệu này không,
có xuất hiện ở vị trí nào khác trên chuỗi nữa hay không ?
LG:
Ta xây dựng TM M (Q, {0, 1}, {0, 1, B}, δ, [q
0
, B], B, F}), trong đó tập trạng
thái Q bao gồm các trạng thái dạng một cặp thành phần {q
o
,q
1
} x {0, 1, B} tức là
Q chứa các trạng thái [q
0
, 0], [q
0
, 1], [q
0
, B], [q
1
, 0], [q
1
, 1] và [q
1
, B]. Trong mỗi
cặp này thành phần thứ nhất ghi trạng thái điều khiển, thành phần thứ hai ghi nhớ
ký hiệu. Ta định nghĩa hàm chuyển
δ
như sau:
1) δ([q
0
, B], 0) = ([q
1
, 0], 0, R)
δ([q
0
, B], 1) = ([q
1
, 1], 1, R)
Bắt đầu từ trạng thái [q
0
, B], TM đọc và lưu trữ ký hiệu đầu tiên trên băng vào
thành phần thứ 2 trong bộ điều khiển.
2) δ([q
1
, 0], 1) = ([q
1
, 0], 1, R)
δ([q
1
, 1], 0) = ([q
1
, 1], 0,
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
12
An toàn thông tin – Nhóm 14 – Turing
Nếu các ký hiệu được đọc tiếp theo không giống với ký hiệu đang lưu trữ thì
tiếp tục chuyển sang phải
3) δ([q
1
, 0], B) = ([q
1
, B], 0, ∅)
δ([q
1
, 1], B) = ([q1, B], 0, ∅)
M đào trạng thái kết thúc [q
1
, B] khi gặp Blank
M sẽ đi vào trạng thái kết thúc nếu nó gặp ký hiệu B mà không có ký hiệu nào
giống với ký hiệu đầu tiên đang được lưu trữ trong bộ điều khiển .Vậy nếu M
tiến đến B ở trạng thái [q
1
, 0] hoặc [q
1
, 1] thì input được chấp nhận. Ngược lại, ở
trạng thái [q
1
, 0] và gặp 0 hoặc ở trạng thái [q
1
, 1] và gặp 1 thì M dừng và không
chấp nhận chuỗi input vì không có hàm chuyển trạng thái để xác định các bước
chuyển này.
2. Nhiều rãnh trên băng (Multiple tracks)
Ta có thể xem băng của TM được chia thành k thành phần, với k > 1 và hữu
hạn. Một ký hiệu trên băng được xét là một bộ gồm k ký hiệu, mỗi ký hiệu nằm
trên một rãnh.
Ví dụ: Thiết kế TM nhận vào một số nguyên n (viết ở dạng nhị phân) và kiểm
tra xem đó có phải là số nguyên tố hay không ?
LG
Ta dùng băng 3 rãnh như hình dưới với nguyên tắc sau :
Số n ở dạng nhị phân được đưa vào trên rãnh 1 và được bao bởi cặp dấu ⊄ và
$. Như vậy các ký hiệu được phép ghi trên băng là [⊄, B, B], [0, B, B], [1, B, B]
và [$, B, B]. Các ký hiệu này tương ứng với ⊄, 0, 1, $ khi xem chúng là ký hiệu
nhập. Ký hiệu Blank là [B, B, B].
Viết số 2 dạng nhị phân trên rãnh 2 (tức 10)
Chép rãnh 1 vào rãnh 3 sau đó lấy rãnh 3 trừ rãnh 2 nhiều lần nhất có thể được
(thực hiện việc chia số cần kiểm tra cho số trên rãnh 2, lấy phần dư)
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
13
An toàn thông tin – Nhóm 14 – Turing
Xét số còn lại (số dư) :
- Nếu số còn lại là 0 thì input không là số nguyên tố (vì nó chia hết cho số trên
rãnh 2)
- Nếu số còn lại khác 0 thì tăng số trên rãnh 2 thêm một đơn vị: nếu số trên
rãnh 2 bằng số trên rãnh 1 (số n) thì input n là số nguyên tố vì n đã không chia hết
cho bất kỳ số nào từ 2 đến n -1. Nếu số trên rãnh 2 nhỏ hơn số trên rãnh 1 thì ta
lặp lại quá trình trên với số mới trên rãnh 2.
Hình trên mô tả một TM với k = 3, kiểm tra số n = 47 viết trên rãnh 1 dưới
dạng nhị phân, TM đang thực hiện phép chia 47 cho 5. Nó đã trừ 2 lần số 5 vào số
47, vậy ở rãnh 3 hiện đang có số 37.
3. Đánh dấu ký hiệu (Checking off symbols)
Kỹ thuật đánh dấu thường dùng để nhận diện các ngôn ngữ được định nghĩa
bằng cách lặp lại chuỗi chẳng hạn như {ww | w
∈
Σ
*
}; {wcy | w, y
∈
Σ
*
, w ≠ y}
hoặc {ww
R
| w
∈
Σ
*
} hoặc các ngôn ngữ có độ dài các chuỗi con cần được so
sánh, như {a
i
b
i
| i ≥ 1} hoặc {a
i
b
j
c
k
| i = j hoặc j = k}.
Ta dùng một rãnh mở rộng trên băng để giữ ký hiệu đánh dấu √. Ký hiệu √
xuất hiện khi ký hiệu trên rãnh ngay bên dưới nó đã hoặc đang được xét bởi TM.
4. Dịch qua (Shifting over)
Máy Turing có thể tạo ra một không gian trống trên băng bằng cách dời các ký
hiệu không trống trên băng đi sang phải hữu hạn ô. Để làm điều đó đầu đọc phải
thực hiện dịch phải, lặp lại việc lưu ký hiệu đọc được vào bộ điều khiển và thay
thế chúng bằng ký hiệu đọc được ở ô bên trái. Nếu có đủ ô trống, TM cũng có thể
chuyển dịch một khối ký hiệu sang trái một cách tương tự.
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
14
An toàn thông tin – Nhóm 14 – Turing
5. Chương trình con (Subroutines)
Cũng giống như một chương trình máy tính hiện đại, máy Turing có thể đóng
vai trò tương tự như bất kỳ một kiểu chương trình con nào trong ngôn ngữ lập
trình bao gồm thủ tục đệ qui hoặc có tham số. Ý tưởng chung là ta viết một phần
chương trình của TM như là một chương trình con. Nó sẽ được thiết kế có chứa
một trạng thái khởi đầu và một trạng thái trở về, trạng thái trở về là trạng thái
không có phép chuyển kế tiếp và nó sẽ đóng vai trò là trạng thái khởi đầu của một
TM khác hoặc là một trạng thái nào đó trong một TM khác. Nghĩa là từ trạng thái
trở về của TM này ta tiếp tục các phép chuyển của một TM khác, sự kiện này có ý
nghĩa như là gọi một chương trình con khác hoặc tiếp tục thực hiện chương trình
cấp trên. Lưu ý, các trạng thái của chương trình con phải phân biệt với chương
trình cấp trên của nó.
III. Một số biến dạng của máy turing
1. Máy Turing với băng vô hạn 2 chiều
Máy Turing với băng vô hạn hai chiều cũng tương tự như mô hình gốc (TM vô
hạn một chiều băng), chỉ khác là băng của nó không có cận trái như mô hình gốc,
nghĩa là ta xem như TM có vô hạn Blank ở cả hai đầu băng. Vì thế hàm δ được
mở rộng thêm bằng cách xét thêm các trường hợp đặc biệt tại cận trái như sau :
Nếu δ(q, X) = (p, Y, L) thì qXα ⊢ pBYα
Nếu δ(q, X) = (p, B, R) thì qXα ⊢ pα
Định lý 7.1 : Nếu L được nhận diện bởi TM với băng vô hạn hai chiều thì L
cũng được nhận diện bằng TM vô hạn một chiều băng
2. Máy Turing với nhiều băng vô hạn hai chiều
Xét máy Turing có một bộ điều khiển có k đầu đọc và k băng vô hạn hai
chiều. Mỗi phép chuyển của máy Turing, phụ thuộc vào trạng thái của bộ điều
khiển và ký tự đọc được tại mỗi đầu đọc, nó có thể thực hiện các bước sau :
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
15
An toàn thông tin – Nhóm 14 – Turing
1) Chuyển trạng thái.
2) In ký hiệu mới tại mỗi đầu đọc để thay thế ký hiệu vừa đọc.
3) Đầu đọc có thể giữ nguyên vị trí hoặc dịch trái hoặc dịch phải 1 ô một cách
độc lập nhau.
Khởi đầu input xuất hiện trên băng thứ nhất, các băng khác chỉ toàn Blank.
Một máy Turing như vậy gọi là máy Turing với nhiều băng vô hạn hai chiều.
Định lý 7.2: Nếu L được nhận dạng bởi máy Turing nhiều băng vô hạn hai
chiều thì nó cũng được nhận dạng bởi máy Turing một băng vô hạn hai chiều.
3. Máy Turing không đơn định
Máy Turing không đơn định có mô hình tương tự như mô hình gốc nhưng
điểm khác biệt ở chỗ là trong mỗi lần chuyển, máy Turing có thể lựa chọn một
trong một số hữu hạn các trạng thái kế tiếp, lựa chọn hướng chuyển đầu đọc, và
lựa chọn ký hiệu in ra trên băng để thay thế ký hiệu vừa đọc được. Máy Turing
trong mô hình gốc còn gọi là máy Turing đơn định.
Định lý 7.3 : Nếu L được chấp nhận bởi máy Turing không đơn định M
1
thì L
cũng được chấp nhận bởi một máy Turing đơn định M
2
nào đó.
4. Máy Turing nhiều chiều
Máy Turing nhiều chiều gồm một bộ điều khiển hữu hạn, nhưng băng của nó
là một mảng k chiều vô hạn về cả 2k phía. Với một số k nào đó, phụ thuộc vào
trạng thái và một ký hiệu được đọc, máy thay đổi trạng thái, in một ký hiệu mới
tại ô đang đọc và dịch chuyển đầu đọc theo một trong 2k phía.
Địn h lý 7.4: Nếu L được chấp nhận bởi máy Turing k chiều M
1
thì L cũng
được chấp nhận bởi một máy Turing một chiều M
2
nào đó.
5. Máy Turing nhiều đầu đọc
Máy Turing nhiều đầu đọc có k đầu đọc được đánh số từ 1 đến k với k là một
số hữu hạn nào đó, nhưng chỉ có một băng input. Một phép chuyển của máy
Turing phụ thuộc vào trạng thái và các ký tự được đọc bởi mỗi đầu băng. Mỗi đầu
dịch chuyển một cách độc lập sang trái, sang phải hoặc đứng yên.
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
16
An toàn thông tin – Nhóm 14 – Turing
Định lý 7.5 : Nếu L được chấp nhận bởi máy Turing k đầu đọc M
1
thì L cũng
được chấp nhận bởi một máy Turing một đầu đọc M
2
nào đó.
Thành viên: Đào Thị Thanh Dung – Phương Ngọc Hoa
17