You are on page 1of 9

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

CHƯƠNG 1. MÁY TURING VÀ THUẬT TOÁN

1. Mô tả và định nghĩa về máy Turing


1.1. Mô tả phi hình thức về máy turing
Khái niệm của máy Turing dựa trên ý tưởng của một người đã thực hiện một
thủ tục rất rõ ràng bằng cách thay đổi những nội dụng của một băng giấy vô hạn, mà
nó được phân thành các ô vuông có thể chứa một trong các tập hữu hạn các ký hiệu.
Người này cần nhớ một trong các tập trạng thái hữu hạn và một thủ tục được trình
bày trong nhiều bước cơ bản dưới dạng “Nếu trạng thái của bạn là 42 và ký hiệu mà
bạn thấy là ‘0’ thì thay thế nó bằng ‘1’, di chuyển một ký hiệu sang phải, và thừa
nhận rằng trạng thái 17 như một trạng thái mới của bạn”.

Trong một số mô hình, đầu đọc (head) di chuyển dọc theo băng tĩnh
(Stationary tape). Chỉ thị để được thực hiện (q1) được chỉ ra bên trong đầu đọc.
Trong mô hình này, băng trống là tất cả các ô bằng 0. Các ô vuông được tô đậm,
gồm ô đã được quét qua bởi đầu đọc, và các ô vuông được đánh dấu 1, 1, B và biểu
tượng đầu đọc, tạo thành trạng thái của hệ thống.
Một cách rõ ràng hơn, có thể hình dung một máy Turing sẽ bao gồm các
thành phần sau:
 Một băng (TAPE), hay còn gọi là một bộ nhớ vô hạn, dưới dạng một
băng gồm nhiều ô, có thể kéo dài vô hạn về phía phải. Mỗi ô trên băng có
thể chứa một ký hiệu thuộc một bộ chữ, gọi là bộ chữ trên băng (mà một
phần trong đó là bộ chữ vào, dùng cho xâu vào);
 Một đầu đọc (HEAD) di chuyển ở trên băng, ở mỗi thời điểm nhìn vào
một ô trên băng;
 Một tập hữu hạn các trạng thái, trong đó có phân biệt một trạng thái đầu
và một tập hợp các trạng thái đã được thừa nhận;
 Một hàm dịch chuyển chứa một tập hữu hạn chỉ thị cho phép cứ với mỗi
trạng thái của máy và một ký hiệu đọc được trong ô đối diện với đầu đọc,
máy sẽ thực hiện các bước như sau:
o Chuyển trạng thái
o 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 đó)
Máy Turing và tính khả quyết của thuật toán 2

o Dịch chuyển đầu đọc - viết (sang trái (L), sang phải (R) hoặc đứng
yên(Æ))

a1 a1 … … a1 B B
Băng
Đầu đọc

q
Trạng thái

Hình 1. Các bộ phận của máy Turing


Các thao tác có thể của một máy Turing (thường gọi là các thao tác
nguyên tử - Atomic operations)
 Đọ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
Máy Turing và tính khả quyết của thuật toán 3

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 2), 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,
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.

0 1 0 1 1 B B

0 1 1 1 1 B B

Hình 2. Một bước dịch chuyển


1.2. Định nghĩa hình thức của máy Turing (máy Turing đơn băng –
Single tape Turing machine)
Sự mô tả máy Turing một cách trực quan như ở phần 1 đã giúp chúng ta
bước đầu dễ dàng hình dung ra sự hoạt động của nó. Tuy nhiên, một sự mô tả phi
hình thức như thế là chưa đủ chặt chẽ để có thể tiến hành sự suy diễn toán học,
nhằm đi sâu nghiên cứu về máy Turing được. Bởi vậy, ta cần có một định nghĩa
hình thức về máy Turing.
Theo Hopcroft và Ullman (1979) đã định nghĩa một cách hình thức một máy
Turing như là một bộ 7- M = < Q,  , b,  ,  , q0, F> trong đó:
 Q là một tập hữu hạn các trạng thái,
Máy Turing và tính khả quyết của thuật toán 4

  là bộ chữ trên băng (bộ chữ dùng trên băng),


 b   là ký hiệu trống (ký hiệu duy nhất cho phép xuất hiện một cách vô
hạn trên băng ở bất kỳ bước nào trong quá trình tính toán),
    là bộ chữ vào (bộ chữ dùng cho xâu vào),
  :Qx   Q x  x {L, R} là một hàm bộ phận, hay còn gọi là hàm
