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

TRÌNH BÀY LÝ THUYẾT VỀ AUTOMAT ĐẨY XUỐNG VÀ MINH HỌA BÀI TOÁN TRONG TIN HỌC BẰNG CHƯƠNG TRÌNH RAM (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)

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 (958.29 KB, 30 trang )


Tiểu luậ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
§Ò tµi:
TRÌNH BÀY LÝ THUYẾT VỀ AUTOMAT ĐẨY XUỐNG
VÀ MINH HỌA BÀI TOÁN TRONG TIN HỌC
BẰNG CHƯƠNG TRÌNH RAM
CBHD: PGS. TS. PHAN HUY KHÁNH
HỌC VIÊN: MAI LAM
HỒ THỊ NGỌC
LÊ THỊ HƯƠNG GIANG
LỚP: KHMT- KHÓA 12
Đà Nẵng 03/2010
Nhóm 9- Lớp KHMT Khóa 12 Trang 1

Tiểu luận Lý thuyết tính toán

LỜI MỞ ĐẦU
Lý thuyết tính toán là lĩnh vực nghiên cứu các lý thuyết về máy tính, đó là nghiên cứu về
tính toán hiệu quả, các mô hình của các quá trình tính toán, và giới hạn của chúng. Lĩnh vực này
đã nổi lên trong vài thập kỷ qua như là một căn bản khoa học kỷ luật cũng như chuyên sâu của
khoa học máy tính.
Là một ngành khoa học non trẻ, với nhiều câu hỏi trung tâm vẫn chưa được trả lời, và nó
cũng là một khoa học sẵn sàng để có tác động đáng kể về các vấn đề hiện tại trong sự phát triển
của các hệ thống và phần mềm, của mạng lưới quốc gia và cơ sở hạ tầng thông tin liên lạc, tin
học sinh học và khoa học vật lý. Cũng như tham gia vào các lĩnh vực như thiết kế các thuật toán


cơ bản, tối ưu hóa tổ hợp, học máy, lý thuyết phức tạp tính toán, đại số máy tính, logic trong
khoa học máy tính, hình học tính toán, và các ứng dụng để xác minh, các hệ thống đáng tin cậy,
đa phương tiện và xử lý hình ảnh , và các khoa học tính toán.
Vận dụng những kiến thức thu nhận trong quá trình học tập, tìm hiểu và nghiên cứu về
môn Lý thuyết tính toán, được sự phân công và hướng dẫn của thầy giáo PGS.TS. Phan Huy
Khánh, chúng tôi đã chọn đề tài này để làm đề tài tiểu luận cho môn học.
Tiểu luận đề cập đến các vấn đề lý thuyết như về Automat đẩy xuống, cũng như xây dựng
PDA tương ứng với văn phạm phi ngữ cảnh; phần bài tập, tiểu luận đi vào giải quyết các bài
toán trong tin học sử dụng chương trình RAM để minh họa kết quả.
Lời cuối cùng, chúng tôi xin chân thành cảm ơn thầy giáo PGS.TS. Phan Huy Khánh đã
tận tình giảng dạy và hướng dẫn để chúng tôi hoàn thành tiểu luận này. Chúng tôi cũng xin chân
thành cảm ơn các học viên trong lớp đã chia sẻ kinh nghiệm trong học tập nghiên cứu và giúp
đỡ chúng tôi trong quá trình làm tiểu luận.
Nhóm học viên thực hiện:
Mai Lam
Hồ Thị Ngọc
Lê Thị Hương Giang
Nhóm 9- Lớp KHMT Khóa 12 Trang 2

Tiểu luận Lý thuyết tính toán

MỤC LỤC
ĐẠI HỌC ĐÀ NẴNG 1
LỜI MỞ ĐẦU 2
MỤC LỤC 3
CHƯƠNG 1. PHẦN LÝ THUYẾT 4
1.1. Giới thiệu theo cách trình bày ví dụ 4
1.2. Định nghĩa của một Automat đẩy xuống 10
1.3. MỘT ÔTÔMÁT ĐẨY XUỐNG TƯƠNG ỨNG VỚI MỘT VĂN PHẠM PHI NGỮ
CẢNH XÁC ĐỊNH 17

CHƯƠNG 2. PHẦN BÀI TẬP 27
2.1. Ý tưởng: 27
2.2. Đề xuất thuật toán: 27
2.3. Minh họa thuật toán bằng chương trình RAM: 28
TÀI LIỆU THAM KHẢO 30
Nhóm 9- Lớp KHMT Khóa 12 Trang 3

Tiểu luận Lý thuyết tính toán

CHƯƠNG 1. PHẦN LÝ THUYẾT
1.1. Giới thiệu theo cách trình bày ví dụ
Trong chương này chúng ta xem xét cẩn thận về phương thức mở rộng mô hình tính toán
trạng thái giới hạn để chúng ta có thể nhận ra ngôn ngữ phi ngữ cảnh. Trong ví dụ đầu tiên, ta
xem xét một trong những ngôn ngữ phi ngữ cảnh bất quy tắc đơn giản nhất. Mặc dù các máy
trừu tượng mà chúng ta mô tả rõ ràng không liên quan gì đến CFG (CFG: văn phạm phi ngữ
cảnh) – tạo ra ngôn ngữ máy nhưng sau này chúng ta sẽ xét đến các trường hợp: các máy cùng
loại nói chung có thể dùng chung bất kỳ ngôn ngữ phi ngữ cảnh nào và việc có thể dễ dàng xây
dựng được một máy từ văn phạm.
Ví dụ 1.1 về một máy chấp nhận chuỗi Palindromes đơn giản. Với G là một văn phạm
phi ngữ cảnh, ta có kết quả sau:
G tạo ra ngôn ngữ máy là:
Các chuỗi trong L là chuỗi có chiều dài lẻ trên {a,b} (ví dụ 6.3), trừ trường hợp kí tự giữa
là c. (Chúng ta hãy xét đến các chuỗi Palindrome thông thường. Kí hiệu “đánh dấu” ở giữa giúp
ta dễ dàng nhận ra các chuỗi kí tự)
Cũng không khó gì để viết một thuật toán kiểm tra các xâu trong L bằng cách đọc các kí
tự từ trái sang phải. Ta lưu lại các kí tự của nửa đầu xâu chuỗi mà ta đã đọc, để một khi chúng ta
bắt gặp kí tự c thì ta có thể bắt đầu thực hiện việc so khớp các kí tự đang vào với các kí tự đã
được đọc. Để thực hiện được điều này, ta phải lấy lại các kí hiệu đã được lưu trữ bằng cách sử
dụng quy tắc “ vào sau, ra trước” (viết tắt là LIFO): Kí tự thường được đem đi so khớp với các
kí tự đang vào kế tiếp là một kí tự đã được đọc hoặc đã được lưu trữ. Cấu trúc dữ liệu dùng quy

tắc LIFO là một ngăn xếp, thường được sắp xếp như là một danh sách trong đó kí tự cuối được
xếp vào vị trí đầu tiên. Các kí tự luôn luôn được thêm vào (gọi là push – đẩy vào ngăn xếp) và
xóa (gọi là pop – đẩy ra khỏi ngăn xếp) tại vị trí cuối này, và ở bất kỳ thời điểm nào, phần tử
duy nhất của ngăn xếp có thể được truy cập ngay tức thời là phần tử ở vị trí đỉnh của ngăn xếp.
Nhóm 9- Lớp KHMT Khóa 12 Trang 4

Tiểu luận Lý thuyết tính toán

