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

tiểu luận môn lý thuyết tính toán introduction to automata theory, languages, and computation

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 (345.11 KB, 18 trang )

Tiểu luận môn Lý Thuyết Tính Toán
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN
(Introduction to Automata Theory, Languages, and Computation)


GVHD: PGS.TS PHAN HUY KHÁNH
Nhóm thực hiện: 1.Nguyễn Văn Định
2. Hồ Trúc Lâm
3. Đoàn Xuân Lộc
Lớp : Khoa học máy tính –khóa 24



Nhóm 6 Trang 1
ĐÀ NẴNG 05/2012
Tiểu luận môn Lý Thuyết Tính Toán
LỜI MỞ ĐẦU
Con người có thể chế tạo ra một loại máy tính nào đó có hiểu được con
người và thông minh như người hay không? Với thế hệ máy tính ngày nay có thể
hiểu được như bộ não của người không? Tìm hiểu chính bản thân mình – đó là
niềm khát khao của loài người trong suốt quá trình phát triển. Những thành tựu
khoa học vang dội gần đây như nhân bản vô tính, giải mã bộ gen người,… phần
nào tạo nên ấn tượng con người sắp đạt đến chỗ hiểu được chính mình. Như
vậy, con người đang đứng trước một câu hỏi lớn: liệu có thể chế tạo ra các máy
tính thông minh được không? tức là sẽ có hay không các máy tính biết tư duy
như con người?
Công trình của A. Turing (1912-1954), nhà toán học người Anh, cũng
nằm trong hướng nghiên cứu vấn đề hình thức hoá toán học (theo tinh thần bài


toán mà Hilbert đặt ra năm 1928 tại Hội nghị Toán học thế giới). Turing chứng
minh rằng, mọi quá trình tính toán tổng quát có thể thực hiện được bởi một
“máy”. Máy này gồm có một cuộn băng độ dài vô hạn với các ô vuông, một
thiết bị có hữu hạn trạng thái dùng để đọc các kí hiệu trên cuộn băng. Dựa trên
kí hiệu ở cuộn băng và trạng thái của thiết bị tại thời điểm hiện tại, máy sẽ thay
kí hiệu đang có trên cuộn băng bởi một kí hiệu khác, đồng thời đổi trạng thái
của thiết bị. Thiết bị đọc kí hiệu có thể dịch chuyển về bên phải và bên trái.
Trong phạm vi của báo cáo môn học này chúng em xin phép được trình
bày một phần rất nhỏ trong việc cấu tạo ra các máy Turing và tổ hợp chúng lại
để thực hiện những mục đích cụ thể. Chức năng chính của các máy Turing trong
phần này thể hiện trên việc đoán nhận và chấp nhận một ngôn ngữ. Trên cơ sở
những định nghĩa về ngôn ngữ đệ quy và liệt kê đệ quy để tìm hiểu các tính chất
của ngôn ngữ hình thức và tính bất biến của các tính chất đó. Đề tài gồm có
những nội dung chính:
Nhóm 6 Trang 2
Tiểu luận môn Lý Thuyết Tính Toán
Chương 1. Những bài toán không thể giải được
Chương 2: Dịch chương 9.1( giáo trình Introduction to Automata
Theory, Languages, and Computation)
Chương 3. Bài tập chương 9.1( giáo trình Introduction to Automata
Theory, Languages, and Computation)
Qua những phần trên cung cấp cho chúng ta những thông tin về phương
diện nhận dạng ngôn ngữ của các máy Turing, khả năng thiết kế các máy
Turing chấp nhận ngôn ngữ tổ hợp. Tuy việc diễn đạt nội dung chính xác, rõ
ràng nhưng vẫn còn hạn chế là phạm vi còn nhỏ hẹp. Chúng em mong muốn có
những điều kiện tốt hơn để nâng cao chất lượng đề tài.
Trên những cơ sở lý thuyết được học và các tài liệu tham khảo, với sự
hợp tác làm việc chuyên cần của các thành viên trong nhóm, chúng em xin được
báo cáo công việc đã thực hiện được. Kính mong được sự góp ý chân thành của
quý thầy và các anh chị học viên trong lớp. Chúng em xin chân thành cảm ơn sự

