Chuong 7

22 17 0
Chuong 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 LL là không đủ tổng quát để giải quyết các[r]

(1)

Trang

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

Chương Ơtơmát đẩy xung „ 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= {anbn: n ≥ 0}, có một bộ nhớhữu hạn Vì vậy muốn có một máy màđếm khơng giới hạn

„ Từví dụ ngơn ngữ{wwR}, cần thêm khả năng lưu so trùng một dãy kí hiệu thứtự ngược lại. „ Điều đềnghịchúng ta thử một stack như một cơ chế

lưu trữ Đó lớp ơtơmát đẩy xuống(PushDown Automata - PDA)

Trang

Chương Ơtơmát đẩy xung 7.1 PDA khơng đơn định

7.2 NPDA NNPNC

(2)

Trang

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

Ơtơmát đẩy xung khơng đơn định

„ Mỗi di chuyển đơn vị điều khiển đọc kí hiệu nhập,

trong thời điểm thay đổi nội dung stack

„ Mỗi di chuyển xác định kí hiệu nhập tại, kí hiệu

hiện đỉnh stack Kết quảlà trạng thái

đơn vịđiều khiểnvà thay đổi đỉnh stack

„ Chúng ta sẽchỉnghiên cứu PDA thuộc loại accepter

Control unit

Stack Input file

Trang

Định nghĩa ôtômát đẩy xung „ Định nghĩa 7.1

Một accepter đẩy xuống không đơn định (npda) định nghĩa bộbảy M= (Q, Σ, Γ, δ, q0, z, F),

„ Qlà tập hữu hạn trạng thái nội đơ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),

„ q0∈Qlà trạng thái khởi đầu đơn vị điều khiển, „ z ∈ Γlà kí hiệu khởi đầu stack (stack start symbol), „ FQlà tập trạng thái kết thúc

„ Hàm chuyển trạng thái δlà ánh xạ

(3)

Trang

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

Ví d

„ δ(q, a, b) = {(p, cd)}

„ Ví dụ

„ Xét npda với „ Q= {q0,q1,q2,qf}, „ Σ= {a, b},

„ Γ= {0, 1, z}, „ F= {qf},

Stack

a

b c d

Input file

Control unit

qp

Trang

Nhn xét

„ δ(q0, a, z) = {(q1,1z), (qf, λ)}, δ(q0, λ, z) = {(qf, λ)}, „ δ(q1, a, 1) = {(q1, 11)}, δ(q1, b, 1) = {(q2, λ)}, „ δ(q2, b, 1) = {(q2, λ)}, δ(q2, λ, z) = {(qf, λ)} „ δ(q0, b, 0) không định nghĩa tương đương với cấu hình

chết mà ta học

„ δ(q1, a, 1) = {(q1, 11)}thêm kí hiệu vào stack a

đọc

„ δ(q2, b, 1) = {(q2, λ)}xóa kí hiệu khỏi stack b

đọc

(4)

Trang

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 (q, w, u), trong đóqlà trạng thái đơn vị điều

khiển, wlà phần chưa đọc chuỗi nhập, cịn ulà nội dung stack (với kí hiệu trái kí hiệu đỉnh stack) „ Di chuyển,

„ Một di chuyển từmột hình trạng tức thời đến hình

trạng tức thời khác kí hiệu

„ (q1,aw,bx) (q2, w, yx)là có khả ⇔(q2, y) ∈ δ(q1, a, b)

„ , ,

„ Dấu *chỉra có≥0 bước di chuyển thực cịn dấu +

chỉra ≥1 bước di chuyển ChữMchỉra di chuyển ôtômát

_ |

_ | _

|

* _ | |_+

M

_ |

Trang

Ngôn ngữ chấp nhận npda „ Định nghĩa 7.2

„ Cho M = (Q, Σ, Γ, δ, q0, z, F) npda Ngôn ngữ

chấp nhận bởiM là tập

L(M)= {w ∈ Σ*: (q0, w, z) (qf, λ, u), qfF, u ∈ Γ*}.

„ Ví dụ

„ Xây dựng npda cho ngơn ngữ

L= {w∈{a, b}*: na(w) = nb(w)}

(5)

