[r]
(1)Trang
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Chương Đơn giản hóa VPPNC và dạng chuẩn
6.1 Các phương pháp đểbiến đổi văn phạm 6.2 Hai dạng chuẩn quan trọng
6.3 Giải thuật thành viên cho văn phạm phi ngữ cảnh
Các phương pháp để biến đổi văn phạm
Chuỗi trống đóng vai trò đặc biệt nhiều định lý chứng minh, thường cần có sựchú ý đặc biệt cho Nếu L∋ λthì biểu diễn L= L1∪{λ} với L1= L– {λ} Nếu
G1= (V1, T, S1, P1) văn phạm biểu diễn cho L1thì
G= (V1∪{S}, T, S, P1∪{S→S1| λ}) văn phạm biểu diễn cho L
Trong chương này, xem xét NNPNC không chứa λ
(2)Trang
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Định lý 6.1
Cho G= (V, T, S, P) VPPNC GiảsửPcó chứa luật sinh
A→x1Bx2
trong đóA, Blà biến khác
B→y1| y2| | yn
là tập tất cảcác luật sinh Pmà cóBởvếtrái
Cho G1= (V, T, S, P1) VP xây dựng cách xóa
A→x1Bx2
từP, thêm vào nó
A→x1y1x2| x1y2x2| | x1ynx2
Thì
L(G) = L(G1)
Ví dụ
Xét văn phạm G= ({A, B}, {a, b}, A, P) với luật sinh A→a| aA| bBc,
B→abA| b
Sau thay thếbiến Bta nhận VP tương đương sau A→a| aA| babAc| bbc,
B→abA| b
Chuỗi abbccó dẫn xuất GvàG1lần lượt sau: A⇒aA⇒abBc⇒abbc
A⇒aA⇒abbc
(3)Trang
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Loại bỏ đệ qui trái Định lý 6.2 (Loại bỏ đệqui trái)
Cho G= (V, T, S, P) VPPNC Chia tập luật sinh mà vếtrái chúng biến cho (chẳng hạn làA), thành hai tập riêng biệt
A→Ax1| Ax2| | Axn (6.2)
A→y1| y2| | ym (6.3)
với xi, yi∈(V ∪T)*, vàAkhông prefix bất kỳyinào Xét G1= (V ∪{Z}, T, S, P1), đóZ∉VvàP1nhận cách thay luật sinh Pcó dạng (6.2 ) (6.3)
A→yi| yiZ, i= 1, 2, , m,
Z→xi| xiZ, i= 1, 2, , n, Thì
L(G) = L(G1)
Loại bỏ đệ qui trái (tt) Chứng minh
Các dạng câu màA sinh văn phạm Gcó dạng: A A(x1+ x2+ + xn)* ⇒yi(x1+ x2+ + xn)* Các dạng câu có thểđược sinh G1bằng cách ý Z có thểsinh dạng câu có dạng
Z (x1+ x2+ + xn)(x1+ x2+ + xn)* màA→yi| yiZnên
A yi(x1+ x2+ + xn)* Vì L(G) = L(G1)
Ghi chú
Các luật sinh đệqui-trái chỉlà trường hợp đặc biệt đệ qui-trái văn phạm nhưđược phát biểu sau
Một văn phạm gọi đệqui-trái có biến Anào mà nóA Axlà
* ⇒
* ⇒
* ⇒
*
(4)Trang
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Sửdụng Định lý 6.2 đểloại bỏcác luật sinh đệqui-trái khỏi VP A→Aa| aBc| λ B→Bb| ba
Áp dụng định lý cho biến A ta tập luật sinh sau:
A→aBc | λ| aBcZ| Z B→Bb| ba
Z→a| aZ
Áp dụng định lý lần lần cho biến B ta tập luật sinh kết quảcuối sau:
A→aBc| aBcZ| Z| λ B→ba| baY
Z→a| aZ Y→b| bY
Nhận xét
Việc loại bỏcác luật sinh đệqui-trái đưa biến VP kết quảcó thểlà "đơn giản" đáng kểso với VP gốc cách tổng quát sẽcó nhiều biến luật sinh
Luật sinh vô dụng Định nghĩa 6.1:
Cho G= (V, T, S, P) VPPNC Một biến A∈V được gọi làkhảdụng nếu chỉnếu có chuỗi w∈L(G)
cho S xAy w,
với x, y∈(V∪T)* Bằng lời, biến khảdụng
nếu xuất dẫn xuất Một biến mà khơng khảdụng gọi làvơ dụng.Một luật sinh gọi vơ dụng có chứa bất kỳbiến vô dụng
Các dạng vô dụng
Vô dụng loại 1: A w∈T* Vô dụng loại 2: S xAy
*
⇒ ⇒*
* ⇒
(5)Trang
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Loại bỏ các luật sinh vô dụng Định lý 6.3
Cho G= (V, T, S, P) VPPNC, ∃một VP tương đương G0 = (V0, T, S, P0) mà không chứa bất kỳbiến vô dụng
Chứng minh
Loại bỏcác biến luật sinh vô dụng loại
Tạo văn phạm G1= (V1, T, S, P1) với V1là tập biến khơng vơ dụng loại Ta tìm V1 sau:
1 Khởi tạo V1= ∅
2 Lặp lại bước sau khơng cịn biến thêm vào V1
Đối với A∈Vmà có luật sinh A→x, x∈(V1∪T)*,
thì thêm Avào V1
3 Loại khỏi Pcác luật sinh có chứa biến ∉V1, ta P1
Loại bỏ các luật sinh vô dụng (tt)
Đểloại tiếp biến luật sinh vô dụng loại ta dựa vào G1vừa cóởtrên vẽđồthịphụthuộc cho nó, sau tìm tập biến không đạt tới từS Loại biến luật sinh liên quan đến khỏi G1 ta văn phạm kết quảG0 Đồthịphụ thuộc (dependency graph)
Là đồthịcó đỉnh biểu diễn biến, cạnh nối hai đỉnh AvàBkhi chỉkhi có luật sinh dạng
A→xBy Ví dụ
Loại bỏcác biến luật sinh vô dụng khỏi văn phạm G= ({S, A, B, C}, {a, b}, S, P), với tập luật sinh Plà:
S →aS | A | C B →aa
A →a C →aCb
(6)Trang 11
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThông Tin
Loại bỏcác biến vô dụng loại ta
V1= {S, A, B}và tập luật sinh P1
S→aS | A
A→a
B→aa
Loại bỏcác biến vô dụng loại ta văn phạm kết
S→aS | A
A→a
Nhận xét
Nếu thay đổi thứtựloại bỏ(loại bỏcác biến luật sinh vô dụng loại trước) sẽkhơng loại bỏđược tất cảcác biến luật sinh vơ dụng chỉbằng lần ví dụsau cho thấy
S →aS | A | C A →a
B →aa C →aCb
S A B
Ví dụ (tt)
Xét văn phạm sau
S→aSb | ab | A A→aAB B→b
Nếu loại bỏcác biến luật sinh vô dụng loại trước ta thấy văn phạm không thay đổi tất cảcác biến đạt tới từS Sau đó loại bỏtiếp biến luật sinh vơ dụng loại ta sẽđược văn phạm sau:
S→aSb | ab | A B→b
(7)Trang 13
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Loại bỏ luật sinh-λ Định nghĩa 6.2
Bất kỳluật sinh VPPNC có dạng A→λ
được gọi luật sinh-λ Bất kỳbiến Anào mà
A λ
là có thểthì gọi khảtrống (nullable) Định lý 6.4
Cho Glà VPPNC bất kỳmàL(G) khơng chứa λ, tồn văn phạm G0 tương đương mà khơng có chứa luật sinh-λ Chứng minh:
Bước 1
Tìm tập VNtất cảcác biến khảtrống Gbằng bước sau *
⇒
Loại bỏ luật sinh-λ Đối với luật sinh A →λ, đưa Avào VN
2 Lặp lại bước sau khơng cịn biến thêm vào VN
Đối với luật sinh B→A1A2…An, màA1, A2, An∈VN
thì đặt Bvào VN Bước 2
Sau có tập VNta xây dựng tập luật sinh sau
Ứng với luật sinh có dạng A→x1x2…xm, m≥ 1, xi∈V∪T, đặt luật sinh vào với luật sinh
(8)Trang 15
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Loại bỏcác luật sinh-λcủa văn phạm sau:
S→ABaC C→D | λ
A→BC D→d
B→b | λ
VìB→λvàC→λsuy BvàClà biến khảtrống VìA→BCnên suy Acũng biến khảtrống Ngồi
khơng cịn biến khác khảtrống
Theo Bước ta xây dựng tập luật sinh tương đương sau:
S→ABaC | BaC | AaC | ABa | aC | Aa | Ba | a A→BC | B | C
B→b C→D D→d
Loại bỏ luật sinh đơn vị
Định nghĩa 6.3
Bất kỳluật sinh VPPNC có dạng A→B
trong đóA, B∈V được gọi luật sinh-đơn vị Định lý 6.5
Cho G= (V, T, S, P) VPPNC bất kỳkhơng có luật sinh-λ, tồn VPPNC G1= (V1, T, S, P1) mà khơng có bất
kỳluật sinh đơn vịnào tương đương với G1 Chứng minh
1 Đặt vào P1tất cảcác luật sinh không đơn vịcủa P Đối với biến Atìm tất cảcác biến BmàA B(*)
Điều thực cách vẽđồthịphụthuộc cho G cạnh
nối đỉnh AvàBkhi chỉkhi có luật sinh-đơn vịA→B Hai biến Avà
(9)Trang 17
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Ví dụ
3 Đối với A, Bthõa (*) thêm vào P1các luật sinh A→y1| y2| | yn
với B→y1| y2| | ynlà luật sinh khơng đơn vịcủa B Ví dụ
Loại bỏcác luật sinh đơn vị cho VP sau
S→Aa | B B→A | bb A→a | bc | B
Trước hết, đặt luật sinh không đơn vịvào P1
S→Aa A→a | bc B→bb
S A B
TừĐTPT ta đưa thêm luật sinh sau vào
S→a | bc | bb A→bb B→a | bc
Ví dụ (tt)
Kết quảta có văn phạm tương đương sau khơng có luật sinh
đơn vị
S→Aa | a | bc | bb A→a | bc | bb B→bb | a | bc
Định lý 6.6
Cho Llà NNPNC không chứa λ, tồn VPPNC sinh Lmà không chứa bất kỳluật sinh vô dụng, luật sinh-λ, hay luật sinh-đơn vịnào
Chứng minh:
B1 Loại bỏluật sinh-λ B2 Loại bỏluật sinh đơn vị
(10)Trang 19
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
1.Loại bỏbiến vơ dụng loại có thểsinh biến vô dụng loại 2.Việc loại bỏbiến vô dụng loại không sinh biến vô dụng
loại
3.Văn phạm khơng có luật sinh đơn vịthì việc loại bỏluật sinh-λ có thểsinh luật sinh-đơn vị
4.Văn phạm khơng có luật sinh-λthì việc loại bỏluật sinh-đơn vị
không thểsinh luật sinh-λmới
5.Loại bỏluật sinh-λcó thểsinh biến vơ dụng loại 6.Loại bỏluật sinh-đơn vịcó thểsinh biến vơ dụng loại 7.Văn phạm khơng có luật sinh-λ, luật sinh-đơn vịthì việc loại bỏ
các luật sinh vô dụng loại 1, loại không sinh thêm
luật sinh-λvà luật sinh-đơn vịnào
Dạng chuẩn Chomsky Định nghĩa 6.4
Một VPPNC thuộc dạng chuẩn Chomsky luật sinh có dạng
A→BC, hoặc A→a
trong đóA, B, C∈V, cịn a∈T. Định lý 6.7
Bất kỳVPPNC G= (V, T, S, P) với λ ∉L(G) đều có văn phạm tương đương G1= (V1, T, S, P1) có dạng chuẩn Chomsky
Chứng minh
(11)Trang 21
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Thủ tục: G-to-GChomsky
Input: G= (V, T, S, P) với λ ∉L(G)
Output: G1= (V1, T, S, P1) có dạng chuẩn Chomsky 1.Đặt luật sinh A→avào P1
2.Đối với luật sinh A→x1x2 xnvới n≥2, xi∈(V∪T) thì thay kí hiệu kết thúc, chẳng hạn xk= a, biến đại diện Ba, tạo thành luật sinh trung gian A→C1C2 Cn 3.Ứng với biến đại diện Bađặt vào P1các luật sinh Ba→a. 4.Sau thực bước 2, ứng với luật sinh A→C1C2
Cnmàn = đặt vào P1 Ngược lại ứng với n> ta giới thiệu biến D1, D2, đưa vào luật sinh sau:
A → C1D1 D1 → D1D2 Dn-2 →M Cn-1Cn
Ví dụ
Hãy biến đổi VP sau thành VP có dạng chuẩn Chomsky
S→a | ABa A→aab B→b | Ac
S→a B→b S→ABXa A→XaXaXb B→AXc Xa→a Xb→b Xc→c
S →AD1 D1→BXa A →XaD2 D2→XaXb
Bước
Bước
Bướ c
Bước
S →a|AD1
D1→BXa A →XaD2 D2→XaXb B →b |AXc Xa→a Xb→b
(12)Trang 23
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThông Tin
Định nghĩa 6.5
Một VPPNC thuộc dạng chuẩn Greibach luật sinh có dạng
A→ax đóa∈Tcịn x∈V*.
Định lý 6.8
Đối với VPPNC Gvới λ ∉L(G), tồn văn phạm tương đương dạng chuẩn Greibach
Chứng minh
Không tính tổng qt giảsửGkhơng có luật sinh-vơ dụng, luật sinh-đơn vịvà luật sinh-λ Ta xây dựng văn phạm có dạng chuẩn Greibach thủtục sau
Thủ tục: G-to-GGreibach
Input: G= (V, T, S, P) với λ ∉L(G)
Output: G1= (V1, T, S, P1) có dạng chuẩn Greibach 1.Đánh sốthứtựcho biến chẳng hạn làA1,A2, An 2.Dùng Định lý 6.1 6.2 đểviết lại VP cho luật sinh có
một ba dạng sau
Điều thực cách sửdụng Định lý 6.1 6.2 cho biến Aitheo thứtựi đi từ 1, 2, đến n sau Giảsửxét luật sinh biến Ai Nếu có luật sinh Ai→Ajxmài
> jthìthay Aj đầubằng vếphải nó, làm
khi luật sinh Aicó dạng Ai→Ajx, i ≤j Đến loại đệ
qui trái cho Aithì luật sinh sẽcó dạng nhưđã nêu a∈Tvàxi∈(V∪T)* Zilà biến Ai→Ajxj, i< j
(13)Trang 25
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Thủ tục: G-to-GGreibach (tt)
3.Sau thực bước 2, tất cảcác luật sinh Anphải có dạng An→axn
Thay An đầu vếphải luật sinhbằng vếphải Kết quảcác luật sinh An-1có dạng
An-1→axn-1
Tương tựthay thếAn-1 đầu vếphải luật sinhbằng vếphải Và thực A1
4.Thay kí hiệu kết thúc, chẳng hạn a, không đầu vếphải biến đại diện, chẳng hạn Xa,đồng thời thêm vào luật sinh Xa→a.
Ví dụ
Biến đổi VP sau thành VP có dạng chuẩn Greibach
S→SBb | Ab A →Sb | Ba B→Sa | b
Ví dụ
S→SBb | Ab A →Sb | Ba B→Sa | b
B2→S0a | b
S0→A1b | A1bZ0 (1) Z0→B2b | B2bZ0 (2) A1→A1bb | A1bZ0b | B2a
B2→B2aba | B2aZ1ba | B2abZ0a |
B2aZ1bZ0a | b B2→A1ba | A1bZ0a | b B2→b | bZ2 (5)
Z2→aba | aZ1ba | abZ0a |
aZ1bZ0a | abaZ2| aZ1baZ2|
abZ aZ | aZ bZ aZ (6) S0→S0B2b | A1b
A1→S0b | B2a
Loại đệqui trái Thay
Loại đệqui trái
Thay
Loại đệqui trái Thay
(14)Trang 27
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
S0→A1b | A1bZ0 (1) B2→b | bZ3 (5)
Thay
S0→bab | bZ2ab | baZ1b |
bZ2aZ1b | babZ0| bZ2abZ0|
baZ1bZ0| bZ2aZ1bZ0 (8) Z0→bb | bZ2b | bbZ0|bZ2bZ0(9) Z0→B2b | B2bZ0 (2)
Thay
Thay
A1→B2a | B2aZ1 (3) A1→ba | bZ2a | baZ1|bZ2aZ1(7)
Ví dụ (tt)
S0→bab | bZ2ab | baZ1b | bZ2aZ1b | babZ0| bZ2abZ0| baZ1bZ0| bZ2aZ1bZ0(8)
A1→ba | bZ2a | baZ1|bZ2aZ1 (7)
B2→b | bZ3 (5)
Z0→bb | bZ2b | bbZ0|bZ2bZ0 (9)
Z1→bb | bZ0b | bbZ1| bZ0bZ1 (4)
Z2→aba | aZ1ba | abZ0a | aZ1bZ0a | abaZ2|aZ1baZ2| abZ0aZ2| aZ1bZ0aZ2 (6) Thay kí hiệu kết thúc không đầu biến đại diện
S →bXY | bZ2XY | bXZ1Y | bZ2XZ1Y | bXYZ0| bZ2XYZ0| bXZ1YZ0| bZ2XZ1YZ0 A →bX | bZ2X | bXZ1|bZ2XZ1
B →b | bZ3
Z0→bY | bZ2Y | bYZ0|bZ2YZ0 Z1→bY | bZ0Y | bYZ1| bZ0YZ1
Z2→aYX | aZ1YX | aYZ0X | aZ1YZ0X | aYXZ2| aZ1YXZ2| aYZ0XZ2| aZ1YZ0XZ2 X →a
(15)Trang 29
Lý thuyết Ôtômát & NNHT - Khoa Công NghệThông Tin
Giải thuật thành viên cho VPPNC Giải thuật CYK (J.Cocke, D.H.Younger, T.Kasami)
Input: Văn phạm Chomsky G= (V, T, S, P) Chuỗi w= a1a2…an
Output: “Yes” + DXTNhoặc “No” Chúng ta định nghĩa chuỗi
wij= ai aj, Và tập V
Vij= {A∈V: A wij},
Đểý w= w1n, w ∈L(G) chỉkhi S∈V1n
Vậy đểbiết w có∈L(G) hay khơng tính V1nvà xem S có∈V1nhay khơng.
* ⇒
Giải thuật CYK
A ∈Viinếu chỉnếu Acó luật sinh A→ai Vậy, Viicó thểđược tính ∀i, ≤i≤n.
Nếu B wik(⇔B∈Vik), C w(k+1)j(⇔C∈V(k+1)j) đồng thời A→BCthìA wij(⇔A∈Vij) ∀i≤k, k< j
Vij= ∪k∈{i, i+1, , j– 1}{A: A→BC, với B ∈Vik, C ∈V(k+1)j} Q trình tính tập Vij
V11, V22, ,Vnn V12, V23, ,V(n-1)n V13, V24, ,V(n-2)n
V1n
*
⇒ ⇒*
(16)Trang 31
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Sửdụng giải thuật CYK đểPTCP chuỗi w= aabbbtrên Gsau
S→AB (1)
A→BB| a (2, 3) B→AB| b (4, 5) Ta ców=a a b b b
1
V11= {A}, V22= {A}, V33= {B}, V44= {B}, V55= {B}, V12= ∅, V23= {S, B}, V34= {A}, V45= {A},
V13= {S, B}, V24= {A}, V35= {S, B}, V14= {A}, V25= {S, B},
V15= {S, B} S∈V15⇒w∈L(G)
Ví dụ (tt)
Đểtìm dẫn xuất cho w, phải tìm cách “lưu vết”
V11= {A( a)}, V22= {A( a)}, V33= {B( b)}, V44= {B( b)}, V55= {B( b)},
V12= ∅, V23= {S( A22B33), B( A22B33)}, V34= {A( B33B44)}, V45= {A( B44B55)},
V13= {S( A11B23), B( A11B23)}, V24= {A( B23B44)}, V35= {S( A34B55), B( A34B55)},
V14= {A( B13B44)}, V25= {S( A22B35, A24B55), B( A22B35, A24B55)},
V15= {S( A11B25, A14B55), B( A11B25, A14B55)}
→
S→AB (1)
A→BB| a (2, 3)
B→AB| b (4, 5)
w=a a b b b
1
5 → → → →
→ →4
2
→ →2
1
→ →4 →2
1
→ →4
2
→ →1 →1
4
→ →4
1
(17)Trang 33
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Ví dụ (tt)
Kết quảcó DXTN sau:
(1)S A11B25 aB25 aA22B35 aaB35 aaA34B55 aaB33B44B55 aabbb (DXTN: 134342555)
(2)S A11B25 aB25 aA24B55 aB23B44B55 aA22B33B44B55 aabbb (DXTN: 134243555)
(3)S A14B55 B13B44B55 A11B23B44B55 aB23B44B55 aA22B33B44B55 aabbb (DXTN: 124343555)
S→AB (1)
A→BB| a (2, 3)
B→AB| b (4, 5)
w=a a b b b
1
1
⇒ ⇒3 ⇒4 ⇒3 ⇒4 ⇒2
5 , , 5⇒
⇒ ⇒3 ⇒4 ⇒2 ⇒4
5 , , , 3⇒
⇒ ⇒2 ⇒4 ⇒3 ⇒4
5 , , , 3⇒
Ví dụ (tt)
CDX tương ứng:
S→AB (1)
A→BB| a (2, 3)
B→AB| b (4, 5)
w=a a b b b
1 S
A11 B25
a A22 B35
a A34 B55
b B33 B44
b b
S
A11 B25
a A24 B55
b
B23 B44
b A22 B33
b a S B55 A14 b B44 B13 b B23 A11
a A22 B33
(18)Trang 35
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Dùng giải thuật CYK PTCP chuỗi sau w1= abab, w2=
abaatrên VP G1, G2 tương ứng
G1 G2
S→AB⏐BB (1, 2) S→AB (1)