chỉ bảo tận tình của PGS.TS. Phan Huy Khánh , và các bạn đã giúp chúng em
hoàn thành báo cáo này.
Nhóm thực hiện báo cáo: Nguyễn Văn Định
Hồ Trúc Lâm
Đoàn Xuân Lộc
Nhóm 6 Trang 3
Tiểu luận môn Lý Thuyết Tính Toán
Chương I,Chương II và Chương III được thực hiện trên nền tảng lý
thuyết của cuốn sách " Introduction to Automata Theory, Languages, and
Computation " của John C. Martin và tham khảo theo lý thuyết của tài liệu
"Lý thuyết tính toán" của PGS. TS. Phan Huy Khánh.
BẢNG PHÂN CÔNG THỰC HIỆN CÔNG VIỆC TIỂU LUẬN
STT Họ và tên thành viên Công việc Mô tả
1 Nguyễn Văn Định Dịch chương 2, phân
việc và tổng hợp
2 Hồ Trúc Lâm Dịch chương 2
3 Đoàn Xuân Lộc Dịch chương 1
4 Nguyễn Văn Định, Hồ Trúc
Lâm, Đoàn Xuân Lộc
Dịch và giải bài tập
Nhóm 6 Trang 4
Tiểu luận môn Lý Thuyết Tính Toán
MỤC LỤC
LỜI MỞ ĐẦU 2
MỤC LỤC 5
CHƯƠNG I 6
NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC 6
I. CÁC VẤN ĐỀ KHÔNG THỂ GIẢI ĐƯỢC TRÊN MÁY TÍNH 6
II. CÁC CHƯƠNG TRÌNH IN “Hello, World” 7
III. KẾT LUẬN 8

CHƯƠNG II –DỊCH CHƯƠNG 9.1 9
NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC LIÊN QUAN ĐẾN MÁY
TURING 9
I. MỘT NGÔN NGỮ KHÔNG THỂ LÀ LIỆT KÊ ĐỆ QUI 9
1. Liệt kê các chuỗi nhị phân 10
2. Tìm các mã cho máy Turing 10
3. Ngôn ngữ chéo hóa 12
4. Chứng minh rằng Ld không là liệt kê đệ qui 13
CHƯƠNG II –BÀI TẬP 15
Tài liệu tham khảo 18
Nhóm 6 Trang 5
Tiểu luận môn Lý Thuyết Tính Toán
CHƯƠNG I
NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC
Khi đề cập đến máy Turing, ta thường quan tâm đến các lớp ngôn ngữ
đơn giản và những cách đơn giản được sử dụng trong giải quyết các vấn đề như:
phân tích giao thức, tìm kiếm văn bản hoặc các chương trình phân tích văn
phạm… Trong phần trình bày này, nhóm em sẽ trình bày vấn đề “những ngôn
ngữ nào sẽ không thể giải bằng thiết bị tính toán”, vấn đề này tương đương với
câu hỏi “máy tính có thể làm được những gì?”, việc nhận dạng văn bản trong 1
ngôn ngữ là cách diễn đạt vấn đề này một cách tốt nhất.
Ta bắt đầu với một vấn đề sau, bằng cách sử dụng ngôn ngữ lập trình C,
để chỉ ra rằng có một số vấn đề máy tính không thể giải được – đó là những vấn
đề được gọi là “không thể quyết định” hoặc "không thể giải được".
I. CÁC VẤN ĐỀ KHÔNG THỂ GIẢI ĐƯỢC TRÊN MÁY TÍNH
Mục đích của phần này là cung cấp 1 ví dụ được viết dựa trên ngôn ngữ C
để chứng minh có những vấn đề mà máy tính không thể giải quyết. Đó là đoạn
chương trình C in ra dòng “Hello, World”, ở đây ta không quan tâm đến thời
gian giải quyết vấn đề mà ta quan tâm đến chương trình đã làm những gì.
Nhóm 6 Trang 6

Tiểu luận môn Lý Thuyết Tính Toán
II. CÁC CHƯƠNG TRÌNH IN “Hello, World”
Ta xét 2 đoạn chương trình sau:

Ta có nhận xét:
- Đoạn chương trình 1 sẽ in ra dòng “Hello, World” và dừng.
- Đoạn chương trình 2 cũng là một chương trình in ra “Hello, World”
nhưng nó cho phép nhập vào số n, sau đó nó sẽ tìm 3 số nguyên dương thỏa mãn
điều kiện:
Nhóm 6 Trang 7
Tiểu luận môn Lý Thuyết Tính Toán
Nếu tìm thấy đoạn chương trình sẽ in ra “Hello, World”, nếu không thì nó
sẽ tiếp tục tìm và không bao giờ in ra “Hello, World” (trong đó hàm exp(int i,n)
là hàm tính i
n
). Qua thực nghiệm, nếu n=2 thì sẽ tìm được các tổ hợp x, y, z thỏa
mãn điều kiện.
Ví dụ:
- Khi total = 12 thì ta sẽ có x = 3, y = 4 và z = 5.
- Do vậy, khi n = 2 đoạn chương trình sẽ in ra “Hello, World”.
- Tuy nhiên với n > 2 thì đoạn chương trình sẽ không tìm thấy 3 số
nguyên dương thỏa điều kiện trên nên sẽ không bao giờ in ra “Hello, World”.
III. KẾT LUẬN
Có một số vấn đề mà toán học không thể giải được. Dạng bài toán này sẽ
được đưa về dạng: “ Có chương trình P, với nhập liệu I cho chương trình P. Với
giá trị I, chương trình P có giải bài toán được không?”. Vậy tại sao vấn đề
“không thể giải được" tồn tại? Chính là do trong thực tế có rất nhiều vấn đề vô
hạn trong khi đó con người lại biết rất ít chương trình giải quyết các vấn đề vô
hạn.
Nhóm 6 Trang 8

Tiểu luận môn Lý Thuyết Tính Toán
CHƯƠNG II –DỊCH CHƯƠNG 9.1
NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC LIÊN QUAN ĐẾN MÁY
TURING
Như ta đã biết, các bài toán không thể giải được là do các giới hạn trong
thực tế. Tuy nhiên những giới hạn này, như không gian địa chỉ của bộ nhớ,
không phải là các giới hạn không thể vượt qua do khoa học công nghệ tiến bộ
rất nhanh (Đối với máy Turing, các giới hạn này không còn tồn tại).
Cho đến nay, câu hỏi: “Liệu máy Turing có chấp nhận hết các dữ liệu
nhập?” vẫn còn tồn tại. Để trả lời cho câu hỏi này, ta chia các vấn đề máy
Turing có thể giải được thành 2 lớp:
- Lớp các vấn đề có giải thuật (máy Turing sẽ dừng bất kể có chấp nhận
hay không chấp nhận dữ liệu đó).
- Lớp các vấn đề có thể giải được bằng máy Turing, nhưng máy Turing
không dừng.
Lớp thứ 2 được chấp nhận (bởi vì ta không quan tâm đến thời gian máy
Turing chạy) là 1 nghi ngờ vì ta không thể biết liệu dữ liệu có được chấp nhận
hay không? Nên vấn đề ở đây là: với các bài toán không thể giải được liệu máy
Turing có chấp nhận không?
I. MỘT NGÔN NGỮ KHÔNG THỂ LÀ LIỆT KÊ ĐỆ QUI
Như ta đã biết, một ngôn ngữ L được xem là có thể liệt kê đệ qui (RE)
nếu L = L(M), M là máy Turing. Mục tiêu lâu dài là chứng minh ngôn ngữ chứa
các cặp (M,w) là không thể giải được, với:
- M là máy Turing (mã nhị phân) với chuỗi nhập là các ký tự {0 và 1}.
- w là chuỗi gồm các số 0 và 1.
- M chấp nhận w.
Nhóm 6 Trang 9
Tiểu luận môn Lý Thuyết Tính Toán
Như vậy, nếu với dữ liệu nhập là chuỗi số nhị phân mà không thể giải
được thì chắc chắn các vấn đề tổng quát hơn sẽ không thể giải được.