Trang

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 sau „ M= ({q0, qf}, {a, b}, {0, 1, z}, δ, q0, z, {qf})

δ(q0, λ, z) = {(qf, z)},

δ(q0, a, z) = {(q0, 0z)}, δ(q0, b, z) = {(q0, 1z)},

δ(q0, a, 0) = {(q0, 00)}, δ(q0, b, 0) = {(q0, λ)},

δ(q0, a, 1) = {(q0, λ)}, δ(q0, b, 1) = {(q0, 11)},

„ Trong qúa trình xửlý chuỗi baab, npda thực di chuyển

sau

„ (q0, baab, z) (q0, aab, 1z) (q0, ab, z) (q0, b, 0z) (q0, λ, z)

(qf, λ, z)

_

| |_ |_ |_

_ |

Trang 10

Ví dụ (tt)

„ Xây dựng npda cho ngôn ngữ

L = {wwR:w∈{a, b}+}

„ M= ({q0, q1, qf}, {a, b}, {a, b, z}, δ, q0, z, {qf})

δ(q0, a, z) = {(q0, az)},

δ(q0, b, z) = {(q0, bz)},

δ(q0, a, a) = {(q0, aa)},

δ(q0, b, a) = {(q0, ba)},

δ(q0, a, b) = {(q0, ab)},

δ(q0, b, b) = {(q0, bb)}

δ(q0, λ, a) = {(q1, a)}, δ(q0, λ, b) = {(q1, b)},

δ(q1, a, a) = {(q1, λ)},

δ(q1, b, b) = {(q1, λ)},

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

(q0, abba, z) (q0, bba, az) (q0, ba, baz) (q1, ba, baz) (q1, a, az) (q1, λ, z) (qf, λ, z)

„ Npda cải tiến

δ(q0, a, z) = {(q0, aa)}, δ(q1, a, a) = {(q1, λ)},

δ(q0, b, z) = {(q0, bz)}, δ(q1, b, b) = {(q1, λ)},

δ(q0, a, a) = {(q0, aa), (q1, λ)}, δ(q1, λ, z) = {(qf, z)}

δ(q0, b, a) = {(q0, ba)},

δ(q0, a, b) = {(q0, ab)},

δ(q0, b, b) = {(q0, bb), (q1, λ)}

_

| |_ |_

_

| |_ |_

Trang 12

Bài tập

„ Dãy chuyển hình trạng đểchấp nhận chuỗi abbalà

(q0, abba, z) (q0, bba, az) (q0, ba, baz) (q1, a, az) (q1, λ, z) (qf, λ, z)

„ Xây dựng npda cho ngôn ngữsau

„ L1= {anbmcn+m: n, m≥0} „ L2= {anbn+mcm: n, m≥1} „ L3= {anbm: 2nm≤3n} „ L4= {w: na(w) = nb(w) + 2} „ L5= {w: na(w) = 2nb(w)}

„ L6= {w: 2nb(w) ≤na(w) ≤3nb(w)} _

| |_ |_

_