dịch chuyển (là hàm định nghĩa các việc dịch chuyển trạng thái của máy
Turing hoặc máy trạng thái), trong đó L và R được hiểu là trái (Left) và
phải (Right)).
 q0  Q là trạng thái đầu (trạng thái khởi tạo),
 F  Q là tập các trạng thái thừa nhận – accepting state (hoặc trạng thái
cuối).
1.4. Ví dụ về máy Turing
Dưới đây là ví dụ về máy Turing ứng đụng trong việc chấp nhận các tập.
Ví dụ 1. 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 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,  ,  , q0, F> với các thành phần :
Q = {q0, q1, q2, q3, q4}; ∑= {0, 1}; G = {0, 1, X, Y, B} và F = {q4}.
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 q0 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
q2. Trạng thái q2 đư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 q1, 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 q0 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 q0 không tìm thấy ký hiệu 0 nào để thay thành X mà chỉ gặp Y thì máy
Máy Turing và tính khả quyết của thuật toán 5

Turing đi vào trạng thái q3 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 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 d được cho trong bảng sau :

Hình 4. Một máy Turing kiểm nhận {0n1n | n>=1}


Các phép chuyển hình thái của máy Turing M trên 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 có thể biểu diễn các chuyển vị của một máy Turing một cách hình
ảnh. 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, Xi) = (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 ( 
).
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ụ 1: Hình 5 trình bày sơ đồ chuyển vị cho máy Turing ở ví dụ 1 vừa trình bày ở
trên, với hàm chuyển vị được cho trong hình 4.
Máy Turing và tính khả quyết của thuật toán 6

Hình 5. Sơ đồ chuyển vị cho một máy Turing kiểm nhận các chuỗi có dạng 0n1n
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
số hệ thống hình thức với các câu trả lời có/không. Ví dụ, bài toán “cho 2 số x và y,
x có chia hết y không?”. Câu trả lời sẽ là “có” hay “không”, phụ thuộc vào giá trị
của x và y.
Bên cạnh đó, các bài toán quyết định còn liên hệ mật thiết với các bài toán
hàm (function problem) có thể có các câu trả lời phức tạp hơn so với có/không. Một
bài toán hàm có thể là “cho 2 số x, y, tìm x có thể chia hết bởi y?”. Các bài toán
quyết định còn có thể quan hệ với các bài toán tối ưu, được xét đến với việc tìm lời
giải tối ưu cho một vấn đề cụ thể.
Trong một hướng tiếp 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 khoảng thời gian hữu hạn, còn không bài toán bất khả
quyết. Chúng ta cần chú ý rằng vấn đề về tính khả quyết chỉ là một phần của lý
thuyết tính toán không quan tâm đến lượng thời gian mà một lời giải cần mà chỉ cần
khoảng thời gian đó là hữu hạn. Ví dụ, một thuật toán cho bài toán quyết định sẽ
giải thích làm cách nào để xác định x có chia hết cho y không, với x và y cho trước.
Một bài toán quyết định có thể được giải bởi một số thuật toán được gọi là khả
quyết.
Năm 1936, Church đã hình thức hóa một họ các bài toán mà ông có thể
chứng minh rằng không thể quyết định được bởi bất kỳ thuật toán nào. Để phát biểu
này có nghĩa, khái niệm toán học mới của một thuật toán phải được đưa ra. Và
Máy Turing và tính khả quyết của thuật toán 7

Church đã sử dụng các công cụ từ logic, khái niệm các hàm đệ quy, để hình thức
hóa khái niệm về khả năng giải được về mặt thuật toán.
Trong cùng một năm khi Church công bố công trình của mình, Turing cũng
đã đưa ra khái niệm về máy Turing. Và ngày nay, chúng ta gọi những bài toán có
khả năng tính được về mặt thuật toán (algorithmic solvability) nếu chúng có thể
được tính bởi máy Turing. Tuy nhiên, các nhà khoa học đã thống nhất rằng lớp các
hàm có thể tính được bằng thuật toán trùng với lớp các hàm có thể tính được bằng
máy Turing. Nhiều mô hình tính toán khác đã được đề xuất (một số mô hình tương
đối 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
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 quả
trong logic và toán học. Một thuật toán, hay thủ tục, M, cho việc thu được các kết
quả mong muốn được gọi là “hiệu quả” trong trường hợp:
 M được thiết lập với hình thức một số hữu hạn các lệnh chính xác (từng
lệnh được biểu diễn dưới dạng một số hữu hạn các ký hiệu)
 Nếu được thực hiện không lỗi, M sẽ đưa ra các kết quả mong muốn trong
một số hữu hạn bước.
Khái niệm về một thuật toán hiệu quả là một khái niệm không hình thức, và
các nỗ lực để xác định tính hiệu quả cho yêu cầu quan trọng mà thuật toán đòi hỏi
vẫn được được phát triển. Một trong những thành tựu hàng đầu của Turing – và là
bước phát triển lớn đầu tiên trong quá trình phát triển của lý thuyết tính toán – là đề
xuất một biểu thức được định nghĩa một cách nghiêm ngặt, qua đó phát biểu không
chính quy “bằng một thuật toán hiệu quả” có thể được thay “bằng một máy
Turing”. Tầm quan trọng của đề xuất Turing là ở chỗ: nếu đề xuất là chính xác, thì
việc nói về sự tồn tại và không tồn tại các thuật toán hiệu quả có thể được thay thế,
cả trong toán học và logic, bằng cách nói về sự tồn tại hay không tồn tại của các
chương trình máy Turing. Ví dụ, một người có thể thiết lập rằng không có thuật
toán hiệu quả để thực hiện một vấn đề nào đó bằng cách chứng minh rằng không 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 đều hiệu quả - là đúng. Đó là do chương trình
máy Turing tự mình là một đặc tả của thuật toán hiệu quả, nên một người có thể, về
mặt lý thuyết, làm việc với bất kỳ một chương trình máy Turing nào, theo các lệnh
đã được định nghĩa trước và thực hiện các thao tác được yêu cầu.
Trước đó, Church cũng đã độc lập đề xuất một cách khác để thay thế cách
nói về các thuật toán hiệu quả với ngôn ngữ chính xác một cách chính quy, sử dụng
khái niệm khả năng định nghĩa-lambda (lambda-definability) thay vì “khả năng
tính được của máy Turing”. Trong đó, một hàm các số nguyên dương được gọi là
Máy Turing và tính khả quyết của thuật toán 8

có khả năng định nghĩa-lambda nếu giá trị của hàm có thể được tính bằng một quá
trình các phép thế được lặp lại. Và ông đã sử dụng biểu diễn (phi hình thức) “có thể
tính được hiệu quả” để chỉ ra rằng có một thuật toán hiệu quả để tính các giá trị
của hàm qua đề xuất:
“Xác định khái niệm của một hàm có thể tính được hiệu quả các số nguyên
dương bằng cách xác định khái niệm đó bằng khái niệm của hàm đệ quy của các số
nguyên dương (hay với khái niệm hàm có khả năng định nghĩa-lambda các số
nguyên dương”.
Trong thực tế, Church đã đề xuất “Một hàm các số nguyên dương có khả
năng tính được hiệu quả chỉ khi là hàm đệ quy”
Sự đảo lại, rằng mọi hàm đệ quy của các số nguyên dương là có khả năng
tính được hiệu quả, thường được xem là định lý đảo của luận đề Church.
Sau khi tìm hiểu đề xuất của Church, Turing nhanh chóng chứng minh được
rằng cấu trúc của khái niệm khả năng định nghĩa-lambda của Church và cấu trúc
khái niệm về khả năng tính được của ông là tương đương. Do đó, trong đề xuất của
Church, các từ “hàm đệ quy của các số nguyên dương” có thể được thay thế bởi các
từ “hàm các số nguyên dương có thể tính được bởi máy Turing”.
Và với quan điểm của các kết quả được tìm hiểu trên đây, nếu chỉ giới hạn
trong các hàm các số nguyên dương, thì luận đề của Church và của Turing đề xuất,
tuy có vẻ rất khác nhau, nhưng lại trở thành tương đương nhau, theo nghĩa là mỗi
hướng đề đưa ra chung một tập các hàm toán học. Luận đề Church-Turing là sự
khẳng định rằng tập này bao gồm mọi hàm có giá trị có thể thu được bằng một thuật
toán thỏa mãn các điều kiện trên đây cho tính hiệu quả. Tuy nhiên, cả Turing và
Church đề nhận ra rằng cách triển khai của Turing là “có sức thuyết phục hơn”
[turing] và “có ưu điểm trong việc đưa ra khả năng nhận dạng với tính hiệu quả…
hiển nhiên ngay lập tức” [Church].
Tóm lại, luận đề Church-Turing, mà nay đã trở thành chuẩn, được đề xuất
bởi Kleene như sau:
“Các luận đề của Turing và Church là tương đương nhau. Chúng ta có thể
xem các luận đề này vừa là luận đề Church, hay liên hệ với một trong các phiên bản
… của nó có quan hệ với máy Turing như Luận đề Church-Turing”.
Máy Turing và tính khả quyết của thuật toán 9

TÀI LIỆU THAM KHẢO

1. Dan Dougherty. Notes on Decidability. Worcester Polytechnic Institute, 2007.


2. Jack Copeland. Computation.
www.blackwellpublishing.com/pci/downloads/SampleChapter.pdf
3. Jack Copeland. The Church-Turing Thesis. Stanford Encyclopedia of Philosophy,
2002.
4. Lê Mạnh Thạnh. Nhập môn Ngôn ngữ hình thức và Ôtômat hữu hạn. NXB Giáo
dục, Đà Nẵng, 1998.
5. Nguyễn Gia Định. Giáo trình Lý thuyết Ngôn ngữ hình thức và Ôtômat. Huế, 2004.
6. Nguyễn Văn Ba. Lý thuyết Ngôn ngữ và Tính toán. NXB Đại học Quốc gia Hà Nội,
Hà Nội, 2006.
7. Peter Gács and László Lovász. Algorithmic decidability. Lecture Notes, Yale
University, 1999.
8. Wikipedia, http://en.wikipedia.org/wiki/Wiki

You might also like