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

Giáo trình tin học lý thuyết

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 (2.95 MB, 56 trang )

1

Tập hợp

Quan hệ

Phép chứng minh quy nạp

ðồ thị và cây
2

Mon, Tue, Wed, Thu, Fri, Sat, Sun

Tập hợp là tập các ñối tượng không
có sự lặp lại

Tập các ñối tượng rời rạc

Không trùng lắp
Phần tử
3

1, 2, 3

x x là một ngày trong tuần

4

Ký hiệu: ∅
∅∅
∅ hoặc




Ký hiệu: ⊂
⊂⊂
⊂ (Ngược lại: ⊄
⊄⊄
⊄ )

{ 1, 2, 4 } ⊂
⊂⊂
⊂ { 1, 2, 3, 4, 5 }

{ 2, 4, 6 } ⊄
⊄⊄
⊄ { 1, 2, 3, 4, 5 }
Printed with FinePrint - purchase at www.fineprint.com
5


Ký hiệu:
(Ngược lại:

≠≠

)

{ 1, 2 } = { 2, 1 } nhưng { 1, 2, 3 }

≠≠


{ 2, 1 }

:

Ký hiệu:

A = { 1, 2, 3 } thì = {∅
∅∅
∅, {1}, {2}, {3}, {1, 2},
{2, 3}, {3, 1}, {1, 2, 3} }
6
:

A’ = { x | x ∉
∉∉
∉ A }
:

A ∪
∪∪
∪ B = { x | x ∈
∈∈
∈ A hoặc x ∈
∈∈
∈ B }

A ∩ B = { x | x ∈A và x ∈ B }
7
:


A \ B = { x | x ∈ A nhưng x ∉
∉∉
∉ B }


A x B = { (a,b) | a ∈

A và b ∈

B }
8
cho
A = {1, 2} và B = {2, 3}

A ∪ B = { 1, 2, 3 }

A ∩ B = { 2 }

A \ B = { 1 }

A x B = { (1,2 ), (1, 3), (2, 2), (2, 3) }

2
A
= { ∅, {1}, {2}, {1, 2} }

Printed with FinePrint - purchase at www.fineprint.com
9
( A × B ) = aRb
×

××
×
S
10
cho S = {0, 1, 2, 3}


Quan hệ ‘thứ tự nhỏ hơn’
= { (0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3) }


Quan hệ ‘bằng’
= { (0, 0), (1, 1), (2, 2), (3, 3) }


Quan hệ ‘chẵn lẻ’
= { (0, 0), (1, 1), (2, 2), (3, 3), (0, 2), (2, 0), (1, 3), (3, 1)}
11
nếu aRa là ñúng với

∀∀
∀a∈
∈∈
∈S

nếu aRb thì bRa
nếu aRb và bRc thì
aRc
:


L không là quan hệ phản xạ hay ñối xứng

E và P mang tính phản xạ, ñối xứng và bắc cầu

12

E và P là quan hệ tương ñương

L không là quan hệ tương ñương
Printed with FinePrint - purchase at www.fineprint.com
13

∪∪
∪ ∪
∪∪


S
i


S
j
= ∅
∅∅


Nếu a, b cùng thuộc S
i
thì a b ñúng


Nếu a ∈
∈∈


S
i
và b ∈
∈∈


S
j
thì a b sai

P có 2 lớp tương ñương {0, 2} và {1, 3}
14

Nếu (a,b) ∈ R thì (a,b) ∈R
+


Nếu (a,b) ∈
∈∈
∈ R
+
và (b,c) ∈
∈∈
∈ R thì (a,c) ∈
∈∈

∈ R
+


Không còn gì thêm trong R
+


R* = R
+
∪ { (a, a)  a ∈ S }

15

R = { (1, 2), (2, 2), (2, 3) } trên S = {1, 2, 3}

R
+
= { (1, 2), (2, 2), (2, 3), (1, 3) }

R* = { (1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3) }
16
chứng minh
giả sử

⇒⇒
⇒ ∀
∀∀
∀ ≥
≥≥


