Tải bản đầy đủ (.pdf) (22 trang)

Chuong 7

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


<b>Chương 7 Ơtơmát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng</b>


„

Có hay không l

p ôtômát t

ươ

ng

ng v

i l

p NNPNC?


„

Nh

ư

đ

ã bi

ế

t, ôtômát h

u h

n không th

nh

n bi

ế

t t

t c



NNPNC, ch

ng h

n L

= {a

<i>n</i>

<i><sub>b</sub></i>

<i>n</i>

<sub>: n</sub>

<sub>≥</sub>

<sub>0}, vì nó có m</sub>

<sub>ộ</sub>

<sub>t b</sub>

<sub>ộ</sub>


nh

h

u h

n. Vì v

y chúng ta mu

n có m

t máy mà

đế

m


khơng gi

i h

n.



„

T

ví d

ngơn ng

{ww

<i>R</i>

}, chúng ta c

n thêm kh

n

ă

ng


l

ư

u và so trùng m

t dãy kí hi

u trong th

t

ng

ượ

c l

i.


„

Đ

i

u này

đề

ngh

chúng ta th

m

t stack nh

ư

m

t c

ơ

ch

ế



l

ư

u tr

.

Đ

ó chính là l

p ôtômát

đẩ

y xu

ng

(PushDown


Automata - PDA)



Trang 2


<b>Chương 7 Ơtơmát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng</b>


7.1 PDA khơng

đơ

n

đị

nh



7.2 NPDA và NNPNC



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Trang 3


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ơtơmát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng khơng </b>

<b>đơ</b>

<b>n </b>

<b>đị</b>

<b>nh</b>




„ 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


<b>Đị</b>

<b>nh ngh</b>

<b>ĩ</b>

<b>a ôtômát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng</b>


„

Đị

nh ngh

ĩ

a 7.1



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ạ


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Trang 5


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ví d</b>

<b>ụ</b>



„ δ(<i>q</i>, <i>a</i>, <i>b</i>) = {(<i>p</i>, <i>cd</i>)}


„

Ví d



„ 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>


<i>d</i>


Input file


Control unit


<i>qp</i>


Trang 6


<b>Nh</b>

<b>ậ</b>

<b>n xét</b>



„ δ(<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.


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Trang 7


Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin



Một số

khái niệm


„

Hình tr

ng t

c th

i



„ 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).
„

Di chuy

n,



„ 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>).


„

<i><b>, , </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


Ngôn ngữ được chấp nhận bởi một npda


„

Đị

nh ngh

ĩ

a 7.2



„ 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>


„

Ví d



„ 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>)}


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Trang 9



Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


Ví dụ



„ 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


Ví dụ

(tt)



„ 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>, λ)},


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Trang 11



Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


Ví dụ

(tt)



„ 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


Bài tập



„ 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>).


„

Xây d

ng npda cho các ngôn ng

sau



„ <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>)}
_


| |_ |_


_


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Trang 13


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin



Ơtơmát đẩy xuống cho NNPNC



„ 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


Ví dụ



„ 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


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

Trang 15


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


Ví dụ

(tt)



„ 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


Ví dụ

(tt)



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>


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Trang 17


Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin


<b>Đị</b>

<b>nh lý</b>



„

Đị

nh lý 7.1



„ Đố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>


„

<i><b>Thủ</b></i>

<i><b>tục</b></i>

<b>:</b>

<i><b>G</b></i>

<i><b><sub>Greibach</sub></b></i>

<b>-</b>

<i><b>to</b></i>

<b>-</b>

<i><b>npda</b></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


<b>Ví d</b>

<b>ụ</b>



<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>).


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

Trang 19


Lý thuyết Ôtômát & NNHT - Khoa Công NghệThông Tin


<b>Th</b>

<b>ủ</b>

<b>t</b>

<b>ụ</b>

<b>c G-to-npda</b>

<b>c</b>

<b>ả</b>

<b>i ti</b>

<b>ế</b>

<b>n </b>



„

<i><b>Thủ</b></i>

<i><b>tục</b></i>

<b>:</b>

<i><b>G</b></i>

<b>-</b>

<i><b>to</b></i>

<b>-</b>

<i><b>npda</b></i>



„ <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


<b>Ví d</b>

<b>ụ</b>



<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>).


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

Trang 21


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin



<b>VPPNC cho ơtơmát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng</b>



„ 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.


„

B

đề



„ ∀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



<b>VPPNC cho ơtơmát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng (tt)</b>



„ 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.
„

Ví d



„ δ(<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>)


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

Trang 23


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>VPPNC cho ôtômát </b>

<b>đẩ</b>

<b>y xu</b>

<b>ố</b>

<b>ng (tt)</b>



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


<b>Ví d</b>

<b>ụ</b>



„ 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)


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

Trang 25


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



„ 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


<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>




„ δ(<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>) |


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

Trang 27


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



„ 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


<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



„ 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>),


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

Trang 29


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



„ (<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



<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



(<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>,


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

Trang 31


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



„

Đị

nh lý 7.2



„ 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


<b>PDA </b>

<b>đơ</b>

<b>n </b>

<b>đị</b>

<b>nh và NNPNC </b>

<b>đơ</b>

<b>n </b>

<b>đị</b>

<b>nh</b>



„

Đị

nh ngh

ĩ

a 7.3



„ 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 ∈Σ.
„

Đị

nh ngh

ĩ

a 7.4



„ Một ngôn ngữ<i>L</i> được gọi là NNPNC đơn địnhnếu và chỉnếu


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

Trang 33


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


<b>Ví d</b>

<b>ụ</b>



„ 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



<b>Ví d</b>

<b>ụ</b>

<b>(tt)</b>



„ 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>, λ)},


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

Trang 35


Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin


Bài tập


„

Xây d

ng dpda cho các ngôn ng

sau



„ <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 và Npda



„ 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.


„

Ch

ng minh



„ 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à


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

Trang 37


Lý thuyết Ơtơmát & NNHT - Khoa Công NghệThông Tin


Dpda và Npda (tt)



„ 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


Dpda và Npda (tt)



„ Để<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>


_
|


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

Trang 39


Lý thuyết Ơtơmát & NNHT - Khoa Cơng NghệThơng Tin


Văn phạm cho các NNPNC đơn định



„ 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


Văn phạm cho các NNPNC đơn định (tt)



„ 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ữ


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

Trang 41


Lý thuyết Ôtômát & NNHT - Khoa Công NghệThông Tin


Văn phạm

<i>LL</i>

(

<i>k</i>

)


„

Đị

nh ngh

ĩ

a 7.5




„ 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í d



„ 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


Văn phạm

<i>LL</i>

(

<i>k</i>

)



„ Bảng PTCP


„

Ví d



„ 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)


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

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>

)



„ 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


Bài tập



„

Xây d

ng v

ă

n ph

m LL(k)

cho các ngôn ng

sau



„ <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


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×