SlideShare a Scribd company logo
1 of 20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
BỘ GIÁO DỤC & ĐÀO TẠO 
ĐẠI HỌC ĐÀ NẴNG 
--------------------------- 
TIỂU LUẬN MÔN HỌC 
Đề tài: 
TẬP HỢP, DÃY GHÉP VÀ TẬP TẤT CẢ CỦA NGÔN 
NGỮ PHI NGỮ CẢNH và CHƯƠNG TRÌNH RAM 
CHUẨN, RAM THÔ SƠ TÌM NGHIỆM HỆ PHƯƠNG 
TRÌNH TUYẾN TÍNH BẬC NHẤT 
Giáo viên hướng dẫn: PGS.TS. Phan Huy Khánh 
Nhóm Học viên: Huỳnh Xuân Tuy 
Lê Trọng Hiền 
Lê Tự Quốc 
Lớp: Khoa học máy tính - K11 
Đà Nẵng, tháng 03 năm 2010 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 2/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
PHẦN 1: LÝ THUYẾT 
Đề số 5: Chapter 6. Context-Free Grammar. Section 6.3. Unions, concatenation, 
and *’s of CFLs. Section 6.4. Derivation trees and Ambiguity [1] p171-179. 
6.3 TẬP HỢP, DÃY GHÉP VÀ TẬP TẤT CẢ CỦA NGÔN NGỮ PHI NGỮ 
CẢNH (CFL) 
Trong Ví dụ 6.4 chúng ta đã tìm ra cách thức sản sinh văn phạm phi ngữ 
cảnh L bằng cách biểu diễn như là một tập hợp của hai ngôn ngữ khác nhau và 
tìm cách sản sinh một văn phạm phi ngữ cảnh cho mỗi ngôn ngữ. Kỹ thuật này 
với một cách khác có thể biểu diễn dãy ghép và Kleenc *’s của ngôn ngữ phi 
ngữ cảnh (CFL) là những tiền đề cơ bản cho định lý theo sau. 
Định lý 6.1. Nếu L1 và L2 là hai ngôn ngữ phi ngữ cảnh, thì ngôn ngữ L1 È L2, 
L1L2 và L1 
* cũng là một ngôn ngữ phi ngữ cảnh. 
Chứng minh định lý. Chứng minh bằng suy luận: Nếu chúng ta bắt đầu với 
CFGs 
G1 = (V1, å, S1, P1) và G2 = (V2, å, S2, P2) 
sản sinh L1 và L2 tách biệt, chúng ta thấy rằng có 03 trường hợp để xây dựng nên 
một CFG mới. 
Một văm phạm Gu = (Vu, å, Su, Pu) được sản sinh từ L1 È L2. Điều thiết 
yếu đầu tiên, chúng ta đổi tên những thành phần của V2 nếuvì thế V1 Ç V2 = Æ, 
rồi thì chúng ta định nghĩa 
Vu = V1 È V2 È { Su } 
ở đây Su là một ký hiệu mới mà nó không có trong V1 hay V2. Và ta đặt 
Pu = P1 È P2 È { Su ® S1 | S2} 
Bằng cách này, nếu x Î L1 = L(G1), thì Su Þ* x trong văn phạm Gu bởi vì ta có 
thể bắt đầu với một dẫn xuất Su ® S1 và tiếp tục với sự nhận x từ G1, và tương tự 
cho x Î L2. Vì vậy 
L1 È L2 Í L(Gu) 
Một cách khác, nếu x nhận được Su trong Gu, thì bước đầu tiên trong bất kỳ một 
dẫn xuất nào cũng là 
Su Þ S1 hay Su Þ S2 
Trong trường hợp đầu tiên, tất cả những sản sinh đến sau điều được sử dụng bởi 
sản sinh trong G1 bởi vì không có tham biến bao gồm trong V2, và theo cách đó 
thì x Î L1; trong trường hợp thứ 2, x Î L2. Vì vậy 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 3/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
L(Gu) Í L1 È L2 
Một văn phạm Gc = (Vc, å, Sc, Pc) được sản sinh từ L1 L2. Như đã chứng 
minh ở trên, chúng ta cũng dễ dàng chỉ ra rằng V1 Ç V2 = Æ, và định nghĩa 
Vc = V1 È V2 È { Sc } 
Và bây giờ chúng ta đặt 
Pc = P1 È P2 È { Sc ® S1 S2} 
Nếu x Î L1 L2, thì x = x1 x2, ở đây xi Î Li với mỗi i. Chúng ta sẽ nhận được x 
trong Gc như sau: 
Sc Þ S1S2 Þ * x1S2 Þ * x1x2 = x 
ở đây, bước thứ 2 của dẫn xuất x1 trong G1 và bước thứ 3 của dẫn xuất x2 trong 
G2. Ngược lại, nếu x có thể là một dẫn xuất từ Sc, thì từ bước đầu tiên trong dẫn 
xuất phải là Sc Þ S1 S2, x phải là dẫn xuất từ S1 S2. Vì vậy, x = x1x2, ở đây, với 
mỗi i, xi có thể là dẫn xuất từ Si vào Gc. Tuy nhiên, V1 Ç V2 = Æ, được dẫn xuất 
từ Si vào Gc cũng chính là dẫn xuất từ Si vào Gi, và vì thế x Î L1 L2. 
Một văn phạm G* = (V, å, S, P) được sản sinh từ L1*. Đặt 
V = V1 È { S } 
ở đây S Ï V1. Ngôn ngữ L1* chứa những chuỗi từ x = x1 x2 ... xk, với mọi x2 Î L1. 
Bởi vì mỗi xi có thể được dẫn xuất từ S1, x dẫn xuất từ S mà nó không thể dẫn 
xuất từ một câu của k S1’s. Chúng ta có thể thực hiện điều này bằng cách bao 
gồm những sản sinh 
S = S1 S | D 
trong P. Vì vậy, đặt 
P = P1 È { S ® S1 S | D} 
Cần chứng minh rằng L1* Í L(G*) là đúng đắng. Ngược lại, x Î L(G*), là xóa đi 
những các x = D hay x có thể dẫn xuất từ một vài ký tự của mẫu S1 
k trong G*. 
Trong trường hợp thứ 2, chỉ từ những sản sinh trong G* bắt đầu với S1 là trong 
G1, chúng ta kết luận rằng 
x Î L1(G1)k Í L(G1)* 
Phía trước, chúng ta có một ứng dụng của định lý, chú ý rằng nó thật sự 
cần thiết trong hai phần đầu của cách chứng minh mà chắc chắn rằng V1 Ç V2 = 
Æ. Suy nghỉ về một văn phạm phi ngữ cảnh có những sản sinh 
S1 ® XA X ® c A ® a 
và 
S2 ® XB X ® d B ® b 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 4/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
tách biệt. Nếu chúng ta ứng dụng cách đặt câu trong phần đầu của cách chứng 
minh mà không gán lại cho các biến, thì kết quả của văn phạm là một dẫn xuất 
như sau 
S Þ S1 Þ XA Þ dA Þ da 
Tuy nhiên, da không phải là dẫn xuất từ bất kỳ một phần nào trong hai văn 
phạm gốc (nguyên thủy). 
Hệ quả 6.1. Mọi ngôn ngữ tự nhiên là một ngôn ngữ phi ngữ cảnh. 
Chứng minh hệ quả. Theo định nghĩa 3.1, một tập hợp các ngôn ngữ tự nhiên 
là một tập con nhỏ nhất mà nó bao gồm tất cả các ngôn ngữ Æ, {D}, và {a} (với 
mọi a Î å) và là một phép toán đóng của tập hợp, dãy ghép, và Kleene*. Mỗi 
một ngôn ngữ nguyên thủy Æ, {D}, và {a} là một ngôn ngữ phi ngữ cảnh (trong 
trường hợp đầu tiên chúng ta có thể sủ dụng một văn phạm thông thường mà 
không ó khả năng sản sinh, và trong trường hợp thứ hai là có khả năng sản sinh). 
Hệ quả từ Định lý 6.1, được sử dụng để giới thiệu một cấu trúc nguyên thủy. 
Ví dụ 6.8. Gọi L là một ngôn ngữ tương ứng với biểu thức thông thường như 
sau: 
(011 + 1) * (01) * 
Theo cách chứng minh Định lý 6.1. đã đưa ra một phương pháp tìm kiếm một 
văn phạm phi ngữ cảnh được sản sinh từ L, bắt đầu với một văn phạm cho ngôn 
ngữ {0} và {1}; tuy nhiên, chúng ta sẽ đơn giản hóa quy trình bằng cách công 
nhận một vài cách tiếp cận hiển nhiên. 
A ® 011 | 1 
sản sinh ngôn ngữ {011, 1}. Theo phần 3 của định lý, chúng ta có thể sử dụng 
những sản sinh 
B ® AB | D 
A ® 011 | 1 
để sản sinh một ngôn ngữ {011, 1}*, sử dụng ký hiệu bắt đầu B. Tương tự, 
chúng ta sử dụng 
C ® DC | D 
D ® 01 
đến dẫn xuất {01}* từ ký hiệu bắt đầu C. Cuối cùng, chúng ta sản sinh một dãy 
ghép của hai ngôn ngữ bằng cách thêm vào sản sinh S ® BC. Văn phạm sau 
cùng sẽ bắt đầu với ký hiệu S, những biến phụ A, B, C và D, và những sản sinh 
S ® BC 
B ® AB | D 
A ® 011 | 1 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 5/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
C ® DC | D 
D ® 01 
Ví dụ 6.9. Gọi L = {0i1j0k | j > i + k}. Nếu ngôn ngữ này là phi ngữ cảnh như 
kết quả của Định lý 6.1, mặc dù nó trông như một dãy ghép rắc rối. Tuy nhiên, 
điều đầu tiên phải xem như một phép gần đúng – L được viết như một dãy ghép 
L1L2L3, ở đây ba ngôn ngữ chứa đựng chuỗi 0’s, chuỗi 1’s và chuỗi 0’s theo thứ 
tự định sẵn – là dẫn đến sai. Ngôn ngữ L chứa đựng cả 011301 và 011402, tuy 
nhiên, nếu chúng ta cho phép L1 chứa đựng 01, L2 chứa đựng 13, và L3 chứa đựng 
02, thì L1L2L3 cũng chứa đựng 011302, và chuỗi này không phải là một phần tử 
của L. 
Nếu chúng ta xem một cách khác để tiếp cận nhanh L như là một dãy 
ghép, chúng ta phải chỉ ra rằng 
0i1i+k0k = 0i1i 1k0k 
Chỉ có một sự khác nhau giữa hai vế của biểu thức là với một chuỗi x trong L 
mà x tối thiểu phải ³ 1 khi ở giữa chuỗi: 
x = 0i1i 1m 1k0k (với m > 0) 
Một công thức đúng cho ngôn ngữ L là L = L1L2L3, ở đây 
L1 = {0i1i | i ³ 0} 
L2 = {1m | m ³ 0} 
L3 = {1k0k | k ³ 0} 
Phần thứ 2 của Định lý 6.1, ứng dụng thứ 2, quy về bài toán tomg CFG cho 03 
ngôn ngữ. 
Một định nghĩa đệ quy cho L1 như sau: 
D Î L1 với bất kỳ x Î L1, 0x1 Î L1 ngược lại không thuộc trong L1 
và một CFG tương đương với một sản sinh 
A ® 0A1 | D 
L3 gần như đồng nhất và có thể sinh ra từ sản sinh 
C ® 1C0 | D 
Cuối cùng, L2 có thể sinh ra từ sản sinh 
B ® 1B | 1 
(sản sinh thứ 2 là B ® 1, không có B ® A, bởi vì chúng ta chỉ muốn một cây 
khác rỗng). 
Tóm lại, văn phạm phi ngữ cảnh G = (V, å, S, P) được kết hợp chặt chẽ 
từ các mẫu được mô tả như sau: 
V = {S, A, B, C} å = {0, 1} 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 6/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
P = { S ® ABC 
A ® 0A1 | D 
B ® 1B | 1 
C ® 1C0 | D } 
Một dẫn xuất của 01402 = (01)(1)(1202), như một ví dụ sau 
S Þ ABC Þ 0A1BC Þ 0D1BC Þ 011C 
Þ 0111C0 Þ 01111C00 Þ 01111D00 = 0111100 
6.4. CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG 
Trong ngôn ngữ tự nhiên, ví dụ như Tiếng Anh, trước hết để hiểu được 
một câu thì phải hiểu được cấu trúc văn phạm, hiểu được nguồn gốc ngữ nghĩa 
của từ trong những quy luật văn phạm của ngôn ngữ. Đưa vào một văn phạm phi 
ngữ cảnh CFG (ví dụ: một đặc tả cú pháp của một ngôn ngữ lập trình) và ngữ 
nghĩa của câu từ một văn phạm, nó thường được dùng để biết nguồn gốc ngữ 
nghĩa, bởi vì nó làm sáng tỏ cho một câu đúng. Một cách tự nhiên để biểu diễn 
cấu trúc nguồn gốc là dùng cây dẫn xuất hay cây phân tích cú pháp. Tại nút gốc 
của cây là giá trị bắt đầu của dẫn xuất. Trong tường hợp tổng quát, mỗi nút trong 
của cây tương ứng với một tham biến A trong văn phạm, và nút con tương ứng 
chỉ đến một ký tự a sẽ xuất hiện bên cạnh phải của một sản xinh A ® a được sử 
dụng trong dẫn xuất. Trong trường hợp một sản xinh từ A ® A, thì nút có tên A 
được gọi là lá A. 
Trong ví dụ 6.5. chúng ta đã xem xét một CFG với sản xinh như sau: 
S ® S + S | S – S | S * S | S / S | (S) | a 
Thì dẫn xuất: 
S Þ S – S Þ S * S – S Þ a * S – S Þ a * a – S Þ a * a – a 
được biểu diễn bằng cây dẫn xuất như Hình. 6–1a. Dẫn xuất 
S Þ S – S Þ S – S / S Þ … Þ a – a / a 
S 
Được biểu diễn như cây dẫn xuất trong Hình. 6-1b. 
S - S 
S * S 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 7/20 
a a 
a 
S 
S - S 
S / S 
a a 
a 
(a) (b) 
HÌNH 6–1. 
Những cây dẫn xuất 
của hai biểu thức đại số.
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
Những biểu thức đại số thường được biểu diễn như một cây biểu thức - 
cây nhị phân mà những nút kết thúc tương ứng với những tham biến hay hằng số 
và những nút không kết thúc thì tương ứng với một biểu thức (Hình. 6-2). Một 
cây biểu thức mang những thông tin giống như một cây dẫn xuất khi nó tuân thủ 
văn phạm được mô tả trước; Tuy nhiên, chỉ có ký tự kết thúc mới được vẽ. 
- 
* a 
a a 
HÌNH 6 – 2: 
Cây biểu thức tương đương với Hình.6-1a. 
Trong trường hợp một dẫn xuất đầy đủ của một câu trong một CFL, nút 
gốc của cây dẫn xuất tương ứng với ký hiệu bắt đầu của văn phạm, và những nút 
lá, hay nút cuối, tương ứng với ký hiệu kết thúc này hay . Đôi khi nó cũng có 
ích khi coi như một dẫn xuất của một câu từ một vài biến đổi được và được xem 
như một dẫn xuất “không hoàn thành” mà sẽ kết thcs trước tất cả các biển đổi có 
thể loại bỏ (khử) từ một câu. Theo cách đó, chúng ta có thể cho phép các cây 
dân xuất có thể biến đổi tại các nút lá. 
Một bước trong dẫn xuất là thay thế một giá trị bằng một câu trên cạnh 
phải của sản sinh. Một dẫn xuất là đưa vào một dãy tuần tự của những bước, và 
trong một tuần tự là thứ tự của những bước có ý nghĩa. Dẫn xuất 
S Þ S + S Þ a + S Þ a + a 
và 
S Þ S + S Þ S + a Þ a + a 
vì vậy khác nhau. Tuy nhiên, sự khác nhau giữa chúng chỉ trong phương pháp 
biểu diễn thông thường: Tại một điểm của câu hiện tại là S + S, thì S được sử 
dụng trong bước tiếp theo là bên trái nhất của S trong dẫn xuất đầu tiên, và bên 
phải nhất trong thứ hai. Một cách chính xác là những dẫn xuất không khác nhau 
mấy và có thể nói rằng các cây dẫn xuất là giống nhau. Một cây dẫn xuất được 
đặc tả đầy đủ với những sản sinh trong dẫn xuất và ở đây cạnh bên phải nhất của 
mội sản sinh phải phù hợp với câu đón nhận. Nó không đặc tả theo thứ tự thời 
gian trong những tham biến được sử dụng, và thứ tự này không đóng vai trò 
trong việc sử dụng dẫn xuất để giải thích cấu trúc của câu. Hai dẫn xuất tương 
đương, mà hai cây dẫn xuất giống nhau thì chúng hoàn toàn giống nhau. 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 8/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
Một cách khác để so sánh hai dẫn xuất là bình thường hóa mỗi dẫn xuất, 
bằng cách quy định luật như nhau khi tham biến được thay đổi đầu tiên bất kể 
khi nào được chọn, và so sánh những phiên bản bình thường. Một dẫn xuất bên 
trái nhất là một tham biến bên trái nhất trong câu hiện tại là luôn luôn được sử 
dụng trong một bước tiếp theo. Nếu hai dẫn xuất được so sánh mà cả hai bên 
phải nhất và là vẫn khác nhau, có thể nói rằng chúng giống nhau, hay khác nhau 
đáng kể. 
Trong thực tế, hai tiêu chuẩn về “cơ bản giống nhau” là tương đương. Về 
mặt này, những dẫn xuất bên trái nhất tương đương khác nhau với cây dẫn xuất 
là hoàn toàn khác nhau. Về mặt kia, không khó để thấy rằng cây dẫn xuất tương 
đương với hai dẫn xuất bên trái nhất cũng khác nhau. Từ đó, bước đầu tiên với 
dẫn xuất khác nhau. Giả sử rằng bước này là 
xAb Þ xa1b 
trong một dẫn xuất và 
xAb Þ xa+b 
trong cách khác. Ở đây, x là một câu kết thúc, từ một dẫn xuất bên trái nhất; A là 
một tham biến, và a1 ¹ a2. Cả hai cây dẫn xuất phải có nhãn nút lá là A, và phần 
chia tương ứng của hai cây bên trái của nút này phải gống nhau bởi vì dẫn xuất 
bên trái nhất phải giống nhau ở điểm này. Vì thế cho nên hai nút có hai tập con 
khác nhau, cây không thể giống nhau. 
Chúng ta kết luận rằng một câu kết thúc mà có nhiều hơn một cây dẫn 
xuất nếu và chỉ nếu nó có nhiều hơn một dẫn xuất bên trái nhất. Chú ý rằng 
trong lý luận này “bên trái nhất” cũng dễ dàng đúng với “bên phải nhất”; một 
điều quan trọng là không phải theo một thứ tự nào, chỉ nói rằng một vài định 
nghĩa bắt buộc phải có thứ tự, để mà có hai phiên bản bình thường có thể so 
sánh theo ngữ nghĩa. 
Chúng ta phải luôn luôn ghi nhớ rằng, một câu có thể có hai hay nhiều 
dẫn xuất khác nhau trong cùng CFG. 
Định nghĩa 6.3. Một văn phạm phi nhữ cảnh G được gọi là nhập nhằng nếu có 
ít nhất một câu trong L(G) có hai hay nhiều hơn cây dẫn xuất khác nhau (hoặc, 
tương đương hai hay nhiều dẫn xuất bên trái nhất khác nhau). 
Không khó để thấy rằng định nghĩa nhập nhằng ở trên có quan hệ gần gũi 
với sự nhập nhằng mà chúng ta gặp hằng ngày trong văn đọc và văn nói. Một 
người viết một báo cáo với tiêu đề “Disabled Fly to See Carter”, tiêu đề này xuất 
hiện trong suốt nhiệm kỳ thứ 39 của chính phủ Mỹ, hầu như chắc chắn nhận ra 
một dẫn xuất như sau: 
S ® ácollective nounñ áverbñ… 
Tuy nhiên, một dẫn xuất khác 
S ® áadjectiveñ áverbñ… 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 9/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
Là một gợi ý rất hấp dẫn – hay ít nhất có thể đón được – câu chuyện. Hiểu được 
một câu hay ý nghĩa tiêu đề của một bài báo, một cách nghĩ khác, phải chọn lựa 
một văn phạm đúng để dẫn xuất cho nó. 
Ví dụ 6.10. Chúng ta quay lại ví dụ biểu thức số học CFG đã được xem xét 
trong Ví dụ 6.1, với sự sản sinh 
S ® S + S | S – S | S * S | S / S | (S) | a 
Trong ví dụ đó, chúng đa chỉ ra hai dẫn xuất khác nhau hoàn toàn của câu 
a + (a * a) / a - a 
và, thực tế là, có hai cây dẫn xuất cho cả hai bên trái nhất, vì vậy đã được chứng 
minh là một văn phạm nhập nhằng. Điều này cũng có thể được chứng minh bằng 
cách chỉ sử dụng sản sinh S ® S + S và S ® a; câu a + a + a có những sản sinh 
bên trái nhất là 
S Þ S + S Þ a + S Þ a + S + S Þ a + a + S Þ a + a + a 
và 
S Þ S + S Þ S + S + S Þ a + S + S Þ a + a + S Þ a + a + a 
Cây dẫn xuất tương ứng trong Hình. 6-3a và 6-3b. 
S 
S + S 
S + S 
a a 
a 
(a) 
S 
S + S 
S + S 
a a 
a 
(b) 
HÌNH 6–3: 
Hai cây dẫn xuất của biểu thức a + a + a. 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 10/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
Sự khác nhau trong cách biểu diễn câu a + a + a được giải thích dựa trên 
cở sở hai dẫn xuất như trong Ví dụ 6.5, bởi vì phép toán được viết như là tổng 
của hai phép toán con trong hai trường hợp; tuy nhiên, tính chất cơ bản là như 
nhau. Phép toán được mô tả là a + (a + a) trong trường hợp này, và (a + a) + a 
trong trường hợp khác. Để nói rằng sức mạnh của các dấu ngoặc đơn là loại bỏ 
tính nhập nhằng cũng như làm cho biểu thức được sáng tỏ. Chúng ta sẽ tìm hiểu 
tính chất của dấu ngoặc đơn một cách cẩn thận trong đoạn tiếp theo, khi đó 
chúng ta sẽ thảo luận một CFG không nhập nhằng tương tự như điều này. 
Thật dễ dàng để thấy điều này khi nghiên cứu Ví dụ 6.10 cho bất kỳ một 
CFG nào chứa đựng một sản sinh tất cả từ A ® AaA thì nhập nhằng. Tuy nhiên, 
có nhiều cách tinh tế để chỉ ra tính nhập nhằng, và mô tả CFG nhập nhằng như 
là bất kỳ một cách thông thường nào là khó khăn hoặc không thể (xem Phần. 
12.6). 
Ví dụ 6.11. Một ví dụ chuẩn mực về tính nhập nhằng trong ngôn ngữ lập trình là 
hiện tượng “rẽ nhánh”. Được phát biểu trong sản sinh 
ástatementñ ® if (áexpressionñ) ástatementñ | 
if (áexpressionñ) ástatementñ else ástatementñ | 
áotherstatmentñ 
mô tả phát biểu if trong Ví dụ 6.6 như là một quan hệ trong cấu trúc if – else, cả 
hai phần của ngôn ngữ C. Được phát biểu như sau: 
if (expr1) if (expr2) f( ); else g( ); 
Điều này có thể nhận được trong hai cách từ quy tắc của văn phạm. Cách 
thứ nhất, biểu đồ của phát biểu if được minh họa trong Hình. 6-4a, mệnh đề else 
với if đâu tiên. Cách thứ hai, biểu đồ của phát biểu if trong Hình. 6-4b. Một 
chương trình dịch của ngôn ngữ C sẽ thông dịch theo phát biểu thứ hai, nhưng 
không trả về kết quả như quy tắc cú pháp đưa vào. Đây là một thông tin được 
cộng thêm bắt buộc phải có sẵn trong chương trình dịch. 
ástatementñ 
f ( áexpressionñ 
) ástatementñ else ástatementñ 
expr1 
) ástatementñ 
if ( áexpressionñ g (); 
expr2 
f (); 
(a) 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 11/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
ástatementñ 
f ( áexpressionñ 
) ástatementñ 
expr1 
else ástatementñ 
Như Ví dụ 6.10, dấu ngoặc đơn hay một dấu tương đương với nó có thể 
được sử dụng để loại bỏ tính nhập nhằng trong một phát biểu. 
if (expr1) {if (expr2) f( )}; else g( ); 
cho biên dịch thứ nhất, ngược lại 
if (expr1) {if (expr2) f( ); else g( );} 
cho biên dịch thứ 2. Trong một vài ngôn ngữ khác, những “dấu ngoặc đơn” 
được thay thế bằng BEGIN …END. 
Điều này có thể thực hiện được, tuy nhiên, tìm một quy tắc văn phạm 
tương đương để kết hợp thông dịch đúng cú pháp. Một phát biểu cho công thức 
ástatementñ ® if (ást1ñ | ást2ñ 
ást1ñ ® if (áexpressionñ) then ást1ñ else ást2ñ|áotherstatmentñ 
ást2ñ ® if (áexpressionñ) then ástatementñ | 
if (áexpressionñ) then ást1ñ else ást2ñ 
Sản sinh này giống như một câu trong những quy tắc nguyên thủy và có 
thể chỉ ra sự không nhập nhằng. Mặc dầu chúng ta sẽ không chứng minh cho 
phát biểu trong hai việc này, có thể hiểu được bằng trực quan cho vế thứ 2. 
Tham biến ást1ñ được biểu diễn bằng một phát biểu trong mọi if tương ứng với 
một else, ngược lại, bất ký một phát biểu nào dẫn xuất từ ást2ñ phải chứa đựng ít 
nhất một tương ứng với if. Chỉ có giá trị tương ứng trước else trong công thức 
này là ást1ñ; bởi vì else không thể có tương ứng với bất kỳ một if nào trong dẫn 
xuất từ ást1ñ, nó phải tương ứng với if được chỉ ra trong công thức với else. 
Một điều thật thú vị khi so sách hai tập những công thức này với một văn 
phạm chính thức tương ứng trong ngôn ngữ lập trình Modula-2: 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 12/20 
g (); 
if ( áexpressionñ 
expr2 
) ástatementñ 
f (); 
HÌNH 6-4: (b) 
Hai diễn dịch của một “dangling elsse”
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
ástatementñ ® IF áexpressionñ THEN ástatementsequenceñ END | 
IF áexpressionñ THEN ástatementsequenceñ 
ELSE ástatementsequenceñ END | 
áotherstatmentñ 
Rõ ràng ở đây có sự tương đồng với quy tắc của ngôn ngữ C ở tập đầu 
tiên ở trên. Tuy nhiên, từ khóa END sau mội dãy tuần tự của một hay nhiều phát 
biểu chỉ ra một quy tác văn phạm dễ hiểu nhằm ngăn ngừa tính nhập nhằng 
“dangling else”. Trong phát biểu (cú pháp) của ngôn ngữ Modula-2 tương ứng 
thì gần gũi với cây trong Hình. 6-4a là: 
IF A1 THEN IF A2 THEN S1 END ELSE S2 END 
và Hình. 6-4b tương ứng với 
IF A1 THEN IF A2 THEN S1 ELSE S2 END END 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 13/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
PHẦN 2: BÀI TẬP 
Đề số 5: Viết chương trình RAM chuẩn và RAM thô sơ tìm nghiệm hệ phương 
trình tuyến tính: 
î í ì 
a1x b1y c1 
+ = 
a2x + b2y = 
c2 
;Bai toan dau vao la he phuong trinh bac nhat 
; a1x + b1y = c1 
; a2x + b2y = c2 
;Tinh 
; D=a1*b2 - a2*b1 
; Dx=c1*b2 - c2*b1 
; Dy=a1*c2 - a2*c1 
;Bien luan 
; D<>0 : He co mot nghiem x=Dx/D, y=Dy/D 
; D=0 : Neu Dx<>0 va Dy<>0 He vo nghiem 
; Nguoc lai He vo so nhiem 
I. MÁY RAM CHUẨN 
;Nhap dau vao 
READ 1 ;R1 <- a1 //Doc a1 vao R1 
READ 2 ;R2 <- b1 //Doc b1 vao R2 
READ 3 ;R3 <- c1 //Doc c1 vao R3 
READ 4 ;R4 <- a2 //Doc a2 vao R4 
READ 5 ;R5 <- b2 //Doc b2 vao R5 
READ 6 ;R6 <- c2 //Doc c2 vao R6 
;Tinh D,Dx,Dy 
LOAD 1 ;ACC <- R1 
MULT 5 ;ACC <- <ACC>*R1 //a1*b2 
STORE 7 ;R7 <- <ACC> 
LOAD 4 ;ACC <- R4 
MULT 2 ;ACC <- <ACC>*R2 //a2*b1 
STORE 8 ;R8 <- <ACC> 
LOAD 7 ;ACC <- R7 
SUB 8 ;ACC <- <ACC>-R8 //D=(a1*b2 - a2*b1) 
STORE 7 ;R7 <- <ACC> //D 
LOAD 3 ;ACC <- R3 
MULT 5 ;ACC <- <ACC>*R5 //c1*b2 
STORE 8 ;R8 <- <ACC> 
LOAD 6 ;ACC <- R6 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 14/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
MULT 2 ;ACC <- <ACC>*R2 //c2*b1 
STORE 9 ;R9 <- <ACC> 
LOAD 8 ;ACC <- R8 
SUB 9 ;ACC <- <ACC>-R9 //Dx=(c1*b2 - c2*b1) 
STORE 8 ;R8 <- <ACC> //Dx 
LOAD 1 ;ACC <- R1 
MULT 6 ;ACC <- <ACC>*R6 //a1*c2 
STORE 9 ;R9 <- <ACC> 
LOAD 4 ;ACC <- R4 
MULT 3 ;ACC <- <ACC>*R3 //a2*c1 
STORE 10 ;R10 <- <ACC> 
LOAD 9 ;ACC <- R9 
SUB 10 ;ACC <- <ACC>-R10 //Dy=(a1*c2 - a2*c1 
STORE 9 ;R9 <- <ACC> //Dy 
;Bien luan 
;IF_1 
LOAD 7 ;ACC <- R7 //D 
JZERO ELSE_1 ; //Nhay neu <ACC>=0 
LOAD 8 ;ACC <- R8 //Dx 
DIV 7 ;ACC <- <ACC>/R7 //Dx/D 
STORE 1 ;R1 <- <ACC> 
WRITE 1 ;In ra man hinh //x=Dx/D 
LOAD 9 ;ACC <- R9 //Dy 
DIV 7 ;ACC <- <ACC>/R7 //Dy/D 
STORE 1 ;R1 <- <ACC> 
WRITE 1 ;In ra man hinh //y=Dy/D 
JUMPENDIF_1 
ELSE_1: 
LOAD 8 ;ACC <- R8 //Dx 
JZERO ELSE_2 ; //Nhay neu <ACC>=0 
LOAD 9 ;ACC <- R9 //Dy 
JZERO ELSE_2 ; //Nhay neu <ACC>=0 
LOAD A:0 ;<ACC> <- 0 
STORE 1 ;R1 <- <ACC> 
WRITE 1 ;In 0 ra man hinh //He vo nghiem 
JUMPENDIF_1 
ELSE_2: 
LOAD A:-1 ;<ACC> <- -1 
STORE 1 ;R1 <- <ACC> 
WRITE 1 ;In -1 ra man hinh //He vo so nghiem 
ENDIF_1 
II. MÁY RAM THÔ SƠ 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 15/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
;Nhap dau vao 
READ 1 ;R1 <- a1 //Doc a1 vao R1 
READ 2 ;R2 <- b1 //Doc b1 vao R2 
READ 3 ;R3 <- c1 //Doc c1 vao R3 
READ 4 ;R4 <- a2 //Doc a2 vao R4 
READ 5 ;R5 <- b2 //Doc b2 vao R5 
READ 6 ;R6 <- c2 //Doc c2 vao R6 
;Tinh D, Dx, Dy 
;Tinh a1*b2 
;IF1 
J <1>(L17,L11) //Nhay den L17 neu a1=0, nguoc lai nhay den L11 
L11: J <5>(L17,L12) //nhay neu L17 neu b2=0, nguoc lai nhay den L12 
L12: LOAD 1 ;<ACC> <- R1 //a1 
STORE 7 ;R7 <- <ACC> 
//Dung R7 Luu tich a1*b2, gan R7=a1 
LOAD 5 ;<ACC> <- R5 //b2 
STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian 
L13: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 
J <10> (L16,L14);/ 
/Nhay den L16 neu R9=0, nhay den L14 neu R9<>0 
L14: LOAD 1 ;<ACC> <- R1 //a1 
STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian 
L15: I <7> ;R7 <- R7+1 // 
D <11> ;R11 <- R11-1 
J <11> (L13,L15) 
//Nhay den L13 neu R11=0, nhay den L15 neu R11<>0 
L16: LOAD A:0 ;<ACC> <-0 
J <0>(L18,L18) //Nhay den L18 voi moi gia tri R0 
L17: LOAD A:0 ;<ACC> <-0 
STORE 7 ;R7 <- <ACC> //Tich R7=a1*b2=0 
L18: //R7=a1*b2 
;Tinh a2*b1 
;IF1 
J <4>(L27,L21) 
//Nhay den L27 neu a1=0, nguoc lai nhay den L21 
L21: J <2>(L27,L22) //nhay neu L27 neu b2=0, nguoc lai nhay den L22 
L22: LOAD 4 ;<ACC> <- R4 //a2 
STORE 12 ;R12 <- <ACC> 
//Dung R12 Luu tich a2*b1, gan R12=a2 
LOAD 2 ;<ACC> <- R2 //b1 
STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian 
L23: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 
J <10> (L26,L24) ; 
//Nhay den L26 neu R10=0, nhay den L24 neu R10<>0 
L24: LOAD 4 ;<ACC> <- R1 //a2 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 16/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian 
L25: I <12> ;R12 <- R12+1 // 
D <11> ;R11 <- R11-1 
J <11> (L23,L25) 
//Nhay den L23 neu R11=0, nhay den L25 neu R11<>0 
L26: LOAD A:0 ;<ACC> <-0 
J <0>(L28,L28) //Nhay den L28 voi moi gia tri R0 
L27: LOAD A:0 ;<ACC> <-0 
STORE 12 ;R12 <- <ACC> //Tich R12=a2*b1=0 
L28: //R12=a2*b1 
;Tinh a1*b2-a2*b1 
J <12> (L_S11,L_S12) ; //a2*b1 
L_S12: D <12> 
D <7> 
J <12> (L_S11,L_S12) 
L_S11: //R7=a1*b2-a2*b1 
;Tinh c1*b2 
;IF1 
J <3>(L37,L31) //Nhay den L37 neu c1=0, nguoc 
lai nhay den L31 
L31: J <5>(L37,L32) //nhay neu L37 neu b2=0, nguoc lai 
nhay den L32 
L32: LOAD 3 ;<ACC> <- R3 //c1 
STORE 8 ;R8 <- <ACC> //Dung R8 Luu tich 
c1*b2, gan R8=c1 
LOAD 5 ;<ACC> <- R5 //b2 
STORE 10 ;R10 <- <ACC> //Dung R10 lam trung 
gian 
L33: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 
J <10> (L36,L34) ; //Nhay den L36 neu R10=0, nhay 
den L34 neu R10<>0 
L34: LOAD 3 ;<ACC> <- R3 //a1 
STORE 11 ;R11 <- <ACC> //Dung R11 lam trung 
gian 
L35: I <8> ;R8 <- R8+1 // 
D <11> ;R11 <- R11-1 
J <11> (L33,L35) //Nhay den L33 neu R11=0, 
nhay den L35 neu R11<>0 
L36: LOAD A:0 ;<ACC> <-0 
J <0>(L38,L38) //Nhay den L_3EIF1 voi moi gia tri 
R0 
L37: LOAD A:0 ;<ACC> <-0 
STORE 8 ;R8 <- <ACC> //Tich R8=c1*b2=0 
L38: //R8=c1*b2 
;Tinh c2*b1 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 17/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
;IF1 
J <6>(L47,L41) //Nhay den L47 neu a1=0, nguoc 
lai nhay den L41 
L41: J <2>(L47,L42) //nhay neu L47 neu b2=0, nguoc lai 
nhay den L42 
L42: LOAD 6 ;<ACC> <- R6 //c2 
STORE 12 ;R12 <- <ACC> //Dung R12 Luu tich 
c2*b1, gan R12=c2 
LOAD 2 ;<ACC> <- R2 //b1 
STORE 10 ;R10 <- <ACC> //Dung R10 lam trung 
gian 
L43: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 
J <10> (L46,L44); //Nhay den L46 neu R9=0, nhay 
den L44 neu R9<>0 
L44: LOAD 6 ;<ACC> <- R6 //c2 
STORE 11 ;R11 <- <ACC> //Dung R11 lam trung 
gian 
L45: I <12> ;R12 <- R12+1 // 
D <11> ;R11 <- R11-1 
J <11> (L43,L45) //Nhay den L43 neu R11=0, 
nhay den L45 neu R11<>0 
L46: LOAD A:0 ;<ACC> <-0 
J <0>(L48,L48) //Nhay den L48 voi moi gia tri R0 
L47: LOAD A:0 ;<ACC> <-0 
STORE 12 ;R12 <- <ACC> //Tich R12=c2*b1=0 
L48: //R12=c2*b1 
;Tinh c1*b2-c2*b1 
J <12> (L_S21,L_S22); //c2*b1 
L_S22: D <12> 
D <8> 
J <12> (L_S21,L_S22) 
L_S21: //R8=c1*b2-c2*b1 
;Tinh a1*c2 
;IF1 
J <1>(L57,L51) //Nhay den L57 neu c1=0, nguoc lai nhay den L51 
L51: J <6>(L57,L52) //Nhay neu L57 neu b2=0, nguoc lai nhay den L52 
L52: LOAD 1 ;<ACC> <- R3 //a1 
STORE 9 ;R9 <- <ACC> //Dung R9 Luu tich a1*c2, 
gan R9=a1 
LOAD 6 ;<ACC> <- R6 //c2 
STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian 
L53: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 
J <10> (L56,L54); 
//Nhay den L56 neu R10=0, nhay den L54 neu R10<>0 
L54: LOAD 1 ;<ACC> <- R1 //a1 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 18/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian 
L55: I <9> ;R9 <- R9+1 
D <11> ;R11 <- R11-1 
J <11> (L53,L55) 
//Nhay den L53 neu R11=0, nhay den L55 neu R11<>0 
L56: LOAD A:0 ;<ACC> <-0 
J <0>(L58,L58) //Nhay den L58 voi moi gia tri R0 
L57: LOAD A:0 ;<ACC> <-0 
STORE 9 ;R9 <- <ACC> //Tich R9=a1*c2=0 
L58: //R9=a1*c2 
;Tinh a2*c1 
;IF1 
J <4>(L67,L61) 
//Nhay den L671 neu a1=0, nguoc lai nhay den L61 
L61: J <3>(L67,L62) 
//Nhay neu L67 neu b2=0, nguoc lai nhay den L62 
L62: LOAD 4 ;<ACC> <- R6 //a2 
STORE 12 ;R12 <- <ACC> 
//Dung R12 Luu tich c2*b1, gan R12=c2 
LOAD 3 ;<ACC> <- R3 //c1 
STORE 10 ;R10 <- <ACC> 
//Dung R10 lam trung gian 
L63: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 
J <10> (L66,L64); 
//Nhay den L66 neu R9=0, nhay den L64 neu R9<>0 
L64: LOAD 4 ;<ACC> <- R4 //a2 
STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian 
L65: I <12> ;R12 <- R12+1 
D <11> ;R11 <- R11-1 
J <11> (L63,L65) 
//Nhay den L63 neu R11=0, nhay den L65 neu R11<>0 
L66: LOAD A:0 ;<ACC> <-0 
J <0>(L68,L68) //Nhay den L68 voi moi gia tri R0 
L67: LOAD A:0 ;<ACC> <-0 
STORE 12 ;R12 <- <ACC> //Tich R12=a2*c1=0 
L68: //R12=a2*c1 
;Tinh a1*c2-a2*c1 
J <12> (L_S31,L_S32) ; //c2*b1 
L_S32: D <12> 
D <9> 
J <12> (L_S31,L_S32) 
L_S31: //R9=a1*c2-a2*c1 
;Bien luan 
;IF_1 
J <7>(ELSE_1,L1) ; //D=0 Nhay ve ELSE_1 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 19/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
L1: LOAD A:1 ;ACC <- 1 //He co mot nghiem x=Dx/D, 
y=Dy/D 
STORE 1 ;R1 <- <ACC> 
LOAD A:0 ;<ACC> <- 0 
J <0>(ENDIF_1,ENDIF_1) //Nhay ve ENDIF_1 voi moi R0 
ELSE_1: 
J <8>(ELSE_2,L2) ; //Dx=0 Nhay ve ELSE_2 
L2: 
J <9>(ELSE_2,L3) ; //Dy=0 Nhay ve ELSE_2 
LOAD A:0 ;<ACC> <- 0 //He vo nghiem 
STORE 1 ;R1 <- <ACC> 
LOAD A:0 ;<ACC> <- 0 
J <0>(ENDIF_1,ENDIF_1) //Nhay ve ENDIF_1 voi moi R0 
ELSE_2: 
LOAD A:-1 ;<ACC> <- -1 //He vo so nghiem 
STORE 1 ;R1 <- <ACC> 
ENDIF_1: 
WRITE 1 ;In ra man hinh 
//1:He co mot nghiem, 0:he vo nghiem, -1:he vo so nghiem 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 20/20
Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 
TÀI LIỆU THAM KHẢO 
[1]. J.C. Martin, Introduction to Languages and the Theory of 
Computation, The MacGraw-Hill Companies, Inc., 1997. 
[2]. Phan Huy Khánh, Giáo trình Lý thuyết tính toán, ĐH Đà Nẵng 1999. 
[3]. Phan Huy Khánh, Lý thuyết ngôn ngữ hình thức và ôtômat, ĐH Đà 
Nẵng 1997. 
[4]. Một số thông tin tham khảo trên internet. 
Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 21/20

More Related Content

What's hot

Automata slide
Automata slide Automata slide
Automata slide vanms1989
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánVan Vo
 
Kiểu mảng_Tìm kiếm tuần tự
Kiểu mảng_Tìm kiếm tuần tựKiểu mảng_Tìm kiếm tuần tự
Kiểu mảng_Tìm kiếm tuần tựVõ Tâm Long
 
Toan roi rac (chuan)
Toan roi rac (chuan)Toan roi rac (chuan)
Toan roi rac (chuan)khachoanvn
 
Tsch csdl 01 - dhcntt
Tsch   csdl 01 - dhcnttTsch   csdl 01 - dhcntt
Tsch csdl 01 - dhcnttanhhuycan83
 
bài tập cấu trúc dữ liệu 7
bài tập cấu trúc dữ liệu 7bài tập cấu trúc dữ liệu 7
bài tập cấu trúc dữ liệu 7NguynMinh294
 
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMATBài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMATHiệp Mông Chí
 
bài tập cấu trúc dữ liệu 4
bài tập cấu trúc dữ liệu 4bài tập cấu trúc dữ liệu 4
bài tập cấu trúc dữ liệu 4NguynMinh294
 
bài tập cấu trúc dữ liệu 5
bài tập cấu trúc dữ liệu 5bài tập cấu trúc dữ liệu 5
bài tập cấu trúc dữ liệu 5NguynMinh294
 
bài tập cấu trúc dữ liệu 6
bài tập cấu trúc dữ liệu 6bài tập cấu trúc dữ liệu 6
bài tập cấu trúc dữ liệu 6NguynMinh294
 
Thuat toan sap xep trao doi
Thuat toan sap xep trao doiThuat toan sap xep trao doi
Thuat toan sap xep trao doilantbinh
 
Toán cao cấp a2
Toán cao cấp a2Toán cao cấp a2
Toán cao cấp a2bookbooming
 

What's hot (16)

Đề tài: Phương pháp giải toán trắc nghiệm phần sự biến thiên của hàm số
Đề tài: Phương pháp giải toán trắc nghiệm phần sự biến thiên của hàm sốĐề tài: Phương pháp giải toán trắc nghiệm phần sự biến thiên của hàm số
Đề tài: Phương pháp giải toán trắc nghiệm phần sự biến thiên của hàm số
 
Một số phép biến đổi trong toán ứng dụng
Một số phép biến đổi trong toán ứng dụngMột số phép biến đổi trong toán ứng dụng
Một số phép biến đổi trong toán ứng dụng
 
Automata slide
Automata slide Automata slide
Automata slide
 
Baigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật ToánBaigiang - bai4. Bài Toán Và Thuật Toán
Baigiang - bai4. Bài Toán Và Thuật Toán
 
Kiểu mảng_Tìm kiếm tuần tự
Kiểu mảng_Tìm kiếm tuần tựKiểu mảng_Tìm kiếm tuần tự
Kiểu mảng_Tìm kiếm tuần tự
 
Toan Cao Cap A1
Toan Cao Cap A1Toan Cao Cap A1
Toan Cao Cap A1
 
Toan roi rac (chuan)
Toan roi rac (chuan)Toan roi rac (chuan)
Toan roi rac (chuan)
 
Tsch csdl 01 - dhcntt
Tsch   csdl 01 - dhcnttTsch   csdl 01 - dhcntt
Tsch csdl 01 - dhcntt
 
Đề tài: Phương trình vi phân với toán tử khả nghịch phải, HOT, 9đ
Đề tài: Phương trình vi phân với toán tử khả nghịch phải, HOT, 9đĐề tài: Phương trình vi phân với toán tử khả nghịch phải, HOT, 9đ
Đề tài: Phương trình vi phân với toán tử khả nghịch phải, HOT, 9đ
 
bài tập cấu trúc dữ liệu 7
bài tập cấu trúc dữ liệu 7bài tập cấu trúc dữ liệu 7
bài tập cấu trúc dữ liệu 7
 
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMATBài Giảng Và Ngân Hàng Đề Thi OTOMAT
Bài Giảng Và Ngân Hàng Đề Thi OTOMAT
 
bài tập cấu trúc dữ liệu 4
bài tập cấu trúc dữ liệu 4bài tập cấu trúc dữ liệu 4
bài tập cấu trúc dữ liệu 4
 
bài tập cấu trúc dữ liệu 5
bài tập cấu trúc dữ liệu 5bài tập cấu trúc dữ liệu 5
bài tập cấu trúc dữ liệu 5
 
bài tập cấu trúc dữ liệu 6
bài tập cấu trúc dữ liệu 6bài tập cấu trúc dữ liệu 6
bài tập cấu trúc dữ liệu 6
 
Thuat toan sap xep trao doi
Thuat toan sap xep trao doiThuat toan sap xep trao doi
Thuat toan sap xep trao doi
 
Toán cao cấp a2
Toán cao cấp a2Toán cao cấp a2
Toán cao cấp a2
 

Viewers also liked

báo cáo thực tập kế toán tiền lương và các khoản trích theo lương
báo cáo thực tập kế toán tiền lương và các khoản trích theo lươngbáo cáo thực tập kế toán tiền lương và các khoản trích theo lương
báo cáo thực tập kế toán tiền lương và các khoản trích theo lươngCông ty TNHH Nhân thành
 
Báo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lương
Báo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lươngBáo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lương
Báo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lươngYuukiTrinh123
 
Báo cáo thực tập kế toán tiền lương và các khoản phải trích theo lương
Báo cáo thực tập kế toán tiền lương và các khoản phải trích theo lươngBáo cáo thực tập kế toán tiền lương và các khoản phải trích theo lương
Báo cáo thực tập kế toán tiền lương và các khoản phải trích theo lươnggiangnham
 
Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương Công ty TNHH Nhân thành
 
Bctt ke toan tien luong tai cong ty hong hung ha
Bctt ke toan tien luong tai cong ty hong hung haBctt ke toan tien luong tai cong ty hong hung ha
Bctt ke toan tien luong tai cong ty hong hung haThii Lác
 
Bao cao tot nghiep 2013
Bao cao tot nghiep 2013Bao cao tot nghiep 2013
Bao cao tot nghiep 2013Tran Dao
 
Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...
Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...
Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...Nguyen Minh Chung Neu
 
ke toán lương và các khoản trích theo lương
ke toán lương và các khoản trích theo lươngke toán lương và các khoản trích theo lương
ke toán lương và các khoản trích theo lươngPhương Thảo Vũ
 
Báo cáo tốt nghiệp kế toán tiền lương
Báo cáo tốt nghiệp kế toán tiền lươngBáo cáo tốt nghiệp kế toán tiền lương
Báo cáo tốt nghiệp kế toán tiền lươngHọc kế toán thực tế
 
Báo cáo thực tập tiền lương năm 2013
Báo cáo thực tập  tiền lương năm 2013Báo cáo thực tập  tiền lương năm 2013
Báo cáo thực tập tiền lương năm 2013Công ty TNHH Nhân thành
 
Khóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lươngKhóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lươngCông ty TNHH Nhân thành
 
Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016
Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016
Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016tuan nguyen
 
Báo cáo thực tập kế toán tập hợp chi phí và tính giá thành
Báo cáo thực tập kế toán tập hợp chi phí và tính giá thànhBáo cáo thực tập kế toán tập hợp chi phí và tính giá thành
Báo cáo thực tập kế toán tập hợp chi phí và tính giá thànhHọc kế toán thực tế
 
phân tích kết quả hoạt động kinh doanh
phân tích kết quả hoạt động kinh doanh phân tích kết quả hoạt động kinh doanh
phân tích kết quả hoạt động kinh doanh haiha91
 
báo cáo thực tập kế toán bán hàng và xác định kết quả bán hàng
báo cáo thực tập kế toán bán hàng và xác định kết quả bán hàngbáo cáo thực tập kế toán bán hàng và xác định kết quả bán hàng
báo cáo thực tập kế toán bán hàng và xác định kết quả bán hàngNhân Bống
 
Hướng dẫn sử dụng slide share
Hướng dẫn sử dụng  slide shareHướng dẫn sử dụng  slide share
Hướng dẫn sử dụng slide shareNgọc Khánh
 

Viewers also liked (17)

báo cáo thực tập kế toán tiền lương và các khoản trích theo lương
báo cáo thực tập kế toán tiền lương và các khoản trích theo lươngbáo cáo thực tập kế toán tiền lương và các khoản trích theo lương
báo cáo thực tập kế toán tiền lương và các khoản trích theo lương
 
Báo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lương
Báo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lươngBáo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lương
Báo cáo thực tập tổng hợp kế toán lương và các khoản trích theo lương
 
Báo cáo thực tập kế toán tiền lương và các khoản phải trích theo lương
Báo cáo thực tập kế toán tiền lương và các khoản phải trích theo lươngBáo cáo thực tập kế toán tiền lương và các khoản phải trích theo lương
Báo cáo thực tập kế toán tiền lương và các khoản phải trích theo lương
 
Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp tiền lương và các khoản trích theo lương
 
Bctt ke toan tien luong tai cong ty hong hung ha
Bctt ke toan tien luong tai cong ty hong hung haBctt ke toan tien luong tai cong ty hong hung ha
Bctt ke toan tien luong tai cong ty hong hung ha
 
Bao cao tot nghiep 2013
Bao cao tot nghiep 2013Bao cao tot nghiep 2013
Bao cao tot nghiep 2013
 
Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...
Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...
Báo cáo thực tập kế toán vốn bằng tiền tại cty tư vấn xây dựng và phat triển ...
 
Bao cao luong
Bao cao luongBao cao luong
Bao cao luong
 
ke toán lương và các khoản trích theo lương
ke toán lương và các khoản trích theo lươngke toán lương và các khoản trích theo lương
ke toán lương và các khoản trích theo lương
 
Báo cáo tốt nghiệp kế toán tiền lương
Báo cáo tốt nghiệp kế toán tiền lươngBáo cáo tốt nghiệp kế toán tiền lương
Báo cáo tốt nghiệp kế toán tiền lương
 
Báo cáo thực tập tiền lương năm 2013
Báo cáo thực tập  tiền lương năm 2013Báo cáo thực tập  tiền lương năm 2013
Báo cáo thực tập tiền lương năm 2013
 
Khóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lươngKhóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lương
Khóa luận tốt nghiệp kế toán tiền lương và các khoản trích theo lương
 
Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016
Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016
Báo cáo thực tập kế toán công nợ phải thu và phải trả năm 2016
 
Báo cáo thực tập kế toán tập hợp chi phí và tính giá thành
Báo cáo thực tập kế toán tập hợp chi phí và tính giá thànhBáo cáo thực tập kế toán tập hợp chi phí và tính giá thành
Báo cáo thực tập kế toán tập hợp chi phí và tính giá thành
 
phân tích kết quả hoạt động kinh doanh
phân tích kết quả hoạt động kinh doanh phân tích kết quả hoạt động kinh doanh
phân tích kết quả hoạt động kinh doanh
 
báo cáo thực tập kế toán bán hàng và xác định kết quả bán hàng
báo cáo thực tập kế toán bán hàng và xác định kết quả bán hàngbáo cáo thực tập kế toán bán hàng và xác định kết quả bán hàng
báo cáo thực tập kế toán bán hàng và xác định kết quả bán hàng
 
Hướng dẫn sử dụng slide share
Hướng dẫn sử dụng  slide shareHướng dẫn sử dụng  slide share
Hướng dẫn sử dụng slide share
 

Similar to Lttt

Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBình Trọng Án
 
Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016
Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016
Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016Linh Nguyễn
 
Dien tu so dhbk ha noi
Dien tu so   dhbk ha noiDien tu so   dhbk ha noi
Dien tu so dhbk ha noiHung Mobi QL
 
6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...
6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...
6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...bale102
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...Nguyen Vietnam
 
De l10-hcm-2014-toan
De l10-hcm-2014-toanDe l10-hcm-2014-toan
De l10-hcm-2014-toanngatb1989
 
Automata slide DHBKHCM [S2NUCE.blogspot.com]
Automata slide DHBKHCM  [S2NUCE.blogspot.com]Automata slide DHBKHCM  [S2NUCE.blogspot.com]
Automata slide DHBKHCM [S2NUCE.blogspot.com]Tran Quyet
 
150 dechuyen2008&2009
150 dechuyen2008&2009150 dechuyen2008&2009
150 dechuyen2008&2009Toan Isi
 
Cac dinh ly_tach_tap_loi-libre
Cac dinh ly_tach_tap_loi-libreCac dinh ly_tach_tap_loi-libre
Cac dinh ly_tach_tap_loi-librenguyen khiem
 

Similar to Lttt (20)

Bài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh HoàngBài giảng chuyên đề - Lê Minh Hoàng
Bài giảng chuyên đề - Lê Minh Hoàng
 
Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016
Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016
Đáp án đề thi môn Toán vào lớp 10 Tại Hà Nội năm 2016
 
Đề thi HSG Toán 9 Phú Thọ năm 2009 - 2010
Đề thi HSG Toán 9 Phú Thọ năm 2009 - 2010Đề thi HSG Toán 9 Phú Thọ năm 2009 - 2010
Đề thi HSG Toán 9 Phú Thọ năm 2009 - 2010
 
Luận văn: Phương trình sóng tuyến tính mô tả dao động của thanh đàn hồi nhớt
Luận văn: Phương trình sóng tuyến tính mô tả dao động của thanh đàn hồi nhớtLuận văn: Phương trình sóng tuyến tính mô tả dao động của thanh đàn hồi nhớt
Luận văn: Phương trình sóng tuyến tính mô tả dao động của thanh đàn hồi nhớt
 
Dien tu so dhbk ha noi
Dien tu so   dhbk ha noiDien tu so   dhbk ha noi
Dien tu so dhbk ha noi
 
Toan a2 bai giang
Toan a2   bai giangToan a2   bai giang
Toan a2 bai giang
 
Toan a2 bai giang
Toan a2   bai giangToan a2   bai giang
Toan a2 bai giang
 
6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...
6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...
6b49ae50-67be-40a7-b710-bf434c6c4373Chuong-1.-Dai-cuong-ve-ngon-ngu-va-bieu-d...
 
Bg automat
Bg automatBg automat
Bg automat
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
 
Dsttnc ppt k21
Dsttnc ppt k21Dsttnc ppt k21
Dsttnc ppt k21
 
Đề thi HSG Toán 9 Thái Bình năm 2011 - 2012
Đề thi HSG Toán 9 Thái Bình năm 2011 - 2012Đề thi HSG Toán 9 Thái Bình năm 2011 - 2012
Đề thi HSG Toán 9 Thái Bình năm 2011 - 2012
 
Luận văn: Nguồn với tập nhãn gồm các số đồng dư, HOT, 9đ
Luận văn: Nguồn với tập nhãn gồm các số đồng dư, HOT, 9đLuận văn: Nguồn với tập nhãn gồm các số đồng dư, HOT, 9đ
Luận văn: Nguồn với tập nhãn gồm các số đồng dư, HOT, 9đ
 
De l10-hcm-2014-toan
De l10-hcm-2014-toanDe l10-hcm-2014-toan
De l10-hcm-2014-toan
 
Automata slide v1
Automata slide v1Automata slide v1
Automata slide v1
 
Automata slide DHBKHCM [S2NUCE.blogspot.com]
Automata slide DHBKHCM  [S2NUCE.blogspot.com]Automata slide DHBKHCM  [S2NUCE.blogspot.com]
Automata slide DHBKHCM [S2NUCE.blogspot.com]
 
150 dechuyen2008&2009
150 dechuyen2008&2009150 dechuyen2008&2009
150 dechuyen2008&2009
 
Một số phép biến đổi trong toán ứng dụng
Một số phép biến đổi trong toán ứng dụngMột số phép biến đổi trong toán ứng dụng
Một số phép biến đổi trong toán ứng dụng
 
Cac dinh ly_tach_tap_loi-libre
Cac dinh ly_tach_tap_loi-libreCac dinh ly_tach_tap_loi-libre
Cac dinh ly_tach_tap_loi-libre
 
Luận văn: Hệ phương trình elliptic tuyến tính cấp hai, HOT, 9đ
Luận văn: Hệ phương trình elliptic tuyến tính cấp hai, HOT, 9đLuận văn: Hệ phương trình elliptic tuyến tính cấp hai, HOT, 9đ
Luận văn: Hệ phương trình elliptic tuyến tính cấp hai, HOT, 9đ
 

Lttt

  • 1. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 BỘ GIÁO DỤC & ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG --------------------------- TIỂU LUẬN MÔN HỌC Đề tài: TẬP HỢP, DÃY GHÉP VÀ TẬP TẤT CẢ CỦA NGÔN NGỮ PHI NGỮ CẢNH và CHƯƠNG TRÌNH RAM CHUẨN, RAM THÔ SƠ TÌM NGHIỆM HỆ PHƯƠNG TRÌNH TUYẾN TÍNH BẬC NHẤT Giáo viên hướng dẫn: PGS.TS. Phan Huy Khánh Nhóm Học viên: Huỳnh Xuân Tuy Lê Trọng Hiền Lê Tự Quốc Lớp: Khoa học máy tính - K11 Đà Nẵng, tháng 03 năm 2010 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 2/20
  • 2. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 PHẦN 1: LÝ THUYẾT Đề số 5: Chapter 6. Context-Free Grammar. Section 6.3. Unions, concatenation, and *’s of CFLs. Section 6.4. Derivation trees and Ambiguity [1] p171-179. 6.3 TẬP HỢP, DÃY GHÉP VÀ TẬP TẤT CẢ CỦA NGÔN NGỮ PHI NGỮ CẢNH (CFL) Trong Ví dụ 6.4 chúng ta đã tìm ra cách thức sản sinh văn phạm phi ngữ cảnh L bằng cách biểu diễn như là một tập hợp của hai ngôn ngữ khác nhau và tìm cách sản sinh một văn phạm phi ngữ cảnh cho mỗi ngôn ngữ. Kỹ thuật này với một cách khác có thể biểu diễn dãy ghép và Kleenc *’s của ngôn ngữ phi ngữ cảnh (CFL) là những tiền đề cơ bản cho định lý theo sau. Định lý 6.1. Nếu L1 và L2 là hai ngôn ngữ phi ngữ cảnh, thì ngôn ngữ L1 È L2, L1L2 và L1 * cũng là một ngôn ngữ phi ngữ cảnh. Chứng minh định lý. Chứng minh bằng suy luận: Nếu chúng ta bắt đầu với CFGs G1 = (V1, å, S1, P1) và G2 = (V2, å, S2, P2) sản sinh L1 và L2 tách biệt, chúng ta thấy rằng có 03 trường hợp để xây dựng nên một CFG mới. Một văm phạm Gu = (Vu, å, Su, Pu) được sản sinh từ L1 È L2. Điều thiết yếu đầu tiên, chúng ta đổi tên những thành phần của V2 nếuvì thế V1 Ç V2 = Æ, rồi thì chúng ta định nghĩa Vu = V1 È V2 È { Su } ở đây Su là một ký hiệu mới mà nó không có trong V1 hay V2. Và ta đặt Pu = P1 È P2 È { Su ® S1 | S2} Bằng cách này, nếu x Î L1 = L(G1), thì Su Þ* x trong văn phạm Gu bởi vì ta có thể bắt đầu với một dẫn xuất Su ® S1 và tiếp tục với sự nhận x từ G1, và tương tự cho x Î L2. Vì vậy L1 È L2 Í L(Gu) Một cách khác, nếu x nhận được Su trong Gu, thì bước đầu tiên trong bất kỳ một dẫn xuất nào cũng là Su Þ S1 hay Su Þ S2 Trong trường hợp đầu tiên, tất cả những sản sinh đến sau điều được sử dụng bởi sản sinh trong G1 bởi vì không có tham biến bao gồm trong V2, và theo cách đó thì x Î L1; trong trường hợp thứ 2, x Î L2. Vì vậy Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 3/20
  • 3. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 L(Gu) Í L1 È L2 Một văn phạm Gc = (Vc, å, Sc, Pc) được sản sinh từ L1 L2. Như đã chứng minh ở trên, chúng ta cũng dễ dàng chỉ ra rằng V1 Ç V2 = Æ, và định nghĩa Vc = V1 È V2 È { Sc } Và bây giờ chúng ta đặt Pc = P1 È P2 È { Sc ® S1 S2} Nếu x Î L1 L2, thì x = x1 x2, ở đây xi Î Li với mỗi i. Chúng ta sẽ nhận được x trong Gc như sau: Sc Þ S1S2 Þ * x1S2 Þ * x1x2 = x ở đây, bước thứ 2 của dẫn xuất x1 trong G1 và bước thứ 3 của dẫn xuất x2 trong G2. Ngược lại, nếu x có thể là một dẫn xuất từ Sc, thì từ bước đầu tiên trong dẫn xuất phải là Sc Þ S1 S2, x phải là dẫn xuất từ S1 S2. Vì vậy, x = x1x2, ở đây, với mỗi i, xi có thể là dẫn xuất từ Si vào Gc. Tuy nhiên, V1 Ç V2 = Æ, được dẫn xuất từ Si vào Gc cũng chính là dẫn xuất từ Si vào Gi, và vì thế x Î L1 L2. Một văn phạm G* = (V, å, S, P) được sản sinh từ L1*. Đặt V = V1 È { S } ở đây S Ï V1. Ngôn ngữ L1* chứa những chuỗi từ x = x1 x2 ... xk, với mọi x2 Î L1. Bởi vì mỗi xi có thể được dẫn xuất từ S1, x dẫn xuất từ S mà nó không thể dẫn xuất từ một câu của k S1’s. Chúng ta có thể thực hiện điều này bằng cách bao gồm những sản sinh S = S1 S | D trong P. Vì vậy, đặt P = P1 È { S ® S1 S | D} Cần chứng minh rằng L1* Í L(G*) là đúng đắng. Ngược lại, x Î L(G*), là xóa đi những các x = D hay x có thể dẫn xuất từ một vài ký tự của mẫu S1 k trong G*. Trong trường hợp thứ 2, chỉ từ những sản sinh trong G* bắt đầu với S1 là trong G1, chúng ta kết luận rằng x Î L1(G1)k Í L(G1)* Phía trước, chúng ta có một ứng dụng của định lý, chú ý rằng nó thật sự cần thiết trong hai phần đầu của cách chứng minh mà chắc chắn rằng V1 Ç V2 = Æ. Suy nghỉ về một văn phạm phi ngữ cảnh có những sản sinh S1 ® XA X ® c A ® a và S2 ® XB X ® d B ® b Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 4/20
  • 4. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 tách biệt. Nếu chúng ta ứng dụng cách đặt câu trong phần đầu của cách chứng minh mà không gán lại cho các biến, thì kết quả của văn phạm là một dẫn xuất như sau S Þ S1 Þ XA Þ dA Þ da Tuy nhiên, da không phải là dẫn xuất từ bất kỳ một phần nào trong hai văn phạm gốc (nguyên thủy). Hệ quả 6.1. Mọi ngôn ngữ tự nhiên là một ngôn ngữ phi ngữ cảnh. Chứng minh hệ quả. Theo định nghĩa 3.1, một tập hợp các ngôn ngữ tự nhiên là một tập con nhỏ nhất mà nó bao gồm tất cả các ngôn ngữ Æ, {D}, và {a} (với mọi a Î å) và là một phép toán đóng của tập hợp, dãy ghép, và Kleene*. Mỗi một ngôn ngữ nguyên thủy Æ, {D}, và {a} là một ngôn ngữ phi ngữ cảnh (trong trường hợp đầu tiên chúng ta có thể sủ dụng một văn phạm thông thường mà không ó khả năng sản sinh, và trong trường hợp thứ hai là có khả năng sản sinh). Hệ quả từ Định lý 6.1, được sử dụng để giới thiệu một cấu trúc nguyên thủy. Ví dụ 6.8. Gọi L là một ngôn ngữ tương ứng với biểu thức thông thường như sau: (011 + 1) * (01) * Theo cách chứng minh Định lý 6.1. đã đưa ra một phương pháp tìm kiếm một văn phạm phi ngữ cảnh được sản sinh từ L, bắt đầu với một văn phạm cho ngôn ngữ {0} và {1}; tuy nhiên, chúng ta sẽ đơn giản hóa quy trình bằng cách công nhận một vài cách tiếp cận hiển nhiên. A ® 011 | 1 sản sinh ngôn ngữ {011, 1}. Theo phần 3 của định lý, chúng ta có thể sử dụng những sản sinh B ® AB | D A ® 011 | 1 để sản sinh một ngôn ngữ {011, 1}*, sử dụng ký hiệu bắt đầu B. Tương tự, chúng ta sử dụng C ® DC | D D ® 01 đến dẫn xuất {01}* từ ký hiệu bắt đầu C. Cuối cùng, chúng ta sản sinh một dãy ghép của hai ngôn ngữ bằng cách thêm vào sản sinh S ® BC. Văn phạm sau cùng sẽ bắt đầu với ký hiệu S, những biến phụ A, B, C và D, và những sản sinh S ® BC B ® AB | D A ® 011 | 1 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 5/20
  • 5. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 C ® DC | D D ® 01 Ví dụ 6.9. Gọi L = {0i1j0k | j > i + k}. Nếu ngôn ngữ này là phi ngữ cảnh như kết quả của Định lý 6.1, mặc dù nó trông như một dãy ghép rắc rối. Tuy nhiên, điều đầu tiên phải xem như một phép gần đúng – L được viết như một dãy ghép L1L2L3, ở đây ba ngôn ngữ chứa đựng chuỗi 0’s, chuỗi 1’s và chuỗi 0’s theo thứ tự định sẵn – là dẫn đến sai. Ngôn ngữ L chứa đựng cả 011301 và 011402, tuy nhiên, nếu chúng ta cho phép L1 chứa đựng 01, L2 chứa đựng 13, và L3 chứa đựng 02, thì L1L2L3 cũng chứa đựng 011302, và chuỗi này không phải là một phần tử của L. Nếu chúng ta xem một cách khác để tiếp cận nhanh L như là một dãy ghép, chúng ta phải chỉ ra rằng 0i1i+k0k = 0i1i 1k0k Chỉ có một sự khác nhau giữa hai vế của biểu thức là với một chuỗi x trong L mà x tối thiểu phải ³ 1 khi ở giữa chuỗi: x = 0i1i 1m 1k0k (với m > 0) Một công thức đúng cho ngôn ngữ L là L = L1L2L3, ở đây L1 = {0i1i | i ³ 0} L2 = {1m | m ³ 0} L3 = {1k0k | k ³ 0} Phần thứ 2 của Định lý 6.1, ứng dụng thứ 2, quy về bài toán tomg CFG cho 03 ngôn ngữ. Một định nghĩa đệ quy cho L1 như sau: D Î L1 với bất kỳ x Î L1, 0x1 Î L1 ngược lại không thuộc trong L1 và một CFG tương đương với một sản sinh A ® 0A1 | D L3 gần như đồng nhất và có thể sinh ra từ sản sinh C ® 1C0 | D Cuối cùng, L2 có thể sinh ra từ sản sinh B ® 1B | 1 (sản sinh thứ 2 là B ® 1, không có B ® A, bởi vì chúng ta chỉ muốn một cây khác rỗng). Tóm lại, văn phạm phi ngữ cảnh G = (V, å, S, P) được kết hợp chặt chẽ từ các mẫu được mô tả như sau: V = {S, A, B, C} å = {0, 1} Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 6/20
  • 6. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 P = { S ® ABC A ® 0A1 | D B ® 1B | 1 C ® 1C0 | D } Một dẫn xuất của 01402 = (01)(1)(1202), như một ví dụ sau S Þ ABC Þ 0A1BC Þ 0D1BC Þ 011C Þ 0111C0 Þ 01111C00 Þ 01111D00 = 0111100 6.4. CÂY DẪN XUẤT VÀ SỰ NHẬP NHẰNG Trong ngôn ngữ tự nhiên, ví dụ như Tiếng Anh, trước hết để hiểu được một câu thì phải hiểu được cấu trúc văn phạm, hiểu được nguồn gốc ngữ nghĩa của từ trong những quy luật văn phạm của ngôn ngữ. Đưa vào một văn phạm phi ngữ cảnh CFG (ví dụ: một đặc tả cú pháp của một ngôn ngữ lập trình) và ngữ nghĩa của câu từ một văn phạm, nó thường được dùng để biết nguồn gốc ngữ nghĩa, bởi vì nó làm sáng tỏ cho một câu đúng. Một cách tự nhiên để biểu diễn cấu trúc nguồn gốc là dùng cây dẫn xuất hay cây phân tích cú pháp. Tại nút gốc của cây là giá trị bắt đầu của dẫn xuất. Trong tường hợp tổng quát, mỗi nút trong của cây tương ứng với một tham biến A trong văn phạm, và nút con tương ứng chỉ đến một ký tự a sẽ xuất hiện bên cạnh phải của một sản xinh A ® a được sử dụng trong dẫn xuất. Trong trường hợp một sản xinh từ A ® A, thì nút có tên A được gọi là lá A. Trong ví dụ 6.5. chúng ta đã xem xét một CFG với sản xinh như sau: S ® S + S | S – S | S * S | S / S | (S) | a Thì dẫn xuất: S Þ S – S Þ S * S – S Þ a * S – S Þ a * a – S Þ a * a – a được biểu diễn bằng cây dẫn xuất như Hình. 6–1a. Dẫn xuất S Þ S – S Þ S – S / S Þ … Þ a – a / a S Được biểu diễn như cây dẫn xuất trong Hình. 6-1b. S - S S * S Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 7/20 a a a S S - S S / S a a a (a) (b) HÌNH 6–1. Những cây dẫn xuất của hai biểu thức đại số.
  • 7. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 Những biểu thức đại số thường được biểu diễn như một cây biểu thức - cây nhị phân mà những nút kết thúc tương ứng với những tham biến hay hằng số và những nút không kết thúc thì tương ứng với một biểu thức (Hình. 6-2). Một cây biểu thức mang những thông tin giống như một cây dẫn xuất khi nó tuân thủ văn phạm được mô tả trước; Tuy nhiên, chỉ có ký tự kết thúc mới được vẽ. - * a a a HÌNH 6 – 2: Cây biểu thức tương đương với Hình.6-1a. Trong trường hợp một dẫn xuất đầy đủ của một câu trong một CFL, nút gốc của cây dẫn xuất tương ứng với ký hiệu bắt đầu của văn phạm, và những nút lá, hay nút cuối, tương ứng với ký hiệu kết thúc này hay . Đôi khi nó cũng có ích khi coi như một dẫn xuất của một câu từ một vài biến đổi được và được xem như một dẫn xuất “không hoàn thành” mà sẽ kết thcs trước tất cả các biển đổi có thể loại bỏ (khử) từ một câu. Theo cách đó, chúng ta có thể cho phép các cây dân xuất có thể biến đổi tại các nút lá. Một bước trong dẫn xuất là thay thế một giá trị bằng một câu trên cạnh phải của sản sinh. Một dẫn xuất là đưa vào một dãy tuần tự của những bước, và trong một tuần tự là thứ tự của những bước có ý nghĩa. Dẫn xuất S Þ S + S Þ a + S Þ a + a và S Þ S + S Þ S + a Þ a + a vì vậy khác nhau. Tuy nhiên, sự khác nhau giữa chúng chỉ trong phương pháp biểu diễn thông thường: Tại một điểm của câu hiện tại là S + S, thì S được sử dụng trong bước tiếp theo là bên trái nhất của S trong dẫn xuất đầu tiên, và bên phải nhất trong thứ hai. Một cách chính xác là những dẫn xuất không khác nhau mấy và có thể nói rằng các cây dẫn xuất là giống nhau. Một cây dẫn xuất được đặc tả đầy đủ với những sản sinh trong dẫn xuất và ở đây cạnh bên phải nhất của mội sản sinh phải phù hợp với câu đón nhận. Nó không đặc tả theo thứ tự thời gian trong những tham biến được sử dụng, và thứ tự này không đóng vai trò trong việc sử dụng dẫn xuất để giải thích cấu trúc của câu. Hai dẫn xuất tương đương, mà hai cây dẫn xuất giống nhau thì chúng hoàn toàn giống nhau. Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 8/20
  • 8. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 Một cách khác để so sánh hai dẫn xuất là bình thường hóa mỗi dẫn xuất, bằng cách quy định luật như nhau khi tham biến được thay đổi đầu tiên bất kể khi nào được chọn, và so sánh những phiên bản bình thường. Một dẫn xuất bên trái nhất là một tham biến bên trái nhất trong câu hiện tại là luôn luôn được sử dụng trong một bước tiếp theo. Nếu hai dẫn xuất được so sánh mà cả hai bên phải nhất và là vẫn khác nhau, có thể nói rằng chúng giống nhau, hay khác nhau đáng kể. Trong thực tế, hai tiêu chuẩn về “cơ bản giống nhau” là tương đương. Về mặt này, những dẫn xuất bên trái nhất tương đương khác nhau với cây dẫn xuất là hoàn toàn khác nhau. Về mặt kia, không khó để thấy rằng cây dẫn xuất tương đương với hai dẫn xuất bên trái nhất cũng khác nhau. Từ đó, bước đầu tiên với dẫn xuất khác nhau. Giả sử rằng bước này là xAb Þ xa1b trong một dẫn xuất và xAb Þ xa+b trong cách khác. Ở đây, x là một câu kết thúc, từ một dẫn xuất bên trái nhất; A là một tham biến, và a1 ¹ a2. Cả hai cây dẫn xuất phải có nhãn nút lá là A, và phần chia tương ứng của hai cây bên trái của nút này phải gống nhau bởi vì dẫn xuất bên trái nhất phải giống nhau ở điểm này. Vì thế cho nên hai nút có hai tập con khác nhau, cây không thể giống nhau. Chúng ta kết luận rằng một câu kết thúc mà có nhiều hơn một cây dẫn xuất nếu và chỉ nếu nó có nhiều hơn một dẫn xuất bên trái nhất. Chú ý rằng trong lý luận này “bên trái nhất” cũng dễ dàng đúng với “bên phải nhất”; một điều quan trọng là không phải theo một thứ tự nào, chỉ nói rằng một vài định nghĩa bắt buộc phải có thứ tự, để mà có hai phiên bản bình thường có thể so sánh theo ngữ nghĩa. Chúng ta phải luôn luôn ghi nhớ rằng, một câu có thể có hai hay nhiều dẫn xuất khác nhau trong cùng CFG. Định nghĩa 6.3. Một văn phạm phi nhữ cảnh G được gọi là nhập nhằng nếu có ít nhất một câu trong L(G) có hai hay nhiều hơn cây dẫn xuất khác nhau (hoặc, tương đương hai hay nhiều dẫn xuất bên trái nhất khác nhau). Không khó để thấy rằng định nghĩa nhập nhằng ở trên có quan hệ gần gũi với sự nhập nhằng mà chúng ta gặp hằng ngày trong văn đọc và văn nói. Một người viết một báo cáo với tiêu đề “Disabled Fly to See Carter”, tiêu đề này xuất hiện trong suốt nhiệm kỳ thứ 39 của chính phủ Mỹ, hầu như chắc chắn nhận ra một dẫn xuất như sau: S ® ácollective nounñ áverbñ… Tuy nhiên, một dẫn xuất khác S ® áadjectiveñ áverbñ… Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 9/20
  • 9. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 Là một gợi ý rất hấp dẫn – hay ít nhất có thể đón được – câu chuyện. Hiểu được một câu hay ý nghĩa tiêu đề của một bài báo, một cách nghĩ khác, phải chọn lựa một văn phạm đúng để dẫn xuất cho nó. Ví dụ 6.10. Chúng ta quay lại ví dụ biểu thức số học CFG đã được xem xét trong Ví dụ 6.1, với sự sản sinh S ® S + S | S – S | S * S | S / S | (S) | a Trong ví dụ đó, chúng đa chỉ ra hai dẫn xuất khác nhau hoàn toàn của câu a + (a * a) / a - a và, thực tế là, có hai cây dẫn xuất cho cả hai bên trái nhất, vì vậy đã được chứng minh là một văn phạm nhập nhằng. Điều này cũng có thể được chứng minh bằng cách chỉ sử dụng sản sinh S ® S + S và S ® a; câu a + a + a có những sản sinh bên trái nhất là S Þ S + S Þ a + S Þ a + S + S Þ a + a + S Þ a + a + a và S Þ S + S Þ S + S + S Þ a + S + S Þ a + a + S Þ a + a + a Cây dẫn xuất tương ứng trong Hình. 6-3a và 6-3b. S S + S S + S a a a (a) S S + S S + S a a a (b) HÌNH 6–3: Hai cây dẫn xuất của biểu thức a + a + a. Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 10/20
  • 10. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 Sự khác nhau trong cách biểu diễn câu a + a + a được giải thích dựa trên cở sở hai dẫn xuất như trong Ví dụ 6.5, bởi vì phép toán được viết như là tổng của hai phép toán con trong hai trường hợp; tuy nhiên, tính chất cơ bản là như nhau. Phép toán được mô tả là a + (a + a) trong trường hợp này, và (a + a) + a trong trường hợp khác. Để nói rằng sức mạnh của các dấu ngoặc đơn là loại bỏ tính nhập nhằng cũng như làm cho biểu thức được sáng tỏ. Chúng ta sẽ tìm hiểu tính chất của dấu ngoặc đơn một cách cẩn thận trong đoạn tiếp theo, khi đó chúng ta sẽ thảo luận một CFG không nhập nhằng tương tự như điều này. Thật dễ dàng để thấy điều này khi nghiên cứu Ví dụ 6.10 cho bất kỳ một CFG nào chứa đựng một sản sinh tất cả từ A ® AaA thì nhập nhằng. Tuy nhiên, có nhiều cách tinh tế để chỉ ra tính nhập nhằng, và mô tả CFG nhập nhằng như là bất kỳ một cách thông thường nào là khó khăn hoặc không thể (xem Phần. 12.6). Ví dụ 6.11. Một ví dụ chuẩn mực về tính nhập nhằng trong ngôn ngữ lập trình là hiện tượng “rẽ nhánh”. Được phát biểu trong sản sinh ástatementñ ® if (áexpressionñ) ástatementñ | if (áexpressionñ) ástatementñ else ástatementñ | áotherstatmentñ mô tả phát biểu if trong Ví dụ 6.6 như là một quan hệ trong cấu trúc if – else, cả hai phần của ngôn ngữ C. Được phát biểu như sau: if (expr1) if (expr2) f( ); else g( ); Điều này có thể nhận được trong hai cách từ quy tắc của văn phạm. Cách thứ nhất, biểu đồ của phát biểu if được minh họa trong Hình. 6-4a, mệnh đề else với if đâu tiên. Cách thứ hai, biểu đồ của phát biểu if trong Hình. 6-4b. Một chương trình dịch của ngôn ngữ C sẽ thông dịch theo phát biểu thứ hai, nhưng không trả về kết quả như quy tắc cú pháp đưa vào. Đây là một thông tin được cộng thêm bắt buộc phải có sẵn trong chương trình dịch. ástatementñ f ( áexpressionñ ) ástatementñ else ástatementñ expr1 ) ástatementñ if ( áexpressionñ g (); expr2 f (); (a) Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 11/20
  • 11. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 ástatementñ f ( áexpressionñ ) ástatementñ expr1 else ástatementñ Như Ví dụ 6.10, dấu ngoặc đơn hay một dấu tương đương với nó có thể được sử dụng để loại bỏ tính nhập nhằng trong một phát biểu. if (expr1) {if (expr2) f( )}; else g( ); cho biên dịch thứ nhất, ngược lại if (expr1) {if (expr2) f( ); else g( );} cho biên dịch thứ 2. Trong một vài ngôn ngữ khác, những “dấu ngoặc đơn” được thay thế bằng BEGIN …END. Điều này có thể thực hiện được, tuy nhiên, tìm một quy tắc văn phạm tương đương để kết hợp thông dịch đúng cú pháp. Một phát biểu cho công thức ástatementñ ® if (ást1ñ | ást2ñ ást1ñ ® if (áexpressionñ) then ást1ñ else ást2ñ|áotherstatmentñ ást2ñ ® if (áexpressionñ) then ástatementñ | if (áexpressionñ) then ást1ñ else ást2ñ Sản sinh này giống như một câu trong những quy tắc nguyên thủy và có thể chỉ ra sự không nhập nhằng. Mặc dầu chúng ta sẽ không chứng minh cho phát biểu trong hai việc này, có thể hiểu được bằng trực quan cho vế thứ 2. Tham biến ást1ñ được biểu diễn bằng một phát biểu trong mọi if tương ứng với một else, ngược lại, bất ký một phát biểu nào dẫn xuất từ ást2ñ phải chứa đựng ít nhất một tương ứng với if. Chỉ có giá trị tương ứng trước else trong công thức này là ást1ñ; bởi vì else không thể có tương ứng với bất kỳ một if nào trong dẫn xuất từ ást1ñ, nó phải tương ứng với if được chỉ ra trong công thức với else. Một điều thật thú vị khi so sách hai tập những công thức này với một văn phạm chính thức tương ứng trong ngôn ngữ lập trình Modula-2: Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 12/20 g (); if ( áexpressionñ expr2 ) ástatementñ f (); HÌNH 6-4: (b) Hai diễn dịch của một “dangling elsse”
  • 12. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 ástatementñ ® IF áexpressionñ THEN ástatementsequenceñ END | IF áexpressionñ THEN ástatementsequenceñ ELSE ástatementsequenceñ END | áotherstatmentñ Rõ ràng ở đây có sự tương đồng với quy tắc của ngôn ngữ C ở tập đầu tiên ở trên. Tuy nhiên, từ khóa END sau mội dãy tuần tự của một hay nhiều phát biểu chỉ ra một quy tác văn phạm dễ hiểu nhằm ngăn ngừa tính nhập nhằng “dangling else”. Trong phát biểu (cú pháp) của ngôn ngữ Modula-2 tương ứng thì gần gũi với cây trong Hình. 6-4a là: IF A1 THEN IF A2 THEN S1 END ELSE S2 END và Hình. 6-4b tương ứng với IF A1 THEN IF A2 THEN S1 ELSE S2 END END Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 13/20
  • 13. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 PHẦN 2: BÀI TẬP Đề số 5: Viết chương trình RAM chuẩn và RAM thô sơ tìm nghiệm hệ phương trình tuyến tính: î í ì a1x b1y c1 + = a2x + b2y = c2 ;Bai toan dau vao la he phuong trinh bac nhat ; a1x + b1y = c1 ; a2x + b2y = c2 ;Tinh ; D=a1*b2 - a2*b1 ; Dx=c1*b2 - c2*b1 ; Dy=a1*c2 - a2*c1 ;Bien luan ; D<>0 : He co mot nghiem x=Dx/D, y=Dy/D ; D=0 : Neu Dx<>0 va Dy<>0 He vo nghiem ; Nguoc lai He vo so nhiem I. MÁY RAM CHUẨN ;Nhap dau vao READ 1 ;R1 <- a1 //Doc a1 vao R1 READ 2 ;R2 <- b1 //Doc b1 vao R2 READ 3 ;R3 <- c1 //Doc c1 vao R3 READ 4 ;R4 <- a2 //Doc a2 vao R4 READ 5 ;R5 <- b2 //Doc b2 vao R5 READ 6 ;R6 <- c2 //Doc c2 vao R6 ;Tinh D,Dx,Dy LOAD 1 ;ACC <- R1 MULT 5 ;ACC <- <ACC>*R1 //a1*b2 STORE 7 ;R7 <- <ACC> LOAD 4 ;ACC <- R4 MULT 2 ;ACC <- <ACC>*R2 //a2*b1 STORE 8 ;R8 <- <ACC> LOAD 7 ;ACC <- R7 SUB 8 ;ACC <- <ACC>-R8 //D=(a1*b2 - a2*b1) STORE 7 ;R7 <- <ACC> //D LOAD 3 ;ACC <- R3 MULT 5 ;ACC <- <ACC>*R5 //c1*b2 STORE 8 ;R8 <- <ACC> LOAD 6 ;ACC <- R6 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 14/20
  • 14. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 MULT 2 ;ACC <- <ACC>*R2 //c2*b1 STORE 9 ;R9 <- <ACC> LOAD 8 ;ACC <- R8 SUB 9 ;ACC <- <ACC>-R9 //Dx=(c1*b2 - c2*b1) STORE 8 ;R8 <- <ACC> //Dx LOAD 1 ;ACC <- R1 MULT 6 ;ACC <- <ACC>*R6 //a1*c2 STORE 9 ;R9 <- <ACC> LOAD 4 ;ACC <- R4 MULT 3 ;ACC <- <ACC>*R3 //a2*c1 STORE 10 ;R10 <- <ACC> LOAD 9 ;ACC <- R9 SUB 10 ;ACC <- <ACC>-R10 //Dy=(a1*c2 - a2*c1 STORE 9 ;R9 <- <ACC> //Dy ;Bien luan ;IF_1 LOAD 7 ;ACC <- R7 //D JZERO ELSE_1 ; //Nhay neu <ACC>=0 LOAD 8 ;ACC <- R8 //Dx DIV 7 ;ACC <- <ACC>/R7 //Dx/D STORE 1 ;R1 <- <ACC> WRITE 1 ;In ra man hinh //x=Dx/D LOAD 9 ;ACC <- R9 //Dy DIV 7 ;ACC <- <ACC>/R7 //Dy/D STORE 1 ;R1 <- <ACC> WRITE 1 ;In ra man hinh //y=Dy/D JUMPENDIF_1 ELSE_1: LOAD 8 ;ACC <- R8 //Dx JZERO ELSE_2 ; //Nhay neu <ACC>=0 LOAD 9 ;ACC <- R9 //Dy JZERO ELSE_2 ; //Nhay neu <ACC>=0 LOAD A:0 ;<ACC> <- 0 STORE 1 ;R1 <- <ACC> WRITE 1 ;In 0 ra man hinh //He vo nghiem JUMPENDIF_1 ELSE_2: LOAD A:-1 ;<ACC> <- -1 STORE 1 ;R1 <- <ACC> WRITE 1 ;In -1 ra man hinh //He vo so nghiem ENDIF_1 II. MÁY RAM THÔ SƠ Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 15/20
  • 15. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 ;Nhap dau vao READ 1 ;R1 <- a1 //Doc a1 vao R1 READ 2 ;R2 <- b1 //Doc b1 vao R2 READ 3 ;R3 <- c1 //Doc c1 vao R3 READ 4 ;R4 <- a2 //Doc a2 vao R4 READ 5 ;R5 <- b2 //Doc b2 vao R5 READ 6 ;R6 <- c2 //Doc c2 vao R6 ;Tinh D, Dx, Dy ;Tinh a1*b2 ;IF1 J <1>(L17,L11) //Nhay den L17 neu a1=0, nguoc lai nhay den L11 L11: J <5>(L17,L12) //nhay neu L17 neu b2=0, nguoc lai nhay den L12 L12: LOAD 1 ;<ACC> <- R1 //a1 STORE 7 ;R7 <- <ACC> //Dung R7 Luu tich a1*b2, gan R7=a1 LOAD 5 ;<ACC> <- R5 //b2 STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian L13: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 J <10> (L16,L14);/ /Nhay den L16 neu R9=0, nhay den L14 neu R9<>0 L14: LOAD 1 ;<ACC> <- R1 //a1 STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian L15: I <7> ;R7 <- R7+1 // D <11> ;R11 <- R11-1 J <11> (L13,L15) //Nhay den L13 neu R11=0, nhay den L15 neu R11<>0 L16: LOAD A:0 ;<ACC> <-0 J <0>(L18,L18) //Nhay den L18 voi moi gia tri R0 L17: LOAD A:0 ;<ACC> <-0 STORE 7 ;R7 <- <ACC> //Tich R7=a1*b2=0 L18: //R7=a1*b2 ;Tinh a2*b1 ;IF1 J <4>(L27,L21) //Nhay den L27 neu a1=0, nguoc lai nhay den L21 L21: J <2>(L27,L22) //nhay neu L27 neu b2=0, nguoc lai nhay den L22 L22: LOAD 4 ;<ACC> <- R4 //a2 STORE 12 ;R12 <- <ACC> //Dung R12 Luu tich a2*b1, gan R12=a2 LOAD 2 ;<ACC> <- R2 //b1 STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian L23: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 J <10> (L26,L24) ; //Nhay den L26 neu R10=0, nhay den L24 neu R10<>0 L24: LOAD 4 ;<ACC> <- R1 //a2 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 16/20
  • 16. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian L25: I <12> ;R12 <- R12+1 // D <11> ;R11 <- R11-1 J <11> (L23,L25) //Nhay den L23 neu R11=0, nhay den L25 neu R11<>0 L26: LOAD A:0 ;<ACC> <-0 J <0>(L28,L28) //Nhay den L28 voi moi gia tri R0 L27: LOAD A:0 ;<ACC> <-0 STORE 12 ;R12 <- <ACC> //Tich R12=a2*b1=0 L28: //R12=a2*b1 ;Tinh a1*b2-a2*b1 J <12> (L_S11,L_S12) ; //a2*b1 L_S12: D <12> D <7> J <12> (L_S11,L_S12) L_S11: //R7=a1*b2-a2*b1 ;Tinh c1*b2 ;IF1 J <3>(L37,L31) //Nhay den L37 neu c1=0, nguoc lai nhay den L31 L31: J <5>(L37,L32) //nhay neu L37 neu b2=0, nguoc lai nhay den L32 L32: LOAD 3 ;<ACC> <- R3 //c1 STORE 8 ;R8 <- <ACC> //Dung R8 Luu tich c1*b2, gan R8=c1 LOAD 5 ;<ACC> <- R5 //b2 STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian L33: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 J <10> (L36,L34) ; //Nhay den L36 neu R10=0, nhay den L34 neu R10<>0 L34: LOAD 3 ;<ACC> <- R3 //a1 STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian L35: I <8> ;R8 <- R8+1 // D <11> ;R11 <- R11-1 J <11> (L33,L35) //Nhay den L33 neu R11=0, nhay den L35 neu R11<>0 L36: LOAD A:0 ;<ACC> <-0 J <0>(L38,L38) //Nhay den L_3EIF1 voi moi gia tri R0 L37: LOAD A:0 ;<ACC> <-0 STORE 8 ;R8 <- <ACC> //Tich R8=c1*b2=0 L38: //R8=c1*b2 ;Tinh c2*b1 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 17/20
  • 17. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 ;IF1 J <6>(L47,L41) //Nhay den L47 neu a1=0, nguoc lai nhay den L41 L41: J <2>(L47,L42) //nhay neu L47 neu b2=0, nguoc lai nhay den L42 L42: LOAD 6 ;<ACC> <- R6 //c2 STORE 12 ;R12 <- <ACC> //Dung R12 Luu tich c2*b1, gan R12=c2 LOAD 2 ;<ACC> <- R2 //b1 STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian L43: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 J <10> (L46,L44); //Nhay den L46 neu R9=0, nhay den L44 neu R9<>0 L44: LOAD 6 ;<ACC> <- R6 //c2 STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian L45: I <12> ;R12 <- R12+1 // D <11> ;R11 <- R11-1 J <11> (L43,L45) //Nhay den L43 neu R11=0, nhay den L45 neu R11<>0 L46: LOAD A:0 ;<ACC> <-0 J <0>(L48,L48) //Nhay den L48 voi moi gia tri R0 L47: LOAD A:0 ;<ACC> <-0 STORE 12 ;R12 <- <ACC> //Tich R12=c2*b1=0 L48: //R12=c2*b1 ;Tinh c1*b2-c2*b1 J <12> (L_S21,L_S22); //c2*b1 L_S22: D <12> D <8> J <12> (L_S21,L_S22) L_S21: //R8=c1*b2-c2*b1 ;Tinh a1*c2 ;IF1 J <1>(L57,L51) //Nhay den L57 neu c1=0, nguoc lai nhay den L51 L51: J <6>(L57,L52) //Nhay neu L57 neu b2=0, nguoc lai nhay den L52 L52: LOAD 1 ;<ACC> <- R3 //a1 STORE 9 ;R9 <- <ACC> //Dung R9 Luu tich a1*c2, gan R9=a1 LOAD 6 ;<ACC> <- R6 //c2 STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian L53: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 J <10> (L56,L54); //Nhay den L56 neu R10=0, nhay den L54 neu R10<>0 L54: LOAD 1 ;<ACC> <- R1 //a1 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 18/20
  • 18. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian L55: I <9> ;R9 <- R9+1 D <11> ;R11 <- R11-1 J <11> (L53,L55) //Nhay den L53 neu R11=0, nhay den L55 neu R11<>0 L56: LOAD A:0 ;<ACC> <-0 J <0>(L58,L58) //Nhay den L58 voi moi gia tri R0 L57: LOAD A:0 ;<ACC> <-0 STORE 9 ;R9 <- <ACC> //Tich R9=a1*c2=0 L58: //R9=a1*c2 ;Tinh a2*c1 ;IF1 J <4>(L67,L61) //Nhay den L671 neu a1=0, nguoc lai nhay den L61 L61: J <3>(L67,L62) //Nhay neu L67 neu b2=0, nguoc lai nhay den L62 L62: LOAD 4 ;<ACC> <- R6 //a2 STORE 12 ;R12 <- <ACC> //Dung R12 Luu tich c2*b1, gan R12=c2 LOAD 3 ;<ACC> <- R3 //c1 STORE 10 ;R10 <- <ACC> //Dung R10 lam trung gian L63: D <10> ;R10 <- R10-1 //Giam R10 di 1, For 1 J <10> (L66,L64); //Nhay den L66 neu R9=0, nhay den L64 neu R9<>0 L64: LOAD 4 ;<ACC> <- R4 //a2 STORE 11 ;R11 <- <ACC> //Dung R11 lam trung gian L65: I <12> ;R12 <- R12+1 D <11> ;R11 <- R11-1 J <11> (L63,L65) //Nhay den L63 neu R11=0, nhay den L65 neu R11<>0 L66: LOAD A:0 ;<ACC> <-0 J <0>(L68,L68) //Nhay den L68 voi moi gia tri R0 L67: LOAD A:0 ;<ACC> <-0 STORE 12 ;R12 <- <ACC> //Tich R12=a2*c1=0 L68: //R12=a2*c1 ;Tinh a1*c2-a2*c1 J <12> (L_S31,L_S32) ; //c2*b1 L_S32: D <12> D <9> J <12> (L_S31,L_S32) L_S31: //R9=a1*c2-a2*c1 ;Bien luan ;IF_1 J <7>(ELSE_1,L1) ; //D=0 Nhay ve ELSE_1 Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 19/20
  • 19. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 L1: LOAD A:1 ;ACC <- 1 //He co mot nghiem x=Dx/D, y=Dy/D STORE 1 ;R1 <- <ACC> LOAD A:0 ;<ACC> <- 0 J <0>(ENDIF_1,ENDIF_1) //Nhay ve ENDIF_1 voi moi R0 ELSE_1: J <8>(ELSE_2,L2) ; //Dx=0 Nhay ve ELSE_2 L2: J <9>(ELSE_2,L3) ; //Dy=0 Nhay ve ELSE_2 LOAD A:0 ;<ACC> <- 0 //He vo nghiem STORE 1 ;R1 <- <ACC> LOAD A:0 ;<ACC> <- 0 J <0>(ENDIF_1,ENDIF_1) //Nhay ve ENDIF_1 voi moi R0 ELSE_2: LOAD A:-1 ;<ACC> <- -1 //He vo so nghiem STORE 1 ;R1 <- <ACC> ENDIF_1: WRITE 1 ;In ra man hinh //1:He co mot nghiem, 0:he vo nghiem, -1:he vo so nghiem Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 20/20
  • 20. Tiểu luận môn học: Lý thuyết Tính toán Đề tài: Lý thuyết: 05, Bài tập: 05 TÀI LIỆU THAM KHẢO [1]. J.C. Martin, Introduction to Languages and the Theory of Computation, The MacGraw-Hill Companies, Inc., 1997. [2]. Phan Huy Khánh, Giáo trình Lý thuyết tính toán, ĐH Đà Nẵng 1999. [3]. Phan Huy Khánh, Lý thuyết ngôn ngữ hình thức và ôtômat, ĐH Đà Nẵng 1997. [4]. Một số thông tin tham khảo trên internet. Nhóm 1 – Khoa học Máy tính K11 (2009 – 2011) Trang 21/20