Khi ta thử dùng thuật toán này với máy trừu tượng, cũng đúng khi nói rằng “trạng thái”
hiện tại của máy được xác định một phần bởi nội dung hiện hành của ngăn xếp. Tuy nhiên, cách
tiếp cận này sẽ đòi hỏi một tập vô hạn các “trạng thái”, bởi vì ngăn xếp cần đến chúng để có thể
chứa được các xâu chuỗi có kích thước lớn. Phương pháp này thuận lợi hơn thay vì tiếp tục
dùng một tập các “trạng thái” hữu hạn – mặc dù đầu đọc không phải là một “máy có trạng thái
hữu hạn”, cách này cũng giống như cách thức mà FA đã dùng, bởi vì với trạng thái hiện tại thì
không đủ để xác định được trạng thái máy và không đủ khả năng để xem ngăn xếp như là một
hình thức đơn giản của bộ nhớ đệm. Điều này có nghĩa là một hành động của máy tính không
những phụ thuộc vào trạng thái hiện tại cũng như dữ liệu đầu vào mà còn phụ thuộc vào kí tự
hiện đang ở vị trí đỉnh của ngăn xếp. Việc thực hiện một hành động có thể làm thay đổi ngăn
xếp cũng như trạng thái của ngăn xếp.
Trong ví dụ đơn giản trên, một tập các trạng thái Q sẽ chỉ chứa 3 phần tử: q0, q1, q2.
Trạng thái đầu q0 có khả năng xử lý một nửa xâu đầu. Trong trạng thái này, mỗi kí tự đầu vào
được đẩy lên ngăn xếp mà không cần biết kí tự gì hiện đang ở vị trí đầu. Máy tính vẫn ở trạng
thái q0 chừng nào nó chưa nhận được kí tự c; khi nhận được kí tự c thì máy tính chuyển sang
trạng thái q1 nhưng ngăn xếp không thay đổi. Trạng thái q1 được dành để xử lý một nửa xâu
đầu vào còn lại. Một khi máy tính đang trong trạng thái này thì xâu duy nhất được thừa nhận
phải là xâu thuộc nửa xâu chuỗi còn lại (sau ký tự c), là xâu chuỗi đảo ngược đã được máy đọc.
Trong trạng thái q1, mỗi kí tự đầu vào sẽ được đem so sánh với một kí tự hiện đang ở vị trí đỉnh
của ngăn xếp. Nếu chúng được chấp nhận, các kí tự đó sẽ bị đẩy ra khỏi ngăn xếp và bị loại bỏ;
ngược lại máy sẽ bị sự cố và xâu kí tự sẽ không được chấp nhận. Giai đoạn xử lý này kết thúc
khi ngăn xếp hoàn toàn rỗng và máy không bị sự cố. Một ngăn xếp trống có nghĩa là mỗi kí tự

tại một nửa đầu xâu chuỗi hoàn toàn trùng khớp với mỗi kí tự đầu vào của xâu chuỗi còn lại và
lúc này máy sẽ chuyển sang trạng thái chấp thuận q2
Bây giờ ta xét đến phương thức miêu tả một cách chính xác sự hoạt động của một máy
trừu tượng mà chúng ta đã phát thảo. Mỗi động thái của máy sẽ được xác định bởi 3 yếu tố:
1. Trạng thái hiện tại
2. Dữ liệu nhập kế tiếp
3. Kí tự ở đầu ngăn xếp
Nhóm 9- Lớp KHMT Khóa 12 Trang 5

Tiểu luận Lý thuyết tính toán

Và bao gồm 2 phần:
1. Sự thay đổi trạng thái ( hoặc vẫn ở cùng trạng thái)
2. Sự thay thể kí tự ở đỉnh ngăn xếp bằng một chuỗi số 0 hoặc các kí tự khác.
Việc mô tả sự dịch chuyển theo cách này cho phép chúng ta có thể xét 2 sự chuyển dịch cơ bản
của ngăn xếp như là các trường hợp đặc biệt:
- Đẩy kí tự tại vị trí đầu tiên (pop) ra khỏi ngăn xếp để thay thế bằng một kí tự kế tiếp Λ, và đẩy
kí tự Y (push) vào ngăn xếp tức là thay kí tự X tại vị trí đỉnh của ngăn xếp bằng kí tự YX (với
giả định là kí tự tận cùng bên trái của chuỗi nằm tương ứng với vị trí đỉnh của ngăn xếp).
Chúng ta sẽ tuân theo quy luật ngăn xếp một cách nghiêm ngặt với yêu cầu là ứng với một sự
dịch chuyển trong ngăn xếp thì đó phải là chuyển động duy nhất trong ngăn xếp: hoặc là đẩy kí
tự vào (push) hoặc là đẩy kí tự ra (pop). Tuy nhiên việc thay thế một kí tự X trong ngăn xếp
bằng 1 kí tự alpha có thể được thực hiện bằng một chuỗi các chuyển động cơ bản (hành động
đẩy kí tự ra, theo sau là một chuỗi các số 0 hoặc nhiều hành động đẩy kí tự vào) và càng nhiều
sự chuyển động chung chung thì càng làm cho số lượng chuyển động khác biệt trở nên ít hơn.
Trong trường hợp của thiết bị ôtômát hữu hạn thì chức năng chuyển dịch có dạng:
Tại đây nếu chúng ta cho phép xảy ra trường hợp: các kí tự chữ cái chứa trong ngăn xếp (một
tập hợp các kí tự có thể xuất hiện trong ngăn xếp) khác với các kí tự chữ cái nhập vào thì ta có:
Với trạng thái q, dữ liệu nhập là a và kí tự trong ngăn xếp là X, ta có:
Nghĩa là trong trạng thái q , với kí tự X nằm ở vị trí đỉnh trong ngăn xếp, ta đọc kí tự a, chuyển

sang trạng thái p và thay thế X trong ngăn xếp bằng kí tự α.
Điều này làm nảy sinh một vài vấn đề. Thứ nhất, bằng cách nào để có thể mô tả sự dịch
chuyển nếu ngăn xếp hoàn toàn trống (δ(q, a, ?))?. Giải pháp là ta dùng phát biểu sau: khi có
một ký tự bắt đầu đặc biệt là Zo trong ngăn xếp và máy tính sẽ không được phép thực hiện hành
động dịch chuyển khi ngăn xếp trống. Với điều kiện là Zo không bao giờ bị loại bỏ khỏi ngăn
Nhóm 9- Lớp KHMT Khóa 12 Trang 6

Tiểu luận Lý thuyết tính toán

xếp và không có thêm bản sao nào của Zo được đẩy vào ngăn xếp và lúc này ta có thể nói rằng
Zo đang ở vị trí đầu tiên của ngăn xếp, nghĩa là ngăn xếp đã hoàn toàn trống.
Vấn đề thứ hai, làm thế nào để chúng ta mô tả sự dịch chuyển của ngăn xếp khi không có
dữ liệu nhập vào (δ(q, ?, X))?. (Nên nhớ rằng trong ví dụ này chúng ta đang muốn chuyển sang
trạng thái q2 khi ngăn xếp rỗng và tất cả dữ liệu nhập vào đã được đọc. Mà giải pháp chúng ta
áp dụng ở trường hợp này là cho phép dịch chuyển với điều kiện chỉ sử dụng một dữ liệu đầu
vào duy nhất, và điều này cũng giống với những sự chuyển dịch trong NFA-A (Automat hữu
hạn không đơn định). Và cái mà ta thật sự cần là:
Tất nhiên một khi có sự chuyển dịch của hình thức δ(q, Λ, X), thì ta có thể tạo ra chúng
trước khi dữ liệu nhập được đọc; nếu ký tự đầu vào kế tiếp không được đọc trong khi tồn tại một
chuyển dịch thì nó vẫn nằm ở vị trí cũ và sẽ được đọc ngay sau đó.
Chúng ta đã nói rằng: có thể xảy ra nhiều tình huống khi máy tính gặp sự cố - tức là
không có sự dịch chuyển nào. Trong trường hợp của một otomat hữu hạn, khi tình huống này
xảy ra ta quyết định tạo ra δ(q, a), một tập con của Q chứ không phải là một phần tử và nó có
giá trị rỗng. Đồng thời chúng ta cho phép xảy ra khả năng là δ(q, a), có thể chứa nhiều hơn một
phần tử để FA trở thành bất định. Chúng ta có thể làm điều tương tự ngoại trừ trường hợp khi
là một tập vô hạn, và cũng nói rõ thêm là δ(q, a, X), và δ(q, Λ, X) luôn là hữu hạn. trong
ví dụ hiện tại sự bất định là không cần thiết nhưng lại là điều cần thiết trong những trường hợp
khác. Vì vậy chúng ta đang nằm ở vị trí bên trái với
 một tập hợp các tập con hữu hạn của
Bây giờ chúng ta có thể mô tả một cách chính xác cách nhận dạng một chuỗi palindrome đơn

giản: Q sẽ là một tập {q0, q1, q2} với q0 là trạng thái ban đầu, q2 là trạng thái duy nhất được
chấp nhận. Bảng chữ cái đầu vào là {a, b, c} và ngăn xếp bảng chữ cái là (a, b, z0). Chức năng
chuyển dịch của δ được trình bày ở bảng 1.1. Hãy nhớ rằng khi chúng ta đưa một chuỗi vào
ngăn xếp thì vị trí trên cùng của ngăn xếp sẽ tương ứng với vị trí cuối cùng bên phải của chuỗi.
Quy ước này là nếu chúng ta cùng một lúc có thể đưa nhiều ký tự vào thì chúng ta phải thực
hiện theo trật tự từ phải qua trái hoặc theo thứ tự ngược lại. Vấn đề là khi chúng ta đang cố gắng
Nhóm 9- Lớp KHMT Khóa 12 Trang 7

Tiểu luận Lý thuyết tính toán

xử lý các ký tự trong ngăn xếp thì thứ tự mà chúng ta gặp cũng giống như thứ tự đã được sắp
xếp trong chuỗi.
Khi dịch chuyển từ 1 đến 6: đẩy những ký tự đầu đầu vào a, b vào trong ngăn xếp và sự
dịch chuyển từ 7 đến 9: làm thay đổi trạng thái mà không ảnh hưởng đến ngăn xếp, sự dịch
chuyển từ 10 đến 11: so khớp ký tự nhập với ký tự ngăn xếp và cả hai đều bị xóa bỏ, và sự
chuyển dịch cuối cùng sẽ được chấp nhận với điều kiện sẽ không còn ký tự nào ngoại trừ ký tự
Zo ở trong ngăn xếp.
Bảng 1.1 minh họa cho Ví dụ 1.1
Số lần dịch
chuyển
Trạng
thái
Vào
Biểu tượng
ngăn xếp
Dịch
chuyển
Nhóm 9- Lớp KHMT Khóa 12 Trang 8
Tất cả các kết hợp khác không


Tiểu luận Lý thuyết tính toán

Chúng ta hãy theo dõi sự dịch chuyển của máy tính đối với 3 chuỗi đầu vào abcba, ab và acaa
Số lần dịch
chuyển
Trạng thái kết
quả
Đầu vào
chưa đọc
Ngăn xếp
Chú ý là sự chuyển dịch cuối cùng được thực hiện với chuỗi acaa. Mặt dù không có sự
dịch chuyển thì máy tính có thể thực hiện sự chuyển đổi sang trước khi
hết sự lựa chọn. Ta có thể nói rằng khi đầu đọc đang ở trạng thái chấp nhận thì các phần của
chuỗi được máy đọc cho tới giờ (ví dụ: aca) đã được thừa nhận; tuy nhiên toàn bộ chuỗi đầu vào
lại không được chấp nhận bởi vì không phải tất cả các ký tự đều được đọc.
Hình 1.1 Chuyển đổi sơ đồ cho các automaton pushdown (PDA) trong Ví dụ 1.1.
Hình 1.1 là sơ đồ mô hình cho ví dụ 1.1 (nhưng phức tạp hơn) nằm sau biểu đồ chuyển đổi của
một FA. Mỗi sự chuyển đổi được gán nhãn tương ứng với một dữ liệu đầu vào (là một ký tự chữ
cái hoặc Λ, một ký tự ngăn xếp X, một dấu / và một chuỗi α các ký tự của ngăn xếp. Chúng ta có
Nhóm 9- Lớp KHMT Khóa 12 Trang 9
(Ban đầu)
(Chấp nhận)
(Ban đầu)
(Ban đầu)
(Máy treo

Tiểu luận Lý thuyết tính toán

thể diễn giải là sự chuyển tiếp có thể xảy ra với dữ liệu đầu vào xác định và có liên quan đến sự
thay thế ký tự X trong ngăn xếp bằng ký tự α. Ngay cả khi đã có các thông tin bổ sung cần thiết

để gán nhãn trên mũi tên thì biểu đồ ở dạng này không hoàn toàn nắm hết được các hành vi của
một PDA cũng giống như cách thức mà một biểu đồ chuyển tiếp của FA thể hiện. Với một FA
thì bạn có thể bắt đầu tại bất kỳ vị trí nào trên sơ đồ này với các kí tự đầu vào và dõi theo các
hành động của đầu đọc theo hướng của của các mũi tên. Tuy nhiên trong hình 1.1 bạn không thể
dõi theo các mũi tên mà không dò theo nội dung của ngăn xếp (có thể là toàn bộ nội dung). Số
lượng các trạng thái kết hợp có thể có và nội dung của ngăn xếp là vô hạn, vì vậy ta không thể
suy ra được một sơ đồ các trạng thái hữu hạn trong cùng một trường hợp cho một FA. Trong
hầu hết các trường hợp, trong chương này, chúng ta có thể mô tả một automat đẩy xuống bằng
các bảng chuyển tiếp tương tự như bảng 1.1, mặc dù thi thoảng nó cũng rất hữu ích để trình bày
một sơ đồ chuyển tiếp.
1.2. Định nghĩa của một Automat đẩy xuống
Dưới đây là một định nghĩa chính xác về các loại máy trừu tượng trong mục 1.1. Nên nhớ rằng
những gì đang được định nghĩa nói là chung không xác định.
Định nghĩa 1.2. Định nghĩa về một PDA.
Một PDA là một tập M có 7 phần tử M = (Q, Σ, 0, Z, A, δ)
Với Q là một tập hợp các trạng thái hữu hạn – Σ là một tập hữu hạn gồm các dữ liệu đầu vào,
bảng ngăn xếp các ký tự chữ cái tương ứng.
qo trạng thái ban đầu, là một thành phần của tập Q
Zo là ký tự ngăn xếp ban đầu, là một phần tử của ngăn xếp.
A là một tập hợp các trạng thái chấp nhận, là một tập con của Q.
 một tập hợp các tập con hữu hạn của
Các δ chức năng được gọi là chức năng chuyển tiếp của M.
Nhóm 9- Lớp KHMT Khóa 12 Trang 10

Tiểu luận Lý thuyết tính toán

Bảng chữ cái ngăn xếp và ký tự ban đầu ngăn xếp Zo là những yếu tố cần thiết để tạo ra 7 – bộ
dữ liệu thay vì 5 bộ dữ liệu. Nếu không, các thành phần của bộ dữ liệu cũng giống như trường
hợp của FA, ngoại trừ việc chức năng chuyển đổi δ trở nên phức tạp hơn.
Chúng ta có thể theo dõi hoạt động của một Automat hữu hạn bằng cách dò theo trạng thái hiện

tại tại mỗi bước. Để theo dõi hoạt động của một PDA M chúng ta cũng phải dò theo nội dung
của ngăn xếp. Nếu chúng ta quan tâm đến những gì mà máy thực hiện với một chuỗi đầu vào
xác định thì nó cũng giúp ích cho việc quan sát các phần của chuỗi chưa được đọc. Một dạng
của là một (q, x, α).
Với và Ta nói : (q, x, α) là dạng hiện tại của M thì nó có nghĩa là:
q là trạng thái hiện hành
x là chuỗi dữ liệu đầu vào còn lại chưa được đọc
α là nội dung hiện hành của ngăn xếp, thông thường nó nằm ở vị trí cuối cùng bên trái của α,
tương ứng với vị trí đỉnh của ngăn xếp.
ta có:
có nghĩa là một trong những sự dịch chuyển có thể có trong cấu hình đầu tiên đưa M đến vị trí
số 2. Điều này có thể xảy ra theo 2 cách thức, phụ thuộc vào việc hoặc là có một sự dịch chuyển
xóa một ký tự đầu vào hoặc là có một sự chuyển đổi. Trong trường hợp đầu tiên, x = ay với a ∈
Σ, và trong trường hợp thứ hai x = y; chúng ta có thể tóm tắt cả hai trường hợp bằng x = ay, với
a ∈ Σ ∪{Λ} trong cả hai trường hợp, chuỗi β nằm trong số những ký tự của ngăn xếp được lấy
từ α bằng cách thay thế ký tự đầu tiên X bằng ký tự ξ (nói theo một cách khác α = Xγ cho một
số X ∈ Γ và một số γ ∈ Γ*, và β = ξ γ đối với một số ξ ∈ Γ*) và
(q, ξ ) ∈ δ(p, a, X)
Tổng quát hơn, ta có
Nhóm 9- Lớp KHMT Khóa 12 Trang 11

Tiểu luận Lý thuyết tính toán

Nếu có một chuỗi các số 0 hoặc có nhiều dịch chuyển làm cho M chuyển từ dạng 1 sang dạng 2.
Thông thường nếu không gây nhầm lẫn thì chúng ta rút ngắn M thành và thành *.
Bằng việc sử dụng những ký tự mới chúng ta có thể xác định sự chấp nhận một chuỗi bằng aM
PDA.
Định nghĩa 1.2 Sự chấp nhận của một PDA.
Nếu M =(Q, Σ, Γ, q0, Z0, A, δ) Λ là một PDA và x ∈ Σ*, x được chấp thuận bởi M nếu
Với α ∈ Γ* và q ∈ A (ngăn xếp có thể rỗng hoặc không nếu x được chấp nhận, bởi vì α có thể

rỗng hoặc không rỗng. Ta có thể nói rằng một ngôn ngữ L ⊆ Σ* được thừa nhận bởi M nếu như
L là một tập các chuỗi được chấp nhận bởi M ; trong trường hợp này chúng ta viết L=L(M).
Lưu ý rằng việc có hay không một chuỗi được chấp nhận chỉ phụ thuộc vào trạng thái hiện hành
trong lúc chuỗi đang được xử lý và không còn thuộc nội dung của ngăn xếp.
Chúng ta có thể sử dụng cụm từ ‘cấu hình đang chấp nhận để chỉ bất kỳ cấu hình nào đang trong
trạng thái đang chấp nhận. Dạng chấp nhận này đôi khi được gọi là sự chấp nhận bởi trạng thái
cuối.
Mục này sẽ được trình bày một cách ngắn gọn tại mục 7.5 mô tả một trường hợp khác: sự chấp
thuận bởi ngăn xếp trống. Trong phương pháp này, một chuỗi được xem là được chấp nhận nếu
nó cho phép PDA đạt đến cấu hình mà tại đó ngăn xếp hoàn toàn rỗng, bất kể là trạng thái lúc đó
có phải là trạng thái chấp thuận hay không. Cũng không khó để nhận ra rằng 2 loại chấp nhận là
tương đương nhau (tại mục 7.5, bài tập 7.41 và 7.42), trong trường hợp nếu một ngôn ngữ được
một số PDA chấp thuận, đang sử dụng một trong những mode của trạng thái chấp nhận thì cũng
sẽ được thừa nhận bởi một PDA đang ở một mode khác.
Phải nhấn mạnh thêm rằng khi ta nói một PDA thừa nhận một chuỗi X thì nghĩa là đang có một
chuỗi các chuyển động mà nó là tác nhân làm cho máy tiến đến cấu hình của sự chấp nhận và
đó là kết quả của việc đọc các kí tự X. Khi PDA là không xác định thì có khả năng có thể có các
chuỗi chuyển động khác nhưng không làm cho máy tiến đến cấu hình của sự chấp nhận. Mỗi lần
có sự lựa chọn của sự dịch chuyển thì ta có thể quan sát PDA khi nó đang thực hiện công việc
Nhóm 9- Lớp KHMT Khóa 12 Trang 12

Tiểu luận Lý thuyết tính toán

dự đoán xem lựa chọn nào sẽ được thực hiện. Sự chấp nhận xảy ra, có nghĩa là PDA đã đoán
đúng tại mỗi bước dịch chuyển và máy sẽ đạt đến cấu hình của sự chấp nhận. Ở ví dụ kế tiếp,
chúng sẽ sẽ xem xét thêm để làm rõ việc dự đoán đúng có ý nghĩa như thế nào tại mỗi bước
chuyển động.
Ví dụ 1.2 về sự chấp nhận ngôn ngữ của chuỗi Panlidromes của một PDA.
Thí dụ này có liên quan đến ngôn ngữ pal của chuỗi Panlidromes trên tập {a,b} (cả hai đều có
cùng độ dài chẵn và lẻ) không có kí hiệu đánh dấu ở vị trí giữa, nó tạo ra một tín hiệu làm cho

PDA từ trạng thái đẩy vào ngăn xếp chuyển sang trạng thái so sánh kí tự nhập với kí tự trong
ngăn xếp. Phương pháp chung để xây dựng một PDA nhận ra loại ngôn ngữ này có vẻ giống
như trong ví dụ 1.1: Nên nhớ rằng cho đến giờ, các kí tự mà ta đã đọc và vẫn sẽ được lưu trữ
trong ngăn xếp cho đến khi ta sẵn sàng cho việc so khớp chúng với các kí tự tại nửa xâu còn lại.
Việc chuyển từ trạng thái chuyển động này sang trạng thái khác xảy ra khi ta tiến đến vị trí giữa
của chuỗi như trong ví dụ 1.1. Tuy nhiên, nếu như không có kí tự đánh dấu rõ ràng ở vị trí giữa
thì PDA không có cách nào biết được đã đến vị trí giữa hay chưa, nó chỉ có thể dự đoán mà thôi.
Thật may là sẽ không có chuyện gì xảy ra nếu máy dự đoán sai miễn là việc đoán định của máy
không thừa nhận 1 chuỗi không phải là Panlidrome.
Chúng ta thử nghĩ về việc một máy đang thực hiện công việc dự đoán một chuỗi khi nó thực
hiện tác vụ đọc kí tự nhập và đẩy chúng vào ngăn xếp. Giai đoạn này có thể bị gián đoạn (trong
trường hợp đoán trúng) theo 2 khả năng: Các thiết bị PDA dự đoán được kí tự nhập kế tiếp là
một kí tự đang ở vị trí giữa của chuỗi (với chuỗi có độ dài lẻ) và do đó nó sẽ bị xóa đi mà không
cần phải so khớp với bất kì kí tự nào nữa; hoặc máy đoán được là chuỗi đầu vào được đọc là
một nửa xâu kí tự đầu tiên của một chuỗi có chiều dài chẵn và bất kì kí tự đầu vào kế tiếp nào
cũng được đem đi so khớp với các kí tự trong ngăn xếp. Kết quả là nếu một xâu kí tự X được
đọc thì lần đoán trúng đầu tiên sẽ là một kí tự nhập s được đọc và xâu chuỗi nhập sẽ là xsx. Có
khả năng lần đoán thứ hai có thể được thực hiện mà không cần đọc bất kỳ kí tự nào khác và kết
quả chuỗi đầu vào sẽ là xx. Trong cả 2 trường hợp, từ vị trí này trên PDA sẽ được chấp nhận.
Nếu không có lần dự đoán nào nữa thì máy sẽ cố gắng xử lý các ký tự còn lại nếu như các kí tự
này nằm trong nửa xâu chuỗi thứ 2 và chấp nhận là không còn một xâu chuỗi nào khác ngoài
xâu chuỗi đầu vào mà máy đã dự đoán được.
Nhóm 9- Lớp KHMT Khóa 12 Trang 13

Tiểu luận Lý thuyết tính toán

Cách thức trên không phải là nguyên nhân gây ra việc chấp nhận một chuỗi không phải là chuỗi
palindrome, bởi vì cứ mỗi lần PDA đoán đúng thì sau đó nó không thể chấp nhận một chuỗi nào
khác ngoài 2 chuỗi xsx và xx. Nói theo một cách khác, để được thừa nhận thì mỗi chuỗi
palidrome phải là chuỗi có dạng giống như xsx hoặc xx và trong trường hợp này khi có một

chuỗi lựa chọn phù hợp mà máy có thể dự đoán đúng tại một thời điểm thích hợp thì tất nhiên
chuỗi z đầu vào phải là một chuỗi palindrome, nếu thiết bị PDA đoán đúng tại một thời điểm
không thích hợp hoặc đoán sai thì có khả năng quá trình chấp thuận các chuỗi palidrome khác sẽ
kết thúc, ngoại trừ chuỗi z; hoặc đơn giản là kết thúc hẳn trạng thái không chấp thuận. Điều này
không có nghĩa là thiết bị PDA làm sai, chỉ là PDA không chọn đúng trình tự dịch chuyển mà có
thể dẫn đến sự thừa nhận chuỗi z.
Bảng chuyển đổi của thiết bị PDA được trình bày ở bảng 1.2. Trong thí dụ 1.1, tập hợp Q và A
là những tập hợp giống nhau và lưu ý là có nhiều điểm tương đồng giữa 2 bảng chuyển đổi. Sự
chuyển động tại 6 dòng đầu tiên trong bảng 1.1 cho thấy là có nhiều sự chuyển động có thể có
tại các dòng tương ứng của bảng 1.2, và 3 dòng cuối của 2 bảng – đại diện cho tiến trình xử lý
nửa chuỗi sau – là giống hệt nhau.
Thực tế là 6 dòng đầu tiên của bảng 1.2 hiển thị hai dịch chuyển có thể có, điều này cho thấy
được sự bất định. Máy dự đoán sai với hai lựa chọn trong mỗi dòng trên (được trình bày trong
bảng 1.1) và máy dự đoán được kí tự đầu vào là một ký tự nằm ở vị trí giữa của xâu có chiều dài
chẵn. Trong cả hai trường hợp, ký tự nhập đều được đọc; với lựa chọn đầu tiên, máy đẩy kí tự
vào ngăn xếp, với lựa chọn thứ hai, máy xóa bỏ kí tự.
Tuy nhiên cũng có trường hợp bất định với những trình tự ít rõ ràng. Giả dụ, PDA đang trong
trạng thái q0, kí tự tại vị trí đỉnh ngăn xếp là a và kí tự nhập kế tiếp cũng là a (dòng 3). Ngoài 2
động thái được thể hiện trong dòng 3 thì còn có lựa chọn thứ 3 được trình bày ở dòng 8: không
phải là để đọc tất cả các ký tự nhập nữa mà để thực hiện sự chuyển đổi sang trạng thái q1. Điều
này đại diện cho tất cả các lần đoán đúng khác, nó là kết quả của quá trình đọc các kí tự gần đây
nhất (hiện đang ở tại vị trí đỉnh của ngăn xếp) và chúng ta đang ở tại vị trí giữa của chuỗi có
chiều dài chẵn. Sự lựa chọn này được thực hiện mà không cần quan tâm đến ký tự đầu vào kế
tiếp. (Một phương pháp tiếp cận khác là đọc kí tự a và so khớp kí tự này với ký tự a trong ngăn
xếp và máy chuyển sang trạng thái q1; tất cả đều có cùng cách thức dịch chuyển; tuy nhiên
Nhóm 9- Lớp KHMT Khóa 12 Trang 14

Tiểu luận Lý thuyết tính toán

những sự dịch chuyển ở trong bảng cho thấy có điểm khác biệt giữa trạng thái q0 trong tất cả

các lần xảy ra quá trình dự đoán và trạng thái q1 trong tất cả các lần xảy ra quá trình so sánh)
Số lần dịch
chuyển
Trạng thái Vào
Biểu tượng
ngăn xếp
Dịch chuyển
Tất cả các kết hợp khác không
Hình 1.2: Tính toán cây cho PDA trong Bảng 1.2, với baab đầu vào.
Nhóm 9- Lớp KHMT Khóa 12 Trang 15

Tiểu luận Lý thuyết tính toán

Lưu ý là quá trình chuyển đổi trong dòng 8 không phải là căn nguyên của sự bất định. Ví dụ: sự
chuyển dịch ở dòng 12 là sự chuyển dịch có khả năng nhất khi máy đang ở trạng thái q1 khi Z0
là kí tự đang ở vị trí đỉnh của ngăn xếp. Dòng 8 đại diện cho sự bất định bởi vì nếu PDA đang ở
trạng thái q0 và a là kí tự ở đỉnh của ngăn xếp thì xảy ra việc lựa chọn giữa một chuyển động -
đọc một ký tự đầu vào với một chuyển động ngược lại. Chúng ta sẽ đề cập lại vấn đề này tại
mục 7.3.
Cũng như tại mục 4.1, chúng ta có thể suy ra được cây tính toán cho PDA như hình trên - hiển
thị cấu hình và những lựa chọn có thể có của sự dịch chuyển tương ứng với mỗi bước. Hình 1.2
hiển thị một cây với chuỗi palindrome baab.
Mỗi khi có một sự lựa chọn, những dịch chuyển có thể có được sắp xếp theo trình tự từ trái qua
phải (như hình 1.2). Đặc biệt, trong mỗi cấu hình dọc theo cánh trái của hình 1.2, ngoại trừ cấu
hình cuối cùng, PDA đang ở trạng thái q0 và ít nhất sẽ có một kí tự đầu vào không được đọc.
Tại mỗi điểm, PDA có thể chọn lựa từ một trong ba khả năng dịch chuyển: nếu tiếp tục đi xuống
cạnh bên trái của hình 1.2 đại diện cho lần dự đoán sai là đọc dữ liệu nhập vào và đẩy vào ngăn
xếp; Hai khả năng khác là hai chuyển động làm máy chuyển sang trạng thái q1, một chuyển
động là để đọc một ký hiệu nhập vào, sự chuyển động còn lại thì không.
Thứ tự các bước dịch chuyển dẫn đến sự chấp thuận là:

chấp nhận
Thứ tự này là một trong những dịch chuyển của lần dự đoán đúng với sự lựa chọn phù hợp và
đúng thời điểm. Những đường bị lệch khỏi phương thẳng đứng kết thúc quá sớm trước khi PDA
hoàn thành việc đọc dữ liệu nhập; máy sẽ rơi vào tình trạng bị treo hoặc sẽ sớm đi vào trạng thái
chấp thuận q2 (để chuỗi được chấp nhận là một chuỗi palindrome có độ dài là 0 hoặc 1). Những
đường chạy dọc theo phương thẳng đứng quá dài có thể làm cho PDA bị treo hoặc không còn ký
tự để nhập vào trước khi ngăn xếp rỗng.
Nhóm 9- Lớp KHMT Khóa 12 Trang 16

Tiểu luận Lý thuyết tính toán

1.3. MỘT ÔTÔMÁT ĐẨY XUỐNG TƯƠNG ỨNG VỚI MỘT VĂN PHẠM PHI NGỮ
CẢNH XÁC ĐỊNH.
Tính đến thời điểm này, các PDA chúng ta đã xây dựng được dựa trên các tính chất đối
xứng đơn giản của các chuỗi trong các ngôn ngữ được nhận biết hơn là trên bất kỳ đặc tính nào
của CFG (CFG) hình thành nên ngôn ngữ.
Điều đó có nghĩa là, không phải ngôn ngữ phi ngữ cảnh nào cũng có thể được nhận biết
bởi một PDA. Tuy nhiên, điều này chúng ta sẽ chứng minh trong phần này. Bắt đầu với một văn
phạm phi ngữ cảnh G, chúng ta muốn xây dựng một PDA có thể kiểm tra một chuỗi tùy ý và xác
định xem liệu nó có thể được dẫn xuất từ G. Chiến lược cơ bản là mô phỏng dẫn xuất của một
chuỗi trong văn phạm xác định.
Điều này sẽ đòi hỏi phải đoán các bước của dẫn xuất, và PDA của chúng ta sẽ là không
đơn định (Như chúng ta thấy trong Phần 7.6, có mốt số dạng văn phạm xác định mà chúng ta có
thể điều chỉnh PDA, giữ lại các tính năng thiết yếu và loại bỏ tính không đơn định. Cách tiếp
cận trên đặc biệt rất hữu hiệu trong các trường hợp này, bởi vì với một chuỗi x trong ngôn ngữ,
theo dõi sự dịch chuyển của máy ở đầu vào x không những cho phép chúng ta xác nhận sự có
mặt của x trong ngôn ngữ, mà con bộc lộ một dẫn xuất của x trong văn phạm. Bởi vì ngôn ngữ
thân thuộc như người bạn, tuy nhiên để tìm ra PDA đơn định nói chung là quá sức mong đợi).
Theo tiến trình mô phỏng, máy sẽ kiểm tra chuỗi đầu vào để đảm bảo rằng nó vẫn còn
phù hợp với tiến trình dẫn xuất. Nếu chuỗi đầu vào thực sự có dẫn xuất từ văn phạm, và nếu dự

đoán của PDA mô phỏng chính xác dẫn xuất này, quá trình kiểm tra sẽ xác nhận và cho phép
máy chuyển sang trạng thái chấp nhận.
Có ít nhất hai cách tự nhiên một PDA có thể mô phỏng một dẫn xuất trong văn phạm.
Một bước trong mô phỏng tương đương với xây việc dựng một phần của cây dẫn xuất và hai
phương pháp tiếp cận thứ tự từ trên xuống và từ dưới lên mà trong đó các phần được xây dựng.
Chúng ta sẽ bắt đầu với cách tiếp cận từ trên xuống. PDA bắt đầu bằng cách đẩy ký hiệu
bắt đầu S (ở trên cùng của cây dẫn xuất) vào ngăn xếp (stack), và mỗi bước tiếp theo trong các
dẫn xuất được mô phỏng được thực hiện bằng cách thay thế một biến trên stack (tại một nút nào
đó trong cây) bằng phía bên phải của phép sinh bắt đầu với biến đó (nói cách khác, thêm các nút
Nhóm 9- Lớp KHMT Khóa 12 Trang 17

Tiểu luận Lý thuyết tính toán

con của nút đó vào cây). Stack giữ chuỗi hiện hành trong dẫn xuất, ngoại trừ các ký hiệu kết
thúc xuất hiện ở bên trái của chuỗi, chúng trùng với ký hiệu ở đầu vào và bị loại bỏ.
Hai loại dịch chuyển được thực hiện bởi PDA, sau khi S được đặt vào stack, là:
1. Thay thế một biến A trên cùng của stack bằng phần bên phải α của phép sinh A → α. Tại đây,
việc dự đoán sẽ xuất hiện.
2. Lấy ký hiệu kết thúc ra khỏi stack, miễn là nó trùng với ký hiệu đầu vào tiếp theo. Cả hai ký
hiệu này sau đó bị loại bỏ.
Tại mỗi bước, chuỗi các ký hiệu đầu vào đã được đọc (trùng với các ký hiệu kết thúc nằm tại
đầu chuỗi của dẫn xuất), tiếp theo là nội dung của stack, không kể Z, tạo thành chuỗi hiện hành
trong dẫn xuất. Khi một biến xuất hiện trên đầu của stack, đó là vì các ký hiệu kết thúc trước đó
trong chuỗi hiện hành đã trùng, và do đó nó là biến trái nhất trong chuỗi hiện hành. Vì vậy, các
dẫn xuất được mô phỏng là một dẫn xuất trái nhất. Nếu tại một số điểm không còn bất kỳ phần
nào của chuỗi hiện hành còn lại trên stack, dẫn xuất phải thành công trong việc tạo ra chuỗi đọc
đầu vào, và các PDA có thể chấp nhận.
Chúng ta sẵn sàng cung cấp một mô tả chính xác hơn của PDA đẩy xuống này và để
chứng minh rằng các chuỗi nó chấp nhận chính xác là những chuỗi sinh ra bởi văn phạm.
Định nghĩa 7.4 PDA đẩy xuống tương ứng với một CFG

Đặt G = (V,Σ,S,P) là 1 văn phạm phi ngữ cảnh. Chúng ta định M = (Q,Σ,Γ,q
0
,Z
0
,A,δ) như sau:
Q={q
0
,q
1
,q
2
} A={q
2
} Γ =V ∪ Σ ∪ {Z
0
} (Trong đó Z
0
∉ V ∪ Σ)
Dịch chuyển ban đầu của M là đặt S vào stack và dịch chuyển sang q1: δ(q
0
,∧,Z
0
) = {(q
1
,SZ
0
)}.
Dịch chuyển duy nhất tới trạng thái chấp nhận q
2
là từ q

1
, khi stack trống rỗng ngoài trừ Z
0
: δ(q
1
,
∧ ,Z
0
) = {(q
2
,Z
0
)}. Cách khác, dịch chuyển duy nhất của M là như sau:
1. Với mỗi A thuộc V, δ(q
1
,∧,A)={(q
1
,α) | A → α là phép sinh trong G}
2. Với mỗi α ∈ Σ, δ(q
1
,a,a)={(q
1
,A)}
Định lý 7.2
Nhóm 9- Lớp KHMT Khóa 12 Trang 18

Tiểu luận Lý thuyết tính toán

Cho G = (V,Σ,S,P) là một văn phạm phi ngữ cảnh. Khi đó, PDA đẩy xuống M được mô tả trong
Định nghĩa 7.4 chấp nhận L(G)

Chứng minh
Trước tiên, chứng minh L(G) ⊆ L(M). If x là 1 chuỗi bất kỳ trong L(G), thì bước cuối cùng
trong dẫn xuất trái nhất của x là:
yAz ⇒ yy’ = x
trong đó y, z và y’ là các chuỗi ký hiệu, và bước thông thường sẽ là:
yAα ⇒ yy’β
ở đây, một lần nữa y và y’ là những chuỗi kết thúc, trong đó yy’ là tiếp đầu ngữ của x, và chuỗi
β bắt đầu với 1 biến. Chúng ta có thể lấy trường hợp thứ 2 như một đại diện cho trường hợp 1,
nếu chúng ta nói rằng β hoặc là A, hoặc là bắt đầu bằng 1 biến.
Cái chúng ta muốn chứng minh trong trường hợp này là một chuỗi dịch chuyển tuần tự của PDA
đã ảnh hưởng tới việc đọc chuỗi kết thúc yy’, so khớp với ký tự kết thúc trong stack, để chuỗi β
trong stack (thực chất là βZ
0
) và đặt PDA ở trạng thái q
1
. Nó sẽ tiếp theo, từ trạng thái đặc biệt
trong đó β = A, tức là với 1 chuỗi đầu vào x, PDA có thể đạt đến cấu hình (q
1
, A, Z
0
); do đó, bởi
vì sự dịch chuyển tới q2 như đã mô tả ở phần định nghĩa, PDA chấp nhận x.
Một phát biểu chính xác nói điều này và thích hợp cho việc chứng minh bằng quy nạp sau đây:
Với bất kỳ n ≥ 1, nếu x ∈ L(G) Và bước thứ n trong dẫn xuất trái nhất của x là yAα ⇒ yy’β,
trong đó x = yy’z, yy’ là chuỗi kết thúc, và β hoặc là A, hoặc là bắt đầu bằng 1 biến, trong đó
Với bước chứng minh cơ bản, đặt n = 1. Bước đầu tiên trong dẫn xuất của x là sử dụng phép
sinh dạng S  y’β, vì thế chuỗi y trong (7.1) là rỗng.
Sử dụng dịch chuyển khởi đầu trong định nghĩa của M và dịch chuyển của dạng (1), chúng ta
có:
Nhóm 9- Lớp KHMT Khóa 12 Trang 19

(q
0
,x,Z
0
) = (q
0
,yy’z,Z
0
) *(q
1
,z,βZ
0
) (7.1)

Tiểu luận Lý thuyết tính toán

Tuy nhiên, sử dụng nhiều bước dịch chuyển của dạng (2) như là có các ký hiệu trong y’, PDA
có thể lấy từ cấu hình cuối cùng (q
1
, Z, β), và chúng ta có thể kết luận rằng:
Bây giờ giả sử rằng k ≥ 1 và phát biểu của chúng ta là đúng với mọi n ≤ k. Chúng ta mong muốn
chứng minh rằng nếu bước thứ (k+1) trong dẫn xuất trái nhất của x là yAα ⇒ yy’β, thì (7.1) là
đúng. Xét bước thứ k trong dẫn xuất trái nhất của x, nó có dạng:
wBy ⇒ ww’β’ = ww’Aα
Trong đó ww’ = y, Điều đó có nghĩa rằng x = ww’(y’z), và giả thuyết quy nạp ngụ ý rằng:
Nếu phép sinh đã sử dụng trong bước thứ (k+1) thi A→ α’, vì thế αα’ = y’ß, sau đó sử dụng dịch
chuyển dạng (1), chúng ta có:
Bây giờ, cũng giống như trong bước cơ bản, chúng ta đạt được cấu hình (q1, z, βZ
0
) bằng cách

sử dụng dịch chuyển dạng (2), và hoàn tất chứng minh rằng L(G) ⊆ L(M)
Kế tiếp, chứng minh rằng L (M) ⊆ L (G). Nói đại khái, điều này có nghĩa chúng ta cần chứng
minh ngược lại phát biểu trước đó; hay nói cách khác, cấu hình (q
1
, z, βZ
0
) chỉ có thể xảy ra khi
và chỉ khi có một số dẫn xuất trái nhất trong văn phạm sinh ra các chuỗi yβ , trong đó x = yz. Để
chính xác, chúng ta chứng minh như sau:
Với bất kỳ n ≥ 1, nếu có 1 chuỗi tuần tự n dịch chuyển dẫn từ cấu hình (q
0
,x,Z
0
) tới (q
1
, z, βZ
0
)
thì y ∈ Σ*, x=yz và S ⇒ *
G
yβ.
Bước cơ bản khá dễ, bởi vì chỉ có dịch chuyển duy nhất sinh ra cấu hình bên phải là dịch chuyển
khởi đầu của M; trong trường hợp này z = x và β = S, vì thế y có thể được lựa chọn để trở thành
A
Nhóm 9- Lớp KHMT Khóa 12 Trang 20

Tiểu luận Lý thuyết tính toán

Giả sử rằng k ≥ 1, và phát biểu của chúng ta là đúng với mọi n ≥ k. Cũng giả sử rằng một số
dịch chuyển tuần tự (k + 1) sinh ra cấu hình (q

1
, z, βZ
0
). Chúng ta phải chứng minh rằng x = yz,
với một số y và S ⇒* yβ.
Có 2 khả năng cho bước thứ (k + 1) trong chuỗi tuần tự dịch chuyển. Khả năng thứ 1 là cấu hình
tiếp theo-tới-cuối cùng là (q
1
, az, βZ
0
) và dịch chuyển cuối cùng là dạng (1). Trong trường hợp
này giả thuyết quy nạp ngụ ý rằng đối với một số y’ ∈ Σ*, x = y’az và S ⇒* y’aβ. Chúng ta có
kết luận ngay lập tức bằng cách cho y = y’a.
Khả năng còn lại là cấu hình tiếp theo-tới-cuối cùng (q
1
, z, AyZ
0
) cho biến A, trong đó có phép
sinh A  α với αy = β. Trong trường hợp này giả thuyết quy nạp nói với chúng ta rằng x = yz
với mọi y∈ Σ* và S ⇒* yAγ. Nhưng sau đó thì:
Điều này hoàn tất chứng minh quy nạp:
Bây giờ, nếu x là chuỗi bất kỳ trong L(M)
bởi vì M chỉ có thể lấy giá tri q
2
thông qua một ∧ chuyển đổi với Z
0
ở đầu stack. Cho y = x và z
= β = ∧ trong phát biểu chúng ta đã chứng minh bằng quy nạp, chúng ta có thể kết luận rằng S
⇒*
G

x và x ∈ L(G).
Ví dụ 7.5: Một PDA đẩy xuống cho chuối có nhiều a’s hơn là b’s
Xem xét ngôn ngữ:
Trong đó chúng ta xây dựng một DPDA trong Ví dụ 7.4. Từ Ví dụ 6.10 chúng ta biết rằng 1 văn
phạm phi ngữ cảnh của L là một phép sinh:
S → a | aS | bSS | SSb | SbS
Tiếp theo việc xây dụng trong chứng minh ở Định lý 7.2, chúng ta đạt được một PDA M =
(Q,Σ,Γ,q
0
,Z
0
,A,δ) trong đó Q={q
0
,q
1
,q
2
}, Σ={a,b}, Γ={S,a,b,Z
0
}, A={q
2
}, hàm chuyển δ được
Nhóm 9- Lớp KHMT Khóa 12 Trang 21

Tiểu luận Lý thuyết tính toán

định nghĩa bởi bảng sau:
Chúng ta xem như chuỗi x = abbaaa L và so sánh các dịch chuyển tạo bởi M trong việc chấp∈
nhận x với một dẫn xuất trái nhất của x trong văn phạm. Mỗi bước chuyển trong đó một biến bị
thay thế trong stack bởi 1 chuỗi tương ứng với một bước trong dẫn xuất trái nhất của x, và bước

này được thể hiện ở bên phải của dịch chuyển. Quan sát rằng tại mỗi bước, các stack chứa
(ngoài trừ Z
0
) các phần của chuỗi hiện hành tại các dẫn xuất những gì còn lại sau khi gỡ bỏ các
chuỗi kết thúc ban đầu đọc cho đến nay.
Bạn có thể theo dõi các tuần tự di chuyển khác theo đó x có thể được chấp nhận, tương ứng với
những dẫn xuất trái nhất khác của x trong CFG.
Cách tiếp cận đối lập của từ trên xuống là từ dưới lên. Trong phương pháp này, có các phần đối
lập với cả hai loại dịch chuyển trong PDA đẩy xuống. Thay vì thay thế một biến A vào stack
bằng phía bên phải của α của phép sinh A → α (mà có thể mở rộng cây xuống 1 cách hiệu quả),
PDA các loại bỏ α khỏi stack và thay thế nó bằng (hay "làm giảm nó để") A, do đó, rằng cây
được mở rộng lên trên.
Nhóm 9- Lớp KHMT Khóa 12 Trang 22
Trạng thái Đầu vào Stack ký tự Chuyển (s)

Tiểu luận Lý thuyết tính toán

Trong cả hai phương pháp tiếp cận, nội dung của stack đại diện cho một phần của chuỗi hiện
hành tại các dẫn xuất được mô phỏng, thay vì loại bỏ ký hiệu kết thúc ở đầu của phần này (cái
mà xuất hiện trên stack như là kết quả của việc áp dụng phép sinh), các PDA "chuyển" một ký
hiệu kết thúc từ đầu vào tới cuối của phần này, để chuẩn bị cho sự rút gọn.
Lưu ý rằng việc chuyển các ký hiệu vào trong stack làm đảo ngược thứ tự của chúng, chuỗi α cái
mà sẽ được rút gọn trở thành A sẽ xuất hiện trên stack ngược lại, do đó PDA bắt đầu giảm với
ký hiệu cuối cùng của α trên đầu trang của stack.
Cũng lưu ý rằng trong khi các phương pháp tiếp cận từ trên xuống chỉ đòi hỏi một dịch chuyển
để áp dụng phép sinh A → α, việc giảm tương ứng trong cách tiếp cận từ dưới lên đòi hỏi một
chuỗi các dịch chuyển, mỗi dịch chuyển cho 1 ký hiệu trong chuỗi α. Chủ yếu chúng ta quan
tâm tới các tuần tự như một tổng thể, và với sự tương đương tự nhiên giữa phép sinh một trong
văn phạm và tuần tự dịch chuyển hoàn tất sự rút gọn.
Quá trình này chấm dứt khi các ký hiệu bắt đầu S, được để lại trên stack trong lần rút gọn cuối

cùng, có được lấy ra khỏi stack và Z
0
là điều duy nhất còn lại. Toàn bộ quá trình mô phỏng một
dẫn xuất là để đảo ngược thứ tự của chuỗi đầu vào. Tại mỗi bước, chuỗi hiện hành của dẫn xuất
được hình thành bởi các nội dung của stack (ngược lại), theo sau là chuỗi đầu vào chưa đọc, bởi
vì sau mỗi lần giảm, biến trên đầu trang của stack là phần phải nhất trong chuỗi hiện hành, dẫn
xuất được mô phỏng trong đảo ngược là một dẫn xuất phải nhất.
Ví dụ 7.6: Một PDA đẩy lên cho các biểu thức đại số đơn giản
Hãy minh họa cho cách tiếp cận này bằng cách sử dụng văn phạm G, một phiên bản đơn giản
Phần 6.4, với các phép sinh:
(1) S → S+T
(2) S → T
(3) T → T*a
(4) T → a
Lý do để đánh số các phép sinh sẽ được nhìn thấy ngay. Giả sử là chuỗi đầu vào a+a*a$, trong
đó có dẫn xuất phải nhất.
Nhóm 9- Lớp KHMT Khóa 12 Trang 23

Tiểu luận Lý thuyết tính toán

S ⇒ S+T
⇒ S+T*a
⇒ S+a*a
⇒ T+a*a
⇒ a+a*a
Các bước tương đương hoặc nhóm các bước thực hiện bởi các PDA đẩy lên như chuỗi a+a*a
được xử lý thể hiển trong Bảng 7.6. Hãy nhớ rằng tại mỗi điểm, sự đảo ngược của chuỗi trên
stack (bỏ qua Z
0
), theo sau là chuỗi đầu vào chưa đọc, tạo thành chuỗi hiện hành của dẫn xuất,

và sự rút gọn diễn ra theo thứ tự ngược lại với các bước tương đương trong dẫn xuất.
Ví dụ, kể từ khi bước cuối cùng trong dẫn xuất là thay thế T bằng a, việc rút gọn đầu tiên là thay
thế a trên stack bằng T. Trong Bảng 7,7 chúng ta thể hiện các chi tiết của PDA đẩy lên không
đơn định thực hiện những dịch chuyển này. Sự dịch chuyển cho phép đầu vào tiếp theo được
chuyển lên stack, không phụ thuộc vào ký hiệu hiện hành của stack. Thứ tự các dịch chuyển
trong việc rút gọn có thể bắt đầu khi các ký hiệu đầu stack là ký hiệu cuối cùng của α, đối với
chuỗi α trong phép sinh A → α.
Nếu |α| > 1, các dịch chuyển theo trình tự tiến hành trên giả định rằng các ký hiệu phía đưới ký
hiệu đầu stack thực chất là các ký hiệu trước đây của α; chúng loại bỏ các ký tự này, từ sau ra
trước, và đặt A
Bảng 7.6| Quá trình lý của a+a*a thực hiện bởi PDA đẩy lên tương ứng với G
Nhóm 9- Lớp KHMT Khóa 12 Trang 24
Chuyển Quy tắc Stack Đầu vào

Tiểu luận Lý thuyết tính toán

Bảng 7.7 | Một PDA đẩy lên không đơn định của G
vào stack. Một khi trình tự dịch chuyển được bắt đầu, một tập hợp các trạng thái duy nhất cho
trình tự này cho phép PDA nhớ làm thế nào để hoàn thành trình tự. Giả sử ví dụ mà chúng ta
muốn rút gọn chuỗi T*a thành T. Nếu chúng ta bắt đầu ở trạng thái q ở đầu stack, bước đầu tiên
sẽ làm là loại bỏ a và nhập một trạng thái mà chúng tôi có thể gọi là q
3,1
.
(Đây là nơi chúng ta sử dụng đánh số các phép sinh. Lời giải thích để cho thấy rằng PDA đã
hoàn thành một bước của việc rút gọn với phép sinh 3). Bắt đầu từ trạng thái q
3,1
, máy dịch hy
vọng sẽ nhìn thấy * trên stack. Nếu có, nó loại bỏ * và chuyển sang trạng thái q
3,2
, từ đó dịch

chuyển khả dĩ chỉ có thể là để loại bỏ T khỏi stack, thay thế nó bằng T, và trở về trạng thái q.
Tất nhiên, tất cả các dịch chuyển tuần tự này là quá trình chuyển đổi A, chỉ ảnh hưởng đến
stack.
Ngoài các trạng thái đặc biệt được sử dụng để rút gọn, PDA nằm ở trạng thái q trong hầu hết quá
trình xử lý. Khi S lên đầu stack, nó lấy S ra và di chuyển đến q
1
, từ đó nó chấp nhận trạng thái
q2 nếu tại thời điểm đó stack trống rỗng ngoại trừ Z
0
. Bảng chữ cái đầu vào là {a, +, *} và bảng
chữ cái trong stack là {a, +, *, S, T, Z
0
}
Chú ý rằng trong sự dịch chuyển, một số kết hợp của ký hiệu đầu vào và stack có thể được bỏ
qua. Ví dụ như, khi 1 chuỗi trong ngôn ngữ được xử lý, ký hiệu + sẽ không bảo giờ xảy ra một
Nhóm 9- Lớp KHMT Khóa 12 Trang 25
Trạng thái Đầu vào Stack ký tự Chuyển

×