chứng minh
6
)1n2)(1n(n
i
n
0i
2
++
=

=
Printed with FinePrint - purchase at www.fineprint.com
17

V : tập các ñỉnh (nút)

E : tập các cạnh nối giữa 2 nút
ñồ thị G = (V, E)

V = { 1, 2, 3, 4, 5 }

E = { (n, m) | n+m = 4 hoặc n+m = 7}

















18

V : tập các ñỉnh (nút)

E : tập các cung có hướng

→→


ñồ thị G = (V, E)

V = { 1, 2, 3, 4 }

E = { i → j  i < j }

19
là ñồ thị có hướng

1 nút gốc

Nút trung gian (nút trong)


Nút lá: không dẫn ra nút con

Thứ tự duyệt trên cây:

→→

20
cây minh họa cấu trúc cú pháp câu ‘An là
sinh viên giỏi’
Chủ ngữ
Vị ngữ
Danh từ ðộng từ Bổ ngữ
Danh từ Tính từ
Printed with FinePrint - purchase at www.fineprint.com
1

Khái niệm ngôn ngữ

Cách biểu diễn ngôn ngữ

Văn phạm

Sự phân lớp văn phạm
2

là một thực thể trừu tượng mà ta
không ñịnh nghĩa ñược một cách hình thức

Các chữ cái a, b, c … hoặc các số 1, 2, 3 …



Là một tập (không rỗng) các ký hiệu nào ñó

Bộ chữ cái Latin {A, B, C, …, a, b, c, …, z}

một chuỗi (hay một từ - word) trên bộ
chữ cái Σ

Là một dãy hữu hạn các ký hiệu của Σ

Một ký hiệu có thể xuất hiện nhiều lần
3

là số các ký hiệu tạo thành chuỗi

abca = 4
ký hiệu , là chuỗi không có ký hiệu nào

|ε| = 0
chuỗi v là chuỗi con của w nếu v ñược tạo
bởi các ký hiệu liền kề nhau trong chuỗi w.

Chuỗi 10 là chuỗi con của chuỗi 0
001
là chuỗi con bất kỳ nằm ở ñầu chuỗi
là chuỗi con bất kỳ nằm ở cuối chuỗi

Chuỗi abc
có các tiền tố a, ab, abc


Chuỗi 0246
có các hậu tố 6, 46, 246, 0246
4
là chuỗi ñược tạo thành bằng
cách viết chuỗi thứ nhất, sau ñó viết chuỗi thứ hai,

Nối ghép của chuỗi Long
và Int là LongInt

Nối kết của chuỗi rỗng: εw = wε = w (với mọi w)
→ ε là ñơn vị của phép nối kết
của chuỗi w, ký hiệu w
R
, là chuỗi
w ñược viết theo thứ tự ngược lại.

w = abcd → w
R
= dcba ε
R
= ε
Printed with FinePrint - purchase at www.fineprint.com
5

Ngôn ngữ tự nhiên: tiếng Việt, tiếng Anh, …

Ngôn ngữ lập trình: Pascal, C/C++, …

Là tập hợp các câu theo cấu trúc quy ñịnh nào ñó


Biểu thị các ý nghĩ, các sự kiện hay các khái niệm

Bao gồm một tập các ký hiệu và các quy tắc ñể
vận dụng chúng
6
Một ngôn ngữ (hình thức) L là một
của các ký hiệu từ một bộ chữ cái Σ nào ñó.

Ø và {ε} cũng ñược coi là ngôn ngữ
Ø ≠ {ε} và {Ø} ≠ {ε}
Σ
ΣΣ
Σ Σ
ΣΣ
Σ


Σ* : tập hợp tất cả các chuỗi con, kể cả chuỗi rỗng
ε, sinh ra từ bộ chữ cái Σ.

Σ
+
: tập hợp tất cả các chuỗi con, ngoại trừ chuỗi
rỗng ε, sinh ra từ bộ chữ cái Σ.
Σ* = Σ
+
+ {ε} Σ+ = Σ* - {ε}

Σ = {0,1} thì Σ* = {ε, 0, 1, 00, 01, 10, 11, 000, …} và

Σ
+
= {0, 1, 00, 01, 10, 11, 000, …}
7
=
Σ* - L
L
1
L
2
= {w
1
w
2
| w
1
∈ L
1
và w
2
∈ L
2
} trên bộ chữ cái Σ
1
∪ Σ
2

LLL…LL = L (kết nối i lần trên cùng ngôn ngữ L)

L

=
{ε}
L
8
thành lập một ngôn ngữ
bằng cách kết nối các chuỗi (với số lượng bất kỳ) các
chuỗi của một ngôn ngữ L cho trước

Bao ñóng Kleene:
L* = ∪ L
i

Bao ñóng dương (positive):
L* = ∪ L
i
L = L*L = LL* L* = L ∪ {ε}
cho L = {a, ba}

L
= {aa, aba, baa, baba}

L
= {
aaa, aaba, abaa, ababa, baaa,baaba, babaa, bababa
}

L* = {ε, a, ba, aa, aba, baa, baba, aaa, aaba, …}

∞∞



∞∞

Printed with FinePrint - purchase at www.fineprint.com
9
L = {aa, aba, baa, baba}
L = {a
i
| i là số nguyên tố}

Cho phép biểu diễn ngôn ngữ một cách tổng quát

Văn phạm: cơ chế sản sinh ra mọi chuỗi của ngôn
ngữ

Automata: cơ chế cho phép ñoán nhận một chuỗi
bất kỳ có thuộc một ngôn ngữ L hay không
10
Theo từ ñiển, văn phạm là một tập các quy tắc về cấu
tạo từ và các quy tắc về cách thức liên kết từ lại thành
câu
văn phạm cấu trúc G là một hệ thống gồm 4
thành phần G(V, T, P, S)

V (variables): tập các biến (VD: A, B, C, …)

T (terminal): tập các ký hiệu kết thúc (V ∩ T = Ø)
(VD: a, b, c, …, w, x, y, )

P (production): tập luật sinh, dạng α→β với α, β ∈

(V ∪ T)*

S (start): ký hiệu bắt ñầu (S ⊂
⊂⊂
⊂ V)
11
nếu α→β là một luật sinh thì
γ α
αα
α δ ⇒
⇒⇒
⇒ γ β
ββ
βδ

nếu các chuỗi α
1
, α
2
, , α
m
∈ Σ* và
α
1
⇒ α
2
, α
2
⇒ α
3

, , α
m-1
⇒ α
m
thì α
m
có thể ñược dẫn
xuất từ α
1

α
1
⇒* α
m
L (G) = {w | w ∈ T * và S ⇒* w}
là 2 văn phạm sinh ra cùng
một ngôn ngữ (G
1
tương ñương G
2
⇔ L(G
1
)=L(G
2
) )
12
Bằng cách áp ñặt một số quy tắc hạn chế trên các luật
sinh, Noam Chomsky ñề nghị một hệ thống phân loại
các văn phạm dựa vào tính chất của các luật sinh
.

không cần thỏa ñiều kiện ràng buộc nào
trên tập các luật sinh
nếu văn phạm G có các luật
sinh dạng α→β và |β| ≥ |α|
có luật sinh dạng A→α với A là một
biến ñơn và α là chuỗi các ký hiệu thuộc (V ∪ T)*
Printed with FinePrint - purchase at www.fineprint.com
13
có mọi luật sinh dạng tuyến tính phải hoặc
tuyến tính trái
.

Tuyến tính phải: A → wB hoặc

A → w

Tuyến tính trái: A → Bw hoặc A → w
Với A, B là các biến ñơn, w là chuỗi ký hiệu kết
thúc (có thể là rỗng)
Nếu ký hiệu L
, L , L , L là các ngôn ngữ ñược sinh ra
bởi văn phạm loại 0, 1, 2, 3, ta có:
L
⊂ L ⊂ L ⊂ L

14
văn phạm G( {S, A}, {a, b}, P, S )
ðây là văn phạm loại 3 (dạng tuyến tính phải)
Một dẫn xuất từ S có dạng:
S → aS → aaS → aaaA → aaabA → aaabbA →

aaabbbA → aaabbbb = a
3
b
4

⇒ L(G) = a b = {a
n
b
m
| n,m ≥ 1}
S → aS
S → aA
A → bA
A → b
P =
15
văn phạm G( {S}, {a, b}, P, S )
ðây là văn phạm loại 2 (dạng A→α )
Một dẫn xuất từ S có dạng:
S → aSb → aaSbb → aaaSbbb → aaaabbbb = a
4
b
4

⇒ L(G) = {a
n
b
n
| n ≥ 1}
S → aSb

S → ab
P =
16
văn phạm G( {S, B, C}, {a, b, c}, P, S )
ðây là văn phạm loại 1
Một dẫn xuất từ S: S → aSBC → aaBCBC → aabCBC →
aabBCC → aabbCC → aabbcC → aabbcc=a
2
b
2
c
2

⇒ L(G) = {a
n
b
n
c
n
| n ≥ 1}
S → aSBC
S → aBC
CB → BC
aB → ab
bB → bb
bC → bc
cC → cc
P =
Printed with FinePrint - purchase at www.fineprint.com
17

là máy trừu tượng có cơ cấu và hoạt ñộng
ñơn giản nhưng có khả năng ñoán nhận ngôn ngữ

Con người phải lập trình sẵn cho máy một ‘lộ trình’
ñể thực hiện
18

Mỗi bước di chuyển chỉ ñược xác ñịnh duy nhất
bởi cấu hình hiện tại (hàm chuyển của automata là
ñơn trị)

Tại mỗi bước di chuyển, nó có vài khả năng ñể lựa
chọn (hàm chuyển của automata là ña trị)
Printed with FinePrint - purchase at www.fineprint.com
1

Khái niệm DFA & NFA

Sự tương ñương giữa DFA & NFA

Biểu thức chính quy

Các tính chất của tập chính quy
2
( inite utomata)

eterministic
inite utomata
ondeterministic
inite utomata

3
Start
1
1
0
0
0
0 1
1
a b
c
d
ñ
1
0
1
0
0
1
1
0
: tập hữu hạn các trạng thái (p, q…)
: bộ chữ cái nhập (a, b … ; w, x, y …)
: hàm chuyển, ánh xạ: Q x Σ → Q
∈ Q : trạng thái bắt ñầu.
F ⊆ Q : tập các trạng thái kết thúc.
M=(Q, Σ, δ, q
0
, F)
Trạng thái bắt ñầu

Trạng thái kết thúc
x
Phép chuyển trên nhãn x
4
ε
εε
ε

∀∀


∈∈

Ngôn ngữ
chính quy
chuỗi nhập w=110101

δ(q
0
, 1) = q
1

δ(q
0
, 11) = δ(q
1
, 1) = q
0

δ(q

0
, 110) = δ(q
1
, 10) = δ(q
0
, 0) = q
2

δ(q
0
, 1101) = δ(q
1
, 101) = δ(q
0
, 01) = δ(q
2
, 1) = q
3

δ(q
0
, 11010) = … = δ(q
3
, 0) = q
1

δ(q
0
, 110101) = … = δ(q
1

, 1) = q
0

∈∈
∈ F
Printed with FinePrint - purchase at www.fineprint.com
5

kiểm tra một chuỗi nhập có thuộc ngôn ngữ
ñược chấp nhận bởi automata .

chuỗi nhập

câu trả lời ‘ ’ hoặc ‘ ’

q := q
0
;
c := nextchar ;
While c <> $ do
begin
q :=
δ
(q, c);
c := nextchar ;
end
If (q in F) then write("YES") else write("NO");
6



Ứng với một trạng thái và một ký tự nhập, có thể có
không
, một hoặc nhiều phép chuyển trạng thái.

DFA là một trường hợp ñặc biệt của NFA
Start
0
1
1
0
1
0
1
0
0
1

cho automata M (hình vẽ) và xét chuỗi nhập
q
0
q
0
q
0
q
0
q
0
q
0

q
3
q
1
q
3
q
3
q
1
q
4
q
4
7
: khái niệm là tập hợp tất cả các trạng thái p
sao cho có phép chuyển từ trạng thái q trên nhãn a.

ε
εε
ε

có một trạng thái r trong


p∈


∪∪


∈P
với ∀
∀∀
∀ ⊆
⊆⊆

: tập hữu hạn các trạng thái.
: bộ chữ cái nhập.
: hàm chuyển ánh xạ Q x Σ →
∈ Q : trạng thái bắt ñầu.
F ⊆ Q : tập các trạng thái kết thúc.
M=(Q, Σ, δ, q
0
, F)
8


{q
4
}{q
4
}q
4
Ø{q
4
}q
3
{q
2
}{q

2
}q
2
{q
2
}Øq
1
{q
0
,q
1
} {q
0
,q
3
} q
0
10Trạng thái
Input

δ(q
0
, 0) = {q
0
,q
3
}

δ(q
0

, 01) = δ( δ(q
0
, 0), 1)
= δ({q
0
, q
3
},1) = δ(q
0
, 1)

∪∪
∪ δ(q
3
, 1) = {q
0
, q
1
}

δ(q
0
, 010) = {q
0
, q
3
}

δ(q
0

, 0100) = {q
0
, q
3
, q
4
}

δ(q
0
, 01001) = {q
0
, q
1
, q
4
}
Do

∈∈
∈ nên ∈
∈∈

Printed with FinePrint - purchase at www.fineprint.com
9
Nếu là tập ñược chấp nhận bởi một thì tồn
tại một chấp nhận .
Giả sử chấp nhận L
Ta xây dựng
chấp nhận L


Một phần tử trong ñược ký hiệu là [q
0
, q
1
,
…, q
i
] với q
0
, q
1
, …, q
i

∈∈



là tập hợp các trạng thái của có chứa ít nhất một
trạng thái kết thúc trong tập F của M

Hàm chuyển
nếu và
chỉ nếu

10
NFA với hàm chuyển
(q
0

,0) = {q
0
, q
1
}, (q
0
,1) = {q
1
}, (q
1
,0) = ∅
∅∅
∅, (q
1
,1) = {q
0
, q
1
}
Ta sẽ xây dựng DFA tương ñương

= {∅
∅∅
∅ [q
0
], [q
1
], [q
0
, q

1
]}

= {[q
1
], [q
0
, q
1
]}

Hàm chuyển


∅∅
∅ ∅
∅∅
∅ ∅
∅∅


([q
0
], 0) = [q
0
, q
1
]

([q

0
], 1) = [q
1
]

([q
1
], 0) = ∅
∅∅


([q
1
], 1) = [q
0
, q
1
]

([q
0
, q
1
], 0) = [q
0
, q
1
]

([q

0
, q
1
], 1) = [q
0
, q
1
]
11
ε
εε
ε ε
εε
ε
: ε
εε
ε

δ : hàm chuyển ánh xạ Q x ( ∪
∪∪
∪ ε
εε
ε ) → 2
Q

Khái niệm là tập hợp các trạng thái p sao cho
có phép chuyển nhãn
từ q tới p, với a ∈ (Σ ∪ {ε})
NFA chấp nhận chuỗi 0
+

1
+
2
+
ε
0
1
2
Start
ε
0
0
1
2
Start
1 2
xây dựng NFA chấp nhận chuỗi 0
*
1
*
2
*
12
ε
εε
ε
ε
εε
ε


ε
εε
ε (q) = { p | có ñường ñi từ q tới p theo nhãn ε
εε
ε }

ε
εε
ε (P) = ∪
∪∪


∈∈

ε
εε
ε (q)
mở rộng thành

Q x → 2
Q

(q, w) = { p | có ñường ñi từ q tới p theo nhãn , trên
ñường ñi có thể chứa cạnh nhãn ε
εε
ε }

δ*(q, ε
εε
ε) = ε-CLOSURE(q)


δ*(q,a) = ε-CLOSURE(δ(δ*(q, ε
εε
ε),a))

δ*(q, wa) = ε-CLOSURE( δ( δ*(q, w), a) )
Cách khác: δ*(q, wa) = ε-CLOSURE(P)
với P = { p | r ∈ δ*(q, w) và p ∈ δ(r, a) }

δ*(R, w) = ∪
∪∪


∈∈

δ*(q, w)
Printed with FinePrint - purchase at www.fineprint.com
13
ε
εε
ε
ε
0
1
2
Start
ε
Xét chuỗi nhập

δ*(q

0
, ε
εε
ε) = ε-CLOSURE(q
0
) = {q
0
, q
1
, q
2
}

δ*(q
0
, ) = ε-CLOSURE(δ(δ*(q
0
, ε
εε
ε), 0))
= ε-CLOSURE(δ({q
0
, q
1
, q
2
}, 0)) = ε-CLOSURE(δ(q
0
, 0) ∪
∪∪


δ(q
1
, 0) ∪
∪∪
∪ δ(q
2
, 0) ) = ε-CLOSURE( {q
0
} ∪
∪∪
∪ ∅ ∪ ∅ )
= ε-CLOSURE({q
0
}) = {q
0
, q
1
, q
2
}

δ*(q
0
, ) = ε-CLOSURE(δ(δ*(q
0
, 0), 1))
= ε-CLOSURE(δ({q
0
, q

1
, q
2
}, 1)) = ε-CLOSURE({q
1
})
= {q
1
,q
2
}

δ*(q
0
, ) = ε-CLOSURE(δ(δ*(q
0
, 01), 2))
= ε-CLOSURE(δ({q
1
, q
2
}, 2)) = ε-CLOSURE({q
2
}) = {q
2
}

Do q
2
∈ F nên w ∈ L(M)

14
ε
εε
ε
mô phỏng hoạt ñộng của NFAε
chuỗi nhập
câu trả lời ‘YES’ (x ñược chấp nhận) hoặc ‘NO’
q := ε (q
0
) ;
c := nextchar ;
While c <> $ do
begin
q := ε
(
δ
(q, c));
c := nextchar ;
end
If (q in F) then write("YES") else write("NO");
15
ε
εε
ε
nếu L ñược chấp nhận bởi một NFA có ε
εε
ε-dịch
chuyển thì L cũng ñược chấp nhận bởi một NFA không có
ε
εε

ε-dịch chuyển.
ε
εε
ε M(Q, Σ, δ, q
0
, F) chấp nhận L
Ta xây dựng:
M’={Q, Σ, , q
0
, }
Với:


∪∪

nếu ε-CLOSURE(q
0
) chứa một trạng thái thuộc
F.
Ngược lại,

(q, a) = (q, a)
16
Xây dựng NFA tương ñương M’={Q, Σ, , q
0
, }

Q = {q
0
, q

1
, q
2
}

Σ = {0, 1, 2}

Trạng thái bắt ñầu: q
0

= {q
0
, q
2
}

Hàm chuyển
{q
2
}∅∅q
2
{q
2
}{q
1
, q
2
}∅q
1
{q

2
}{q
1
, q
2
}{q
0
, q
1
, q
2
}q
0
210Trạng thái
Inputsδ’
0, 1
0
1
2
Start
1, 2
0, 1, 2
ε
0 1
2
Start
ε
ε
εε
ε

Printed with FinePrint - purchase at www.fineprint.com
17
ε
εε
ε
xây dựng DFA tương ñương với NFAε
εε
ε sau:
= (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10})
a
b
ε
ε
ε
ε
εε
ε
ε
a b b
Start
Ta xây dựng = (Q’, Σ, δ’, q
0
’, F’) tương ñương

Trạng thái bắt ñầu: q
0
’ ↔ ε-CLOSURE(q
0
)


F’ = {
| trong ký hiệu của có chứa ít nhất một trạng
thái của F }

Xây dựng hàm chuyển δ’
18
T := ε (q
0
) ; ;
While do
Begin

{ xét trạng thái T}
For
do
begin
ε δ
If then
begin
δ {
δ
[T, a] là phần tử của bảng chuyển DFA}
end;
end;
End;
19
ε
εε
ε


ε-CLOSURE(q
0
) = {0, 1, 2, 4, 7} → q
0
’ = [0, 1, 2, 4, 7] =

ε-CLOSURE(δ(A, a)) = ε-CLOSURE({3, 8}) = {1, 2, 3, 4, 6,
7, 8} →

ε-CLOSURE(δ(A, b)) = ε-CLOSURE({5}) = {1, 2, 4, 5, 6, 7}



ε-CLOSURE(δ(B, a)) = ε-CLOSURE({3, 8}) → B

ε-CLOSURE(δ(B, b)) = ε-CLOSURE({5, 9}) = {1, 2, 4, 5, 6,
7, 9} →

ε-CLOSURE(δ(C, a)) = ε-CLOSURE({3, 8}) → B

ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C

ε-CLOSURE(δ(D, a)) = ε-CLOSURE({3, 8}) → B

ε-CLOSURE(δ(D, b)) = ε-CLOSURE({5,10}) = {1, 2, 4, 5,
6, 7,
} →

ε-CLOSURE(δ(E, a)) = ε-CLOSURE({3, 8}) → B


ε-CLOSURE(δ(E, b)) = ε-CLOSURE({5}) = → C
20

Bảng hàm chuyển
a
a
a
a
a
b
b
b
b
b
Start
CBE
EBD
CBC
DBB
CBA
ba

Ký hiệu bắt ñầu: q
0
’ = A (↔ ε-CLOSURE(q
0
) )

Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng
thái 10 ∈

)
ε
εε
ε
Printed with FinePrint - purchase at www.fineprint.com
21

: là biểu thức chính quy biểu diễn tập {00}

: tập hợp tất cả các chuỗi số 0 và số 1, kể cả
chuỗi rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010
}

* : ký hiệu cho tất cả các chuỗi 0, 1 tận cùng
bởi 011 = {011, 0011, 1011, 00011, 11011, }

: tập hợp tất cả các chuỗi 0,1 có ít nhất
hai số 0 liên tiếp = {00, 000, 100, 0000, 0001, 1000,
1001, 011001, }

ε
εε
ε : tất cả các chuỗi không có hai số 0 liên
tiếp = {ε, 0, 01, 010, 1, 10, 01010, 0111, }

* * * : {ε, 0, 1, 2, 01, 02, 12, 012, 0012, 0112, }

: tất cả các chuỗi trong tập 0*1*2* với ít nhất
một ký hiệu 0, 1 và 2 ↔ viết gọn thành
22

cho Σ là một bộ chữ cái. BTCQ trên Σ là các tập
hợp mà chúng mô tả ñược ñịnh nghĩa ñệ quy như sau:

∅ là BTCQ ký hiệu cho tập rỗng

ε là BTCQ ký hiệu cho tập {ε}


∀∀
∀a ∈ Σ, là BTCQ ký hiệu cho tập {a}

Nếu và là các BTCQ ký hiệu cho các tập hợp R và
S thì
, và là các BTCQ ký hiệu cho các
tập hợp R ∪
∪∪
∪ S, RS và R* tương ứng