(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 npda mà có thểthực (mơ

phỏng) DXTNcủa chuỗi bất kỳtrong ngôn ngữ

„ Giảthiết ngơn ngữ sinh văn phạm có dạng

chuẩn Greibach

„ Pda xây dựng sẽbiểu diễn sựdẫn xuất cách sau „ Giữcác biến phần bên phải dạng câutrên stack

nó, cịn phần bên trái, chuỗi chứa kí hiệu kết thúc, giống với phần chuỗi đọc ởngõ nhập

„ Chúng ta bắt đầu việc đặt kí hiệu khởi đầu lên stack „ Đểmơ việc áp dụng luật sinh A→ax, phải có

biến A đỉnh stackvàkí hiệu kết thúc alà kí hiệu nhập

„ Biến đỉnh stackđược loại bỏvà thay thếbằng chuỗi biến x

Trang 14

Ví dụ

„ Xây dựng npda cho ngơn ngữ sinh văn phạm sau

S aSbb | a.

„ Đầu tiên ta biến đổi văn phạm sang dạng chuẩn Greibach,

thành văn phạm là:

S aSA | a, A bB, B b.

„ Ơtơmát tương ứng sẽcó ba trạng thái {q0, q1, qf}, với trạng thái

khởi đầu làq0và trạng thái kết thúc làqf

„ Đầu tiên, ởtrạng thái khởi đầu biến S đặt stack

(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→aSA | a mô thành

δ(q1, a, S) = {(q1, SA), (q1, λ)}

„ Bằng kiểu tương tự, luật sinh khác mô

δ(q1, b, A) = {(q1, B)}, δ(q1, b, B) = {(q1, λ)}

„ Sựxuất kí hiệu khởi đầu stack đỉnh stack báo hiệu

hoàn tất dẫn xuất PDA đặt vào trạng thái kết thúc chuyển trạng thái

δ(q1, λ, z) = {(qf, λ)}

Trang 16

Ví dụ (tt)

Stack

a

z

Input file

Control unit

q0 q1 a b b a

Input file

a b b

SaSAaaAaabBaabb

S S A

# #

B qf

(9)

Trang 17

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

Định lý

„ Định lý 7.1

„ Đối với NNPNC bất kỳkhông chứa λ, tồn npda M

sao cho

L = L(M).

„ Thủtục:GGreibach-to-npda

„ Input:G= (V, T, S, P) có dạng chuẩn Greibach

„ Output:npda M= (Q, Σ, Γ, δ, q0, z, F) cho L(M) = L(G)

B1 M= ({q0, q1, qf}, T, V∪{z}, δ, q0, z, {qf}), zV B2 δ(q0, λ, z) = {(q1, Sz)}

B3 δ(q1, a, A) ∋{(q1, u)} ⇔Pcó luật sinh Aau

B4 δ(q1, λ, z) = {(qf, z)}

Trang 18

Ví d

SaA,

AaABC | bB | a,

Bb,

Cc

δ(q0, λ, z) = {(q1, Sz)}, δ(q1, a, S) = {(q1, A)},

δ(q1, a, A) = {(q1, ABC), (q1, λ)}, δ(q1, b, A) = {(q1, B)},

δ(q1, b, B) = {(q1, λ)}, δ(q1, c, C) = {(q1, λ)}, δ(q1, λ, z) = {(qf, z)} w = aaabc

S

aA

aaABC

aaaBC

aaabC

aaabc

(q0, aaabc, z) (q1, aaabc, Sz) (q1, aabc, Az) (q1, abc, ABCz) (q1, bc, BCz) (q1, c, Cz) (q1, λ, z) (qf, λ, z)

(10)

Trang 19

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

Th tc G-to-npda ci tiến „ Thủtục:G-to-npda

„ Input:G= (V, T, S, P) có dạng tùy ý

„ Output:npda M= (Q, Σ, Γ, δ, q0, z, F) cho L(M) = L(G)

B1 M= ({q0, q1, qf}, T, VT∪{z}, δ, q0, z, {qf}), zV B2 δ(q0, λ, z) = {(q1, Sz)}

B3 δ(q1, a, A) ∋{(q1, u)} ⇔Pcó luật sinh Aau, a T

B4 δ(q1, λ, A) ∋{(q1, u)} ⇔Pcó luật sinh Au ukhơng có kí hiệu kết thúc đầu

B5 δ(q1, a, a) = (q1, λ) với aTa xuất vế phải luật sinh mà khơng phải ởvịtrí khởi đầu B6 δ(q1, λ, z) = {(qf, z)}

Trang 20

Ví d

S aA | bBbS | AB, A aB | bBaA, B aBbB | SB | λ δ(q0, λ, z) = {(q1, Sz)},

δ(q1, a, S) = {(q1, A)},

δ(q1, b, S) = {(q1, BbS)},

δ(q1, λ, S) = {(q1, AB)},

δ(q1, a, A) = {(q1, B)},

δ(q1, b, A) = {(q1, BaA)},

δ(q1, a, B) = {(q1, BbB)},

δ(q1, λ, B) = {(q1, SB), (q1, λ)},

δ(q1, a, a) = {(q1, λ)},

δ(q1, b, b) = {(q1, λ)},

δ(q1, λ, z) = {(qf, z)}

w = baabaa

S

bBbS

bSBbS

baABbS

baaBBbS

baaBbS

baabS

baabaA

baabaaB

baabaa

(q0, baabaa, z) (q1, baabaa, Sz)

(q1, aabaa, BbSz) (q1, aabaa, SBbSz)

(q1, abaa, ABbSz) (q1, baa, BBbSz) (q1, baa, BbSz) (q1, baa, bSz) (q1, aa, Sz) (q1, a, Az) (q1, λ, Bz) (q1, λ, z) (qf, λ, z)

(11)

Trang 21

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

VPPNC cho ôtômát đẩy xung

„ Quá trình ngược với trình Định lý 7.1, tức xây

dựng văn phạm mô sựdi chuyển pda

„ Phần biến dạng câu phản ánh nội dung stack, phần chuỗi

nhập xử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 điều kiện

(1) Chỉcó trạng thái kết thúc npda ởtrong trạng thái ⇔stack trống

(2) Mọi chuyển trạng thái có dạng δ(qi, a, A) = {c1, c2, ,

cn},

ci= (qj, λ), (7.5)

ci= (qj, BC) (7.6) hoTứặc là, mc tăng hoột di chuyặc giảm nển ội

dung stack kí hiệu

Trang 22

VPPNC cho ôtômát đẩy xung (tt)

„ Chúng ta muốn dạng câu chỉra nội dung stack

„ Cấu hình npda cịn liên quan đến trạng thái nội

ơtơmát nên nóphải ghi nhớtrong dạng câu

„ Lấy (qiAqj)làm biến cho văn phạm, với diễn dịch

(qiAqj) w chỉnếu npda “xóa” A khỏi stack từ trạng thái qiđến qj đọc ngõ nhập chuỗi w.

„ “Xóa”ở có nghĩa làAvà kết quảsau nóbiến khỏi

stack, kí hiệu bên A sẽtrởthành đỉnh stack „ Ví dụ

„ δ(qi, a, A) = (qj, λ) (qiAqj) →a

„ δ(qi, a, A) = (qj, BC) (qiAqk) →a(qjBql)(qlCqk)

(12)

Trang 23

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

VPPNC cho ôtômát đẩy xung (tt)

trong đóqkqllấy giá trịcó thểtrong Q.

„ Khi vét cạn có thểcó vài qkkhơng thể đạt tới từqi

trong xóa Acũng có thểcó vài qlkhơng thể đạt tới từqjtrong xóa B

„ Trong trường hợp biến (qiAqk)và(qjbql)sẽlàvô dụng „ Những biến loại bỏbằng giải thuật loại bỏcác biến

vô dụng học

„ Biến (q0zqf)sẽlà biến khởi đầu, đóqflà trạng thái kết

thúc đơn npda

Trang 24

Ví d

„ Xây dựng VPPNC cho npda sau (q0khởi đầu, q2kết thúc)

δ(q0, a, z) = {(q0, Az)},

δ(q0, a, A) = {(q0, A)},

δ(q0, b, A) = {(q1, λ)},

δ(q1, λ, z) = {(q2, λ)}

„ Biến đổi thành npda tương đương thõa điều kiện

δ(q0, a, z) = {(q0, Az)}, (1)

δ(q0, a, A) = {(q3, λ)}, (2)

δ(q3, λ, z) = {(q0, Az)}, (3)

δ(q0, b, A) = {(q1, λ)}, (4)

δ(q1, λ, z) = {(q2, λ)} (5)

(13)

Trang 25

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

Ví d (tt)

„ Ba chuyển trạng thái (2), (4), (5) có dạng (7.5) nên có luật

sinh tương ứng với

δ(q0, a, A) = {(q3, λ)}, (2) (q0Aq3) →a (6)

δ(q0, b, A) = {(q1, λ)}, (4) (q0Aq1) →b (7)

δ(q1, λ, z) = {(q2, λ)} (5) (q1zq2) → λ (8)

Trang 26

Ví d (tt)

„ δ(q0, a, z) = {(q0, Az)} mô thành

„ (q0zq0) → a(q0Aq0)(q0zq0) | a(q0Aq1)(q1zq0) | a(q0Aq2)(q2zq0) |

a(q0Aq3)(q3zq0),

„ (q0zq1) → a(q0Aq0)(q0zq1) | a(q0Aq1)(q1zq1) | a(q0Aq2)(q2zq1) |

a(q0Aq3)(q3zq1),

„ (q0zq2) → a(q0Aq0)(q0zq2) | a(q0Aq1)(q1zq2) | a(q0Aq2)(q2zq2) |

a(q0Aq3)(q3zq2),

„ (q0zq3) → a(q0Aq0)(q0zq3) | a(q0Aq1)(q1zq3) | a(q0Aq2)(q2zq3) |

(14)

Trang 27

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

Ví d (tt)

„ Chuyển trạng thái δ(q3, λ, z) = {(q0, Az)} có thểđượcmơ

bằng tập luật sinh sau

„ (q3zq0) → (q0Aq0)(q0zq0) | (q0Aq1)(q1zq0) | (q0Aq2)(q2zq0) |

(q0Aq3)(q3zq0),

„ (q3zq1) → (q0Aq0)(q0zq1) | (q0Aq1)(q1zq1) | (q0Aq2)(q2zq1) |

(q0Aq3)(q3zq1),

„ (q3zq2) → (q0Aq0)(q0zq2) | (q0Aq1)(q1zq2) | (q0Aq2)(q2zq2) |

(q0Aq3)(q3zq2),

„ (q3zq3) → (q0Aq0)(q0zq3) | (q0Aq1)(q1zq3) | (q0Aq2)(q2zq3) |

(q0Aq3)(q3zq3),

Trang 28

Ví d (tt)

„ Biến khởi đầu văn phạm là(q0zq2) „ Loại bỏbiến vô dụng

„ (q0zq0) → a(q0Aq0)(q0zq0) | a(q0Aq1)(q1zq0) | a(q0Aq2)(q2zq0) | a(q0Aq3)(q3zq0),

„ (q0zq1) → a(q0Aq0)(q0zq1) | a(q0Aq1)(q1zq1) | a(q0Aq2)(q2zq1) | a(q0Aq3)(q3zq1),

„ (q0zq2) → a(q0Aq0)(q0zq2) | a(q0Aq1)(q1zq2)| a(q0Aq2)(q2zq2) |

a(q0Aq3)(q3zq2),

„ (q0zq3) → a(q0Aq0)(q0zq3) | a(q0Aq1)(q1zq3) | a(q0Aq2)(q2zq3) | a(q0Aq3)(q3zq3),

(15)

Trang 29

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

Ví d (tt)

„ (q3zq0) → (q0Aq0)(q0zq0) | (q0Aq1)(q1zq0) | (q0Aq2)(q2zq0) |

(q0Aq3)(q3zq0),

„ (q3zq1) → (q0Aq0)(q0zq1) | (q0Aq1)(q1zq1) | (q0Aq2)(q2zq1) |

(q0Aq3)(q3zq1),

„ (q3zq2) → (q0Aq0)(q0zq2) | (q0Aq1)(q1zq2)| (q0Aq2)(q2zq2) |

(q0Aq3)(q3zq2),

„ (q3zq3) → (q0Aq0)(q0zq3) | (q0Aq1)(q1zq3) | (q0Aq2)(q2zq3) |

(q0Aq3)(q3zq3),

(q0Aq3)→a (6) (q0Aq1)→b (7) (q1zq2) → λ (8)

Trang 30

Ví d (tt)

(q0, aab, z) (q0, ab, Az) (q0zq2) ⇒ a(q0Aq3)(q3zq2) (q3, b, z) ⇒ aa(q3zq2)

(q0, b, Az) ⇒ aa(q0Aq1)(q1zq2) (q1, λ, z) ⇒ aab(q1zq2) (q2, λ, λ) ⇒ aab

Phân tích chuỗiaab

_ |

_ |

_ |

_ |

_ |

Npda

δ(q0, a, z) = {(q0, Az)},

δ(q0, a, A)= {(q3, λ)},

δ(q3, λ, z) = {(q0, Az)},

δ(q0, b, A)= {(q1, λ)},

δ(q1, λ, z) = {(q2, λ)} Văn phạm kết

(q0zq2) →a(q0Aq1)(q1zq2) | a(q0Aq3)(q3zq2), (q3zq2) →(q0Aq1)(q1zq2) | (q0Aq3)(q3zq2), (q0Aq3)→a,

(16)

Trang 31

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

Ví d (tt)

„ Định lý 7.2

„ Nếu L= L(M) npda Mnào đó, thìLlà NNPNC.

SaBC| aAX,

XBC| AX,

Aa,

Bb,

C→λ,

Sab| aaX,

Xb| aX, L = {anb: n≥1}

Rút gọn văn phạm

(q0zq2) →a(q0Aq1)(q1zq2) | a(q0Aq3)(q3zq2), (q3zq2) →(q0Aq1)(q1zq2) | (q0Aq3)(q3zq2), (q0Aq3)→a,

(q0Aq1)→b, (q1zq2) →λ,

Trang 32

PDA đơn định NNPNC đơn định

„ Định nghĩa 7.3

„ Một ôtômát đẩy xuống M= (Q, Σ, Γ, δ, q0, z, F) gọi

đơn địnhnếu ôtômát định nghĩa Định nghĩa 7.1, phải chịu sựgiới hạn rằng, đối ∀trạng thái qQ, kí hiệu a∈Σ∪{λ}, vàb∈ Γ,

(1)δ(q, a, b) chứa tối đa phần tử,

(2) Nếu δ(q, λ, b) ≠ ∅, thìδ(q, c, b) phải = ∅ ∀c ∈Σ „ Định nghĩa 7.4

„ Một ngôn ngữL gọi NNPNC đơn địnhnếu chỉnếu

(17)

Trang 33

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

Ví d

„ Ngơn ngữL= {anbn: n≥0}là PNCĐĐ Vì chấp nhận

bởi dpda sau

M= ({q0f, q1, q2}, {a, b}, {z, a}, δ, q0f, z, {q0f}) với

δ(q0f, a, z) = {(q1, az)},

δ(q1, a, a) = {(q1, aa)},

δ(q1, b, a) = {(q2, λ)},

δ(q2, b, a) = {(q2, λ)},

δ(q2, λ, z) = {(q0f, λ)}

Trang 34

Ví d (tt)

„ Cách 2(với #là kí hiệu kết thúc chuỗi – eof)

M= ({q0, q1, qf}, {a, b}, {z, 1}, δ, q0, z, {qf}) với

δ(q0, #, z) = {(qf, λ)},

δ(q0, a, z) = {(q0, 1z)},

δ(q0, a, 1) = {(q0, 11)},

δ(q0, b, 1) = {(q1, λ)},

δ(q1, b, 1) = {(q1, λ)},

(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 ngôn ngữsau

„ L1= {anbmcn+m: n, m≥0} „ L2= {anbn+mcm: n, m≥1} „ L3= {anbm: 2nm≤3n} „ L4= {w: na(w) = nb(w) + 2} „ L5= {w: na(w) = 2nb(w)}

„ L6= {w: 2nb(w) ≤na(w) ≤3nb(w)}

Trang 36

Dpda Npda

„ Dpda lớp thực sựcủa npda

„ L1= {anbn: n≥0}vàL2= {anb2n: n≥0} NNPNC vàL=

L1∪L2cũng NNPNC

„ Lsẽ chứng minh NNPNC đơn định

„ Chứng minh

„ Trước hết sửdụng kết Chương

ngôn ngữL0= {anbncn: n≥0}là không phi ngữcảnh.

„ GiảsửLlà NNPNC đơn định, gọi M= (Q, Σ, Γ, δ, q0, z, F)là

(19)

Trang 37

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

Dpda Npda (tt)

„ Xét

M’= (Q’, Σ, Γ, δ ∪ δ’, q0, z, F’)

Q’= Q∪{q0’, q1’, , qn’}, F’= F∪{qi’: qiF},

δ’(qf, λ, s)= {(qf’, s)} ∀qfF, s∈ Γ,

δ’(qi’, c, s)= {(qj’, u)} ∀ δ(qi, b, s) ={(qj, u)},

anbn

cn

bn

λ λ

Đơn vịđiều khiển M

Phần thêm vào

Trang 38

Dpda Npda (tt)

„ ĐểMchấp nhận anbnchúng ta phải có

(q0, anbn, z) * (q

i, λ, u), với qiF Bởi Mlà đơn định, phải

(q0, anb2n, z) * (q

i, bn, u), đểnó chấp nhận anb2nphải có

(qi, bn, u) * (q

j, λ, u1),

với qjnào đó∈F Nhưng theo cách xây dựng ta có (qi’, cn, u) * (qj’, λ, u1),

như M’sẽchấp nhận anbncn.

„ Khơng có chuỗi khác chuỗi L’là

chấp nhận M

„ Suy {anbncn}là PNC (><) Vậy L PNC không đơn định

M _ |

M _ |

M _ |

(20)

Trang 39

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

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

„ NNPNCĐĐ cho phép PTCP cách hiệu quả, cách xem

dpda thiết bịphân tích

„ Tính đơn địnhsuy việc xửlý chuỗi nhập thời gian

tuyến tínhvới chiều dài chuỗi nhập

„ Những loại văn phạm thích hợp cho việc mơ tảcác

NNPNCĐĐ cho phép PTCP thời gian tuyến tính

„ Giảsửchúng ta phân tích từtrên xuống, thửtìm

DXTN câu cụthể

Chuỗi nhập w a1 a2 a3 a4 an Dạng câu a1 a2 a3 A

Phần Phần chưa so trùng so trùng

Trang 40

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

„ Quét chuỗi nhập w từ trái sang phải, phát triển dạng

câu mà chuỗi kí hiệu kết thúc tiếp đầu ngữcủa so trùng với tiếp đầu ngữcủa chuỗi w cho đến kí hiệu quét

„ Để tiếp tục so trùng kí hiệu kế tiếp, muốn biết

chính xác luật sinh áp dụng bước để tránh backtracking cho phép PTCP hiệu

„ 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 không thể, dạng

của văn phạm hạn chế hơn, thực mục đích

„ Văn phạm-s ví dụ khả biểu diễn ngơn ngữ

(21)

Trang 41

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

Văn phạm LL(k) „ Định nghĩa 7.5

„ Cho G= (V, T, S, P) VPPNC Nếu cặp dẫn

xuất trái

S w1Ax1⇒w1y1x1 w1w2, S w1Ax2⇒w1y2x2 w1w3,

với w1, w2, w3∈T*, sựbằng kkí hiệu trái w2 vàw3(nếu có) ⇒y1= y2, thìG gọi VPLL(k)

„ Điều có nghĩa nhìn trước kkí hiệu ngõ nhập

có tối đa luật sinh đắn „ Ví dụ

„ Văn phạm bên thuộc loại LL(1)

*

⇒ ⇒*

*

⇒ ⇒*

SaX| bS, (1, 2)

Xb| aS, (3, 4)

Trang 42

Văn phạm LL(k)

„ Bảng PTCP

„ Ví dụ

„ Các văn phạm sau thuộc họLL(k) khơng? Nếu cók= ? SaSbS| bSaS| λ, (1, 2, 3)

SaX| bS, (1, 2)

Xb| aS, (3, 4)

4

X

2

S

#

b a

SaS| AB, (1, 2)

AbA| b, (3, 4)

(22)

Trang 43

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

Văn phạm LL(k)

„ Văn phạm LL(k) cho phép PTCP đơn định nhìn trước kkí

hiệu

„ Văn phạm LLlà chủ đềquan trọng việc nghiên cứu

các trình biên dịch

„ Một sốNNLT định nghĩa văn phạm LL,

và nhiều trình biên dịch viết cách sửdụng PTCP LL

„ Nhưng văn phạm LLlà không đủtổng quát đểgiải

NNPNCĐĐ Vì vậy, có mối quan tâm đến loại văn phạm khác, văn phạm đơn định tổng quát

„ Đó văn phạm LR, mà cho phép PTCP hiệu quả, xây

dựng dẫn xuất từ lên

Trang 44

Bài tập

„ Xây dựng văn phạm LL(k) cho ngôn ngữ sau

„ L1= {anbn: n ≥0}

„ L2= {w ∈{a, b}*: na(w) = nb(w)}

„ L3= {w ∈{a, b}*: na(w) = nb(w), na(v) ≥nb(v) với vlà tiếp

Ngày đăng: 29/05/2021, 02:46

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan