Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (317.95 KB, 22 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
Trang 1
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Trang 2
Trang 3
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Mỗi di chuyển của đơn vị điều khiển đọc một kí hiệu nhập,
trong cùng thời điểm đó thay đổi nội dung của stack.
Mỗi di chuyển được xác định bằng kí hiệu nhập hiện tại, kí hiệu
hiện tại trên đỉnh của stack. Kết quảlà một trạng thái mới của
đơn vịđiều khiểnvà một sự thay đổi trên đỉnh của stack.
Chúng ta sẽchỉnghiên cứu các PDA thuộc loại accepter.
Control unit
Stack
Input file
Trang 4
Một accepter đẩy xuống không đơn định (npda) được định
nghĩa bằng bộbảy M= (<i>Q</i>, Σ, Γ, δ, <i>q</i><sub>0</sub>, <i>z</i>, <i>F</i>), trong đó
<i>Q</i>là tập hữu hạn các trạng thái nội của đơn vị điều khiển,
Σlà bảng chữcái ngõ nhập (input alphabet),
Γlà bảng chữcái stack (stack alphabet),
<i>q</i><sub>0</sub>∈<i>Q</i>là trạng thái khởi đầu của đơn vị điều khiển,
z ∈ Γlà kí hiệu khởi đầu stack (stack start symbol),
<i>F</i>⊆<i>Q</i>là tập các trạng thái kết thúc.
Hàm chuyển trạng thái δlà một ánh xạ
Trang 5
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
δ(<i>q</i>, <i>a</i>, <i>b</i>) = {(<i>p</i>, <i>cd</i>)}
Xét một npda với
<i>Q</i>= {<i>q</i><sub>0</sub>,<i>q</i><sub>1</sub>,<i>q</i><sub>2</sub>,<i>q<sub>f</sub></i>},
Σ= {<i>a</i>, <i>b</i>},
Γ= {0, 1, z},
<i>F</i>= {<i>q<sub>f</sub></i>},
Stack
<i>a</i>
<i>b</i>
<i>c</i>
Input file
Control unit
<i>qp</i>
Trang 6
δ(<i>q</i><sub>0</sub>, <i>a</i>, z) = {(<i>q</i><sub>1</sub>,1z), (<i>q<sub>f</sub></i>, λ)}, δ(<i>q</i><sub>0</sub>, λ, z) = {(<i>q<sub>f</sub></i>, λ)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, 1) = {(<i>q</i><sub>1</sub>, 11)}, δ(<i>q</i><sub>1</sub>, <i>b</i>, 1) = {(<i>q</i><sub>2</sub>, λ)},
δ(<i>q</i><sub>2</sub>, <i>b</i>, 1) = {(<i>q</i><sub>2</sub>, λ)}, δ(<i>q</i><sub>2</sub>, λ, z) = {(<i>q<sub>f</sub></i>, λ)}.
δ(<i>q</i><sub>0</sub>, <i>b</i>, 0) không được định nghĩa tương đương với cấu hình
chết mà ta đã học.
δ(<i>q</i><sub>1</sub>, <i>a</i>, 1) = {(<i>q</i><sub>1</sub>, 11)}thêm một kí hiệu 1 vào stack khi a được
đọc.
δ(<i>q</i><sub>2</sub>, <i>b</i>, 1) = {(<i>q</i><sub>2</sub>, λ)}xóa một kí hiệu 1 khỏi stack khi <i>b</i> được
đọc.
Trang 7
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Là bộba (<i>q, w, u</i>)<i>, </i>trong đó<i>q</i>là trạng thái của đơn vị điều
khiển, wlà phần chưa đọc của chuỗi nhập, còn ulà nội dung
của stack (với kí hiệu trái nhất là kí hiệu đỉnh của stack).
Một di chuyển từmột hình trạng tức thời này đến một hình
trạng tức thời khác sẽ được kí hiệu bằng .
(<i>q</i><sub>1</sub>,<i>aw</i>,<i>bx</i>) (<i>q</i><sub>2</sub><i>, w, yx</i>)là có khả năng ⇔(<i>q</i><sub>2</sub>, <i>y</i>) ∈ δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>b</i>).
Dấu *chỉra có≥0 bước di chuyển được thực hiện cịn dấu +
chỉra ≥1 bước di chuyển. Chữ<i>M</i>chỉra di chuyển của ôtômát
nào.
_
|
_
|
*
_
| |_+
<i>M</i>
_
|
Trang 8
Cho <i>M = </i>(<i>Q, </i>Σ<i>, </i>Γ<i>, </i>δ<i>, q</i><sub>0</sub><i>, z, F</i>) là một npda. Ngôn ngữ được
chấp nhận bởi<i>M </i>là tập
<i>L</i>(<i>M</i>)<i>= </i>{<i>w </i>∈ Σ*: (q<sub>0</sub><i>, w, z)</i> (q<i><sub>f</sub>, </i>λ<i>, u), q<sub>f</sub></i>∈<i>F, u </i>∈ Γ*}<i>.</i>
Xây dựng một npda cho ngôn ngữ
<i>L</i>= {<i>w</i>∈{<i>a</i>, <i>b</i>}*: <i>n<sub>a</sub></i>(<i>w</i>) = <i>n<sub>b</sub></i>(<i>w</i>)}
Trang 9
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Xây dựng npda cho ngôn ngữnày như sau.
<i>M</i>= ({<i>q</i><sub>0</sub>, <i>q<sub>f</sub></i>}, {<i>a</i>, <i>b</i>}, {0, 1, <i>z</i>}, δ, <i>q</i><sub>0</sub>, <i>z</i>, {<i>q<sub>f</sub></i>}).
δ(<i>q</i><sub>0</sub>, λ, <i>z</i>) = {(<i>q<sub>f</sub></i>, <i>z</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, 0<i>z</i>)}, δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, 1<i>z</i>)},
δ(<i>q</i>0, <i>a</i>, 0) = {(<i>q</i>0, 00)}, δ(<i>q</i>0, <i>b</i>, 0) = {(<i>q</i>0, λ)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, 1) = {(<i>q</i><sub>0</sub>, λ)}, δ(<i>q</i><sub>0</sub>, <i>b</i>, 1) = {(<i>q</i><sub>0</sub>, 11)},
Trong qúa trình xửlý chuỗi baab, npda thực hiện các di chuyển
sau.
(<i>q</i><sub>0</sub>, <i>baab</i>, <i>z</i>) (<i>q</i><sub>0</sub>, <i>aab</i>, 1<i>z</i>) (<i>q</i><sub>0</sub>, <i>ab</i>, <i>z</i>) (<i>q</i><sub>0</sub>, <i>b</i>, 0<i>z</i>) (<i>q</i><sub>0</sub>, λ, <i>z</i>)
(<i>q<sub>f</sub></i>, λ, <i>z</i>)
_
| |_ |_ |_
_
|
Trang 10
Xây dựng npda cho ngôn ngữ
<i>L = </i>{<i>wwR</i><sub>:</sub><i><sub>w</sub></i><sub>∈</sub><sub>{</sub><i><sub>a, b</sub></i><sub>}</sub>+<sub>}</sub>
<i>M</i>= ({<i>q</i><sub>0</sub>, <i>q</i><sub>1</sub>, <i>q<sub>f</sub></i>}, {<i>a</i>, <i>b</i>}, {<i>a</i>, <i>b</i>, <i>z</i>}, δ, <i>q</i><sub>0</sub>, <i>z</i>, {<i>q<sub>f</sub></i>}).
δ(<i>q</i>0, <i>a</i>, <i>z</i>) = {(<i>q</i>0, <i>az</i>)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>bz</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>a</i>) = {(<i>q</i><sub>0</sub>, <i>aa</i>)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>a</i>) = {(<i>q</i><sub>0</sub>, <i>ba</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>b</i>) = {(<i>q</i><sub>0</sub>, <i>ab</i>)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>b</i>) = {(<i>q</i><sub>0</sub>, <i>bb</i>)}.
δ(<i>q</i><sub>0</sub>, λ, <i>a</i>) = {(<i>q</i><sub>1</sub>, <i>a</i>)},
δ(<i>q</i><sub>0</sub>, λ, <i>b</i>) = {(<i>q</i><sub>1</sub>, <i>b</i>)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>a</i>) = {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>b</i>) = {(<i>q</i><sub>1</sub>, λ)},
Trang 11
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Dãy chuyển hình trạng đểchấp nhận chuỗi abbalà.
(<i>q</i>0, <i>abba</i>, <i>z</i>) (<i>q</i>0, <i>bba</i>, <i>az</i>) (<i>q</i>0, <i>ba</i>, <i>baz</i>) (<i>q</i>1, <i>ba</i>, <i>baz</i>)
(<i>q</i><sub>1</sub>, <i>a</i>, <i>az</i>) (<i>q</i><sub>1</sub>, λ, <i>z</i>) (<i>q<sub>f</sub></i>, λ, <i>z</i>).
Npda cải tiến
δ(<i>q</i>0, <i>a</i>, <i>z</i>) = {(<i>q</i>0, <i>aa</i>)}, δ(<i>q</i>1, <i>a</i>, <i>a</i>) = {(<i>q</i>1, λ)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>bz</i>)}, δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>b</i>) = {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>a</i>) = {(<i>q</i><sub>0</sub>, <i>aa</i>), (<i>q</i><sub>1</sub>, λ)}, δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q<sub>f</sub></i>, <i>z</i>)}.
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>a</i>) = {(<i>q</i><sub>0</sub>, <i>ba</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>b</i>) = {(<i>q</i><sub>0</sub>, <i>ab</i>)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>b</i>) = {(<i>q</i><sub>0</sub>, <i>bb</i>), (<i>q</i><sub>1</sub>, λ)}.
_
| |_ |_
_
| |_ |_
Trang 12
Dãy chuyển hình trạng đểchấp nhận chuỗi abbalà.
(<i>q</i><sub>0</sub>, <i>abba</i>, <i>z</i>) (<i>q</i><sub>0</sub>, <i>bba</i>, <i>az</i>) (<i>q</i><sub>0</sub>, <i>ba</i>, <i>baz</i>) (<i>q</i><sub>1</sub>, <i>a</i>, <i>az</i>)
(<i>q</i><sub>1</sub>, λ, <i>z</i>) (<i>q<sub>f</sub></i>, λ, <i>z</i>).
<i>L</i><sub>1</sub>= {<i>anbmcn+m</i>: <i>n</i>, <i>m</i>≥0}
<i>L</i><sub>2</sub>= {<i>anbn+mcm</i>: <i>n</i>, <i>m</i>≥1}
<i>L</i><sub>3</sub>= {<i>anbm</i>: 2<i>n</i>≤<i>m</i>≤3<i>n</i>}
<i>L</i><sub>4</sub>= {<i>w</i>: <i>n<sub>a</sub></i>(<i>w</i>) = <i>n<sub>b</sub></i>(<i>w</i>) + 2}
<i>L</i><sub>5</sub>= {<i>w</i>: <i>n<sub>a</sub></i>(<i>w</i>) = 2<i>n<sub>b</sub></i>(<i>w</i>)}
<i>L</i><sub>6</sub>= {<i>w</i>: 2<i>n<sub>b</sub></i>(<i>w</i>) ≤<i>n<sub>a</sub></i>(<i>w</i>) ≤3<i>n<sub>b</sub></i>(<i>w</i>)}
_
| |_ |_
_
Trang 13
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Chúng ta xây dựng một npda mà có thểthực hiện được (mơ
<b>phỏng) một </b>DXTNcủa một chuỗi bất kỳtrong ngôn ngữ.
Giảthiết ngôn ngữ được sinh ra bởi một văn phạm có dạng
chuẩn Greibach.
Pda sắp xây dựng sẽbiểu diễn sựdẫn xuất bằng cách như sau.
Giữ<i>các biến trong phần bên phải của dạng câu</i>trên stack của
nó, cịn phần bên trái, chuỗi chứa các kí hiệu kết thúc, là giống
với phần chuỗi đã được đọc ởngõ nhập.
Chúng ta bắt đầu bằng việc đặt kí hiệu khởi đầu lên stack.
Đểmơ phỏng việc áp dụng luật sinh A→<i>ax, chúng ta phải có</i>
biến <i>A</i> trên đỉnh stackvàkí hiệu kết thúc <i>a</i>là kí hiệu nhập.
Biến trên đỉnh stackđược loại bỏvà thay thếbằng chuỗi biến <i>x</i>.
Trang 14
Xây dựng npda cho ngơn ngữ được sinh ra bởi văn phạm sau.
<i>S </i>→<i>aSbb | a.</i>
Đầu tiên ta biến đổi văn phạm này sang dạng chuẩn Greibach,
thành văn phạm là:
<i>S </i>→<i>aSA | a,</i>
<i>A </i>→<i>bB,</i>
<i>B </i>→<i>b.</i>
Ơtơmát tương ứng sẽcó ba trạng thái {<i>q</i><sub>0</sub>, <i>q</i><sub>1</sub>, <i>q<sub>f</sub></i>}, với trạng thái
khởi đầu là<i>q</i><sub>0</sub>và trạng thái kết thúc là<i>q<sub>f</sub></i>.
Đầu tiên, ởtrạng thái khởi đầu biến S được đặt trên stack bằng
Trang 15
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Các luật sinh S→<i>aSA | a được mô phỏng thành</i>
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>S</i>) = {(<i>q</i><sub>1</sub>, <i>SA</i>), (<i>q</i><sub>1</sub>, λ)}
Bằng kiểu tương tự, các luật sinh khác được mô phỏng bằng
δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>A</i>) = {(<i>q</i><sub>1</sub>, <i>B</i>)},
δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>B</i>) = {(<i>q</i><sub>1</sub>, λ)}
Sựxuất hiện kí hiệu khởi đầu stack trên đỉnh stack báo hiệu sự
hoàn tất của dẫn xuất và PDA sẽ được đặt vào trong trạng thái
kết thúc của nó bằng chuyển trạng thái
δ(<i>q</i><sub>1</sub>, λ, z) = {(<i>q<sub>f</sub></i>, λ)}.
Trang 16
Stack
<i>a</i>
<i>z</i>
Input file
Control unit
<i>q</i><sub>0</sub>
<i>q</i><sub>1</sub>
<i>a</i> <i>b</i> <i>b</i>
<i>a</i>
Input file
<i>a</i> <i>b</i> <i>b</i>
•<i>S</i> ⇒ <i>a</i>•<i>SA</i>
⇒ <i>aa</i>•<i>A</i>
⇒ <i>aab</i>•<i>B</i>
⇒ <i>aabb</i>•
<i>S</i>
<i>S</i>
<i>A</i>
#
#
<i>B</i>
<i>q<sub>f</sub></i>
Trang 17
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Đối với một NNPNC bất kỳkhông chứa λ, tồn tại một npda <i>M</i>
sao cho
<i>L = L</i>(<i>M</i>)<i>.</i>
<b>Input:</b><i>G</i>= (<i>V</i>, <i>T</i>, <i>S</i>, <i>P</i>) có dạng chuẩn Greibach
<b>Output:</b>npda <i>M</i>= (<i>Q</i>, Σ, Γ, δ, <i>q</i><sub>0</sub>, <i>z</i>, <i>F</i>) sao cho <i>L</i>(<i>M</i>) = <i>L</i>(<i>G</i>).
B1 <i>M</i>= ({<i>q</i><sub>0</sub>, <i>q</i><sub>1</sub>, <i>q<sub>f</sub></i>}, <i>T</i>, <i>V</i>∪{<i>z</i>}, δ, <i>q</i><sub>0</sub>, <i>z</i>, {<i>q<sub>f</sub></i>}), <i>z</i>∉<i>V</i>.
B2 δ(<i>q</i><sub>0</sub>, λ, <i>z</i>) = {(<i>q</i><sub>1</sub>, <i>Sz</i>)}
B3 δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>A</i>) ∋{(<i>q</i><sub>1</sub>, <i>u</i>)} ⇔<i>P</i>có luật sinh <i>A</i>→<i>au</i>
B4 δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q<sub>f</sub></i>, <i>z</i>)}
Trang 18
<i>S</i>→<i>aA</i>,
<i>A</i>→<i>aABC </i>| <i>bB </i>| <i>a</i>,
<i>B</i>→<i>b</i>,
<i>C</i>→<i>c</i>.
δ(q<sub>0</sub>, λ, z) = {(q<sub>1</sub>, Sz)},
δ(q<sub>1</sub>, a, S) = {(q<sub>1</sub>, A)},
δ(q<sub>1</sub>, a, A) = {(q<sub>1</sub>, ABC), (q<sub>1</sub>, λ)},
δ(q<sub>1</sub>, b, A) = {(q<sub>1</sub>, B)},
δ(q<sub>1</sub>, b, B) = {(q<sub>1</sub>, λ)},
δ(q<sub>1</sub>, c, C) = {(q<sub>1</sub>, λ)},
δ(q1, λ, z) = {(q<i>f</i>, z)}.
<i>w = aaabc</i>
•<i>S</i>
⇒<i>a</i>•<i>A</i>
⇒<i>aa</i>•<i>ABC</i>
⇒<i>aaa</i>•<i>BC</i>
⇒<i>aaab</i>•<i>C</i>
⇒<i>aaabc</i>•
(<i>q</i><sub>0</sub>, <i>aaabc</i>, <i>z</i>) (<i>q</i><sub>1</sub>, <i>aaabc</i>, <i>Sz</i>)
(<i>q</i><sub>1</sub>, <i>aabc</i>, <i>Az</i>)
(<i>q</i><sub>1</sub>, <i>abc</i>, <i>ABCz</i>)
(<i>q</i><sub>1</sub>, <i>bc</i>, <i>BCz</i>)
(<i>q</i><sub>1</sub>, <i>c</i>, <i>Cz</i>)
(<i>q</i><sub>1</sub>, λ, <i>z</i>)
(<i>qf</i>, λ, <i>z</i>).
Trang 19
Lý thuyết Ôtômát & NNHT - Khoa Công NghệThông Tin
<b>Input:</b><i>G</i>= (<i>V</i>, <i>T</i>, <i>S</i>, <i>P</i>) có dạng tùy ý
<b>Output:</b>npda <i>M</i>= (<i>Q</i>, Σ, Γ, δ, <i>q</i><sub>0</sub>, <i>z</i>, <i>F</i>) sao cho <i>L</i>(<i>M</i>) = <i>L</i>(<i>G</i>).
B1 <i>M</i>= ({<i>q</i><sub>0</sub>, <i>q</i><sub>1</sub>, <i>q<sub>f</sub></i>}, <i>T</i>, <i>V</i> ∪<i>T</i>∪{<i>z</i>}, δ, <i>q</i><sub>0</sub>, <i>z</i>, {<i>q<sub>f</sub></i>}), <i>z</i>∉<i>V</i>.
B2 δ(<i>q</i><sub>0</sub>, λ, <i>z</i>) = {(<i>q</i><sub>1</sub>, <i>Sz</i>)}
B3 δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>A</i>) ∋{(<i>q</i><sub>1</sub>, <i>u</i>)} ⇔<i>P</i>có luật sinh <i>A</i>→<i>au, a </i>∈<i>T</i>
B4 δ(<i>q</i><sub>1</sub>, λ, <i>A</i>) ∋{(<i>q</i><sub>1</sub>, <i>u</i>)} ⇔<i>P</i>có luật sinh <i>A</i>→<i>u </i>và<i>u</i>khơng có
kí hiệu kết thúc đi đầu.
B5 δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>a</i>) = (<i>q</i><sub>1</sub>, λ) với <i>a</i>∈<i>T</i>và<i>a </i>xuất hiện trong một vế
phải luật sinh nào đó mà khơng phải ởvịtrí khởi đầu.
B6 δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q<sub>f</sub></i>, <i>z</i>)}
Trang 20
<i>S </i>→<i>aA | bBbS | AB,</i>
<i>A </i>→<i>aB | bBaA,</i>
<i>B </i>→<i>aBbB | SB | </i>λ
δ(<i>q</i><sub>0</sub>, λ, <i>z</i>) = {(<i>q</i><sub>1</sub>, <i>Sz</i>)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>S</i>) = {(<i>q</i><sub>1</sub>, <i>A</i>)},
δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>S</i>) = {(<i>q</i><sub>1</sub>, <i>BbS</i>)},
δ(<i>q</i>1, λ, <i>S</i>) = {(<i>q</i>1, <i>AB</i>)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>A</i>) = {(<i>q</i><sub>1</sub>, <i>B</i>)},
δ(<i>q</i>1, <i>b</i>, <i>A</i>) = {(<i>q</i>1, <i>BaA</i>)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>B</i>) = {(<i>q</i><sub>1</sub>, <i>BbB</i>)},
δ(<i>q</i><sub>1</sub>, λ, <i>B</i>) = {(<i>q</i><sub>1</sub>, <i>SB</i>), (<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>a</i>) = {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>b</i>) = {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q<sub>f</sub></i>, <i>z</i>)}.
<i>w = baabaa</i>
•<i>S</i>
⇒<i>b</i>•<i>BbS</i>
⇒<i>b</i>•<i>SBbS</i>
⇒<i>ba</i>•<i>ABbS</i>
⇒
<i>baa</i>•<i>BBbS</i>
⇒<i>baa</i>•<i>BbS</i>
⇒<i>baab</i>•<i>S</i>
⇒<i>baaba</i>•<i>A</i>
⇒<i>baabaa</i>•<i>B</i>
⇒<i>baabaa</i>•
(<i>q</i><sub>0</sub>, <i>baabaa</i>, <i>z</i>)
(<i>q</i>1, <i>baabaa</i>, <i>Sz</i>)
(<i>q</i><sub>1</sub>, <i>aabaa</i>, <i>BbSz</i>)
(<i>q</i>1, <i>aabaa</i>, <i>SBbSz</i>)
(<i>q</i><sub>1</sub>, <i>abaa</i>, <i>ABbSz</i>)
(<i>q</i><sub>1</sub>, <i>baa</i>, <i>BBbSz</i>)
(<i>q</i><sub>1</sub>, <i>baa</i>, <i>BbSz</i>)
(<i>q</i><sub>1</sub>, <i>baa</i>, <i>bSz</i>)
(<i>q</i><sub>1</sub>, <i>aa</i>, <i>Sz</i>)
(<i>q</i><sub>1</sub>, <i>a</i>, <i>Az</i>)
(<i>q</i><sub>1</sub>, λ, <i>Bz</i>)
(<i>q</i><sub>1</sub>, λ, <i>z</i>)
(<i>q<sub>f</sub></i>, λ, <i>z</i>).
Trang 21
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Q trình này ngược với quá trình trong Định lý 7.1, tức là xây
dựng văn phạm mô phỏng sựdi chuyển của pda.
Phần biến của dạng câu phản ánh nội dung stack, phần chuỗi
nhập đã được xửlý chính là phần chuỗi kí hiệu kết thúc làm
tiếp đầu ngữcủa dạng câu.
∀npda ∃npda tương đương thõa 2 điều kiện
(1) Chỉcó một trạng thái kết thúc và npda chỉ ởtrong trạng thái
này ⇔stack là trống.
(2) Mọi chuyển trạng thái có dạng δ(<i>q<sub>i</sub></i>, <i>a</i>, <i>A</i>) = {<i>c</i><sub>1</sub>, <i>c</i><sub>2</sub>, ...,
<i>c<sub>n</sub></i>}, trong đó
<i>c<sub>i</sub></i>= (<i>q<sub>j</sub></i>, λ), (7.5) hoặc
<i>c<sub>i</sub></i>= (<i>q<sub>j</sub></i>, <i>BC</i>) (7.6) <sub>ho</sub>Tứ<sub>ặ</sub>c là, m<sub>c t</sub><sub>ă</sub><sub>ng ho</sub>ột di chuy<sub>ặ</sub><sub>c gi</sub><sub>ả</sub><sub>m n</sub>ển <sub>ộ</sub><sub>i </sub>
dung stack một kí hiệu.
Trang 22
Chúng ta muốn dạng câu chỉra nội dung của stack.
Cấu hình của một npda cịn liên quan đến trạng thái nội của
ơtơmát nên nóphải được ghi nhớtrong dạng câu.
Lấy (<i>q<sub>i</sub>Aq<sub>j</sub></i>)làm các biến cho văn phạm, với diễn dịch
(q<i><sub>i</sub>Aq<sub>j</sub></i>) <i>w nếu và chỉnếu npda “xóa” A khỏi stack và đi từ</i>
<i>trạng thái q<sub>i</sub>đến q<sub>j</sub> trong khi đọc ngõ nhập chuỗi w.</i>
“Xóa”ở đây có nghĩa là<i>A</i>và các kết quảsau nóbiến mất khỏi
stack, và kí hiệu ngay bên dưới <i>A </i>sẽtrởthành đỉnh stack.
δ(<i>q<sub>i</sub></i>, <i>a</i>, <i>A</i>) = (<i>q<sub>j</sub></i>, λ) (<i>q<sub>i</sub>Aq<sub>j</sub></i>) →<i>a</i>
δ(<i>q<sub>i</sub></i>, <i>a</i>, <i>A</i>) = (<i>q<sub>j</sub></i>, <i>BC</i>) (<i>q<sub>i</sub>Aq<sub>k</sub></i>) →<i>a</i>(<i>q<sub>j</sub>Bq<sub>l</sub></i>)(<i>q<sub>l</sub>Cq<sub>k</sub></i>)
Trang 23
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
trong đó<i>q<sub>k</sub></i>và<i>q<sub>l</sub></i>lấy mọi giá trịcó thểtrong <i>Q.</i>
Khi vét cạn có thểcó một vài q<i><sub>k</sub></i>khơng thể đạt tới được từ<i>q<sub>i</sub></i>
trong khi xóa <i>A</i>cũng như có thểcó một vài q<i><sub>l</sub></i>khơng thể đạt tới
được từ<i>q<sub>j</sub></i>trong khi xóa <i>B</i>.
Trong trường hợp đó các biến (<i>q<sub>i</sub>Aq<sub>k</sub></i>)và(<i>q<sub>j</sub>bq<sub>l</sub></i>)sẽlàvơ dụng.
Những biến này sẽ được loại bỏbằng giải thuật loại bỏcác biến
vô dụng đã học.
Biến (<i>q</i><sub>0</sub><i>zq<sub>f</sub></i>)sẽlà biến khởi đầu, trong đó<i>q<sub>f</sub></i>là trạng thái kết
thúc đơn của npda.
Trang 24
Xây dựng VPPNC cho npda sau (<i>q</i><sub>0</sub>khởi đầu, <i>q</i><sub>2</sub>kết thúc)
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>A</i>) = {(<i>q</i><sub>0</sub>, <i>A</i>)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>A</i>) = {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q</i><sub>2</sub>, λ)}.
Biến đổi nó thành npda tương đương thõa 2 điều kiện.
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)}, (1)
δ(<i>q</i>0, <i>a</i>, <i>A</i>) = {(<i>q</i>3, λ)}, (2)
δ(<i>q</i><sub>3</sub>, λ, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)}, (3)
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>A</i>) = {(<i>q</i><sub>1</sub>, λ)}, (4)
δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q</i><sub>2</sub>, λ)}. (5)
Trang 25
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Ba chuyển trạng thái (2), (4), (5) có dạng (7.5) nên có các luật
sinh tương ứng với nó là
δ(<i>q</i>0, <i>a</i>, <i>A</i>) = {(<i>q</i>3, λ)}, (2) (q0<i>Aq</i>3) →<i>a</i> (6)
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>A</i>) = {(<i>q</i><sub>1</sub>, λ)}, (4) (q<sub>0</sub><i>Aq</i><sub>1</sub>) →<i>b</i> (7)
δ(<i>q</i><sub>1</sub>, λ, <i>z</i>) = {(<i>q</i><sub>2</sub>, λ)}. (5) (q<sub>1</sub><i>zq</i><sub>2</sub>) → λ (8).
Trang 26
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)} được mô phỏng thành
(q<sub>0</sub><i>zq</i><sub>0</sub>) → <i>a(q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>0</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>0</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>0</sub>) |
<i>a(q</i>0<i>Aq</i>3)(<i>q</i>3<i>zq</i>0),
(q<sub>0</sub><i>zq</i><sub>1</sub>) → <i>a(q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>1</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>1</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>1</sub>) |
<i>a(q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>1</sub>),
(q<sub>0</sub><i>zq</i><sub>2</sub>) → <i>a(q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>2</sub>) |
<i>a(q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(q<sub>0</sub><i>zq</i><sub>3</sub>) → <i>a(q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>3</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>3</sub>) | a(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>3</sub>) |
Trang 27
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Chuyển trạng thái δ(<i>q</i><sub>3</sub>, λ, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)} có thểđượcmơ phỏng
bằng tập luật sinh sau
(q<sub>3</sub><i>zq</i><sub>0</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>0</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>0</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>0</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>0</sub>),
(q<sub>3</sub><i>zq</i><sub>1</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>1</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>1</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>1</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>1</sub>),
(q<sub>3</sub><i>zq</i><sub>2</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>2</sub>) |
(<i>q</i>0<i>Aq</i>3)(<i>q</i>3<i>zq</i>2),
(q<sub>3</sub><i>zq</i><sub>3</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>3</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>3</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>3</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>3</sub>),
Trang 28
Biến khởi đầu của văn phạm là(q<sub>0</sub><i>zq</i><sub>2</sub>).
Loại bỏbiến vô dụng
(<i>q</i><sub>0</sub><i>zq</i><sub>0</sub>) → <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>0</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>0</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>0</sub>) |
<i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>0</sub>),
(<i>q</i><sub>0</sub><i>zq</i><sub>1</sub>) → <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>1</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>1</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>1</sub>) |
<i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>1</sub>),
(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) → <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>)| <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>2</sub>) |
<i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(<i>q</i><sub>0</sub><i>zq</i><sub>3</sub>) → <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>3</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>3</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>3</sub>) |
<i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>3</sub>),
Trang 29
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
(<i>q</i><sub>3</sub><i>zq</i><sub>0</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>0</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>0</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>0</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>0</sub>),
(<i>q</i><sub>3</sub><i>zq</i><sub>1</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>1</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>1</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>1</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>1</sub>),
(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>)| (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>2</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(<i>q</i><sub>3</sub><i>zq</i><sub>3</sub>) → (<i>q</i><sub>0</sub><i>Aq</i><sub>0</sub>)(<i>q</i><sub>0</sub><i>zq</i><sub>3</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>3</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>2</sub>)(<i>q</i><sub>2</sub><i>zq</i><sub>3</sub>) |
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>3</sub>),
(q<sub>0</sub><i>Aq</i><sub>3</sub>)→<i>a</i> (6)
(q<sub>0</sub><i>Aq</i><sub>1</sub>)→<i>b</i> (7)
(q<sub>1</sub><i>zq</i><sub>2</sub>) → λ (8)
Trang 30
(<i>q</i><sub>0</sub>, <i>aab</i>, <i>z</i>) (<i>q</i><sub>0</sub>, <i>ab</i>, <i>Az</i>) (<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) ⇒ <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>)
(<i>q</i>3, <i>b</i>, <i>z</i>) ⇒ <i>aa</i>(<i>q</i>3<i>zq</i>2)
(<i>q</i><sub>0</sub>, <i>b</i>, <i>Az</i>) ⇒ <i>aa</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>)
(<i>q</i><sub>1</sub>, λ, <i>z</i>) ⇒ <i>aab</i>(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>)
(<i>q</i><sub>2</sub>, λ, λ) ⇒ <i>aab</i>
Phân tích chuỗi<i><b>aab</b></i>
_
|
_
|
_
|
_
|
_
|
Npda
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>A</i>)= {(<i>q</i><sub>3</sub>, λ)},
δ(<i>q</i><sub>3</sub>, λ, <i>z</i>) = {(<i>q</i><sub>0</sub>, <i>Az</i>)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, <i>A</i>)= {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i>1, λ, <i>z</i>) = {(<i>q</i>2, λ)}.
Văn phạm kết quả
(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) →<i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>) →(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)→<i>a</i>,
Trang 31
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Nếu <i>L</i>= <i>L</i>(<i>M</i>) đối với một npda <i>M</i>nào đó, thì<i>L</i>là NNPNC<i>.</i>
<i>S</i> →<i>aBC</i>| <i>aAX</i>,
<i>X</i>→<i>BC</i>| <i>AX</i>,
<i>A</i>→<i>a</i>,
<i>B</i>→<i>b</i>,
<i>C</i>→λ,
<i>S</i> →<i>ab</i>| <i>aaX</i>,
<i>X</i> →<i>b</i>| <i>aX</i>, <i>L = </i>{<i>anb</i>: <i>n</i>≥1}
Rút gọn văn phạm
(<i>q</i><sub>0</sub><i>zq</i><sub>2</sub>) →<i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>) | <i>a</i>(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>) →(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)(<i>q</i><sub>1</sub><i>zq</i><sub>2</sub>) | (<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)(<i>q</i><sub>3</sub><i>zq</i><sub>2</sub>),
(<i>q</i><sub>0</sub><i>Aq</i><sub>3</sub>)→<i>a</i>,
(<i>q</i><sub>0</sub><i>Aq</i><sub>1</sub>)→<i>b</i>,
(<i>q</i>1<i>zq</i>2) →λ,
Trang 32
Một ôtômát đẩy xuống <i>M</i>= (<i>Q</i>, Σ, Γ, δ, <i>q</i><sub>0</sub>, <i>z</i>, <i>F</i>) được gọi là
đơn địnhnếu nó là một ơtơmát được định nghĩa như trong
Định nghĩa 7.1, nhưng phải chịu sựgiới hạn rằng, đối ∀trạng
thái <i>q</i>∈<i>Q</i>, kí hiệu <i>a</i>∈Σ∪{λ}, và<i>b</i>∈ Γ,
(1)δ(<i>q</i>, <i>a</i>, <i>b</i>) chứa tối đa một phần tử,
(2) Nếu δ(<i>q</i>, λ, <i>b</i>) ≠ ∅, thìδ(<i>q</i>, <i>c</i>, <i>b</i>) phải = ∅ ∀c ∈Σ.
Một ngôn ngữ<i>L</i> được gọi là NNPNC đơn địnhnếu và chỉnếu
Trang 33
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Ngơn ngữ<i>L</i>= {<i>anbn</i>: <i>n</i>≥0}là PNCĐĐ. Vì nó được chấp nhận
bởi dpda sau
<i>M</i>= ({<i>q</i>0f, <i>q</i>1, <i>q</i>2}, {<i>a</i>, <i>b</i>}, {<i>z</i>, <i>a</i>}, δ, <i>q</i>0f, <i>z</i>, {<i>q</i>0f}) với
δ(<i>q</i><sub>0f</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>1</sub>, <i>az</i>)},
δ(<i>q</i><sub>1</sub>, <i>a</i>, <i>a</i>) = {(<i>q</i><sub>1</sub>, <i>aa</i>)},
δ(<i>q</i><sub>1</sub>, <i>b</i>, <i>a</i>) = {(<i>q</i><sub>2</sub>, λ)},
δ(<i>q</i><sub>2</sub>, <i>b</i>, <i>a</i>) = {(<i>q</i><sub>2</sub>, λ)},
δ(<i>q</i><sub>2</sub>, λ, <i>z</i>) = {(<i>q</i><sub>0f</sub>, λ)}.
Trang 34
Cách 2(với #là kí hiệu kết thúc chuỗi – eof)
<i>M</i>= ({<i>q</i><sub>0</sub>, <i>q</i><sub>1</sub>, <i>q<sub>f</sub></i>}, {<i>a</i>, <i>b</i>}, {<i>z</i>, 1}, δ, <i>q</i><sub>0</sub>, <i>z</i>, {<i>q<sub>f</sub></i>}) với
δ(<i>q</i><sub>0</sub>, #, <i>z</i>) = {(<i>q<sub>f</sub></i>, λ)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, <i>z</i>) = {(<i>q</i><sub>0</sub>, 1<i>z</i>)},
δ(<i>q</i><sub>0</sub>, <i>a</i>, 1) = {(<i>q</i><sub>0</sub>, 11)},
δ(<i>q</i><sub>0</sub>, <i>b</i>, 1) = {(<i>q</i><sub>1</sub>, λ)},
δ(<i>q</i><sub>1</sub>, <i>b</i>, 1) = {(<i>q</i><sub>1</sub>, λ)},
Trang 35
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
<i>L</i><sub>1</sub>= {<i>anbmcn+m</i>: <i>n</i>, <i>m</i>≥0}
<i>L</i><sub>2</sub>= {<i>anbn+mcm</i>: <i>n</i>, <i>m</i>≥1}
<i>L</i><sub>3</sub>= {<i>anbm</i>: 2<i>n</i>≤<i>m</i>≤3<i>n</i>}
<i>L</i><sub>4</sub>= {<i>w</i>: <i>n<sub>a</sub></i>(<i>w</i>) = <i>n<sub>b</sub></i>(<i>w</i>) + 2}
<i>L</i><sub>5</sub>= {<i>w</i>: <i>n<sub>a</sub></i>(<i>w</i>) = 2<i>n<sub>b</sub></i>(<i>w</i>)}
<i>L</i><sub>6</sub>= {<i>w</i>: 2<i>n<sub>b</sub></i>(<i>w</i>) ≤<i>n<sub>a</sub></i>(<i>w</i>) ≤3<i>n<sub>b</sub></i>(<i>w</i>)}
Trang 36
Dpda là một lớp con thực sựcủa npda
<i>L</i><sub>1</sub>= {<i>anbn</i>: <i>n</i>≥0}và<i>L</i><sub>2</sub>= {<i>anb</i>2n: <i>n</i>≥0} là các NNPNC và<i>L</i>=
<i>L</i><sub>1</sub>∪<i>L</i><sub>2</sub>cũng là NNPNC.
<i>L</i>sẽ được chứng minh không phải là NNPNC đơn định.
Trước hết chúng ta sửdụng một kết quả trong Chương 8 là rằng
ngôn ngữ<i>L</i><sub>0</sub>= {<i>an<sub>b</sub>n<sub>c</sub>n</i><sub>: </sub><i><sub>n</sub></i>≥<sub>0}</sub><sub>là không </sub><sub>phi ng</sub><sub>ữ</sub><sub>c</sub><sub>ả</sub><sub>nh</sub><sub>.</sub>
Giảsử<i>L</i>là NNPNC đơn định, gọi <i>M</i>= (<i>Q</i>, Σ, Γ, δ, <i>q</i><sub>0</sub>, <i>z</i>, <i>F</i>)là
Trang 37
Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin
Xét
<i>M</i>’= (<i>Q</i>’, Σ, Γ, δ ∪ δ’, <i>q</i><sub>0</sub>, <i>z</i>, <i>F</i>’)
<i>Q</i>’= <i>Q</i>∪{<i>q</i>0’, <i>q</i>1’, ..., <i>qn</i>’},
<i>F</i>’= <i>F</i>∪{<i>q<sub>i</sub>’</i>: <i>q<sub>i</sub></i>∈<i>F</i>},
δ’(<i>q<sub>f</sub></i>, λ, <i>s</i>)= {(<i>q<sub>f</sub></i>’, <i>s</i>)} ∀<i>q<sub>f</sub></i>∈<i>F</i>, <i>s</i>∈ Γ, và
δ’(<i>q<sub>i</sub></i>’, <i>c</i>, <i>s</i>)= {(<i>q<sub>j</sub></i>’, <i>u</i>)} ∀ δ(<i>q<sub>i</sub></i>, <i>b</i>, <i>s</i>) ={(<i>q<sub>j</sub></i>, <i>u</i>)},
<i>an<sub>b</sub>n</i>
<i>cn</i>
<i>bn</i>
λ λ
Đơn vịđiều khiển của <i>M</i>
Phần thêm vào
Trang 38
Để<i>M</i>chấp nhận <i>anbn</i>chúng ta phải có
(<i>q</i><sub>0</sub>, <i>an<sub>b</sub>n</i><sub>, </sub><i><sub>z</sub></i><sub>) * (</sub><i><sub>q</sub></i>
<i>i</i>, λ, <i>u</i>), với <i>qi</i>∈<i>F</i>.
Bởi <i>M</i>là đơn định, nó cũng phải đúng rằng
(<i>q</i><sub>0</sub>, <i>an<sub>b</sub></i>2n<sub>, </sub><i><sub>z</sub></i><sub>) * (</sub><i><sub>q</sub></i>
<i>i</i>, <i>bn</i>, <i>u</i>),
vậy đểnó chấp nhận <i>an<sub>b</sub></i>2n<sub>phải có</sub>
(<i>q<sub>i</sub></i>, <i>bn</i><sub>, </sub><i><sub>u</sub></i><sub>) * (</sub><i><sub>q</sub></i>
<i>j</i>, λ, <i>u</i>1),
với một <i>q<sub>j</sub></i>nào đó∈<i>F</i>. Nhưng theo cách xây dựng ta có
(<i>qi</i>’, <i>cn</i>, <i>u</i>) * (<i>qj</i>’, λ, <i>u</i>1),
như vậy <i>M</i>’sẽchấp nhận <i>an<sub>b</sub>n<sub>c</sub>n</i><sub>.</sub>
Khơng có chuỗi nào khác hơn những chuỗi trong <i>L</i>’là được
chấp nhận bởi <i>M</i>’.
Suy ra {<i>anbncn</i>}là PNC (><). Vậy <i>L</i> PNC không đơn định.
<i>M</i>
_
|
<i>M</i>
_
|
<i>M</i>
Trang 39
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
NNPNCĐĐ cho phép PTCP một cách hiệu quả, bằng cách xem
dpda như là một thiết bịphân tích.
Tính đơn địnhsuy ra việc xửlý chuỗi nhập trong thời gian
tuyến tínhvới chiều dài chuỗi nhập.
Những loại văn phạm nào thích hợp cho việc mô tảcác
NNPNCĐĐ và cho phép PTCP thời gian tuyến tính.
Giảsửchúng ta đang phân tích từtrên xuống, đang thửtìm
DXTN của một câu cụthể.
Chuỗi nhập w <i>a</i><sub>1</sub> <i>a</i><sub>2</sub> <i>a</i><sub>3</sub> <i>a</i><sub>4</sub> . . . <i>a<sub>n</sub></i>
Dạng câu <i>a</i><sub>1</sub> <i>a</i><sub>2</sub> <i>a</i><sub>3</sub> <i>A</i> . . .
Phần đã được Phần còn chưa được
so trùng so trùng
Trang 40
Quét chuỗi nhập <i>w</i> từ trái sang phải, trong khi phát triển dạng
câu mà chuỗi kí hiệu kết thúc tiếp đầu ngữcủa nó so trùng với
tiếp đầu ngữcủa chuỗi <i>w </i>cho đến kí hiệu được quét hiện tại.
Để tiếp tục so trùng các kí hiệu kế tiếp, chúng ta muốn biết
chính xác luật sinh nào là được áp dụng tại mỗi bước để tránh
backtracking và cho phép PTCP hiệu quả.
Có hay khơng loại văn phạm cho phép làm điều này?
Với VPPNC tổng quát, điều này là không thể, nhưng nếu dạng
của văn phạm được hạn chế hơn, có thể thực hiện được mục
đích của chúng ta.
Văn phạm-s là một ví dụ nhưng khả năng biểu diễn ngôn ngữ
Trang 41
Lý thuyết Ôtômát & NNHT - Khoa Công NghệThông Tin
Cho <i>G</i>= (<i>V</i>, <i>T</i>, <i>S</i>, <i>P</i>) là một VPPNC. Nếu đối với mọi cặp dẫn
xuất trái nhất
<i>S</i> <i>w</i><sub>1</sub><i>Ax</i><sub>1</sub>⇒<i>w</i><sub>1</sub><i>y</i><sub>1</sub><i>x</i><sub>1</sub> <i>w</i><sub>1</sub><i>w</i><sub>2</sub>,
<i>S</i> <i>w</i><sub>1</sub><i>Ax</i><sub>2</sub>⇒<i>w</i><sub>1</sub><i>y</i><sub>2</sub><i>x</i><sub>2</sub> <i>w</i><sub>1</sub><i>w</i><sub>3</sub>,
với <i>w</i><sub>1</sub>, <i>w</i><sub>2</sub>, <i>w</i><sub>3</sub>∈T*, sựbằng nhau của kkí hiệu trái nhất của w<sub>2</sub>
và<i>w</i><sub>3</sub>(nếu có) ⇒<i>y</i><sub>1</sub>= y<sub>2</sub>, thì<i>G</i> được gọi là một VPLL(k).
Điều này có nghĩa là nếu nhìn trước kkí hiệu ngõ nhập thì chỉ
có tối đa một luật sinh là đúng đắn nhất.
Văn phạm bên là thuộc loại <i>LL</i>(1)
*
⇒ <sub>⇒</sub>*
*
⇒ ⇒*
<i>S</i> →<i>aX</i>| <i>bS</i>, (1, 2)
<i>X</i> →<i>b</i>| <i>aS</i>, (3, 4)
Trang 42
Bảng PTCP
Các văn phạm sau đây thuộc họ<i>LL</i>(<i>k</i>) khơng? Nếu có<i>k</i>= ?
<i>S</i> →<i>aSbS</i>| <i>bSaS</i>| λ, (1, 2, 3)
<i>S</i> →<i>aX</i>| <i>bS</i>, (1, 2)
<i>X</i> →<i>b</i>| <i>aS</i>, (3, 4)
3
4
<i>X</i>
2
1
<i>S</i>
#
<i>b</i>
<i>a</i>
<i>S</i> →<i>aS</i>| <i>AB</i>, (1, 2)
<i>A</i> →<i>bA</i>| <i>b</i>, (3, 4)
Trang 43
Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin
Văn phạm <i>LL</i>(<i>k</i>) cho phép PTCP đơn định nếu nhìn trước kkí
hiệu.
Văn phạm LLlà một chủ đềquan trọng trong việc nghiên cứu
các trình biên dịch.
Một sốNNLT có thể được định nghĩa bằng các văn phạm LL,
và nhiều trình biên dịch đã được viết bằng cách sửdụng các bộ
PTCP LL.
Nhưng văn phạm LLlà khơng đủtổng qt đểgiải quyết các
NNPNCĐĐ. Vì vậy, có một mối quan tâm đến các loại văn
phạm khác, văn phạm đơn định tổng quát hơn.
Đó là văn phạm LR, cái mà cho phép PTCP hiệu quả, và xây
dựng cây dẫn xuất từ dưới lên.
Trang 44
<i>L</i><sub>1</sub>= {<i>anbn</i>: <i>n </i>≥0}
<i>L</i><sub>2</sub>= {<i>w </i>∈{<i>a</i>, <i>b</i>}*: <i>n<sub>a</sub></i>(<i>w</i>) = <i>n<sub>b</sub></i>(<i>w</i>)}
<i>L</i><sub>3</sub>= {<i>w </i>∈{<i>a</i>, <i>b</i>}*: <i>n<sub>a</sub></i>(<i>w</i>) = <i>n<sub>b</sub></i>(<i>w</i>), <i>n<sub>a</sub></i>(<i>v</i>) ≥<i>n<sub>b</sub></i>(<i>v</i>) với <i>v</i>là một tiếp