MỤC LỤC MỤC LỤC 2 LỜI MỞ ĐẦU 3 YÊU CẦU ĐỀ TÀI 4 PHẤN MỘT: LÝ THUYẾT 5 I. MỘT SỐ KHÁI NIỆM 5 I.1. Ngôn ngữ(Languages) 5 I.2. Văn phạm cấu trúc(Grammars): 5 I.3. Sự phân cấp Chomsky trên văn phạm 6 I.4. Ôtômát hữu hạn 6 I.5. Văn phạm không hạn chế. 7 II. VĂN PHẠM KHÔNG HẠN CHẾ VÀ CÁC MÁY TURING 8 III. VĂN PHẠM CHÍNH QUY 14 IV. VĂN PHẠM CẢM NGỮ CẢNH VÀ ÔTÔMÁT TUYẾN TÍNH GIỚI NỘI. 18 V. KẾT LUẬN 23 PHẦN HAI: BÀI TẬP 24 I. Giới thiệu RAM thô sơ. 24 II. Phân tích bài toán. 25 III. Chương trình giả ngữ. 28 IV. Chương trình RAM thô sơ. 32 V. Kết luận. 35 VI. Phụ lục mã nguồn cài đặt trên ngôn ngữ c. 35 VII. Một số kết quả 37 TÀI LIỆU THAM KHẢO 38 LỜI MỞ ĐẦU Lý thuyết tính toán là một ngành cơ bản trong lý thuyết, đóng vai trò quan trọng trong các phép tính toán, làm nền tảng xây dựng các máy và tính toán cơ bản của toán và tin học. Đây là một ngành khó, phức tạp nhưng đã ra đời khá lâu với các đóng góp của nhiều nhà khoa học. Văn phạm không hạn chế(Unregistricted grammar) là văn phạm loại không, trong phân cấp của Chomsky, đây là loại văn phạm không có ràng buộc giữa các thành phần trong tập quy tắc của nó. Văn phạm không hạn chế là tổng quát nhất trong các loại văn phạm, đây đồng thời cũng là văn phạm có ý nghĩa lớn trong việc biểu diễn ngôn ngữ, việc hiểu ý nghĩa của văn phạm không hạn chế sẽ giúp ta có cái nhìn tổng quát hơn về văn phạm và từ đó ta tìm hiểu về máy Turing chấp nhận nó đồng thời tìm hiểu thêm về văn phạm chính quy(Regular grammar) và văn phạm cảm ngữ cảnh(Context sensitive grammar) và Automat tuyến tính giới nội chấp nhận ngôn ngữ này. Máy RAM thô sơ là loại máy mà tập các lệnh của nó được rút gọn lại một cách tối thiểu nhất, nhằm chỉ sử dụng các lệnh thô sơ nhưng lại giải quyết được các bài toán con dễ dàng. Tìm hiểu máy RAM thô sơ sẽ giúp ta hiểu thêm được khả năng xử lý của các máy khi chỉ sử dụng các lệnh cơ bản để giải quyết các bài toán. Chúng tôi xin chân thành cảm ơn PGS TS Phan Huy Khánh đã giảng dạy, hướng dẫn tận tình và cung cấp tài liệu tham khảo quý báu để chúng tôi hoàn thành đề tài này. Mặc dù nhóm đã nhiệt tình tìm hiểu, nghiên cứu nhưng do thời gian có hạn, trình độ cũng còn hạn chế nên không tránh khỏi những thiếu sót. Kính mong thầy xem xét, góp ý để nhóm chúng tôi hoàn thiện, hiểu rõ hơn nữa về các bài toán này. Xin chân thành cám ơn.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
VÀ BÀI TẬP RAM THÔ SƠ
Giáo viên giảng dạy:
PGS TS PHAN HUY KHÁNH Học viên thực hiện:
Lê Ngọc Quang Thái Duy Quý Ngô Thị Hiền Trang
Đà Nẵng, 5/2010
Trang 2MỤC LỤC
MỤC LỤC 2
LỜI MỞ ĐẦU 3
YÊU CẦU ĐỀ TÀI 4
PHẤN MỘT: LÝ THUYẾT 5
I MỘT SỐ KHÁI NIỆM 5
I.1 Ngôn ngữ(Languages) 5
I.2 Văn phạm cấu trúc(Grammars): 5
I.3 Sự phân cấp Chomsky trên văn phạm 6
I.4 Ôtômát hữu hạn 6
I.5 Văn phạm không hạn chế 7
II VĂN PHẠM KHÔNG HẠN CHẾ VÀ CÁC MÁY TURING 8
III VĂN PHẠM CHÍNH QUY 14
IV VĂN PHẠM CẢM NGỮ CẢNH VÀ ÔTÔMÁT TUYẾN TÍNH GIỚI NỘI 18
V KẾT LUẬN 23
PHẦN HAI: BÀI TẬP 24
I Giới thiệu RAM thô sơ 24
II Phân tích bài toán 25
III Chương trình giả ngữ 28
IV Chương trình RAM thô sơ 32
V Kết luận 35
VI Phụ lục mã nguồn cài đặt trên ngôn ngữ c# 35
VII Một số kết quả 37
TÀI LIỆU THAM KHẢO 38
Trang 3Văn phạm không hạn chế(Unregistricted grammar) là văn phạm loại không,
trong phân cấp của Chomsky, đây là loại văn phạm không có ràng buộc giữa các thànhphần trong tập quy tắc của nó Văn phạm không hạn chế là tổng quát nhất trong cácloại văn phạm, đây đồng thời cũng là văn phạm có ý nghĩa lớn trong việc biểu diễnngôn ngữ, việc hiểu ý nghĩa của văn phạm không hạn chế sẽ giúp ta có cái nhìn tổngquát hơn về văn phạm và từ đó ta tìm hiểu về máy Turing chấp nhận nó đồng thời tìm
hiểu thêm về văn phạm chính quy(Regular grammar) và văn phạm cảm ngữ cảnh(Context - sensitive grammar) và Automat tuyến tính giới nội chấp nhận ngôn ngữ
này
Máy RAM thô sơ là loại máy mà tập các lệnh của nó được rút gọn lại một cáchtối thiểu nhất, nhằm chỉ sử dụng các lệnh thô sơ nhưng lại giải quyết được các bài toáncon dễ dàng Tìm hiểu máy RAM thô sơ sẽ giúp ta hiểu thêm được khả năng xử lý củacác máy khi chỉ sử dụng các lệnh cơ bản để giải quyết các bài toán
Chúng tôi xin chân thành cảm ơn PGS TS Phan Huy Khánh đã giảng dạy,hướng dẫn tận tình và cung cấp tài liệu tham khảo quý báu để chúng tôi hoàn thành đềtài này
Mặc dù nhóm đã nhiệt tình tìm hiểu, nghiên cứu nhưng do thời gian có hạn,trình độ cũng còn hạn chế nên không tránh khỏi những thiếu sót Kính mong thầy xemxét, góp ý để nhóm chúng tôi hoàn thiện, hiểu rõ hơn nữa về các bài toán này
Xin chân thành cám ơn
Trang 4YÊU CẦU ĐỀ TÀI
Phần lý thuyết:
Trình bày các khái niệm theo gợi ý sau đây:
- Văn phạm không hạn chế và máy Turing
Trang 5PHẤN MỘT: LÝ THUYẾT
Trước khi đi vào nội dung chính, ta tìm hiểu một số khái niệm liên quan như: ngônngữ, văn phạm, các phân cấp văn phạm của Chomsky,… Đây là các khái niệm ban đầugiúp làm nền tảng cho các kiến thức liên quan
I.I.1 Ngôn ngữ(Languages)
Định nghĩa 1.1 Một ngôn ngữ (Languages) L là một tập hợp các chuỗi của các ký
hiệu(symbols) từ một bộ chữ cái Σ nào đó Tập hợp chứa chuỗi rỗng (ký hiệu {ε}) và
tập hợp rỗng ∅ cũng được coi là ngôn ngữ
Tập hợp tất cả các chuỗi con kể cả chuỗi rỗng trên bộ chữ cái cố định Σ, ký hiệu là
Ngoài ra tập hợp tất cả các chuỗi sinh ra từ bộ chữ cái Σ, ngoại trừ chuỗi rỗng ε,
Σ + = Σ * - {ε} hay Σ * = Σ + + {ε}
I.I.2 Văn phạm cấu trúc(Grammars):
Định nghĩa 1.2.Văn phạm cấu trúc G là một hệ thống gồm bốn thành phần xác định
như sau G (V, T, P, S), trong đó:
o V: tập hợp các biến (variables) hay các ký hiệu chưa kết thúc (non terminal)
o T: tập hợp các ký hiệu kết thúc (terminal) (với V ∩ T = ∅)
o P: tập hữu hạn các quy tắc ngữ pháp được gọi là các luật sinh (production), mỗi
o S ⊂ V: ký hiệu chưa kết thúc dùng làm ký hiệu bắt đầu (start)
Người ta thường dùng các chữ cái Latinh viết hoa (A, B, C, ) để chỉ các ký hiệutrong tập biến V; các chữ cái Latinh đầu bảng viết thường (a, b, c, ) dùng chỉ các kýhiệu kết thúc thuộc tập T Chuỗi các ký hiệu kết thúc thường được biểu diễn bằng cácchữ cái Latinh cuối bảng viết thường (x, y, z, )
I.I.3 Sự phân cấp Chomsky trên văn phạm
Dựa trên các kiểu văn phạm, Chomsky đã phân loại các văn phạm theo các cấp bậcnhư sau:
Trang 6o Văn phạm loại 0: Một văn phạm không cần thỏa ràng buộc nào trên tập các
luật sinh được gọi là văn phạm loại 0 hay còn được gọi là văn phạm không hạn chế
(Unrestricted Grammar)
o Văn phạm loại 1: Nếu văn phạm G có các luật sinh dạng α → β và thỏa | β | ≥ |
α | thì G là văn phạm loại 1 hoặc còn được gọi là văn phạm cảm ngữ cảnh CSG
(Context-Sensitive Grammar).Ngôn ngữ của lớp văn phạm này được gọi là ngôn ngữ
cảm ngữ cảnh (CSL)
o Văn phạm loại 2: Nếu văn phạm G có các luật sinh dạng A → α với A là một
được gọi là văn phạm phi ngữ cảnh CFG (Context-Free Grammar) Ngôn ngữ của
lớp văn phạm này được gọi là ngôn ngữ phi ngữ cảnh (CFL)
o Văn phạm loại 3: Nếu văn phạm G có mọi luật sinh dạng tuyến tính phải
(right-linear): A → wB hoặc A → w với A, B là các biến đơn và w là chuỗi ký hiệu kết
thúc (có thể rỗng); hoặc có dạng tuyến tính trái (left-linear): A → Bw hoặc A → w thì
G là văn phạm loại 3 hay còn được gọi là văn phạm chính quy RG (Regular
Grammar) Ngôn ngữ của lớp văn phạm này được gọi là ngôn ngữ chính quy (RL)
I.I.4 Ôtômát hữu hạn
Định nghĩa 1.3 Một cách hình thức ta định nghĩa ôtômát hữu hạn là bộ gồm năm
I.I.5 Văn phạm không hạn chế
Định nghĩa 1.4 Một văn phạm không hạn chế (unrestricted grammar) là một bộ 4
bao gồm gồm G = (V, Σ, S, P), với V và Σ tương ứng là tập rời rạc của các biến và ký
β với α, β (V Σ)* và α chứa ít nhất một biến
Trang 7Ngôn ngữ của văn phạm không hạn chế có dạng:
o Γ : tập hữu hạn các ký tự được phép viết trên băng
o B : ký hiệu thuộc Γ dùng chỉ khoảng trống trên băng (Blank)
o δ : hàm chuyển ánh xạ : Q × Γ → Q × Γ × {L, R, ∅}
o (δ có thể không xác định với một vài đối số)
o F ⊆ Q là tập các trạng thái kết thúc
Trang 8II VĂN PHẠM KHÔNG HẠN CHẾ VÀ CÁC MÁY TURING
Như đã thấy ở chương trước văn phạm không hạn chế là tổng quát nhất trong phân
cấp các của Chomsky, trong phần này chúng ta sẽ đi vào văn phạm loại 0 và cho thấy
rằng ngôn ngữ thừa nhận chúng có thể được chấp nhận mởi máy Turing
Định lý 2.1 Nếu G = (V, , S, P) là văn phạm không hạn chế thì có một máy
Chứng minh:
Chúng ta chứng minh định lý bởi việc xây dựng một máy Turing không đơn
định(Nondeterministic Turing Machine – NTM) để chấp nhận L(G) Nó được tổ hợp từ
nhiều thành phần:
T = MovePastInput Simulate Equal
Nơi thành phần đầu tiên di chuyển trên băng vào đến các ô trống cho phép chuỗivào, thành phần thứ hai bắt chước một máy nhận trong G bắt đầu tại vị trí này và cho
ra kết quả chuỗi trên băng, thành phần thứ ba so sánh kết quả này với đầu vào nguyênthủy, chỉ dừng nếu hai chuỗi được chấp nhận Nếu chuỗi vào x chứa trong L(G), máy
TM không đơn định có thể chọn dãy các di chuyển để bắt chước chuỗi nhận của x, vàkết quả là T dừng; ngược lại, máy Turing hoặc phát sinh một chuỗi khác từ x hoặckhông hoàn thành một đoán nhận tất cả và T sẽ hỏng và dừng
Bộ chữ cái của TM trên băng bao gồm tất cả các ký hiệu của V và ký hiệukhác nếu có Máy hoạt động bằng cách di chuyển một ô sang phía phải nơi nó bắt đầu
và ghi ký hiệu bắt đầu S Tại điểm này, nó lặp và vòng lặp này bị ngưng trước khi bất
kỳ số nào của chuỗi lặp lại.Tại mỗi điểm bắt đầu của một dãy lặp, một phần băng TM
được sử dụng như ∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận(γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận(simulated
derivation) Chuỗi lặp tiếp theo tương ứng với quy tắc α β của G, một sự lựa chọn
không đơn định Những bước lặp tiếp theo của chuỗi lặp như sau: Có gắng tìm kiếmmột sự kiện của chuỗi α, nếu một trong chúng tìm thấy thì thay thế bởi β và sau đó trảlại băng vào để bắt đầu lại chuỗi kết quả Khi TM chọn để kết thúc vòng lặp, nó sẽ trảlại băng vào về ô trống và dừng máy
Khả năng không đơn định được biểu diễn trong TM: Khi chọn lựa một quy tắc để
sử dụng trong dãy lặp kế tiếp của vòng lặp, khi lựa chọn một sự kiện của ký hiệu đầutiên α trên băng và khi quyết định để kết thúc vòng lặp Những chọn lựa sai tại bất kỳ
Trang 9chỗ nào trong ba điểm trên có thể làm cho phần đầu bị hỏng hoặc một chuỗi trái trênbăng vẫn còn chứa các biến, hoặc bị một chuỗi trong L(G) không nối được với chuỗinguyên thủy trên băng vào T Nó có thể bị xóa, tuy nhiên cho bất kỳ x L(G), tại ítnhất một lần chọn của di chuyển là nguyên nhân TM rời x trên băng và không có cácchuỗi khác của ký tự kết thúc có thể làm ký tự cuối đầu ra của TM
cầu một bộ xóa
Trang 10Hình 2.1 Một bắt chước TM cho Ví dụ 2.1 Định lý 2.2 Nếu L * là bất kỳ một ngôn ngữ liệt kê đệ quy nào thì có một văn
phạm không hạn chế G sinh ra L
Chứng minh:
ba kiểu tập các quy tắc:
thêm một vài ký tự đánh dấu để phân biệt hai chuỗi sao chép
2 Tập các quy có thể bắt chước một dãy các chuyển động của M Một trong haibản sao chép của chuỗi nguyên thủy là giữ không thay đổi bên trái; cái còn lại biểudiễn băng vào cho M và thay đổi theo đó(Bởi vì bản sao chép thứ hai này chứa băngcác ký hiệu của T, tất cả ký hiệu trong Γ {∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận(} - bao gồm cả các biến trong vănphạm)
3 Tập các quy tắc có thể xóa đi mọi thứ nhưng không thay đổi sự sao chép củachuỗi, miễn là những di chuyển tương tự của M chấp nhận một sao chép khác lànguyên nhân làm M dừng
∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận( ∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận( R
q 5
S ∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận( L S/ a, R
q 3
q 3
Trang 11Khi M bắt đầu, có một ô trống trên ô vuông 0 của băng Thêm vào đó, M có thể sửdụng vài phần ô trống của băng bên phải của chuỗi đầu vào Điều này có nghĩa là tathực sự cần thiết một chuỗi có dạng:
(∆∆)(a 1 a 1 ) (a 2 a 2 )… (a k a k ) (∆∆)…(∆∆)
Nếu M chấp nhận x bởi việc đánh dấu một chuỗi di chuyển sử dụng n ô trống qua
bên phải của đầu vào thì dẫn xuất tương ứng của x trong G bắt đầu thay thế ít nhất n
bản sao của (∆∆) tại phần cuối của chuỗi
Bây giờ ta thấy rõ ràng làm thế nào băng của M được biểu diễn mô phỏng Trongthứ tự diễn tả cấu hình hoàn thiện của máy Turing, chúng ta cần một phương pháp cho
cả hai biểu thị là trạng thái và vị trí của băng vào Ta có thể làm cả hai bởi việc thêmvào tập các biến các trạng thái của M và chúng thuộc loại một biến xuất hiện trongchuỗi chỉ trước phần ký hiệu trong vị trí hiện tại Như vậy khi TM bắt đầu, chuỗi hiệntại là
q 0 (∆∆)(a 1 a 1 ) (a 2 a 2 )… (a k a k ) (∆∆)…(∆∆)
Nếu tại một số điểm trong quá trình xử lý, M có cấu hình
(q, b 0 b 1 … b i-1 b i b i+1 … b m)
Thì khi đó chuỗi nhận được tương ứng là
(∆b 0 )(a 1 b 1 )… (a i-1 b i-1 )q(a i b i )… (a k b k )(∆ b k+1 )… (∆ b m )( ∆∆)…(∆∆)
(Giả sử rằng m > k, m là chiều dài của chuỗi nhập nguyên thủy Trong trường hợpkhác, chuỗi không đáng kể)
Những quy tắc sau phát sinh chuỗi bắt đầu:
Trang 12p(σ a) (σ b) với (σ {∆}), và cho mỗi di chuyển
δ(p, a) = (q,b,L)
ta có các luật sinh:
(σ 1 σ 2 )p(σ 3 a) q(σ 1 σ 2 )( σ 3 b)
Nếu các di chuyển theo thứ tự của M làm ngưng trạng thái, và chỉ trong trường hợp
bộ nhận tương ứng cho ra một chuỗi với chứa kí hiệu h Các luật sinh còn lại cho phép
ta xóa đi bất kỳ chuỗi nào chứa h trong tất cả ký hiệu tại vị trí thứ hai của một cặp và
hiệu kết thúc của chuỗi nhập được chấp nhận bởi M Các tập quy tắc hoàn thành nhưsau:
h(σ 1 σ 2 ) h(σ 1 σ 2 )h (σ 1 {∆}, σ 2 Γ {∆}) (σ 1 σ 2 )h h(σ 1 σ 2 )h (σ 1 {∆}, σ 2 Γ {∆}) h(σ 1 σ 2 ) σ 1 (σ 1, σ 2 Γ {∆})
h(∆σ) ∆ (σ Γ {∆})
Các quy tắc trong hai dòng đầu đơn giản phát sinh các sao chép của h thông qua
chuỗi, và những luật sinh hai dòng cuối xóa đi những thứ cần thiết
Ví dụ 11.4 Trong ví dụ này, chúng chấp nhận ngôn ngữ đối xứng thông qua {a,
b} Chúng ta không liệt kê tất cả luật sinh trong văn phạm, chúng có khoảng 251 và
bao giờ dùng tới Thay vào đó, chúng ta cho thấy một chấp nhận của chuỗi aba trong
văn phạm Dãy tương ứng của máy Turing bắt chước di chuyển bởi chuỗi nhận đượcthấy bên phải Bởi vì máy Turing di chuyển phần trước của các ô vuông rỗng sang bênphải của chuỗi ra và không xa hơn, chuỗi nhận bắt đầu bởi sản sinh một chuỗi với mộtbản sao chép của (∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận( ∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận() bên phải Tại mỗi bước trong phép nhận, phần gạch chân chothấy bên trái của dẫn xuất được sử dụng cho bước kế tiếp:
S S(∆ ∆)
T(aa)(∆ ∆)
T (bb)(aa)(∆ ∆)
T (aa)(bb)(aa)(∆ ∆)
Trang 13 q0( )(aa)(bb)(aa)(∆ ∆) (q 0, ∆aba)
(∆ ∆) q1(aa)(bb)(aa)(∆ ∆) ├(q 1 , ∆aba)
(∆ ∆)(a ∆)q 2 (bb)(aa)(∆ ∆) ├(q 2 , ∆∆ba)
(∆ ∆)(a ∆)(bb) q 2 (aa)(∆ ∆) ├(q 2 , ∆∆ba)
(∆ ∆)(a ∆)(bb)(aa)q 2 (∆ ∆) ├(q 2 ,∆∆ba∆)
(∆ ∆)(a ∆)(bb)q 3 (aa)(∆ ∆) ├(q 3 ,∆∆ba)
Trang 14III VĂN PHẠM CHÍNH QUY
Chúng ta đã thấy được văn phạm tổng quát hơn CFG, ta trở lại các văn phạm kémtổng quát hơn CFL, đó là dạng ngôn ngữ chính quy Trong phần này, chúng ta sẽ thấyrằng chúng có thể được phát sinh bởi văn phạm không hạn chế từ đó
Ví dụ 3.1 Cho Ôtômát hữu hạn trong hình dưới đây Ngôn ngữ đón nhận là {0,
1}*{10}, tập hợp tất cả các chuỗi của {0, 1} kết thúc bởi 10
ABBCAABCBCBảng 3.1 Thứ tự xử lý chuỗi x trong Automat hữu hạn
Nếu chúng ta liệt kê các dòng của bảng này một cách liên tiếp, phân biệt bởi , tacó:
Trang 15A 1B 11B 110C 1100A 11000A 110001B 1100010C 11000101B 110001010C
Điều trông thấy rõ ràng này giống như bộ thu nhận ngữ pháp Để đón nhận ngữpháp ta đặc tả các biến thành các trạng thái của FA và bắt đầu với các quy tắc:
Là một dịch chuyển từ P vào một trạng thái chấp nhận F
Bất kỳ FA nào dẫn dắt một ngữ pháp cũng chính xác trong trường hợp này Trong
ví dụ chúng ta thật dễ dàng để thấy rằng phát sinh ngôn ngữ là chính xác bởi sự chịutrách nhiệm bởi FA Tổng quát hơn, chúng ta phải đủ điều kiện cho phát biểu yếu bởi
vì các quy tắc mà chúng ta liệt kê không có A - quy tắc nào cả, tuy nhiên nó vẫn cònđúng cho chuỗi khác null được chấp nhận bởi FA thì rõ ràng cho những phát sinh bởikết quả của văn phạm
Định nghĩa 3.1 Một văn phạm G = (V, , S, P) là chính quy nếu mọi luật sinh là
một trong hai dạng
B aC
Trang 16B a
Với B, C là các biến, a là ký tự kết thúc
Định lý 3.1 Với mọi ngôn ngữ L *, L là chính quy nếu và chỉ nếu có một văn
phạm chính quy G sao cho L(G) = L – {∆γ, khi γ là chuỗi hiện tại trong máy bắt chước đoán nhận(}
Chứng minh:
δ)chấp nhận L Định nghĩa văn phạm G = (V, , S, P) với V = Q, S = q 0 với tập các
B a C
xác định Chúng ta có thể nắm giữ kiểu dẫn xuất khác bằng cách thêm một trạng thái
{f}
P}
q
| p
P a q
} P ap q
| {p
Không có chuyển tiếp nào ngoài f
Trang 17Ngược lại, nếu x = a1 …a n được chấp nhận bởi M, khi đó | x | ≥ 1 bởi vì f chỉ là
trạng thái chấp nhận của M Một chuyển tiếp gây ra từ x được chấp nhận như sau:
q 0 a1 q 1 a2 … a 1 q n-1 a n f
Chuyển tiếp này tương ứng cho kết quả của x trong văn phạm, nó cho thấy rằng x
L(G)
Một vài tác giả chấp nhận thuật ngữ “chính quy” trong văn phạm là dạng không
hạn chế của các luật sinh với nhiều gay gắt Ta có thể cho thấy rằng một ngôn ngữ làchính quy nếu và chỉ nếu nó có thể được sinh ra, ngoại trừ khả năng chuỗi null, bởivăn phạm mà tất cả các quy tắc đều có dạng:
B x
khi B, C là các biến và x là chuỗi kết thúc khác null Văn phạm kiểu này còn được gọi
là tuyến tính
Trang 18IV VĂN PHẠM CẢM NGỮ CẢNH VÀ ÔTÔMÁT TUYẾN TÍNH GIỚI NỘI
Định nghĩa 4.1 Một văn phạm cảm ngữ cảnh(Context – sensitive grammar) là văn
phạm không hạn chế với mọi luật sinh đều có dạng:
α β với | β | ≥ | α |
Một ngôn ngữ cảm ngữ cảnh (Context sensitive language - CSL) là ngôn ngữ được
sinh ra từ văn phạm trên
Có hai lưu ý trong định nghĩa ở trên Thứ nhất về mặt thuật ngữ thì nhỏ và rờ rạc:
Ta đã định nghĩa một CSG như là “văn phạm không hạn chế” với sự hạn chế đã đặt ra
và mặc dù nghe như là “cảm ngữ cảnh” có nghĩa là “không phải phi ngữ cảnh” thì nó
rõ ràng rằng với mọi CFG nào mà không có luật sinh A thì đều là cảm ngữ cảnh.Chúng ta đi vào khả năng giống nhau của các bài toán trước đó, như là máy “khôngđơn định” rằng, thực tế là đơn định Một CSL không cần thiết phải là phi ngữ cảnh.Thứ hai rất dễ hiểu cụm từ “cảm ngữ cảnh” nếu chúng ta nhìn vào những đặc trưngkhác nhau của các ngôn ngữ Nó cho thấy rằng ngôn ngữ là cảm ngữ cảnh nếu và chỉnếu nó được sinh ra bởi văn phạm với các luật sinh dạng:
α A β α X β
với α, β, X là các chuỗi biến, các ký tự kết thúc hoặc cả hai, X ≠ null, A là biến
Ví dụ 4.1 : Trong Ví dụ 2.1, chúng ta biểu diễn văn phạm của ngôn ngữ: