• Ngôn ngữ tự nhiên: tiếng Việt, tiếng Anh, … • Ngôn ngữ lập trình: Pascal, C/C++, … • Là tập hợp các câu theo cấu trúc quy ñịnh nào ñó • Biểu thị các ý nghĩ, các sự kiện hay các khái ni
Trang 1• Mon, Tue, Wed, Thu, Fri, Sat, Sun
• Tập hợp là tập các ñối tượng không
Trang 3• L không là quan hệ phản xạ hay ñối xứng
• E và P mang tính phản xạ, ñối xứng và bắc cầu
12
• E và P là quan hệ tương ñương
• L không là quan hệ tương ñương
Trang 4• Nếu (a,b) ∈ R thì (a,b) ∈R+
• Nếu (a,b) ∈ ∈ ∈ R+ và (b,c) ∈ ∈ ∈ R thì (a,c) ∈ ∈ ∈ R+
• Không còn gì thêm trong R+
) 1 n 2 )(
1 n ( n i
n
0 i
2 + +
=
∑
=
Trang 6• Khái niệm ngôn ngữ
• Cách biểu diễn ngôn ngữ
• Văn phạm
• Sự phân lớp văn phạm
là một thực thể trừu tượng mà ta không ñịnh nghĩa ñược một cách hình thức
• Các chữ cái a, b, c … hoặc các số 1, 2, 3 …
• Là một tập (không rỗng) các ký hiệu nào ñó
• Bộ chữ cái Latin {A, B, C, …, a, b, c, …, z}
một chuỗi (hay một từ - word) trên bộ chữ cái Σ
• Là một dãy hữu hạn các ký hiệu của Σ
• Chuỗi 10 là chuỗi con của chuỗi 0 001
là chuỗi con bất kỳ nằm ở ñầu chuỗi
là chuỗi con bất kỳ nằm ở cuối chuỗi
• Chuỗi abc có các tiền tố a, ab, abc
• Chuỗi 0246 có các hậu tố 6, 46, 246, 0246
là chuỗi ñược tạo thành bằng cách viết chuỗi thứ nhất, sau ñó viết chuỗi thứ hai,
•Nối ghép của chuỗi Long và Int là LongInt
•Nối kết của chuỗi rỗng: εw = wε = w (với mọi w)
→ ε là ñơn vị của phép nối kết
của chuỗi w, ký hiệu wR, là chuỗi
w ñược viết theo thứ tự ngược lại
•w = abcd → wR = dcba εR = ε
Trang 7• Ngôn ngữ tự nhiên: tiếng Việt, tiếng Anh, …
• Ngôn ngữ lập trình: Pascal, C/C++, …
• Là tập hợp các câu theo cấu trúc quy ñịnh nào ñó
• Biểu thị các ý nghĩ, các sự kiện hay các khái niệm
• Bao gồm một tập các ký hiệu và các quy tắc ñể vận dụng chúng
6
Một ngôn ngữ (hình thức) L là một của các ký hiệu từ một bộ chữ cái Σ nào ñó
Ø và {ε} cũng ñược coi là ngôn ngữ
= {aaa, aaba, abaa, ababa, baaa,baaba, babaa, bababa}
• L* = {ε, a, ba, aa, aba, baa, baba, aaa, aaba, …}
Trang 8L = {aa, aba, baa, baba}
L = {ai | i là số nguyên tố}
• Cho phép biểu diễn ngơn ngữ một cách tổng quát
• Văn phạm: cơ chế sản sinh ra mọi chuỗi của ngơn ngữ
• Automata: cơ chế cho phép đốn nhận một chuỗi bất kỳ cĩ thuộc một ngơn ngữ L hay khơng
Theo từ điển, văn phạm là một tập các quy tắc về cấu tạo từ và các quy tắc về cách thức liên kết từ lại thành câu
văn phạm cấu trúc G là một hệ thống gồm 4 thành phần G(V, T, P, S)
• V (variables): tập các biến (VD: A, B, C, …)
• T (terminal): tập các ký hiệu kết thúc (V ∩ T = Ø) (VD: a, b, c, …, w, x, y, )
• P (production): tập luật sinh, dạng α→β với α, β ∈ (V ∪ T)*
• S (start): ký hiệu bắt đầu (S ⊂⊂⊂ V)
11
nếu α→β là một luật sinh thì
γ ααα δ ⇒⇒⇒ γ βββδ nếu các chuỗi α1, α2, , αm ∈ Σ* và
α1 ⇒ α2, α2 ⇒ α3, , αm-1 ⇒ αm thì αm cĩ thể được dẫn xuất từ α1
α1 ⇒* αm
L (G) = {w | w ∈ T * và S ⇒* w}
là 2 văn phạm sinh ra cùng một ngơn ngữ (G1 tương đương G2 ⇔ L(G1)=L(G2) )
Bằng cách áp đặt một số quy tắc hạn chế trên các luật sinh, Noam Chomsky đề nghị một hệ thống phân loại các văn phạm dựa vào tính chất của các luật sinh.
khơng cần thỏa điều kiện ràng buộc nào trên tập các luật sinh
nếu văn phạm G cĩ các luật sinh dạng α→β và |β| ≥ |α|
cĩ luật sinh dạng A→α với A là một biến đơn và α là chuỗi các ký hiệu thuộc (V ∪ T)*
Trang 9có mọi luật sinh dạng tuyến tính phải hoặc tuyến tính trái
• Tuyến tính phải: A → wB hoặcA → w
• Tuyến tính trái: A → Bw hoặc A → wVới A, B là các biến ñơn, w là chuỗi ký hiệu kết thúc (có thể là rỗng)
Nếu ký hiệu L0, L1, L 2, L 3 là các ngôn ngữ ñược sinh ra bởi văn phạm loại 0, 1, 2, 3, ta có:
L 3 ⊂ L 2 ⊂ L1 ⊂ L 0
14
văn phạm G( {S, A}, {a, b}, P, S )
ðây là văn phạm loại 3 (dạng tuyến tính phải)Một dẫn xuất từ S có dạng:
S → aS → aaS → aaaA → aaabA → aaabbA →
Trang 10• Tại mỗi bước di chuyển, nó có vài khả năng ñể lựa chọn (hàm chuyển của automata là ña trị)
Trang 11• Khái niệm DFA & NFA
• Sự tương ñương giữa DFA & NFA
0 0
: tập hữu hạn các trạng thái (p, q…) : bộ chữ cái nhập (a, b … ; w, x, y …) : hàm chuyển, ánh xạ: Q x Σ → Q
∈ Q : trạng thái bắt ñầu
F ⊆ Q : tập các trạng thái kết thúc M=(Q, Σ, δ, q0, F)
Trạng thái bắt ñầu Trạng thái kết thúc x
Phép chuyển trên nhãn x
4
εεεε
∀
Ngôn ngữ chính quy
Trang 12• kiểm tra một chuỗi nhập có thuộc ngôn ngữ
ñược chấp nhận bởi automata
If (q in F) then write("YES") else write("NO");
6
• Ứng với một trạng thái và một ký tự nhập, có thể có
không, một hoặc nhiều phép chuyển trạng thái
• DFA là một trường hợp ñặc biệt của NFA
1 0
0 1
• cho automata M (hình vẽ) và xét chuỗi nhập
8
{q4} {q4}
q4
Ø {q4}
q3
{q2} {q2}
q2
{q2} Ø
q1
{q0,q1} {q0,q3}
q0
1 0
Trang 13: εεεε 0
• δ : hàm chuyển ánh xạ Q x ( ∪∪∪ εεεε ) → 2Q
• Khái niệm là tập hợp các trạng thái p sao cho
có phép chuyển nhãn từ q tới p, với a ∈ (Σ ∪ {ε})
εεεε
● εεεε (q) = { p | có ñường ñi từ q tới p theo nhãn εεεε }
• δ*(R, w) = ∪∪ q
∈ R δ*(q, w)
Trang 14ε εε ε
If (q in F) then write("YES") else write("NO");
15
ε εε ε
nếu L ñược chấp nhận bởi một NFA có εεεε-dịch chuyển thì L cũng ñược chấp nhận bởi một NFA không có ε
εεε-dịch chuyển
εεε
ε M(Q, Σ, δ, q0, F) chấp nhận L
Ta xây dựng: M’={Q, Σ, , q0, }Với:
• ∪ 0 nếu ε-CLOSURE(q0) chứa một trạng thái thuộc F Ngược lại,
∅
q1
{q2} {q1, q2} {q0, q1, q2}
q0
2 1 0
Trạng thái
Inputs δ’
Trang 15ε εε ε
xây dựng DFA tương ñương với NFAεεεε sau:
= (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10})
a
b
ε ε
ε ε
ε ε
Ta xây dựng = (Q’, Σ, δ’, q0’, F’) tương ñương
• Trạng thái bắt ñầu: q0’ ↔ ε-CLOSURE(q0)
• F’ = { | trong ký hiệu của có chứa ít nhất một trạng thái của F }
E B D
C B C
D B B
C B A
b a
• Ký hiệu bắt ñầu: q0’ = A (↔ ε-CLOSURE(q0) )
• Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng thái 10 ∈ )
ε εε ε
Trang 16• : là biểu thức chính quy biểu diễn tập {00}
• : tập hợp tất cả các chuỗi số 0 và số 1, kể cả chuỗi rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010 }
• * : ký hiệu cho tất cả các chuỗi 0, 1 tận cùng bởi 011 = {011, 0011, 1011, 00011, 11011, }
• : tập hợp tất cả các chuỗi 0,1 có ít nhất hai số 0 liên tiếp = {00, 000, 100, 0000, 0001, 1000,
● ∀a ∈ Σ, là BTCQ ký hiệu cho tập {a}
● Nếu và là các BTCQ ký hiệu cho các tập hợp R và
S thì , và là các BTCQ ký hiệu cho các tập hợp R ∪∪ S, RS và R* tương ứng
r = ε r = ∅ r = a
a Các NFA ε cho các kết hợp ñơn
Trang 17ε ε
ε ε
q3 0 q4Start
ε
q5 1q6Start q
q7 q5 1Start q3 0 q4 ε q6 ε q8
q3 0 q5
q1 q2
q6 q81
ε
1 ε
i j là tập hợp tất cả các chuỗi làm cho automata ñi từ trạng thái i ñến trạng thái j mà không ñi ngang qua trạng thái nào lớn hơn k)
• ðịnh nghĩa ñệ quy của R k
28
• Quy nạp theo k
k = 0: R 0
ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc ε
Giả sử ta có ñịnh lý ñúng với k-1, tức là tồn tại BTCQ rk-1
1jp
với F = {qj1, qj2, …, qjp}
Trang 181 1
q1 0 q2 q3
0 0, 1 Start
30
Thay vào và rút gọn, ta có:
r = εεεε
ε + (0 + 1)0*1 ε
(00)*
ε + 00 ε
0(00)*
0 0
0*1 1
(00)*
ε ε
Trang 19• Văn phạm chính quy (RG: egular rammar)
• Sự tương ñương giữa RG và FA
• Bổ ñề bơm cho tập hợp chính quy
• Tuyến tính trái: dạng A → Bw hoặc A → w
• Tuyến tính phải: dạng A → wB hoặc A → w
• Văn phạm chính quy sinh ra ngôn ngữ chính quy
• Ngôn ngữ chính quy có thể ñược ký hiệu ñơn giản
bằng một biểu thức chính quy
• Tập hợp các chuỗi ñược ký hiệu bởi một biểu thức
chính quy ñược gọi là tập hợp chính quy
[1S]
ε 1
0 [S] [1S]
Trang 20Nếu L là một tập hợp chính quy thì L ñược sinh
ra từ một văn phạm tuyến tính trái hoặc một văn phạm
tuyến tính phải nào ñó
• Bắt ñầu với một NFA cho LR
• ðảo ngược chuỗi vế phải cho tất cả mọi luật sinh của
7
nếu L là tập hợp chính quy thì có tồn tại hằng số sao cho nếu là một từ bất kỳ thuộc L và ≥ thì ta có thể viết với , và ∀∀ ta có i
∈
• L là ngôn ngữ chính quy → tồn tại DFA M=(Q, Σ, δ, q0, F) có
n trạng thái chấp nhận L
• Xét chuỗi nhập z = a1a2…am, m ≥ n
• Với mỗi i=1,2,…,m, ta ñặt δ(q0, a1a2…ai) = qi
• Phải có ít nhất 2 trạng thái trùng nhau
chứng minh tập hợp không làp tập hợp chính quy
• Giả sử L là tập chính quy → tồn tại DFA chấp nhận L Gọi n là số trạng thái của DFA
Trang 21Một phép toán là ñóng ñối với tập chính quy khi áp dụng chúng vào tập hợp chính quy thì vẫn giữ ñược các tính chất của tập chính quy
tập hợp chính quy ñóng với các phép toán: hợp, nối kết và bao ñóng Kleen
tập hợp chính quy ñóng với phép lấy phần bù tập hợp chính quy ñóng với phép giao
Trang 22• Văn phạm phi ngữ cảnh (CFG)
• Giản lược văn phạm phi ngữ cảnh
• Chuẩn hóa văn phạm phi ngữ cảnh
• Các tính chất của văn phạm phi ngữ cảnh
2
là hệ thống gồm 4 thành phần
• V : tập hữu hạn các biến (ký tự chưa kết thúc)
• T : tập hữu hạn các ký tự kết thúc (V ∩ T = Ø)
• P : tập hữu hạn các luật sinh dạng A → α α α α∈ α∈ α∈ (V∪T
• S : ký hiệu bắt ñầu của văn phạm
y ư
:
• V: chữ in hoa (A, B, C, ); T: chữ in thường (a, b, c, , w, x, y )
• α, β, γ, biểu diễn chuỗi ký hiệu kết thúc và biến
αβγ :
α γ ⇒⇒G αββββγ
• Giả sử: α1 ⇒⇒G α2, α2 ⇒⇒G α3, , αm-1 ⇒⇒G αm, ta có:
α1 ⇒⇒ G αm
• Ta có: α ⇒⇒ G α với mọi chuỗi α
• Thông thường, ta sẽ dùng ⇒⇒⇒ và ⇒⇒⇒ thay cho ⇒⇒G và ⇒ G
(3) Nếu nút trung gian có nhãn A thì A ∈∈ V(4) Nếu nút n có nhãn A và các ñỉnh n1, n2, , nk là con của n theo thứ tự từ trái sang phải có nhãn lần lượt là X1, X2, , Xk thì
A → X1X2 Xk là một luật sinh trong P(5) Nếu nút n có nhãn là ε thì n phải là nút lá và là nút con duy nhất của nút cha của nó
Trang 23xét văn phạm G({S, A}, {a, b}, P, S}, với P gồm:
S → aASa
A → SbASSbaMột dẫn xuất của G:
S ⇒⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa
nếu G(V, T, P, S) là một CFG thì ⇒⇒ ααα nếu và chỉ nếu có cây dẫn xuất trong văn phạm sinh ra αα
• Dẫn xuất (a) là dẫn xuất trái nhất, (b) là dẫn xuất phải nhất
• Các dẫn xuất tuy khác nhau, nhưng có cùng một cây dẫn xuất
7
một văn phạm phi ngữ cảnh G ñược gọi là văn phạm
mơ hồ (ambiguity) nếu nó có nhiều hơn một cây dẫn xuất cho cùng một chuỗi w
xét văn phạm G với luật sinh:
E →→ E + E E * E (E) aVới chuỗi , ta có thể vẽ ñến 2 cây dẫn xuất khác nhau
Trang 24• Mỗi biến và mỗi ký hiệu kết thúc của văn phạm ñều xuất
hiện trong dẫn xuất của một số chuỗi trong ngôn ngữ
• Không có luật sinh A →→ B (với A, B ñều là biến)
● Nếu ngôn ngữ không chấp nhận chuỗi rỗng ε thì không cần luật
• X phải dẫn ra chuỗi ký hiệu kết thúc
• X phải nằm trong dẫn xuất từ S
11
Cho CFG G(V, T, P, S) với L(G) ≠ Ø, có một CFG G'(V', T', P', S) tương ñương sao cho mỗi ∈ tồn tại ∈∈ ∈ ñể ⇒
Begin
( ) O d V
∅ ; ( ) N
⇒
⇒ ααα ββββ
• ðặt V' = {S} ; T' = Ø
• Nếu A ∈ V' và A → α1 α2 αn là các luật sinh trong P thì
➢ Thêm các biến của α1 α2 , αn vào
➢ Thêm các ký hiệu kết thúc của α1 α2 , αn vào
• Lặp lại cho ñến khi không còn biến hoặc ký hiệu kết thúc nào ñược thêm vào nữa
Trang 25Cho CFG G(V, T, P, S) và L là ngôn ngữ sinh ra bởi G Khi ñó L – {ε} là
ngôn ngữ sinh ra bởi CFG G'(V, T, P', S) không có ký hiệu vô ích và
không có luật sinh ε.
➢
2
xây dựng tập luật sinh P'
Với mỗi luật sinh A → X1X2 Xn trong P, ta xây dựng luật sinh
A → α1α2 αn với ñiều kiện:
: văn phạm G' không chấp nhận chuỗi rỗng ε như văn phạm G
ðể G' tương ñương G, ta cần thêm luật sinh S → ε vào G'
ðể loại bỏ luật sinh ñơn vị, ta xây dựng tập P' mới theo giải thuật:
Trang 26∆T = {T, F} ⇒⇒ thêm vào P' : T →→→ T * F (E) a
∆F = {F} ⇒ thêm vào P' : F →⇒ →→ (E) a
: thay thế tất cả các luật sinh có ñộ dài vế phải là 1
• Áp dụng ñịnh lý 4.4 ñể loại bỏ luật sinh ñơn vị và ε
Trang 27Cho G(V, T, P, S) là một CFG, ñặt A → α1Bα2 là luật sinh trong P
và B → β1β2 βr là các B - luật sinh; văn phạm G1(V, T, P1, S)
thu ñược từ G bằng cách loại bỏ luật sinh A → α1Bα2 và thêm vào
luật sinh A → α1β1α2α 1β2α2 α1βrα2 tương ñương G
ðặt G(V, T, P, S) là CFG; A → Aα1Aα2 Aαr là tập các A – luật
sinh có A là ký hiệu trái nhất của vế phải (luật sinh ñệ quy trái) ðặt
A → β1β 2 βs là các A - luật sinh còn lại; G1(V ∪ {B}, T, P1, S) là
CFG ñược tạo thành bằng cách thêm biến mới B vào V và thay
các A - luật sinh bằng các luật sinh dạng:
mỗi CFL bất kỳ không chứa ε ñược sinh ra bởi một CFG
mà mỗi luật sinh có dạng A → aα với A là biến, a là ký hiệu kết
: thay thế luật sinh sao cho nếu Ai → Ajγ thì j > i
• Nếu j<i : áp dụng bổ ñề 3 Nếu i=j : áp dụng bổ ñề 4 ( i i h )
• Trong P chỉ chứa các luật sinh dạng: Ai → Ajγ (j > i), Ai → aγ
hoặc Bk → γ với γ ∈ (V ∪ {B1,B2, ,Bi-1})*
begin
end;
begin
end;
Trang 28• Giả sử L là CFL, khi ñó tồn tại số n theo bổ ñề bơm
• Xét chuỗi z = anbncn, |z| ≥ n, ta có thể viết z=uvwxy thỏa bổ ñề
• Ta có: vx ∈ anbncn, |vx| ≤ |vwx| ≤ n nên vx không thể chứa cả ký
hiệu a và c (vì giữa a và c có n ký hiệu b)
• Do |vx| ≥ 1 và trong uvwxy chứa số ký hiệu a, b, c bằng nhau:
Nếu vx có chứa ký hiệu a (và không chứa ký hiệu c) thì chuỗi uv0wx0y ∉ L vì có số ký hiệu c lớn hơn số ký hiệu a
Nếu vx không chứa ký hiệu a thì chuỗi uv0wx0y ∉ L vì có số
ký hiệu b (hoặc c) nhỏ hơn số ký hiệu a
Trang 29Automata đẩy xuống (Push Down Automata)
Nội dung:
• Khái niệm về PDA
• PDA đơn định và không đơn định
• PDA chấp nhận chuỗi bằng Stack rỗng và PDA chấp nhận chuỗi bằng trạng thái kết thúc
• Sự tương đương giữa PDA và CFL
Chương 6:
1
Trang 30Ta đã biết:
• Lớp ngôn ngữ chính quy được sinh ra từ văn phạm chính quy
và được đoán nhận bởi automata hữu hạn
• Lớp ngôn ngữ phi ngữ cảnh được sinh ra từ văn phạm phi ngữ cảnh → câu hỏi: CFL có thể được đoán nhận bởi một automata không? automata đó như thế nào?
Mô tả: gồm các thành phần của một automata hữu hạn với sự bổ
sung thêm một ngăn xếp làm việc (Stack)
0 1 1 0 0 1 0 1
Y B
R
Bộ điều khiển
Trang 31PDA
Ví dụ: xét L = {wcw R | w ∈ (0 + 1)*} được sinh ra từ CFG
S → 0S0 | 1S1 | c
Ta xây dựng PDA như sau:
• Quy tắc thao tác trên automata:
Trang 32Các khái niệm:
• Phân loại PDA: đơn định (DPDA) và không đơn định (NPDA)
• Phép chuyển: có 2 kiểu
đỉnh Stack và một ký hiệu nhập, PDA lựa chọn trạng thái kế tiếp, thay thế ký hiệu trên Stack và di chuyển đầu đọc trên băng nhập.
nhập không được dùng, đầu đọc không di chuyển.
• Ngôn ngữ được chấp nhận bởi PDA
Một ngôn ngữ được chấp nhận bởi PDA khi và chỉ khi nó là một ngôn ngữ phi ngữ cảnh.
Trang 33chuỗi bằng Stack rỗng thì F = Ø)
Trang 35PDA
Hình thái (ID): dùng để ghi nhớ trạng thái và nội dung của Stack
(q, aw, Zα) ⊢ M (p, w, βα) nếu δ(q, a, Z) chứa (p, β) Ngôn ngữ chấp nhận bởi PDA:
• Ngôn ngữ được chấp nhận bằng trạng thái kết thúc
Trang 36PDA không đơn định (NPDA)
Ví dụ: thiết kế PDA chấp nhận {ww R | w ∈ (0 + 1)*} bằng Stack rỗng
• Không có ký hiệu c để biết thời điểm chuyển từ trạng thái q1 sang q2
• Bắt buộc phải đoán thử (khi thấy 2 ký hiệu liên tiếp giống nhau)
✔ Nếu ký hiệu thuộc chuỗi xuôi : giữ nguyên trạng thái q1 và push vào Stack
✔ Nếu ký hiệu thuộc chuỗi ngược : chuyển sang trạng thái q2 và pop khỏi Stack
Trang 37PDA không đơn định (NPDA)
Ví dụ: các phép chuyển hình thái của PDA chấp nhận chuỗi 001100
Trang 38PDA đơn định (DPDA)
Định nghĩa: một PDA M(Q, Σ, Γ, δ, q 0 , Z 0 , F) được gọi là đơn định nếu:
nhiều hơn một phần tử
Chú ý: đối với PDA thì dạng đơn định và không đơn định là không
tương đương nhau
được chấp nhận bởi bất kỳ một PDA đơn định nào.
Trang 39Tương đương giữa PDA với Stack rỗng và
PDA với trạng thái kết thúc
Định lý 6.1: Nếu một ngôn ngữ phi ngữ cảnh L được chấp nhận bởi
Trang 40Tương đương giữa PDA với Stack rỗng và
PDA với trạng thái kết thúc
Định lý 6.2: Nếu một ngôn ngữ phi ngữ cảnh L được chấp nhận bởi
Trang 41Tương đương giữa PDA và CFL
Định lý 6.3: Nếu L là một ngôn ngữ phi ngữ cảnh thì tồn tại PDA
chấp nhận chuỗi với Stack rỗng M sao cho L = N(M)
Cách xây dựng:
Đặt G(V, T, P, S) thỏa dạng chuẩn Greibach và L(G) không chứa ε
• δ'(q, a, A) = (q, γ) khi và chỉ khi A → aγ
Đặt M({q}, T, V, δ, q, S, Ø) là PDA chấp nhận L với Stack rỗng