Biểu thức
có thể viết là
23

r + ∅ = ∅ + r = r

r + r = r

r + s = s + r

(r + s) + t = r + (s + t) = r + s + t


rε = εr = r

r∅ = ∅r = ∅

(r + s) t = rt + st

r (s + t) = rs + rt

ε* = ε

∅* = ∅

r*r* = r*

(r*)* = r*

r* = ε + r + r
2
+ … + r
k
+ …

r* = ε + r
+


(ε +
)
+
= (ε + )* = r*


r*r = r r* = r
+

(r* + s*)* = (r*s*)* = (r + s)*

(rs)*r = r(sr)*

(r*s)* r* = (r + s)*
24
ε
εε
ε
nếu r là BTCQ thì tồn tại một NFA với ε-dịch
chuyển chấp nhận L(r)
quy nạp theo

Xét không có phép toán nào
Start
q
0
q
0
q
0
q
f
q
f
Start Start

r = ε r = ∅ r = a
a
Các NFA
ε
cho các kết hợp ñơn

Xét có i phép toán: , hoặc

Xây dựng NFAε
εε
ε = (Q
1
, Σ
1
, δ
1
, q
1
, {f
1
}) và = (Q
2
,
Σ
2
, δ
2
, q
2
, {f

2
}) sao cho L(M
1
) = L(r
1
) và L(M
2
) = L(r
2
)