* Bước đầu tiên là: chuyển câu hỏi này thành câu hỏi quan hệ trong một
ngôn ngữ cụ thể. Do vậy, ta phải đưa ra một bộ mã gồm các số 0 và 1 cho máy
Turing mà không quan tâm đến số trạng thái. Một khi ta có bộ mã này, thì các
chuỗi nhị phân được xem như các máy Turing. Nếu chuỗi không thể biểu diễn
được, thì xem như máy Turing không có di chuyển.
* Bước kế tiếp: liên quan đến ngôn ngữ chéo hóa L
d
(diagonalization
language), bao gồm các chuỗi w mà máy Turing không chấp nhận. Ở đây, ngôn
ngữ L
d
đóng vai trò tương đương như chương trình hello, world trong ngôn ngữ
C đã đề cập ở trên, chính xác hơn là ngôn ngữ L
d
không được chấp nhận bởi
máy Turing.
1. Liệt kê các chuỗi nhị phân
Ta sẽ gán mỗi chuỗi nhị phân tương ứng với một số nguyên. Nếu w là
một chuỗi nhị phân, thì w
i
cũng được xem như một số nhị phân i, và ta gọi
chuỗi w là chuỗi thứ i. Nghĩa là, chuỗi rỗng là chuỗi đầu tiên, 0 là chuỗi thứ 2, 1
là chuỗi thứ 3, 00 là chuỗi thứ 4, 01 là chuỗi thứ 5… Điều này tương ứng với
các chuỗi được xếp thứ tự theo chiều dài, những chuỗi có chiều dài bằng nhau sẽ
có thứ tự liền kề nhau. Ta ký hiệu chuỗi thứ i là w
i
.
2. Tìm các mã cho máy Turing
Mục tiêu của phần này là đưa ra mã nhị phân cho máy Turing sao cho mỗi
máy Turing với dữ liệu nhập là các chuỗi gồm các số {0, 1} được xem như là

một chuỗi nhị phân. Do ta đã biết cách liệt kê các chuỗi nhị phân, nên ta sẽ định
danh máy Turing theo các số như: máy Turing thứ i là M
i
. Để biểu diễn máy
Turing M=(Q,{0,1},Γ,δ,q
1
,B,F)) như một chuỗi nhị phân, đầu tiên ta gán các số
nguyên cho các trạng thái, cho các ký hiệu băng và các hướng trái (L) và phải
(R).
Nhóm 6 Trang 10
Tiểu luận môn Lý Thuyết Tính Toán
- Giả sử có các trạng thái là q
1
, q
2
,…, q
r
với r bất kỳ. Trạng thái bắt đầu
luôn luôn là q
1
và q
2
, và chúng chỉ là trạng thái nhận (không phải là trạng thái
chuyển tiếp). Chú ý rằng, do ta giả sử máy Turing dừng bất cứ khi nào nó gặp
trạng thái nhận nên không cần nhiều trạng thái nhận.
- Giả sử các băng là X
1
, X
2
, …, X

s
với s bất kỳ. X
1
là băng 0, X
2
là băng 1
và X
3
là băng B (băng rỗng), các băng khác được gán cho các X
i
còn lại.
- Hướng L là D
1
, Hướng R là D
2
.
Do mỗi máy Turing M có các số nguyên được gán cho các trạng thái và
các băng theo các trật tự khác nhau nên sẽ có nhiều hơn một bộ mã cho máy
Turing. Tuy nhiên, điều này không quan trọng bởi vì ta chỉ cần đưa ra không có
mã nào có thể biểu diễn máy Turing M để:
L(M)=L
d
.
Một khi đã thiết lập một số nguyên biểu diễn cho một trạng thái, một băng
và một hướng, ta có thể mã hoá thành hàm chuyển đổi δ. Giả sử rằng một luật
chuyển đổi là δ(q
i
,X
j
)=(q

k
,X
l
,D
m
) với i, j, k, l và m là các số nguyên. Ta sẽ mã
hóa luật này bằng chuỗi 0
i
10
j
10
k
10
l
10
m
, chú ý rằng do tối thiểu phải có một bộ
các i, j, k, l và m nên sẽ không xảy ra tình trạng các số 1 liên tiếp nhau trong bộ
mã khi thực hiện một chuyển đổi đơn.
Một mã cho máy Turing tổng quát M sẽ chứa tất cả các mã cho các sự
chuyển đổi và chúng được ngăn cách nhau bởi cặp số 11:
C
1
11C
2
11… C
n-1
11C
n
Với mỗi Ci là mã cho một chuyển đổi của máy Turing M.

Ví dụ 9.1: TM trong câu hỏi là
M = ({ql, q2, q3}, {O, 1} {O, 1, B}, 6, khí, B, {q2})
nơi 6 bao gồm các quy tắc:
δ (qi, 1) = (q3, O, R)
δ (q3, 0) = (q1, 1, R)
Nhóm 6 Trang 11
Tiểu luận môn Lý Thuyết Tính Toán
δ (q3, 1) = (q2, 0, R)
δ (q3, B) = (q3, 1, L)
Các mã tương ứng, cho mỗi người trong số các quy tắc này, là:
0100100010100
0001010100100
00010010010100
0001000100010010
Ví dụ, quy tắc đầu tiên có thể được viết là δ (qi, X2) = (q3, X, D2), kể từ khi
1 = X2, 0 = X1, và R D2 =. Do đó, mã của nó là 01102103101102,
chỉ ra ở trên. Một mã cho M là:
Lưu ý rằng có rất nhiều mã khác có thể cho M. Đặc biệt, các mã
cho quá trình chuyển đổi có thể được liệt kê trong bất kỳ của 4! đơn đặt hàng,
cho chúng tôi 24 mã cho M.
3. Ngôn ngữ chéo hóa
Trong mục 1 ta đã mã hóa các máy Turing theo cách: máy Turing M nào
có mã hóa là w
i
thì sẽ tương ứng với chuỗi thứ i. Có nhiều số nguyên không
tương ứng với máy Turing nào, ví dụ như: 11001 không bắt đầu bằng số 0 hoặc
001011101 là không hợp lệ bởi vì nó có 3 số 1 liên tiếp nhau… Nếu w
i
không là
mã hợp lệ cho máy Turing thì xem như máy Turing M

i
có một trạng thái và
không có chuyển đổi. Điều này có nghĩa là máy sẽ dừng với bất kể nhập liệu
nào. Do vậy L(M
i
) = φ nếu w
i
không là mã hợp lệ cho máy Turing.
* Định nghĩa: Ngôn ngữ chéo L
d
là một tập các chuỗi w
i
không thuộc
L(M
i
) (các w
i
không là mã hợp lệ cho máy Turing).
Lý do L
d
được gọi là ngôn ngữ chéo là do hình sau:
Nhóm 6 Trang 12
Tiểu luận môn Lý Thuyết Tính Toán
Hình 1. Bảng biểu diễn các chuỗi được chấp nhận bởi máy Turing
Hình 1 cho biết máy Turing M
i
có chấp nhận nhập liệu w
j
hay không? 1 là
chấp nhận, 0 là không chấp nhận. Các giá trị ở đường chéo cho chúng ta biết

Turing M
i
có chấp nhận nhập liệu w
i
hay không? Để xây dựng L
d
chúng ta sẽ lấy
phần bù của đường chéo này, lúc này L
d
chỉ chứa w
1
mà không chứa các w
2
,…
4. Chứng minh rằng L
d
không là liệt kê đệ qui
Theo như quan sát của hình trên, ta sẽ chứng minh rằng: Không máy
Turing nào chấp nhận ngôn ngữ L
d
.
* Chứng minh: Giả sử L
d
là L(M) cho máy Turing M. Do L
d
là ngôn ngữ
tập hợp các số 0 và 1 do vậy M sẽ là một danh sách các máy Turing. Như vậy, sẽ
có ít nhất một mã mà M=M
i
(với i bất kỳ). Ta sẽ kiểm tra liệu w

