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

Ngôn ngữ hình thức và ôtômat chương 3

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 (322.95 KB, 11 trang )

Ch
\

Ngôn ng hình th c và Ôtômat
(Formal Language & Automata)
PGS.TS. Phan Huy Khá
Khánh

ng 3 V n ph m

nh ngh a m t ngôn ng l p trì
trình (NNLT)

\ Khá
Khái ni m v n ph m
\ Phân c p cá
các lo i v n ph m c a Chomsky
\ V n ph m chí
chính qui
\ Ngôn ng chí
chính quy
\ Tính ch t c a ngôn ng chí
chính quy



\

Ch ng 3
(Grammar)
V n ph m (Grammar)


Grammar)

nh lílí "b
"b m"
m" (Pumping Theorem)

\ ng d ng c a ngôn ng chí
chính qui

2/61
2/61

nh ngh a m t ngôn ng l p trì
trình (NNLT)
\ Các ngôn ng l p trì
trình (NNLT) b c cao đ c xây d ng mô
ph ng (m t cá
cách thô thi n) ngôn ng t nhiên,
nhiên, th
th ng là

ti ng Anh (ho c ti ng Nga), t b n y u t :
u B ký t (Character Set)
u B t v ng (Vocabulary)
u Cú phá
pháp (Semantic)
u Ng ngh a (Semantic)

B ký t
\ B ký t (Character Set)

u G m m t t p h p h u h n cá
các ký t
đ c phé
phép dù
dùng trong ngôn ng , th
th ng là
là các ký t ASCII
u Có th hi u b ký t có vai trò nh b ng ch cái (Alphabet)
c a m t ngôn ng t nhiên

¬C

n c vào cú
cú phá
pháp c a NNLT, ng i l p trì
trình vi t ch ng trì
trình
g m cá
các câu l nh đ gi i quy t bà
bài toá
toán c a mì
mình
¬
đ t đ c m c đí
đích đó
đó, m i câu l nh vi t ra không nh ng
đúng đ n v m t cú
cú phá
pháp, mà
mà còn ph i đú

đúng đ n c v m t ng
ngh a, hay ý ngh a logic c a câu l nh, đ gi i quy t bà
bài toá
toán

\ Ngoà
Ngoài ra, ng

i ta c ng th

ng thêm y u t m t th n m là


tính th c d ng (Pragmatic)
3/61
3/61

4/61
4/61

B t v ng

Cú phá
pháp

\ B t v ng (Vocabulary)
u

u


\ Cú phá
pháp (Syntax)
(Syntax) hay v n ph m (Grammar) là
là t p h p cá
các
quy t c cho phé
phép :

G m cá
các t (Word)
(Word) hay đ n v t v ng (Token) dù
dùng đ t o
thà
thành câu l nh và
và đ c phân lo i tu theo vai trò c a chú
chúng
trong ngôn ng
M i lo i t v ng l i đ c chia ra thà
thành cá
các nhó
nhóm nh h n
tu theo ch c n ng s d ng

\ Ví d :
Ch

ng trình Pascal

Program P;
Var ×, y : Integer;

Begin
Read(x);
y:=x+2;
Write(y)
End.

u

Quy đ nh cá
cách th c k t h p cá
các ký t thà
thành t , k t h p cá
các
t thà
thành câu l nh đú
đúng (Statement - Instruction), k t h p
các câu l nh đú
trình hoà
hoàn ch nh
đúng thà
thành m t ch ng trì

u

Có th hình dung cá
cách k t h p nà
này gi ng cá
cách đ t câu trong
m t ngôn ng t nhiên


Các đ n v t v ng
u

- Tên, hay đ nh danh (Identifier) :
Read, Write, P, x, y

th

đ nh ngh a cú
cú phá
pháp m t ngôn ng l p trì
trình, ng
ng
ng s d ng :

¬ Ho

- H ng (Constants) : 2
- Toán t (Operators) : + , :=
- D u phân cách (Delimiters) :
Program, Var, :, (, ), Begin, End.

i ta

c s đ cú phá
pháp (Syntax Diagram)

c d ng chu n BackusBackus-Naur (BNF−
(BNF−BackusNaur Normal Form),
hay d ng BackusBackus-Naur m r ng (EBNF−

(EBNF−Extended BNF)

¬ Ho

5/61
5/61

6/61
6/61

1


Ví d s đ cú phá
pháp câu ti ng Anh

Ví d v n ph m ti ng Anh
\ Gi s các câu ti ng Anh đ c xây d ng theo nh ng quy
t c nh sau :
u Câu (Phrase/Sentence) g m có
có hai thà
thành ph n :
¬ Ch
¬

u
u
u

t (subject)

ng t (Verbe)

\ Trong ti ng Anh, m t câu đ n gi n g m 3 thà
thành ph n :
u

Ch t (Subject), ch ng h n “I” và “You”
You”
ng t (Verb), ch ng h n “like”
like” và “see”
see”

u
u

B ng (Complement), ch ng h n “him”
him” và “her”
her”

\ Dùng s đ cú phá
pháp, ta có
có :

Ch t có th là He ho c She
ng t có th là sleep hay eat

câu

T đó
đó có th xây d ng đ

¬ He sleep
¬ He eat
¬ She sleep
¬ She eat

ch t

c cá
các câu :

ch t

đ ng t

b ng

I
You

b ng
đ ng t

like

him
her

see
\ T đó
đó có th xây d ng cá

các câu đú
đúng :

“I see him”
him”, “I like her”
her”, v.v...
7/61
7/61

8/61
8/61

Khá
Khái ni m BNF

Ví d d ng BNF

\ BNF g m m t dãy cá
các quy t c, hay d ng th c
u M i quy t c có
có d ng : trái > ::= <V ph i >
u trái> th
th ng là
là m t ký hi u ph i đ c đ nh ngh a rõ
u

u


<V ph i> là
là m t dãy ký hi u, ho c đã đ c th a nh n,
ho c đã đ c đ nh ngh a tr c đó
đó, tuân theo m t quy c
nào đó
đó
D u ::= (ho c →, ho c = ) đ c “đ

c đ nh ngh a là
là ”

u

N u có nhi u v ph i cù
cùng đ nh ngh a m t v trá
trái, ng
s d ng d u | đ phân cá
cách theo ngh a lo i tr

u

D ng BNF m r ng s d ng hai c p d u quy

i ta

c:

{...} : v ph i có
có m t chu i t 0 đ n nhi u m c li t kê <...>*
[...] : v ph i có

có 0 ho c có
có 1 m c li t kê (option)

\ D ng BNF cá
các câu ti ng Anh đ n gi n nh sau :
<Câu> ::= <Ch t > < ng t > < B ng >
<Ch t > ::= “I” | “You”
You”
< ng t > ::= “like”
like” | “see”
see”
<B ng > ::= “him”
him” | “her”
her”
\ Tên trong ngôn ng Pascal :
<tên> = <ch > { <ch > | <s > }
Ho c đ nh ngh a đ quy :
<tên> = <ch > | <tên> <ch > | <tên> <s >
<ch >
= ‘A’ | ... | ‘Z’ | ‘a’ | ... | ‘z’
<s >
= ‘0’ | ... | ‘9’

9/61
9/61

10/61
10/61

S đ cú phá

pháp c a tên

Ví d m t NNLT đ n gi n

\ Tên trong ngôn ng Pascal có
có s đ cú phá
pháp nh sau :

\ V n ph m c a m t NNLT đ n gi n d ng EBNF nh sau :

S
Tên

Ch
Ch
S
...

::= program <statement>* end

<statement>

::= <assignment> | <loop>

<assignment> ::= <identifier> := <expression> ;

Ch
A




Z

a

...

z

0

...

<loop>

:= while <expression> do <statement>+ done

<expression>

::= <value>
| <value> + <value> | <value> <= <value>

9

\ T đó
đó có th xây d ng cá
các tên đú
đúng trong Pascal nh sau :
u Delta,
Delta, x1,

x1, x2,
x2, Read,
Read, v.v...
u Trá
Trái l i, cá
các chu i ký t 1A,
1A, β, π, bán kính,
nh, v.v...
v.v...
đ u không ph i là
là tên
11/61
11/61

<value>

::= <identifier> | <number>

<identifier>

::= <letter>
| <identifier><letter> | <identifier><digit>

<letter>

::= ‘A’ | ... | ‘Z’ | ‘a’ | ... | ‘z’

<digit>

::= ‘0’ | ... | ‘9’


<number>

::= <digit> | <number><digit>
12/61
12/61

2


L p trì
trình theo cú
cú phá
pháp v n ph m
M t câu, t c là
là m t ch

Nh n xé
xét

ng trì
trình đ n gi n, ch ng h n :

program n := 1 ; while n <= 10 do n := n + 1 ; done end

đ

c s n sinh t v n ph m đã cho nh áp d ng cú
cú phá
pháp v n ph m nh sau :

program <statement>* end
program <statement> <statement> end
program <assignment> <loop> end
program <identifier> := <expression> ;
while <expression> do <statement>+ done end
program n := <value> ;
while <value> <= <value> do <statement> done end
program n := <number> ;
while <identifier> <= <number> do <assignment> done end
program n := 1 ; while n <= 10 do <identifier> := <expression> ; done end
program n := 1 ; while n <= 10 do n := <value> + <value> ; done end
program n := 1 ;
while n <= 10 do n := <identifier> + <number> ; done end
program n := 1 ; while n <= 10 do n := n + 1 ; done end

\ Ta đã là
làm quen v i hai ph ng phá
pháp :
u S d ng v n ph m đ l p trì
trình (t o ra câu c a ngôn ng )
và m t trì
trình biên d ch đ phân tí
tích cú
cú phá
pháp,
biên d ch thà
thành trì
trình kh thi
u S d ng ôtômá
ôtômát đ phân tí

tích m t câu c a ngôn ng
và th a nh n câu khi quá
quá trì
trình đoá
đoán nh n là
là thà
thành công
\ Hai ph ng phá
pháp nà
này b sung cho nhau và
và thông th ng,
ng i ta s d ng c hai d ng th c v n ph m và ôtômá
ôtômát
u

Có s t ng ng gi a mô t s n sinh và
và mô t phân tí
tích,
ngh a là
là có th bi n đ i m t mô t phân tí
tích (m t ôtômá
ôtômát h u h n)
thà
thành m t mô t s n sinh và
và ng c l i

u

Lý thuy t NN hì
hình th c ch a mô t đ y đ các NN t nhiên

(ti ng Anh, ti ng Phá
Pháp, ti ng Vi t...) nh ng mô t và phân tí
tích
đ y đ các NNLT và
và đ c áp d ng r ng rãi trong Tin h c

13/61
13/61

14/61
14/61

Ho t đ ng c a v n ph m

nh ngh a hì
hình th c v n ph m

\ Các quy t c đ s n sinh câu trên m t b ng ch Σ đã cho còn
đ c g i là
là các quy t c vi t l i (Rewriting Rules)
u

M i quy t c ch ra m t dãy cá
các ký hi u (Symbols)
có th đ c thay th b i m t dãy cá
các ký hi u khá
khác

u


Nh ng ký hi u có
có th đ c thay th b i m t dãy
các ký hi u khá
khác đgl cá
các ký hi u s n sinh, hay ch a k t thú
thúc

u

Xu t phá
phát t m t ký t đ c bi t, g i là
là ký t đ u (Start Symbol),
r i áp d ng l n l t cá
các quy t c c a v n ph m

u

Khi không còn có
có th thay th các ký hi u b i cá
các quy t c c a
v n ph m, ta nh n đ c câu ch g m nh ng ký hi u c a Σ đã
cho, còn
còn đgl các ký hi u k t thú
thúc

nh n đ

\

c m t câu nà

nào đó
đó, ng
ng

i ta ti n hà
hành nh sau :

\ M t v n ph m là
là m t b b n G = (N, Σ, R,
R, S)
S) trong
trong đó
đó :
u N là
là t p h p h u h n cá
các ký t không k t thú
thúc (Non(Non-Terminal
Symbols), hay còn g i là
là các bi n, ch xu t hi n trong quá
quá
trì
trình s n sinh và
và không xu t hi n trong cá
các câu đã đ c v n
ph m sinh ra
u ∑ là t p h p h u h n cá
các ký t k t thú
thúc, hay ký t cu i
(Terminal Symbols), ∑ ≠N, hay N ∩ ∑ = ∅
u Ng

i ta đ nh ngh a b ng ch V = N ∪ ∑
u R ⊆ (V+ × V*) là
là t p h u h n cá
các quy t c (Rules), hay còn g i
là các s n xu t (Productions), chí
chính là
là các quy t c vi t l i v a
nói trên,
trên, th
th ng có
có d ng (α
(α, β), hay α → β
u S ∈ N là
là ký t đ u (Start Symbol)

15/61
15/61

16/61
16/61

Ý ngh a c a cá
các s n xu t

M t s quy

\ M i s n xu t d ng (α
(α, β) cho bi t :
u Ph n t bên trá
trái (α

(α∈V+) c a s n xu t
đ c thay th b i ph n t bên ph i (β
(β∈V*)

\ Sau đây là
là m t s quy

\ T S, b t đ u quá
quá trì
trình s n sinh câu b ng cá
cách :
u Áp d ng s n xu t đ u tiên là
là S → α
u Sau đó
đó tìm trong α các ph n câu u ∈V+ có ch a bi n X ∈ N
đ áp d ng tu ý cá
các s n xu t u → v
u Th c hi n m t cá
cách đ quy cho đ n khi nh n đ c câu w
ch ch a cá
các ký hi u a ∈ Σ, hay nó
nói cá
cách khá
khác, w ∈ Σ*
\ Thông th ng, ng
ng i ta tì
tìm cá
các ph n câu u đ áp d ng cá
các
s n xu t l n l t t trá

trái qua ph i

17/61
17/61

c

c khi mô t v n ph m G :

u

Các bi n A, B, C..., X, Y... ∈ N = V − ∑

u

Các ký t thu c ∑ đ

u

Các quy t c, hay s n xu t (α, β) ∈ R,
R, đ c vi t d ng :
α→β
hay α →G β
n u mu n ch đ nh đó
đó là s n xu t thu c v n ph m G
khi là
làm vi c cù
cùng lú
lúc v i nhi u v n ph m khá
khác nhau


u

Ký t đ u luôn luôn bi u di n b i S

u

Các câu r ng đ

c bi u di n b i a, b, c...

c bi u di n b i ε

18/61
18/61

3


Ví d

S n sinh câu trong G

\ Cho v n ph m G = (V, ∑, R, S) v i :
u

N = { S, A, B }

u


∑ = { a, b }, S là
là ký t đ u.

u

R = { S → A, S → B, B → bB, B → ε, A → aA, A → ε }

u

cho g n, khi mô t m t v n ph m, ng i ta th
các quy t c có
có cùng ký t bên trá
trái v i nhau :

u

Thay vì
vì li t kê h t cá
các thà
thành ph n c a v n ph m G,
ng i ta ch li t kê cá
các quy t c R c a v n ph m mà
mà thôi

u

Ch ng h n v n ph m G

S→A|B


B → bB | ε

ng nhó
nhóm

A → aA | ε

trên ch c n li t kê cá
các quy t c :

G { S → A | B ; B → bB | ε ; A → aA | ε }

\ Cho G { S → A | B ; B → bB | ε ; A → aA | ε }
\ B ng cá
cách áp d ng liên ti p cá
các s n xu t trong R, ta nh n
đ c cá
các câu s n sinh b i v n ph m G
\ Ví d , aaaa là m t câu do G sinh ra b ng cá
cách áp d ng l n
l t cá
các s n xu t :
S
S
A
A
Áp d ng S → A
aA

A → aA

A
a
aaA

A → aA
A
a
aaaA

A → aA
A
aaaaA

A → aA
a
A
aaaa

A→ε
a

ε

19/61
19/61

Phé
Phép suy d n m t b

c trong G


Phé
Phép suy d n nhi u b

20/61
20/61

c trong G

\ Cho v n ph m G = (N, ∑, R, S),
u∈V+, v∈
v∈V* đgl cá
các d ng câu

\ Cho v n ph m G = (N, ∑, R, S),
u∈V+, v∈
v∈V* đgl cá
các d ng câu

\ Câu v đ c s n sinh t u b ng m t b c suy d n trong G
(derives v from u in one step) đ c bi u di n b i :

\ Câu v đ c s n sinh t u b ng nhi u b c suy d n trong G
(derives v from u in several steps) đ c bi u di n b i :

u ⇒G v

u ⇒*G v

n u (n u và

và ch n u) :

n u:

u

u = xu’
xu’y

u g m 3 ph n x, u’
u’ và y, x và
và y có
có th r ng

u

∃ k ≥ 0 và
và v0 ... vk ∈ V+ sao cho :

u

v = xv’
xv’y

v g m 3 ph n x, v’
v’ và y

u

u’ → v’


u = v0

u

là m t sx c a G

u

v = vk

u

vi ⇒G vi+1 v i ∀i, 0 < i ≤ k

\ Có th vi t đ y đ khi k nh :
u ⇒*G v

n u

u = v0 ⇒G v1 ⇒G v2 ⇒G ... ⇒G vk = v

21/61
21/61

22/61
22/61

V n ph m G sinh ra câu


Phân c p v n ph m c a Chomsky

\ V n ph m G sinh ra cá
các câu b ng cá
cách th c hi n quá
quá trì
trình
suy d n t ký t đ u S cho đ n khi nh n đ c câu g m cá
các
ký t k t thú
thúc thu c Σ, w ∈ Σ*
\ Ng

\ N. Chomsky, chia v n ph m thà
thành b n lo i tù
tùy theo tí
tính
ch t c a cá
các s n xu t s d ng trong v n ph m :
u Lo i 0 V n ph m t do

i ta vi t : S ⇒*G w

¬

\ Ngôn ng L do v n ph m G sinh ra, vi t L(G),
là t p h p cá
các câu sao cho :

L(G) = { w ∈ Σ* | S ⇒*G w }


Lo i 1 V n ph m c m ng c nh
(Context Sensitive Grammar)

u

Lo i 2 V n ph m phi ng c nh (Context Free Grammar)

u

Lo i 3 V n ph m chí
chính qui (Regular Grammar)

¬

\ Ví d :
u V n ph m G { S → A | B ; B → bB | ε ; A → aA | ε }
sinh ra ngôn ng L(G) = a* ∪ b*
g m cá
các câu ho c ch a toà
toàn ch a, ho c ch a toà
toàn ch b

23/61
23/61

Không gi i h n v s n xu t (s n xu t có
có d ng b t k )

u


¬

¬

Các s n xu t có
có d ng α→β,
α→β, |α| ≤ |β| và
và S → ε
Các s n xu t có
có d ng A → β, A ∈ N, không có
có h n ch gì v β
S n xu t có
có d ng :
ho c

A → wB | w, , A và
và B ∈ N, w ∈ Σ*
A → Bw | w
24/61
24/61

4


Nh n xé
xét v v n ph m chí
chính qui

Quan h gi a cá

các lo i v n ph m

\ M i s n xu t c a v n ph m chí
chính qui :
u Có v trá
trái α là m t ký t A ∈ N
u Có v ph i β g m cá
các ký t k t thú
thúc w ∈ Σ*,
ti p theo sau, hay đ t tr c, ho c không có
có, m t ký t B∈N

\ Quy
c g i v n ph m lo i i là
là Vpi, i=0..3,
quan h gi a cá
các lo i v n ph m đ c bi u di n nh sau :
VP3 ⊂ VP2 ⊂ VP1 ⊂ VP0

\ V n ph m chí
chính qui G {A → Bw | w }
đgl v n ph m tuy n tí
tính trá
trái (Left
(Left Linear Grammars)
\ V n ph m chí
chính qui G {A → wB | w }
đgl v n ph m tuy n tí
tính ph i (Right
(Right Linear Grammars)


u

Quan h bao hà
hàm
i>j n u VPi ⊂ VPj

u

V i i>j thì
thì m t v n ph m lo i i
c ng là
là v n ph m lo i j

u

S bao hà
hàm gi a VP2 và VP1 không đ
¬ VP2

\ Ng i ta ch ng minh đ c r ng m i ngôn ng s n sinh b i
m t v n ph m tuy n tí
tính ph i c ng có
có th đ c s n sinh
b i m t v n ph m tuy n tí
tính trá
trái và ng c l i

¬ Do
¬V


trên là
là th c s :

c th t rõ rà
ràng :

có th ch a cá
các s n xu t d ng A → ε
v y, đi u ki n |α
|α| ≤ |β| c a cá
các VP1 không th a mãn

i m i lo i s n xu t khá
khác, đi u ki n nà
này l i th a mãn

25/61
25/61

26/61
26/61

S bao hà
hàm gi a cá
các v n ph m

Tính t

ng đ


ng gi a v n ph m và
và ôtômat

\ B ng tó
tóm t t v tính t ng đ ng gi a v n ph m và
và ôtômat
c a cá
các l p v n ph m theo Chomsky :

Σ*

Lo i

VP0
VP1
VP2

V n ph m

D ng s n xu t

Ví d

Ôtômat

0

T do


Không có
h n ch gì

Máy Turing

Ngôn ng t nhiên

1

C m ng c nh

α → β,
|α| ≤ |β|

Máy Turing v i
b ng h u h n

{anbncn | n ≥ 1}

Phi ng c nh

A→α

Ôtômat
đ y xu ng

{anbn | n ≥ 1}

Chính quy


A → bB | w

Ôtômat h u h n {0(10)n | n ≥ 0}

2

VP3
3
27/61
27/61

28/61
28/61

Các v n ph m chí
chính qui

Xây d ng VPCQ G t NNCQ L

\ Các VP3 đgl v n ph m chí
chính quy là
là không ph i ng u nhiên
\ Th c t , cá
các ngôn ng đ c s n sinh b i VP3
đ u là
là ngôn ng chí
chính quy
\ Ta có
có đ nh lý sau đây :
u M t ngôn ng là chí

chính qui n u
ngôn ng đó
đó đ c s n sinh b i m t v n ph m chí
chính qui
Ng i ta vi t :
u L(G) = L(α
L(α) = L(M) = L
V i G là
là VP3, α là m t BTCQ và
và M là
là m t ôhh
L là m t ngôn ng chí
chính qui

29/61
29/61

“⇒” Cho L NNCQ, c n xây d ng VPCQ G sao cho L(G) = L :
u

L NNCQ nên đ c th a nh n b i m t ôhh không đ n đ nh M,
L = L(M),
L(M), trong đó
đó :

u

S d ng M đ xây d ng m t VPCQ G = (VG, ΣG, SG, RG)
sao cho L(G) = L


u

Các ph n t c a G đ

M = (Q, Σ, Δ, q0, A)

¬ ΣG

c đ nh ngh a theo M nh sau :

= Σ (cá
(các ký t cu i c a v n ph m G là
là b ng ch c a M)

¬ NG

= Q (ký t không k t thú
thúc c a G là
là tr ng thá
thái c a M)

¬ SG

= q0 (ký t đ u c a G là
là tr ng thá
thái đ u c a M)

¬ RG

= { A → wB cho ∀(A, w, B) ∈ Δ và A → ε cho ∀A ∈ F }


30/61
30/61

5


Ví d 1 : xây d ng VP3 G t NNCQ L

Ví d 2 : xây d ng VP3 G t NNCQ L

\ Cho M v i L(M) là
là NNCQ g m cá
các câu k t thú
thúc b i b
u L(M) = (a+b)*b
hay m i câu b t k k t thú
thúc b i m t con b
u Ví d các câu sau ∈ L(M) :
a

\ Cho M nh sau :

b

b

¬b
¬ abbab
¬ aaabbb


S

= a3b3 ...

A

a

\ Xây d ng VPCQ G t ôhh M sao cho L(G)=L(M) :
G { S → bS | aA ; A → aB | bS ; B → aB | bC ;
C → bS | aA | ε }

\ Xây d ng VPCQ G t ôhh M sao cho L(G)=L(M) :
G { S → aS | bA ;
A → bA | aS ;
A→ε}
do A là
là tr ng thá
thái cu i duy nh t
31/61
31/61

32/61
32/61

Xây d ng ôhh M đoá
đoán nh n NN L(G), G VP3

Bài t p

\ Xây d ng cá
các VPCQ G t các ôhh M d

i đây :

“⇐” Cho VPCQ G v i L = L(G),
L(G), c n xây d ng ôhh M không
đ n đ nh đoá
đoán nh n L :
u

Gi s G = (VG, ΣG, SG, RG) là
là VP3 s n sinh ra ngôn ng L

u

Xây d ng NFA M=(Q, Σ, Δ, q0, F) th a nh n L(G)
L(G) nh sau :
¬Q

=N∪{h}

¬Σ

= ΣG

¬ q0

u


( tr ng thá
thái c a M là
là ký hi u không k t thú
thúc c a G
c ng thêm m t tr ng thá
thái m i h )

= SG

¬F

={h}

¬Δ

= { (A, w, B ) v i ∀A → wB ∈ RG và
(A, w, h ) v i ∀A → w ∈ RG }

( M chi có
có m t tr ng thá
thái cu i duy nh t là
là h )

Nh v y L(G) là
là ngôn ng đ

c M th a nh n và
và là NNCQ

33/61

33/61

34/61
34/61

Ví d 1

Ví d 2

\ Cho VP3 G g m cá
các sx nh sau :

\ Cho VP3 G g m cá
các sx nh sau :

{ S → aS | bS | abb }

{ S → aS | bS | a | b }

\ Xây d ng ôhh M sao cho L(M) = L(G) :

a, b

a

a, b
abb

S


\ Xây d ng ôhh M sao cho L(M) = L(G) :

A

Ho c
g nh n

S

abb

S

a, b

A

A

b

Chú
ái cu i m i thêm và
ào
Chú ý A là
là tr ng thá
th
vvào
thái
35/61

35/61

Chú
ái cu i m i thêm và
ào
Chú ý A là
là tr ng thá
th
vvào
thái
36/61
36/61

6


Bài t p

Các ngôn ng chí
chính quy
\ Cho NNCQ L, ta
ta đã xé
xét b n công c khá
khác nhau
đ bi u di n, hay ch đ nh L :
u Bi u th c chí
L = L(α
chính quy α :
L(α)
u Ôtômat h u h n đ n đ nh M :

L = L(M)
u Ôtômat h u h n không đ n đ nh M :
L = L(M)
L(M)
u V n ph m chí
L = L(G)
chính quy G

\ Cho cá
các VP3 Gi nh sau :
G1 { S → bS | aT | ε ; T → aT | bU | ε ; U → aT | ε }
G2 { S → aA | aB | b ; A → b ; B → bB | a }

\ Xây d ng cá
các ôhh M th a nh n cá
các L(Gi)

\ Sau đây,
đây, ta ti p t c xé
xét cá
các tí
tính ch t c a NNCQ

37/61
37/61

38/61
38/61

Phé

Phép h p c a hai NNCQ L1∪L2

Các tí
tính ch t c a ngôn ng chí
chính quy
\ Cho hai NNCQ L1 và L2

\ Cho hai NNCQ L1 và L2

\ Ta có
có tính ch t sau đây :
Các ngôn ng đ c t o thà
thành b i

\ Gi s α1 và α2 là các BTCQ ch đ nh L1, L2 t
u L1 = L(α
L(α1)
u L2= L(α
L(α2)

u

Phé
Phép h p c a hai NNCQ

L1 ∪ L 2

u

Phé

Phép ghé
ghép ti p c a hai NNCQ

L1 . L2

u

Phé
Phép ngh ch đ o m t NNCQ

L1R

u

Phé
Phép l y ph n bù
bù m t NNCQ

L1 = Σ – L 1

u

Phé
Phép giao c a hai NNCQ

L1 ∩ L 2

ng ng :

\ Khi đó

đó, bi u th c chí
chính quy :
u

α1 ∪ α2
ch đ nh ngôn ng :
L(α
L(α1∪α2) = L1 ∪ L2
c ng là
là NNCQ

đ u là
là các NNCQ

39/61
39/61

40/61
40/61

Phé
Phép ngh ch đ o m t NNCQ

Phé
Phép ghé
ghép ti p c a hai NNCQ L1.L2

L1R

\ Gi s wR là ngh ch đ o c a câu w (ví

(ví d aabR = baa)
R = { w | wR ∈ L } là
Khi đó
ó
ngôn
ng
L
đ
là NNCQ
1
1

\ Bi u th c chí
chính quy :
α1α2

\ T ôhh M = (Q, ∑, Δ, q0, F) th a nh n L1, xây d ng
ôhh M’
M’=(Q’
=(Q’, ∑’, Δ’, q0’, F’
F’) th a nh n L1R nh sau :

ch đ nh ngôn ng :
L(α
L(α1α2) = L1 . L2
c ng là
là NNCQ

u


Q’ = Q ∪ {q0’} (q0’ là tr ng thá
thái đ u m i đ

u

∑’ = ∑

u

F’ = { q0 } (tr ng thá
thái đ u tr thà
thành tr ng thá
thái cu i duy nh t)

u

Δ’ = { (q, wR, p) | (p, w, q) ∈ Δ } ∪ { (q0’, ε, q) | q ∈ F }

c thêm và
vào)

chuy n ti p c a Δ’ là các chuy n ti p c a M
nh ng theo cá
cách ng c l i

¬ Các

chuy n ti p m i t tr ng thá
thái đ u
vào m i tr ng thá

thái cu i c a M

¬ Thêm

41/61
41/61

42/61
42/61

7


Ví d ngh ch đ o NNCQ

Phé
Phép l y ph n bù
bù m t NNCQ L1 = Σ* – L1

\ Cho ôhh M sao cho L1 = L(M) = a*bba(ab)*

\ Bù c a L1, ký hi u L1 = ∑* - L1, c ng là
là NNCQ

\ Xây d ng M’
M’=(Q’
=(Q’, ∑’, Δ’, q0’, F’
F’) th a nh n L1R nh sau :

\ T ôhh đ n đ nh M = (Q, ∑, δ, q0, F) th a nh n L1,

xây d ng ôhh M’
M’=(Q’
=(Q’, ∑’, δ’, q0’, F’
F’) th a nh n L1 nh sau :

a

ab
bba

q00

q11
ba

ε

q00’

Q’ = Q

u

∑’ = ∑

u

δ’ = δ

u


F’ = Q - F

a

abb

q1

u

Hoá
Hoán v vai trò c a cá
các tr ng thá
thái đ t đ

L1R = (ba)*abba*

q00

Chú
à tr ng thá
ái đ u m i thêm và
ào
Chú ý q00’ llà
th
vvào
thái

c và

và không đ t đ

\ Chú
Chú ý : Vi c xây d ng M’
M’ không áp d ng đ
cho cá
các ôthh không đ n đ nh

c

43/61
43/61

44/61
44/61

Phé
Phép giao c a hai NNCQ L1 ∩ L2

Ví d l y ph n bù


Có hai cá
cách CM n u L1, L2 NNCQ thì
thì L1∩L2 c ng là
là NNCQ :

\ Cho ôhh M th a nh n NNCQ L1 = L(M) = (a∪
(a∪b)*a
\ Xây d ng M’

M’=(Q’
=(Q’, ∑’, Δ’, q0’, F’
F’) th a nh n L1 nh sau :
a, b

b

a

a
q00

a

q11

q00
ba

q00’

ε

Cách 2 : Xây d ng ôhh đđ M = (Q, ∑, δ, q0, F)
th a nh n L1∩L2 xu t phá
phát t hai ôhh đđ :

u

a


abb

q1

Cách 1 : Dùng phé
phép bi n đ i L1 ∩ L2 = L1 ∪ L2

q11

b

¬ M1

= (Q1, ∑, δ1, q01, F1) th a nh n L1

¬ M2

= (Q2, ∑, δ2, q02, F2) th a nh n L2

M b t ch c (Simule) th c hi n đ ng th i M1 và M2
M th a nh n L1∩L2 khi c M1 và M2 cùng th a nh n :
= Q1×Q2 M i tr ng thá
thái c a M là
là m t c p tr ng thá
thái

¬Q

q00


c

L1R = (ba)*abba*

¬ δ((q1,
¬ q0

Chú
à tr ng thá
ái đ u m i thêm và
ào
Chú ý q00’ llà
th
vvào
thái

¬F

q2), a)=(p1, p2) n u δ1(q1, a)=p1, δ2(q2, a)=p2, ∀a∈Σ

= (q01. q02)

= F1 × F 2

45/61
45/61

Ví d th c hi n phé
phép giao


46/61
46/61

Các bà
bài toá
toán trên ngôn ng chí
chính quy

\ Cho M1 và M2 sao cho L1=L(M1)=b*aab, L2=L(M2)=b*ab*
Xây d ng M t M1 và M2 nh sau :

\ Cho Σ, w∈
w∈Σ* và các NNCQ L, L1 và L2 trên Σ
\ Ta có
có n m bà
bài toá
toán c b n sau đây :
Bài toá
toán 1 : Xác đ nh xem có
có ph i w∈
w∈L hay không ?

b

Bài toá
toán 2 : Xác đ nh xem có
có ph i L là
là r ng hay không ?
a


A

D
b

a

B

ab

Bài toá
toán 3 : Xác đ nh xem có
có ph i L = ∑* ?

b

C
A,D

a

Bài toá
toán 4 : Xác đ nh xem có
có ph i L1 ⊆ L2 ?
B,E

E
b


Bài toá
toán 5 : Xá
Xác đ nh xem có
có ph i L1 = L2 ?

L(M) = b**aab ∩ b**ab** = b**a

47/61
47/61

48/61
48/61

8


Bài toá
toán 1 : Xá
Xác đ nh w ∈ L ?

Bài toá
toán 2 : Xá
Xác đ nh L = ∅ ?

\ Bài toá
toán 1 còn đgl “bài toá
toán thà
thành viên”
viên”

\ Bài toá
toán 1 gi i đ c nh thu t toá
toán sau :
u Xây d ng m t ôtômat đ n đ nh xu t phá
phát t s mô t c a L
u Cho ôtômat th c hi n vi c đoá
đoán nh n câu w đã cho

\ Bài toá
toán 2 gi i đ c nh thu t toá
toán sau :
u Xây d ng m t ôhh (đ n đ nh ho c không đ n đ nh) M
th a nh n L
u Ngôn ng L ≠ ∅ n u, trong s đ bi u di n ôtômat M,
t n t i m t đ ng đi gi a tr ng thá
thái đ u
và m t tr ng thá
nào đó
đó
thái k t thú
thúc nà

49/61
49/61

50/61
50/61

Bài toá
toán 3 : Xá

Xác đ nh L = ∑* ?

Bài toá
toán 4 : Xá
Xác đ nh L1 ⊆ L2 ?
\ Bài toá
toán 4 gi i đ
(Bà
(Bài toá
toán 2)

\ Bài toá
toán 3 gi i đ c nh thu t toá
toán sau :
u Xây d ng m t ôhh M th a nh n ngôn ng bù c a L
L(M) = L = ∑* - L
u Ki m tra M không th a nh n m t câu nà
nào L(M) = ∅
b ng cá
cách ki m tra n u L = ∅ ? (Bà
(Bài toá
toán 2)

c b ng cá
cách ki m tra L1∩L2 = ∅ ?

51/61
51/61

52/61

52/61

Bài toá
toán 5 : Xá
Xác đ nh L1 = L2 ?
\ Bài toá
toán 5 gi
u L1 ⊆ L 2
u L2 ⊆ L 1



B sung m t s tính ch t c a NNCQ

c b ng cá
cách ki m tra cá
các đi u ki n :

M t s tính ch t khá
khác c a NNCQ d dàng ch ng minh :
1 M i ngôn ng h u h n (có
(có h u h n câu) đ u là
là chí
chính quy

(Bà
(Bài toá
toán 4)

Vì ngôn ng có h u h n câu

L s đ c ch đ nh b i BTCQ
do đó
đó L là
là chí
chính quy

(Bà
(Bài toá
toán 4)

L = {w1, ..., wk}
L = L(w1 ∪ ... ∪ wk)

2 M t ngôn ng không chí
chính quy ph i ch a vô h n câu
T tính ch t “L có
có h u h n câu”
câu” → “L chí
chính quy”
quy” suy ra :
“L không chí
chính quy”
quy” → “L ch a vô h n câu”
câu”
¬ Tuy nhiên “L chí
chính quy”
quy” → “L có h u h n câu”
câu” không đú
đúng
Ch ng h n, ∑* là

là NNCQ có
có vô h n câu
¬

3 M t ngôn ng vô h n câu s ch a s câu không b ch n trên
4 M i NNCQ đ c th a nh n b i m t ôtômat h u h n ch g m
m t s c đ nh tr ng thá
thái
5
nh lý “b m”
m”
53/61
53/61

54/61
54/61

9


Minh ho đ nh lý “b m”
m” ( LB)
LB)

NNCQ vô h n câu không có
có c n trên
\ Gi s L là
là NNCQ ch a vô h n câu trên ∑, khi
khi đó
đó :

u
dài m t câu b t k thu c ngôn ng s không có
có c n trên
\ Ch ng minh b ng ph n ch ng nh sau :
u Gi s Card(∑
Card(∑)=m,
)=m, N là
là c n trên c a m i đ dài câu thu c L :
∀w ∈ L, |w| ≤ N < ∞
u Khi đó
đó ta có
có th li t kê cá
các câu :
1
+m
+ m2
...
+ mN

M
=

câu có
có đ
câu có
có đ
câu có
có đ

dài 0

dài 1
dài 2

(g
(g
(g

m câu ε)
m n câu, m i câu là
là m t ký t c a ∑)
m cá
các câu t o thà
thành t 2 ký t c a ∑)

\ Cho NNCQ L có
có vô h n câu và
và m t ôhh M có
có m tr ng thá
thái
th a nh n L : L=L(M)
\ Gi s ∀(p, u, q)∈
q)∈Δ, |u|≤1, ∀w∈L, |w|>m,
|w|>m, ta th y :
u

u

Gi s w = xuy v i u ≠ ε thì
thì khi M th c hi n đoá
đoán nh n w,

M ph i v t qua m t tr ng thá
thái qk ít ra hai l n :
¬M

đi t q0 đ n qk đ đoá
đoán nh n x

¬M

đi t qk đ n qk đ đoá
đoán nh n u

¬M

đi t qk đ n qj ∈ Q đ đoá
đoán nh n y

T đó
đó, m i câu có
có d ng xu*y c ng đ
x

câu có
có đ dài N

−1
M -1

c th a nh n b i M


u

y

N+1

q0

không ph i vô h n (mâu thu n !)

qk

qk

qf ∈ Q

55/61
55/61

56/61
56/61

Phá
Phát bi u đ nh lý “b m”
m”

Ví d
\ Ngôn ng

\ Gi s L là

là NNCQ có
có vô h n câu
∃x, u, y ∈ ∑*, v i u ≠ ε sao cho xu*y ∈ L, ∀n ≥ 0

\ Gi s M là
là ôhh th a nh n L, L=L(M), M có
có |Q| = m

Ng

ng d ng đ nh lílí "b
"b m"
m"

(câu g m n ch a r i n ch b) không là
là CQ

\ Ta s v n d ng đ nh lílí "b
"b m“
m“ theo cá
cách ph đ nh nh sau :
“L không tho mãn LB”
LB” → “L không ph i là
là NNCQ”
NNCQ”

nh lý “b m”
m” phá
phát bi u nh sau :
u


anbn

i ta phá
phát tri n đ nh lý “b m”
m” nh sau :

u

C n ch ra r ng L không tho mãn LB,
LB,
ngh a là
là không th ∃x, ∃u, ∃y, u≠
u≠ε, sao cho xuky ∈ anbn, ∀k

u

Gi s t n t i x, u,
u, y nh v y và
và xét cá
các tr

ng h p c a u :

¬

u∈a* : xuky∉anbn, vì
vì khi l p u theo LB,
LB, s ch a s ≠ s ch b


u

Cho w ∈ L sao cho |w|≥
|w|≥m

¬

u∈b* : c ng không th đ

u

Khi đó
đó ∃x, u, y sao cho xuy = w, v i u ≠ ε và |xu|≤
|xu|≤m

¬

u

∀n, xuny ∈ L

u∈(a∪
(a∪b)*−(a*∪b*) = (aa*b(a∪
b(a∪b)*)∪(bb*a(a∪
a(a∪b)*)
g m m t s con a r i m t s con b tu ý
c ng không th x y ra,
vì có láo nhá
nháo cá
các con a r i cá

các con b trong uk (k>1)

\ M t cá
cách v n t t :

“L NNCQ”
NNCQ” → “L tho mãn LB”
LB”
u

c v i cá
cách l p lu n nh trên

V y anbn không ph i là
là NNCQ

57/61
57/61

58/61
58/61

V ngôn ng anbn

Bài t p t i l p

\ Ngôn ng anbn không là
là CQ, do v y, không t n t i ôhh th a
nh n
\ Tuy nhiên, ngôn ng d ng :

u LK= { anbn | n ≤ K < ∞ }
có n h u h n hay b ch n trên

đ

\ Cho b ng ch ch g m m t ký t ∑ = { a }
\ Ngôn ng L = an2
(ch a m i câu có
có đ dài n2 là m t s bình ph

ng đú
đúng)

không là
là NNCQ ?

c th a nh n b i m t ôhh

\ Nh n xé
xét :
u M i câu có
có d ng anbn∈LK đ c nh n bi t b i m t ôhh
u Không ∃ ôhh th a nh n m i câu anbn,
là phé
phép h p vô h n cá
các ngôn ng LK
u V n đ đ t ra là
là c n b sung kh n ng cho l p cá
các ôhh
đ chú

chúng có
có th th a nh n ngôn ng anbn
59/61
59/61

60/61
60/61

10


Bài t p ch

ng 3

1. Mô t các ngôn ng cho b i cá
các v n ph m sau đây :
u S → aS | Sb | aSb | c
u S → SS | a | b
u S → aA | bB | c
A → Sa
B → Sb
u S → AB
A → Sc | a B → dB | b
u S → SaS | b
u S → aS | bS | a | b
u S → X | Y
X→ε
Y → aY | bY | a | b
2. Mô t v n ph m s n sinh cá

các ngôn ng sau đây :
u a*b
u

(a+b)(ab)*(baab)*
61/61
61/61

11



×