Xây dựng NFAε
εε
ε
như sau:
Printed with FinePrint - purchase at www.fineprint.com
25
ε
εε
ε
q
1
f1
f
0
M
1
q
2
f

2
M
2
q
0
Start
ε
ε
ε
ε
ε
q
1
f
1
M
1
f
0
q
0
ε
ε
ε
Start




q

2
f
2
M
2
q
1
f
1
M
1
Start ε
26
ε
εε
ε
xây dựng NFAε chấp nhận BTCQ

r có dạng: r = r
1
+ r
2
với r
1
= 01* và r
2
= 1

r
1

có dạng r
1
= r
3
r
4
với r
3
= 0 và r
4
= 1*

r
4
có dạng r
4
= r
5
* với r
5
= 1
q
1
q
2
1
Start
q
3
q

4
0
Start
ε
q
5
q
6
1
Start
q
7
q
8
ε ε
ε
ε
ε
ε
q
7
q
5
1
Start
q
3
q
8
ε

ε
q
4
0
q
6
ε
ε
ε
q
4
q
7
Start
q
9
q
10
ε
ε
q
3
0
q
5
q
1
q
2
q

6
q
8
1
ε
1
ε
ε
ε
q
5
q
6
1
Start
27
Nếu L ñược chấp nhận bởi một DFA, thì L ñược
ký hiệu bởi một BTCQ

ñược chấp nhận bởi DFA ({q
1
, q
2
, , q
n
}, Σ, δ, q
1
, F)

ðặt

= {x | δ(q
i
, x) = q
j
và nếu δ(q
i
, y) = q
l
(y ⊂ x) thì l ≤ k}
(hay
là tập hợp tất cả các chuỗi làm cho automata ñi từ
trạng thái i ñến trạng thái j mà không ñi ngang qua trạng
thái nào lớn hơn k)

ðịnh nghĩa ñệ quy của R
k
ij
:
= R
k-1
ik
(R
k-1
kk
)*R
k-1
kj
∪ R
k-1
ij


{a | δ(q
i
, a) = q
j
}, nếu i ≠ j
{a | δ(q
i
, a) = q
j
} ∪ {ε}, nếu i = j
28

Quy nạp theo

k = 0: R
0
ij
là tập hữu hạn các chuỗi 1 ký hiệu hoặc
ε

Giả sử ta có ñịnh lý ñúng với k-1, tức là tồn tại
BTCQ r
k-1
lm
sao cho L(r
k-1
lm
) = R
k-1

lm

Vậy ñối với r
k
ij
ta có thể chọn BTCQ
(r
k-1
ik
)(r
k-1
kk
)*(r
k-1
kj
) + r
k-1
ij

Ta có nhận xét:
L(M) = ∪
qj ∈F
R
n
1j

Vậy L có thể ñược ký hiệu bằng BTCQ
r = r
n
1j1

+ r
n
1j2
+ … + r
n
1jp
với F = {q
j1
, q
j2
, …, q
jp
}
Printed with FinePrint - purchase at www.fineprint.com
29
viết BTCQ cho DFA
Ta cần viết biểu thức:
Ta có:

r
3
12
= r
2
13
(r
2
33
)*r
2

32
+ r
2
12

r
3
13
= r
2
13
(r
2
33
)*r
2
33
+ r
2
13
1
1
q
1
q
2
q
3
0
0 0, 1

Start
30
Thay vào và rút gọn, ta có:
r =
ε
εε
ε
ε + (0 + 1)0*1εε
(0 + 1)(00)*0 + 10 + 1
(0 + 1)(00)*0∅∅
0*11 + 011
(00)*ε + 00ε
0(00)*00
0*111
0(00)*00
(00)*εε
31
DFA
NFAε
NFA
RE
4 2
1
3
Printed with FinePrint - purchase at www.fineprint.com
1

Văn phạm chính quy (RG: egular rammar)

Sự tương ñương giữa RG và FA


Bổ ñề bơm cho tập hợp chính quy

Tính chất ñóng của tập hợp chính quy
2
là văn phạm mà tất cả các luật sinh
của nó ñều có dạng
(hoặc
)

Tuyến tính trái: dạng A → Bw hoặc A → w

Tuyến tính phải: dạng A → wB hoặc A → w
:

Văn phạm chính quy sinh ra ngôn ngữ chính quy

Ngôn ngữ chính quy có thể ñược ký hiệu ñơn giản
bằng một biểu thức chính quy

Tập hợp các chuỗi ñược ký hiệu bởi một biểu thức
chính quy ñược gọi là tập hợp chính quy
3
Nếu L ñược sinh ra từ một văn phạm chính quy
thì L là tập hợp chính quy
: một văn phạm chính quy có thể ñược biểu diễn bởi
một Automata hữu hạn.
xét văn phạm tuyến tính phải: S → 0A ; A → 10A |

α

αα
α →
→→
→ α
αα
α

Nếu a là một ký hiệu kết thúc: α
αα
α α
αα
α

Trạng thái bắt ñầu , trạng thái kết thúc
[0A] [A] [ε]
0
ε
[10A]
[S]
ε
1
ε
4
xét văn phạm tuyến tính trái: S → S10 | 0

→ tuyến tính phải
S → 01S | 0
[S] [01S]
[ε]
ε

[0]
[1S]
ε
1
0

0
[0]
ε
ε
[01S]
[ε]
0
1
0
[S] [1S]
Printed with FinePrint - purchase at www.fineprint.com
5
Nếu L là một tập hợp chính quy thì L ñược sinh
ra từ một văn phạm tuyến tính trái hoặc một văn phạm
tuyến tính phải nào ñó
: một Automata hữu hạn có thể ñược biểu diễn bởi
một văn phạm chính quy.
xét DFA cho
0
1
0, 1
0
1
1

0
6
xét hàm chuyển trạng thái

p →
→→



→→


Nếu q
0
là trạng thái kết thúc, thêm vào: →
→→

A →
→→


→→


→→


→→



→→


→→


→→

Do biến D không có ích:


Bắt ñầu với một NFA cho L
R

ðảo ngược chuỗi vế phải cho tất cả mọi luật sinh của
văn phạm vừa thu ñược
7
nếu L là tập hợp chính quy thì có tồn tại hằng số
sao cho nếu
là một từ bất kỳ thuộc L và ≥ thì ta có
thể viết
với , và ∀
∀∀
∀ ta có ∈
∈∈


L là ngôn ngữ chính quy → tồn tại DFA M=(Q, Σ, δ, q
0
, F) có

n trạng thái chấp nhận L.

Xét chuỗi nhập z = a
1
a
2
…a
m
, m ≥ n

Với mỗi i=1,2,…,m, ta ñặt δ(q
0
, a
1
a
2
…a
i
) = q
i

Phải có ít nhất 2 trạng thái trùng nhau

z ∈
∈∈
∈ L → q
m

∈∈
∈ → a

1
…a
j
a
k+1
…a
m

∈∈
∈ L(M) →

∈∈
∈ , với i ≥ 0
q
j
=q
k
8
dùng ñể chứng tỏ một tập hợp
không là tập hợp chính quy
chứng minh tập hợp
không làp tập hợp chính quy