i
có nằm trong
L
d
hay không:
- Nếu w
i
thuộc L
d
thì M
i
sẽ chấp nhận w
i
. Nhưng theo định nghĩa của L
d
,
w
i
không thuộc L
d
bởi vì L
d
chỉ chứa các w
j
không được chấp nhận bởi máy
Turing.
- Tương tự nếu w
i
không thuộc L
d

thì M
i
không chấp nhận w
i
. Do định
nghĩa của L
d
thì w
i
thuộc L
d
.
Do w
i
không thể vừa thuộc L
d
và vừa là không thuộc L
d
nên ta kết luận
rằng: Điều này mâu thuẫn với giả thiết tồn tại máy M. Vì vậy, L
d
không là ngôn
ngữ liệt kê đệ qui.
Nhóm 6 Trang 13
Tiểu luận môn Lý Thuyết Tính Toán
* Định lý II.1: L
d
không là một ngôn ngữ liệt kê đệ qui. Có nghĩa là không
có máy Turing nào chấp nhận ngôn ngữ L
d

.
Nhóm 6 Trang 14
Tiểu luận môn Lý Thuyết Tính Toán
CHƯƠNG II –BÀI TẬP
Bài tập 9.1.1: Sâu chuỗi gì đây:
* a) w37?
b) w00?
Bài tập 9.1.2: Viết một mã số có thể cho máy Turing Hình 8.9.
Bài tập 9.1.3: Đây là hai định nghĩa của ngôn ngữ tương tự như các định nghĩa
của Ld, từ ngôn ngữ khác nhau. Đối với mỗi người, cho thấy
ngôn ngữ không được chấp nhận bởi một máy Turing, bằng cách sử dụng một
loại diagonalization đối số. Lưu ý rằng bạn không thể phát triển một đối số dựa
trên đường chéo chính nó, nhưng phải tìm một chuỗi vô hạn các điểm trong ma
trận đề nghị Hình 9.1.
* A) tập hợp của tất cả các w w không được chấp nhận bởi M21
b) Các thiết lập của tất cả các w rằng W21 không được chấp nhận bởi M,.
Bài tập 9.1.4: Chúng tôi đã xem xét chỉ Turing máy có đầu vào
bảng chữ cái {O, 1}. Giả sử chúng ta muốn chỉ định một số nguyên cho tất cả
các máy Turing, bất kể cái trong bảng chữ cái đầu vào của họ. Đó không phải là
hoàn toàn có thể bởi vì,trong khi tên của các bang hoặc biểu tượng băng
noninput là tùy ý, phần đầu vào biểu tượng vật chất. Ví dụ, các ngôn ngữ {O
n
1
n
|
n>=1) và {a
n
b
n
| n >=1}, trong khi tương tự như trong một nghĩa nào đó, không

cùng một ngôn ngữ, và họ được chấp nhận bởi khác nhau TMA. Tuy nhiên, giả
sử rằng chúng ta có một tập hợp vô hạn các biểu tượng, {ai, a2,. .} mà từ đó tất
cả các bảng chữ cái TM đầu vào được lựa chọn. Hiển thị làm thế nào chúng ta
có thể chỉ định một số nguyên cho tất cả các TM s có một tập hợp hữu hạn của
những các ký hiệu như bảng chữ cái đầu vào của nó.
Nhóm 6 Trang 15
Tiểu luận môn Lý Thuyết Tính Toán
* Bài 9.3.4: Như chúng ta biết theo định lý của Rice thì các bài toán sau là
không thể giải được. Tuy nhiên, chúng là đệ qui liệt kê (RE) hay không đệ qui
liệt kê (non RE)?
a. L(M) chứa ít nhất 2 chuỗi.
b. L(M) là vô hạn.
c. L(M) là ngôn ngữ phi ngữ cảnh.
d. L(M) = (L(M))
R
.
* Bài giải:
a. L(M) chứa ít nhất 2 chuỗi  L(M) không rỗng, hay là L
ne
, mà theo định
lý II.7 thì ngôn ngữ L
ne
là liệt kê đệ quy  L(M) liệt kê đệ quy.
b. L(M) là vô hạn:
Theo định nghĩa, L được gọi là liệt kê đệ quy nếu có một máy Turing T
chấp nhận L. Nói cách khác, với mọi w∈L thì T dừng và w sẽ được chấp nhận
sau một số dịch chuyển hữu hạn. Trong khi đó L(M) là vô hạn  T sẽ không
dừng và cũng sẽ không cho biết có chấp nhận L(M) hay không  L(M) không
phải là ngôn ngữ liệt kê đệ quy.
c. L(M) là ngôn ngữ phi ngữ cảnh:

Theo định nghĩa của ngôn ngữ phi ngữ cảnh: A α, với A∈N (tập hữu
hạn ký hiệu không kết thúc, đây là một tập chưa rõ) và α∈V*, V* = N∪Σ (tập
hữu hạn ký hiệu kết thúc, đây là một tập đã rõ). Như vậy, ngôn ngữ phi ngữ
cảnh sẽ dừng sau một thời gian nào đó  có máy Turing chấp nhận nó  ngôn
ngữ phi ngữ cảnh là ngôn ngữ liệt kê đệ quy.
d. L(M) = (L(M))
R
:
Nhóm 6 Trang 16
Tiểu luận môn Lý Thuyết Tính Toán
Ta có thể phát biểu lại như sau: liệu máy Turing có chấp nhận ngôn ngữ
bị đảo ngược không?
Cho trước một máy Turing M, ta sẽ xây dựng một máy Turing không
tiền định (nondeterministic) M' – đó là máy Turing chấp nhận ngôn ngữ rỗng (vì
ngôn ngữ rỗng có ngôn ngữ đảo ngược cũng là chính nó) và ngôn ngữ nhị phân
{01} (có ngôn ngữ đảo ngược khác với chính nó). Ta đảm bảo rằng nếu L(M) là
rỗng thì L(M') là ngôn ngữ đảo ngược của chính nó và nếu L(M) không rỗng thì
L(M') không phải là ngôn ngữ đảo ngược của chính nó. M' làm việc như sau:
- Đầu tiên kiểm tra nhập liệu của nó có phải là chuỗi nhị phân không,
nếu không thì lọai bỏ nó.
- Phỏng đoán nhập liệu cho M.
- Mô phỏng máy Turing M với nhập liệu w. Nếu M chấp nhận w thì M'
sẽ chấp nhận nhập liệu của nó – đó là các chuỗi nhị phân {01}.
Do vậy, sẽ có 2 trường hợp xảy ra:
- Trường hợp 1: Nếu L(M) không rỗng thì M' sẽ phỏng đoán một số
chuỗi mà máy Turing M chấp nhận và vì vậy nó chấp nhận các chuỗi nhị phân
{01}  L(M) được máy Turing chấp nhận  L(M) là liệt kê đệ qui.
- Trường hợp 2: Nếu L(M) là rỗng thì tất cả các phỏng đoán bởi M' sẽ
thất bại, nên M' không bao giờ chấp nhận các chuỗi nhị phân {01}  không có
máy Turing chấp nhận L(M)  L(M) không là liệt kê đệ quy.

Nhóm 6 Trang 17
Tiểu luận môn Lý Thuyết Tính Toán
Tài liệu tham khảo
[1] John C. Martin, Introduction to languages and the theory of coputation,
The McGraw-Hill Companies, Inc, 1997.
[2] Phan Huy Khánh, Giáo trình lý thuyết ngôn ngữ hình thức và Ôtômat, Đà
Nẵng, 1998.
[3] TS. Phan Huy Khánh, Lý thuyết tính toán, Đà Nẵng, 1999.
Nhóm 6 Trang 18

×