Giả sử L là tập chính quy → tồn tại DFA chấp nhận L.
Gọi n là số trạng thái của DFA.

Xét chuỗi z =

Theo bổ ñề bơm: z=uvw với 1≤ lvl ≤ n và uv
i

w ∈
∈∈
∈ L

Xét i = 2, ta phải có uv
2
w ∈
∈∈
∈ L

Mặt khác: n
2
= lzl = luvwl < luvvwl ≤ n
2
+ n < (n+1)
2

Do n
2
và (n+1)
2
là 2 số chính phương liên tiếp nên
luv
2
wl không thể là một số chính phương, hay uv
2
w
không thuộc L (trái giả thiết).
0


n
2
0

i
2
Printed with FinePrint - purchase at www.fineprint.com
9
Một phép toán là ñóng ñối với tập chính quy khi áp dụng
chúng vào tập hợp chính quy thì vẫn giữ ñược các tính
chất của tập chính quy.
tập hợp chính quy ñóng với các phép toán: hợp,
nối kết và bao ñóng Kleen.
tập hợp chính quy ñóng với phép lấy phần bù.
tập hợp chính quy ñóng với phép giao
Printed with FinePrint - purchase at www.fineprint.com
1

Văn phạm phi ngữ cảnh (CFG)

Giản lược văn phạm phi ngữ cảnh

Chuẩn hóa văn phạm phi ngữ cảnh

Các tính chất của văn phạm phi ngữ cảnh
2
là hệ thống gồm 4 thành phần

V : tập hữu hạn các biến (ký tự chưa kết thúc)


T : tập hữu hạn các ký tự kết thúc (V ∩ T = Ø)

P : tập hữu hạn các luật sinh dạng A → α
α α
α
α∈
α∈ α∈
α∈ (V∪T

S : ký hiệu bắt ñầu của văn phạm
S → AB
A → aA
A → a
B → bB
B → b
S → AB
A → aAa
B → bBb
hay
:

V: chữ in hoa (A, B, C, ); T: chữ in thường (a, b, c, , w, x, y )

α, β, γ,
biểu diễn chuỗi ký hiệu kết thúc và biến
: G=({S, A, B}, {a, b}, P, S) với P gồm các luật sinh:
3

Nếu A → β là luật sinh trong văn phạm G và α, γ là 2 chuỗi bất kỳ,
thì khi áp dụng luật sinh A → β vào chuỗi α

αα
α
γ
γγ
γ ta sẽ thu ñược chuỗi
αβγ
αβγαβγ
αβγ :
α
γ


⇒⇒

G
αβ
ββ
βγ

Giả sử: α
1



⇒⇒

G
α
2
, α

2



⇒⇒

G
α
3
, , α
m-1



⇒⇒

G
α
m
, ta có:
α
1



⇒⇒

G
α
m


Ta có: α


⇒⇒

G
α với mọi chuỗi α

Thông thường, ta sẽ dùng ⇒
⇒⇒
⇒ và ⇒
⇒⇒

thay cho ⇒
⇒⇒

G
và ⇒
⇒⇒

G
cho CFG G(V, T, P, S)


 ∈
∈∈
∈ ⇒
⇒⇒


(chuỗi w gồm toàn ký hiệu kết thúc và ñược dẫn ra từ S)
4
cây dẫn xuất (hay cây phân tích cú pháp) của một văn
phạm G(V, T, P, S) có ñặc ñiểm
(1) Mỗi nút có một nhãn, là một ký hiệu ∈
∈∈
∈ (V ∪ T ∪ {ε} )
(2) Nút gốc có nhãn là S (ký hiệu bắt ñầu)
(3) Nếu nút trung gian có nhãn A thì A ∈
∈∈
∈ V
(4) Nếu nút n có nhãn A và các ñỉnh n
1
, n
2
, , n
k
là con của n
theo thứ tự từ trái sang phải có nhãn lần lượt là X
1
, X
2
, , X
k
thì
A → X
1
X
2
X

k
là một luật sinh trong P
(5) Nếu nút n có nhãn là ε thì n phải là nút lá và là nút con duy
nhất của nút cha của nó
Printed with FinePrint - purchase at www.fineprint.com
5
xét văn phạm G({S, A}, {a, b}, P, S}, với P gồm:
S → aASa
A → SbASSba
Một dẫn xuất của G:
S ⇒
⇒⇒
⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa
1
3
6
10
2
5
9
4
7
8
11
S
A
b
b
a
S

a
S
A
a
a
nếu G(V, T, P, S) là một CFG thì ⇒
⇒⇒
⇒ α
αα
α nếu và chỉ
nếu có cây dẫn xuất trong văn phạm sinh ra α
αα
α.
6
nếu tại mỗi bước dẫn xuất, luật sinh
ñược áp dụng vào biến bên trái nhất (phải nhất)
xét văn phạm G với luật sinh:

→→


→→
→ 



→→
→ 




Các dẫn xuất khác nhau cho từ :

⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒


⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒


⇒⇒

⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒


⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒
⇒ ⇒
⇒⇒


Dẫn xuất (a) là dẫn xuất trái nhất, (b) là dẫn xuất phải nhất

Các dẫn xuất tuy khác nhau, nhưng có cùng một cây dẫn xuất
7
một văn phạm phi ngữ cảnh G ñược gọi là văn phạm

mơ hồ (ambiguity) nếu nó có nhiều hơn một cây dẫn xuất cho
cùng một chuỗi w.
xét văn phạm G với luật sinh:
E →
→→
→ E + E 
 
 E * E 
 
 (E) 
 
 a
Với chuỗi
, ta có thể vẽ ñến 2 cây dẫn xuất khác nhau
ðiều này có nghĩa là biểu thức a + a * a có thể hiểu theo 2 cách khác
nhau:
hoặc
8

Hoặc quy ñịnh rằng các phép cộng và nhân luôn ñược thực
hiện theo thứ tự từ trái sang phải (trừ khi gặp ngoặc ñơn)
E →
→→
→ E + T 

 E * T 

 T
T →
→→

→ (E) 

 a

Hoặc quy ñịnh rằng khi không có dấu ngoặc ñơn ngăn cách thì
phép nhân luôn ñược thực hiện ưu tiên hơn phép cộng
E →
→→
→ E + T 

 T
T →
→→
→ T * F 

 F
F →
→→
→ (E) 

 a
Printed with FinePrint - purchase at www.fineprint.com
9

Các ký hiệu không tham gia vào quá trình dẫn xuất ra chuỗi ký
hiệu kết thúc

Luật sinh dạng A →
→→
→ B (làm kéo dài chuỗi dẫn xuất)


⇒⇒


Mỗi biến và mỗi ký hiệu kết thúc của văn phạm ñều xuất
hiện trong dẫn xuất của một số chuỗi trong ngôn ngữ

Không có luật sinh
A →
→→
→ B (với A, B ñều là biến)

Nếu ngôn ngữ không chấp nhận chuỗi rỗng ε thì không cần luật
sinh A →
→→
→ ε .
10
một ký hiệu X ñược gọi là có ích nếu có một dẫn xuất

⇒⇒
⇒ α
αα
α β
β β
β ⇒
⇒⇒

với α, β là các chuỗi bất kỳ và w ∈
∈∈
∈ T*.


⇒⇒


X phải dẫn ra chuỗi ký hiệu kết thúc

X phải nằm trong dẫn xuất từ S
11

Cho CFG G(V, T, P, S) với L(G) ≠ Ø, có một CFG G'(V', T', P', S)
tương ñương sao cho mỗi

∈∈
∈ tồn tại ∈
∈∈
∈ ñể ⇒
⇒⇒

Begin

∅∅


 
 →
→→
→ ∈
∈∈

While ≠

≠≠
≠ do
begin

∪∪
∪ 

 →
→→
→ α
αα
α α
αα
α ∈
∈∈
∈ ∪
∪∪

end;
End;
12

Cho CFG G(V, T, P, S), ta có thể tìm ñược CFG G'(V', T', P', S)
tương ñương sao cho mỗi

∈∈


∪∪


tồn tại α
αα
α β
ββ
β ∈
∈∈


∪∪

ñể

⇒⇒
⇒ α
αα
α β
ββ
β

ðặt V' = {S} ; T' = Ø

Nếu A ∈ V' và A

α
αα
α

 

α

αα
α









α
αα
α là các luật sinh trong P thì

Thêm các biến của α
αα
α



α
αα
α , α
, α , α
, α vào

Thêm các ký hiệu kết thúc của α
αα
α




α
αα
α , α
, α , α
, α vào

Lặp lại cho ñến khi không còn biến hoặc ký hiệu kết thúc nào
ñược thêm vào nữa
Printed with FinePrint - purchase at www.fineprint.com
13
xét văn phạm S → A
A → aBb | ε
B → A | cB | cC
C → AC | BCD
D → ab

Áp dng b ñ 1
:
V' = {S, A, B, D}
S → A
A → aBb | ε
B → A | cB
D → ab

Áp dng b ñ 2
:
V' = {S, A, B}

S → A
A → aBb | ε
B → A | cB
14

Cho CFG G(V, T, P, S) và L là ngôn ngữ sinh ra bởi G. Khi ñó L – {ε} là
ngôn ngữ sinh ra bởi CFG G'(V, T, P', S) không có ký hiệu vô ích và
không có luật sinh ε.

: xác ñịnh tập biến rỗng Nullable
i. A


ε

⇒⇒
⇒ A ∈
∈∈
∈ Nullable
ii.B


X
1
X
2
X
n
, ∀
∀∀

∀X
i
∈ Nullable

⇒⇒
⇒ B ∈
∈∈
∈ Nullable

xây dựng tập luật sinh P'
Với mỗi luật sinh A


X
1
X
2
X
n
trong P, ta xây dựng luật sinh
A

α
1
α
2
α
n
với ñiều kiện:
i. Nếu X

i
∉ Nullable thì
α
i
=
X
i

ii. Nếu X
i
∈ Nullable thì
α
i
=
X
i

 
 ε
iii. Không phải tất cả
α
i
ñều bằng ε
15
loại bỏ luật sinh ε trong văn phạm sau:
S → AB
A → aA 
 
 ε
B → bB 

 
 ε

: xác ñịnh tập biến rỗng Nullable
i. A


ε

⇒⇒
⇒ A ∈
∈∈
∈ Nullable
ii. B


ε

⇒⇒
⇒ B ∈
∈∈
∈ Nullable
iii.S → AB ⇒
⇒⇒
⇒ S ∈
∈∈
∈ Nullable

xây dựng tập luật sinh P'
S → AB 

 
 A
ε 
 
 εB
A → aA 
 
 a
ε
B → bB 
 
 bε
: văn phạm G' không chấp nhận chuỗi rỗng ε như văn phạm G.
ðể G' tương ñương G, ta cần thêm luật sinh S →

ε vào G'.
16

Mỗi CFL không chứa ε ñược sinh ra bởi CFG không có ký hiệu vô
ích, không có luật sinh ε hoặc luật sinh ñơn vị.
ñặt L=L(G) là CFL không chứa ε và ñược sinh ra bởi văn
phạm G(V, T, P, S). Theo ñịnh lý 3, ta có thể loại bỏ tất cả luật
sinh ε trong G.
ðể loại bỏ luật sinh ñơn vị, ta xây dựng tập P' mới theo giải thuật:

(mỗi biến A ∈
∈∈
∈ V)
Tính ∆
A

= { B 

 B ∈
∈∈
∈ V và A ⇒
⇒⇒
⇒ B } ;
(mỗi biến B ∈
∈∈
∈ ∆
A
)
(mỗi luật sinh B → α thuộc P)
(B → α không là luật sinh ñơn vị)
Thêm luật sinh A → α vào P'
;
Printed with FinePrint - purchase at www.fineprint.com

×