Chà
Chào m i ng
i!
Lý thuy t tí
ính toá
án
ttính
to
toán
Hello Everyone!
(Theory of Computation)
PGS.TS. Phan Huy Khá
Khánh
Bonjour Tout le Monde !
!
Ch ng 1
M đ u
K
!
2/56
2/
56
M c đí
đích môn h c
Ki n th c yêu c u
Môn h c Lý thuy t tí
tính toá
toán (Theory of Computation)
Computation)
cung c p nh ng ki n th c c b n v :
Môn h c yêu c u m t s ki n th c tiên quy t :
Tin h c đ i c
ng
Toá
Toán r i r c
C u trú
trúc d li u và
và gi i thu t
Các mô hì
hình tí
tính toá
toán lý thuy t :
Các má
máy truy c p ng u nhiên
Các ôtômat h u h n tr ng thá
thái
Ngôn ng hình th c và
và v n ph m
Lý thuy t đ ph c t p tí
tính toá
toán
Máy Turing và
và khá
khái ni m tí
tính đ
Các hà
hàm đ quy
Các khá
khái ni m v bài toá
toán, thu t toá
toán, tí
tính gi i đ
tính quy t đ nh...
Sinh viên n m đ c :
Các mô hì
hình tí
tính toá
toán t ng quá
quát
Các khá
khái ni m c b n v đ ph c t p tí
tính toá
toán,
ph ng phá
pháp ch ng minh hì
hình th c
Có kh n ng minh ho ho t đ ng c a cá
các mô hì
hình đó
đó
b ng thu t toá
toán, ch ng trì
trình
c
c,
3/56
3/
56
4/56
4/
56
Tài li u tham kh o
ánh giá
giá k t qu h c t p
Yêu c u :
Giá
Giáo trì
trình PPT “Lý thuy t Tí
Tính toá
toán”
http://www />
www.cs.berkeley.edu/~vandam/CS172/
Hi u n i dung trì
trình bà
bày trên l p
Th c hi n cá
các bài t p v nhà
nhà
Kh n ng th c hà
hành
Tinh th n thá
thái đ và n ng l c h c t p
Keywords to findout on internet (Google):
Computation | Computing Theory
Computability | Decidability
Formal Language | Automata Theory
Set | Graph Theory
Nghe gi ng, ghi ché
chép
Tr l i và
và đ t câu h i
Tham kh o tà
tài li u, truy c p internet
Tham gia h c nhó
nhóm, t p th o lu n và
và thuy t trì
trình
…
Ki m tra cu i k :
5/56
5/
56
Thi vi t (60 phú
phút)
6/56
6/
56
1
âu là
là gi i h n c a Tin h c ?
N i dung môn h c
Ch
ng 1 M đ u : c s c a môn h c
Ch
ng 2 Ôtômat h u h n
Ch
ng 3 V n ph m và
và ôtômat đ y xu ng
Ch
ng 4 Máy Turing
Ch
ng 5 Hàm đ quy
Ch
ng 6 Máy RAM
Ch
Nghiên c u v bài toá
toán (problem) :
L p cá
các bà
bài toá
toán gi i đ
L i gi i, hay thu t toá
toán , đ gi i bà
bà i toá
toán
L p cá
các bà
bài toá
toán không gi i đ
c (resolvability)
c
(và s không bao gi gi i đ c,
dù v i s ti n b c a công ngh thông tin trong t
ng lai)
lai)
Nghiên c u lý thuy t cá
cách gi i cá
các bà
bài toá
toán
Mô hì
hình tí
tính toá
toán ?
ph c t p tí
tính toá
toán ?
ng 7 Lý thuy t đ ph c t p tí
tính toá
toán
Tính quy t đ nh
7/56
7/
56
8/56
8/
56
âu là
là gi i h n c a Tin h c ?
Gi i h n c a V
Không t n t
Mâu thu n v
Nh ng ch đ chí
chính c a Tin h c lý thuy t
Nghiên c u cá
các mô hì
hình tí
tính toá
toán :
t lý :
i chuy n đ ng v nh c u v ì :
i cá
các đ nh lu t v nhi t đ ng l c h c
C ác
ngôn ng
C ác
ôtômat h u h n (Finite Automaton)
Má y
C ác
hình th c (Formal Languages)
Turing (Turing Machine)
hà
hàm đ quy (Recursive Functions)
Má y
RAM (Random Access Memory Machine)
ph c t p tí
tính toá
toán (Computational Complexity)
M
t mã h c (Cryptology)
Và
các h
ng nghiên c u m i trong lý thuy t tí
tính toá
toán
M i quan h gi a các mô hì
hình tí
tính toá
toán khá
khác nhau
Chuy n đ ng v nh c u ( Perpetual Motion) là
là chuy n đ ng
không ng ng, không c n tiêu t n n ng l ng
C s đ thi t k MT T (ph n c ng)
và thu t toá
toán (ph n m m) trong hi n t i và
và t
ng lai…
lai…
9/56
9/
56
Ch
10/56
10/
56
M t s ki n th c Toá
Toán h c c
ng m đ u : c s c a môn h c
M t s ki n th c Toá
Toán h c c s
Lôgí
Lôgích h c
B ng ch và câu
T p h p, quan h
Khá
Khái ni m ngôn ng
Ánh x và hàm
Máy tr u t
Tính đ m đ
ng
V n đ bi u di n ngôn ng
s
c c a cá
các t p h p vô h n
th và cây
Phé
Phép ch ng minh quy n p
Các c u trú
trúc r i r c
11/56
11/
56
12/56
12/
56
2
B ng ch
Câu trên b ng ch
và câu
B ng ch (alphabet) :
Cho tr
là m t t p h u h n cá
các ký t (characters),
(characters), hay ký t ng/
ký hi u (symbol), ký hi u b i ch cái Hy l p
Kích th c c a b ng ch là s ph n t c a b ng ch đó
đó,
ký hi u |
||, hay Card(
Card() (Cardinality)
c m t b ng ch nào đó
đó
M t câu (phrase, word), hay xâu (string), trên :
là m t dãy h u h n cá
các ph n t c a ,
ký hi u b i w (hay x, y, u, v...)
Ví d m t s b ng ch :
{#}
{ 0, 1 }
{ , , , }
{0, 1, 2, ... , 9}
{I, V, X, L, C, D, M}
{aA, bB, cC, ... , zZ}
{, , , ... , }
B ng mã ASCII
Các nét vi t ch Hán
|=1
| | = 2
| | = 4
Ch s th p phân, || = 10
Ch s La Mã
Ch cái La tinh
ch cái Hi L p
dài c a m t câu là
là s ký t có m t trong câu,
ký hi u là
là |w| hay length(w
length(w)
dài câu là
là h u h n,
nh ng không h n ch là có bao nhiêu ký t
M t câu có
có th có t 0 đ n n ký t tu ý
Câu có
có đ dài b ng 0 đ
c g i là
là câu r ng (empty word),
ký hi u , ho c e, ho c ho c
13/56
13/
56
Ví d v câu trên b ng ch
14/56
14/
56
Phé
Phép ghé
ghép ti p cá
các câu
Cho hai câu u và
và v trên
Ví d
B ng ch
Câu trên
, 0, 1, 00, 01, 10, 11, 100...
{ 0, 1 }
Phé
Phép ghé
ghép ti p (Concatenation) c a u và
và v là
là câu w = uv
Ngh a là
là câu w g m hai ph n :
{ a....z }
a, ab,
ab, zt, computer
u
đgl là
là ti n t (prefix)
{ 0, ..., 7, , , , }
43 2 , 1234,
r
i đ n v là
là h u t (postfix) c a w
ASCII
M t ch
ng trì
trình C, Pascal, Java, VB...
Tr ng h p câu w = xuy là
là ghé
ghép ti p c a ba câu x, u,
u, y,
y,
u đgl trung t (infix) c a w
Ng i ta còn g i câu r ng là câu đ n v
vì có w = w
w = w
v i w là
là m t câu b t k trên
Cho m t câu w có
có có |w|=n,
|w|=n, ng
i ta có
có th trí
trích ra t w
m t ký t nào đó
đó có v trí
trí xác đ nh trong ph m vi 1..n
Ví d câu w=aaabbaabbba có
có |w|=11,
có th trí
trích ra cá
các ký t :
w(1) = a, ..., w(4) = b, ..., w(11) = a
Returning
15/56
15/
56
16/56
16/
56
Các phé
phép toá
toán khá
khác trên xâu
Khá
Khái ni m ngôn ng
M t ngôn ng hình th c (nó
(nói g n ngôn ng ) :
Cho cá
các câu w trên
Phé
o ng c (Reversion) m t câu w, ký hi u
Phép
Là câu w đ c vi t theo th t ng c l i
Rõ rà
ràng R =
wR
:
wR = w đgl câu đ i x ng : OMO, akitOMOtika...
akitOMOtika...
Phé
Phép L y th a (power) xâu
wn = ww…
ww…w (n l n)
w0 = v i m i w
* là ngôn ng g m t p t t c các xâu trên b ng ch
k c xâu r ng
+ là ngôn ng g m t p t t c các xâu trên b ng ch
KHÔNG CÓ
CÓ xâu r ng
Quy
Quy
p h p cá
các câu
c xây d ng trên cù
cùng m t b ng ch đã cho
Ví d :
là t
đ
cc ch
ch đ
đ nh
nh m
m tt câu
câu
(denotation)
(denotation)
Chú ý {}
Ví d
17/56
17/
56
+ = * -
là ngôn ng tr ng (t p tr ng)
L1 = {a, ab, abb, bba, bbb} là
là ngôn ng h u h n trên {a, b}
L2 = {(ab)n | n > 0} là
là ngôn ng vô h n trên {a, b}
Chú
ú ýý ::
Ch
Chú
Ng
ùng phé
ép ““hình
hình th
” (Fomal)
Fomal) đđ đđ ii ll pp vv ii ““tt nhiên
ddùng
ph
((Fomal)
Ng ii ta
ta dù
phép
th cc”
nhiên (Natural)
(Natural)
18/56
18/
56
3
Máy tr u t
Ch c n ng đoá
đoán nh n câu
ng (machine)
D li u vào
Máy đoá
đoán nh n câu :
D li u ra
Máy
Mô hì
hình IPO :
Gi s d li u và
vào w*,
k t qu ra r{0, 1}, hay {False, True }
T p h p câu và
vào w đgl ngôn ng (language)
nh n d li u và
vào (data) và
và cho k t qu ra (result)
Hai cá
cách nhì
nhìn :
Có ba kh n ng cho k t qu :
1.
True ho c False
M t k t qu khá
khác
Không cho k t qu nào
Cách nhì
nhìn ch c n ng (functional look)
2.
Cách nhì
nhìn c u trú
trúc (structural look)
3.
Phân bi t cá
các ki u má
máy tr u t
ng (machine type)
theo b n ch t c a k t qu tính toá
toán
Hai t p h p câu và
vào ng v i hai kh n ng đ u là
là bù nhau
n u má
máy cho k t qu cho m i d li u và
vào
19/56
19/
56
20/56
20/
56
Ch c n ng tính toá
toán
Cách nhì
nhìn c u trú
trúc (structural look)
Máy đ
Máy tí
tính toá
toán (computation machine)
Gi s d li u và
vào w*,
k t qu ra là m t câu r trên m t b ng ch nào đó
đó
Khi đó
đó, má
máy th c hi n tí
tính hà
hàm f t * và
vào * :
c xá
xác đ nh b i m t t p h u h n cá
các phé
phép toá
toán
M i phé
phép toá
toán mô t m t ph n c u trú
trúc c a má
máy
Phé
Phép toá
toán s c p (elementary operation) là
là phé
phép toá
toán nh
nh t (không chia c t nh h n)
n)
f : * *
Máy th c hi n (execution) m i phé
phép toá
toán trong m t kho ng
Ngh a là
là w *, f (w ) *
th i gian h u h n và
và xác đ nh
Hàm f đ c g i là
là hàm toà
toàn ph n (partial function)
n u v i m i câu và
vào w *, má
máy đ u cho k t qu f (w)*
Ng i ta c ng nó
nói ki u má
máy đoá
đoán nh n ch là tr
bi t c a ki u má
máy tí
tính
ng h p đ c
Ch
ng trình (program) là
là t p h p cá
các phé
phép toá
toán s c p đ
gi i m t bà
bài toá
toán nà
nào đó
đó
M t t ính toá
toán (computation) là
là vi c th c hi n l n l t cá
các
phé
phép toá
toán s c p theo m t th t xác đ nh tr c
21/56
21/
56
22/56
22/
56
Mô hì
hình tí
tính toá
toán
M t s thu t ng
nh ngh a cá
các l p má
máy có
có cùng nguyên lý ho t đ ng
ng trì
trình đ gi i bà
bài toá
toán trên cù
cùng m t má
máy mà
mà không
thay đ i má
máy gi i
Làm sao đ có th bi t :
Thay đ i ch
Mô hì
hình tí
tính toá
toán (computation model), ký hi u T là
là s mô t :
t t c các phé
phép toá
toán s c p
nh ng đ i t
cách th c hi n ch
M t tr
ng nà
nào có
có th tác đ ng phé
phép toá
toán
ng trì
trình trên má
máy
Mô hì
hình + Ch
L p cá
các hà
hàm t ính đ
hay Tt ính đ c ?
c (recognized),
c (computable)
L p cá
các ngôn ng li t kê đ
hay Tli t kê đ c ?
c (enumerable)
So sá
sánh hai mô hì
hình : T1 m nh h n T2 khi :
N u T2 nh n bi t đ c (tí
(tính đ c, li t kê đ c)
thì
thì T1 c ng nh n bi t đ c (tí
(tính đ c, li t kê đ c)
ng h p riêng (instance) c a mô hì
hình là
là máy c th
Mô hì
hình tí
tính toá
toán T đ
L p ngôn ng đoán nh n đ
hay Tnh n bi t đ c ?
ng trì
trình = Má
Máy
T1 và
và T2 t
c g i là
là m t T
Tmáy
ng đ
ng (equivalent) n u T1 m nh h n T2 và
và ng c l i
c n u không t n t i mô
T1 và
và T2 là
là không th so sá
sánh v i nhau đ
hình nà
nào ít ra đ m nh h n mô hì
hình kia
23/56
23/
56
24/56
24/
56
4
Khá
Khái ni m bà
bài toá
toán (problem)
M t s ví d bài toá
toán (1)
Bài toá
toá n 1 :
D li u:
M t s nguyên vi t trong h 10
Câu h i : S nguyên đã cho có
có là s nguyên t hay không ?
Bài toá
toá n 2 :
D li u : M t s nguyên vi t trong h 10
Câu h i : S nguyên nà
nà y đ c vi t d i d ng t ng c a 4 s bình ph ng ?
Bài toá
toá n 3 :
D li u : M t s nguyên vi t d i d ng tí
tích c a cá
các s h ng trong h 10
Câu h i : S nguyên đã cho có
có là s nguyên t hay không ?
Bài toá
toá n 4 :
D li u : M t đ th h u h n G đ c bi u di n b i m t danh sá
sách cá
các đ nh
và các cung, m i đ nh đ c bi u di n b i m t s nguyên trong h 10
Câu h i : Có t n t i đ ng đi Hamilton (đi qua h t t t c các đ nh c a
đ th , m i đ nh đi qua đú
đúng m t l n) trong đ th đã cho không ?
M t bài toá
toán là :
Mô t cách bi u di n (h u h n) cá
các ph n t
c a m t t p h p h u h n hay vô h n đ m đ
M t phá
phát bi u liên quan đ n cá
các ph n t c a t p h p nà
này
K t qu có th đúng,
ng, ho c sai, tùy vi c ch n ph n t
Bài toá
toán trong Tin h c lý thuy t :
Khá
Khác v i khá
khái ni m bà
bài toá
toán thông th
c
ng trong Toá
Toán h c
Khá
Khác v i bà
bài toá
toán hi u theo ngh a thông d ng
25/56
25/
56
26/56
26/
56
Bài toá
toán t
M t s ví d bài toá
toán (2)
Bài toá
toán 5 :
D li u : M t bi u th c chí
chính quy (regular
(regular expression) đ c xây
d ng trên m t b ng ch (là
(là m t bi u th c nh n đ c t các câu
w* b i cá
á
c
phé
é
p
ho
c,
phé
é
p
ghé
é
p
c ph
ph gh ti p, phé
phép * và
và l y bù
bù)
Câu h i : Có ph i bi u th c đã cho ch đ nh ngôn ng tr ng (empty
language) ?
Bài toá
toán 3n+1 (bà
(bài toá
toán d ng) : ch a có
có câu tr l i v tính d ng
ng ng Post
(Post’
(Post’s correspondence problem)
D li u : M t dãy h u h n cá
các c p câu (u1, v1), (u2, v2)..., (uk, vk)
Câu h i : T n t i hay không m t dãy ch s i1 , i2 ,...in sao cho
tho mãn ui1 ui2... uin = vi1 vi2... vin ?
Ví d : cho * = {a,
{a, b, c }
Và dãy cá
các c p câu :
{(ab,
{(ab, aba),
aba), (ab
(ab,, ba), (bab
(bab,, ba),
ba), (ab
(ab,, bab)
bab) }
function threen(n: integer): integer;{
integer;{ recursive }
begin
if (n = 1) then 1
else
if odd(n
odd(n then threen(3*n+1)
else threen(n div 2);
end;
Cho câu : babababab
T n t i dãy ch s {3 , 2, 2, 4} sao cho tho mãn :
bab.ab.ab.ab = ba.ba.ba.bab
27/56
27/
56
M t s khá
khái ni m khá
khác
Các phé
phép toá
toán trên ngôn ng
K t h p bà
bài toá
toán P v i ngôn ng đ c tr ng (characteristic language) LP*
Ngôn ng LP = { w D * | l i gi i f(w) = true }
Ngôn ng là m t t p h p do đó
đó có th áp d ng cá
các phé
phép toá
toán
trên t p h p :
i v i cá
các ph n t :
i v i ngôn ng :
Cho L1, L2 và
và L là
là các ngôn ng , cá
các phé
phép toá
toán:
Phé
Phép h p
L1 L2 = {w | w L1 ho c w L2}
Phé
Phép giao
L1
L2
L1 L2 = {w | w L1 và
và w L2}
Phé
Phép hi u
L1 – L2 = {w | w L1 và
và w L2}
L
Phé
Phép bù
bù
L’ = {w | w L} ho c L’
L’ = * - L
Bài toá
toán ng c C P nh n đ c t P b ng cá
cách :
LP
gi nguyên cá
cách bi u di n cá
các d li u
*
đ t ng
c l i câu h i
Ngôn ng LCP = { w D * | Không l i gi i, hay f(w) = false }
Ví d : Bà
Bài toá
toán 1’
1’ :
D li u :
Cho m t s nguyên vi t trong h 10
Câu h i : S nguyên nà
này không ph i là
là m t s nguyên t ?
Máy gi i (solve) bà
bài toá
toán P n u và
và ch n u :
w *, má
máy cho phé
phép xá
xác đ nh, trong m t kho ng th i gian h u h n,
n u w LP hay w LCP
Phân l p cá
các bà
bài toá
toán tù
tù y theo đ ph c t p (complexity)
M t bà
bài toá
toán là
là t m th
28/56
28/
56
ng (trivial) n u LP = ho c n u LCP =
29/56
29/
56
30/56
30/
56
5
Các phé
phép toá
toán trên ngôn ng
Các phé
phép toá
toán trên ngôn ng
Phé
Phép ghé
ghép n i :
L1L2 = = {w | w = uv, u L1 và
và v L2}
Phé
Phép bao đó
đóng (closure) :
L* = L0 L1 … Ln … =
Phé
Phép ngh ch đ o :
LR = {w | wR L}
Phé
Phép bao đó
đóng d ng :
L+ = L1 L2 … Ln … =
Phé
Phép l y th a :
Ln = LL…
LL…L (n l n)
Li = LLi-1 = Li-1L v i i>0
L0 = {
{}
Ví d :
Ghép n i L1 có m
câu, và L2 có n câu,
đ c ngng có m.n
??? câu
Là
Là b
b n
n ss cc aa tích
tích êCac
êCac
(Cartesian
(Cartesian Product)
Product)
Cho L = { tic,
tic, tac,
tac, toe
toe } khi đó
đó :
L2 = LL
= { tictic, tictac, tictoe, tactic, tactac, tactoe, toetic, toetac,
toetac, toetoe }
L
i 0
L
i 1
Nh n xé
xét :
L+ = LL* = L*L
L* = L+ { }
Ví d :
i
Cho L = { tic,
tic, tac,
tac, toe
toe } khi đó
đó :
i
Khái
Khái ni
ni m
m hh uu hh n,
n, vô
vô hh nn
đđ cc hi
hi uu nh
nh th
th nào
nào ??
•Liên
•Liên quan
quan đđ nn các
các ph
ph nn tt
cc aa m
m tt tt pp hh pp :: khái
khái ni
ni m
m
đđ m
m (li
(li tt kê)
kê) đđ cc
•Ng
•Ng ii ta
ta đđ tt song
song ánh
ánh các
các
ph
ph nn tt vv ii ss tt nhiên
nhiên
•h
•h uu hh nn ?? tt pp hh pp có
có nn ph
ph nn
tt ,, nK<,
nK<, bb ch
ch nn trên
trên
•vô
•vô hh nn ?? tt pp hh pp có
có nn ph
ph nn tt
tu
tu ý,
ý, không
không bb ch
ch nn trên
trên
L* = { , tic, tac, toe, tictic, tictac, tictoe, tactic, tactac, tactoe,
toetic, toetac, toetoe, tictictic, tictictac, ... }
31/56
31/
56
32/56
32/
56
Ví d khá
khác v ngôn ng
Các ngôn ng chí
chính quy (NNCQ)
Cho = {0..9} { ., +, - }, xay d ng cá
các l p s :
t p h p cá
các ngôn ng chí
chính quy (Regular Languages)
trên :
M i câu trên l
là ghé
ghép tu ý cá
các ch s 0..9, ., +, tuy nhiên ch ghi nh n (xé
(xét) nh ng câu là
là s có ngh a
S t nhiên = {0, 1, 2, ..., i, i+1, ... } i0,
S nguyên = { ..., -3, -2, -1, 0, 1, 2, ... } |i|
|i|0,
S h ut
= { ..., -2/2, -2/3, -1/2, 0, 1/2, 2/2, ... } |m/n|
|m/n|0,
S vô t
= { ..., ..., ... } =
{ ..., ..., ... }
c đ nh ngh a d a trên cá
các ngôn ng s c p
và các phé
phép toá
toán h i (
( : “nh t ra”
ra”), ghé
ghép và
và đó
đóng l p *
Là t p h p nh nh t (ch a ít ph n t nh t) cá
các ngôn ng
thõa mãn cá
các đi u ki n sau :
1. , {
{}
2. { a } v i a
3. N u A, B , thì
thì A B, A.B và
và A*
Rõ rà
ràng là t p h p bé
bé nh t do đ
c xây d ng t các t p
s c p , { } và
và { a } b i cá
các phé
phép h i, ghé
ghép và
và bao đó
đóng
33/56
33/
56
34/56
34/
56
Ví d xây d ng t p NNCQ
Bi u th c chí
chính quy (BTCQ)
Ng
Cho ={
={}, nh ng ph n t -ngôn ng có ngay (t có) :
Nh ng ngôn ng L đ
c xây d ng ki u quy n p (đ quy) :
Lu t : N u A, B , thì
thì AB, A.B và
và A*
A={
A={},
B= {},
AB={
B={, },
A.B={
A.B={}={
}={},
B* = {
{, , ,
, ,
, ... n, ... }, n b t k n>0
i ta s d ng cá
các bi u th c chí
chính quy (Regular
(Regular
Expressions) đ bi u di n cá
các ngôn ng chí
chính qui trên
, {},
, {
{}
Qui t c xây d ng BTCQ trên là các bi u th c đ
thà
thành theo cá
các b
c quy n p nh sau :
ct o
1. , và a, v i m i ph n t a c a
đ u là
là nh ng BTCQ
2. N u và là hai BTCQ ,
thì
), (
thì (),
), (
(),
()* c ng là
là nh ng BTCQ
V y sau b c nà
này ta có
có :
, {}, {}, {
}, ..., {
{},
{, , ,
, ,
, ... n , ... }
(1)
Chú
ú ýý 11 :: Khi
ó th
ác dd uu ngo
Ch
ccó
Chú
Khi vi
vi tt m
m tt BTCQ,, có
th bb ccác
ngo cc đđ nn
theo
* thay
a)*
vvìì ((a)*
theo m
m cc uu tiên
tiên gi
gi m
m dd nn :: ch
ch ng
ng hh nn vi
vi tt aa*
thay vì
Chú
ú ýý 22 :: CCó
ó th
+b thay
b
Ch
vvìì vi
Chú
th vi
vi tt aa+b
thay vì
vi tt aab
VVíí dd ,, bi
ó th
ccó
bi uu th
th cc ((0
((0 (1*))
(1*)) +
+ 0)
0) có
th vi
vi tt 01*+
01*+ 00
Và c th ti p t c xây d ng
35/56
35/
56
36/56
36/
56
6
Bao đó
đóng c a b ng ch
Bi u di n ngôn ng b i bi u th c chí
chính qui
c pxi
c bi u di n (hay
(hay đ c ch đ nh)
b i BTCQ theo cá
các b c quy n p nh sau :
Cho b ng ch , khi
khi đó
đó, L = { a | a } là
là m t NNCQ
1. L(
L( ) = , L(
L() = { }, L(a) = { a } cho a
Có th li t kê h t (đ m đ
Ngôn ng L() đ
2. L((
L(( )) = L(
L() L(
L( )
Bao đó
đóng c a L là
là L* = * là
là m t NNCQ có
có vô h n câu
(2)
3. L((
)) = L(
L(())
L()L(
)L()
4. L((
L(()*) = L(
L()*
22
T (1) và
và (2) ta có
có tính ch t sau :
M t ngôn ng là chí
chính qui n u và
và ch n u (n u, kh )
ngôn ng đó
đó đ c ch đ nh b i m t bi u th c chí
chính qui
44
Nh n xé
xét :
aa
37/56
37/
56
Cho b ng ch = { a, b },
66
ba
77
L1 có 4 câu
L2 = { w * | |w| 8 }
L2 g m cá
các câu có
có đ dài 8
L3 = { w * | |w| là
là m t s l } L3 g m cá
các câu có
có đ dài l
...
...
38/56
38/
56
Ngh
Ngh ch
ch đđ oo câu
câu xong
xong thì
thì
cc ng
ng chính
chính nó
nó !!
cc xuôi,
xuôi, đđ cc ng
ng cc nh
nh
nhau
nhau
ng
ng bên
bên tê,
tê, ngó
ngó bên
bên ni,
ni,
cc ng
ng rr aa
ng
ng bên
bên ni,
ni, ngó
ngó bên
bên tê,
tê,
cc ng
ng rr aa
ii qua,
qua, đi
đi lai,
lai, yy chang
chang !!
Hai
Hai ký
ký tt cách
cách đđ uu đđ uu và
và
cu
cu ii câu
câu yy chang
chang !!
if l>0 then
while OK and i<=l and w(i)=w(l) do i++; l-l-Return OK
w1 w2
...
l--
39/56
39/
56
40/56
40/
56
M t s tính ch t
Cho b ng ch , a , w * và
và L *
V i quy
Khi đó
đó :
ak = aa ... a
Khi đó
đó :
L(
L() = L(
L( ) khi và
và ch khi =
Ngh a là
là :
k ch a liên ti p
k = ... = { w * | |w| = k }
Lk = LL ... L
Tr
a0 = w0 =
0 = L0 = { }
c L(
L() là
là NNCQ đbdb BTCQ
Hai BTCQ b ng nhau cù
cùng bi u di n m t NNCQ
ngôn ng g m cá
các câu là
là ghé
ghép k câu tu ý c a L
ng h p đ c bi t k = 0 :
wl-1 wl
i++
M t s ví d _ 2
wk = ww ... w ghé
ghép liên ti p k câu w
Cho
Cho hai
hai câu
câu w
w11,, w
w22
khi
ów
đ
khi đó
đó
w11 đđ ng
ng tr
tr cc
w
| w
w22 kh
kh |w
|w11|||
w22||
OK = true;
true; i=1, l=len(w)
L1 = {
{, a, aa, aab }
bb
Func PalinCheck(w: string):
string): bool
c m t s NNCQ trên nh sau :
Có
Có th
th có
có thêm
thêm các
các nh
nh nn xét
xét gì
gì vv
các
các câu
câu đđ ii xúng
xúng ??
ab
Ví d v m t thu t toá
toán ki m tra câu đ i x ng
M t s ví d _ 1
L5 = { w * | w = wR }
= {
{, aa,
aa, bb, aba, bab, abba, baab
aab, ... }
L5 g m cá
các câu đ i x ng (palindrome)
55
b
aaa aab aba abb baa bab bba bbb
Các BTCQ c ng t o thà
thành m t ngôn ng
vì chú
chúng là
là nh ng xâu ký t trên b ng ch
L4 = { w * | na(w) = nb(w) }
= {
{, ab,
ab, ba, aabb, abab, baab, ... }
L4 g m cá
các câu có
có s ch a
đúng b ng s ch b
33
a
th
Cho
Cho =
= {a,
{a, b}
b} thì
thìì ta
ta
đã
óm
ccó
đã có
m tt th
th tt titi nn
đđ nh
nh aa đđ ng
ng tr
tr cc bb
...
...
88
có th xây d ng đ
c) t t c các câu c a *
Ví d * = (a + b)*
11
c n ch ra A
AB và
và BA
Chú
Chú ý { } :
{ } có
có m t câu là
là
còn không có
có câu nà
nào !
ch ng minh r ng hai t p h p A và
và B đã cho là
là b ng nhau
A=B
Ngh a là c n CM hai chi u “” và “”
41/56
41/
56
42/56
42/
56
7
Ch ng minh w (a*b)*(b*a)*
M t s ví d _ 3
Ch ng minh r ng :
Các BTCQ :
Gi s w = w1w2...wn *
(a*b)* (b*a)* và
và *
X y ra b n tr
cùng ch đ nh m t ngôn ng chí
chính qui ?
B ng cá
cách “cùng L hai BTCQ”
BTCQ” :
2. w = bn, do
do đó
đó w ( b )* ( a*b )* (a*b)*(b*a) *
L1 = L((a*b)* (b*a)*) và
và L2 = L((a b)*) = L(
L(*) v i = { a, b }
3. w ch a a và
và b, k t thú
thúc b i b. Ta có
có :
w = a . . . ab b . . . b a . . . ab
ab b . . . b
C n CM r ng L1 = L2?
T nay v sau đ đ n gi n, ta vi t w
w thay vì
vì w L(
L()
a*b
a*b
(a*b)*
Do đó
đó, w (a b) (b a)
4. w ch a a và
và b và
và k t thú
thúc b i a.
T ng t tr ng h p 3, ta c ng có
có :
w L((a*b) *(b*a)*)
“” : Rõ rà
ràng L1 = (a*b)*
(a*b)*(b*a)* L2 = *, vì
vì * là
là bao đó
đóng
ch ng minh đi u ng
w = w1w2...w n *
(a*b)*
(a*b)*(b*a) *
L i gi i là
là CM hai chi u “ ” và “” :
“” :
ng h p nh sau :
1. w = an, do
do đó
đó w ( a )* ( b*a )* (a*b) *(b*a)*
c l i, ta xé
xét m t câu :
C n ch ng minh w (a*b)*
(a*b)*(b*a)*
43/56
43/
56
44/56
44/
56
Có vô h n không đ m đ
Các ngôn ng phi chí
chính qui
c ngôn ng
= { a, b }
Nh n xé
xét :
Các BTCQ là
là vô h n đ m đ
Các BTCQ ch bi u di n t p vô h n đ m đ
nh ng không bi u di n h t m i ngôn ng
T n t i nh ng ngôn ng phi chí
chính qui
và không có
có đ các BTCQ đ bi u di n m i ngôn ng
c
Các ngôn ng phi CQ
c NNCQ,
T p cá
các NNCQ
M i ngôn ng không th là chinh qui :
T p h p cá
các ngôn ng và t p h p cá
các t p h p con c a m t
t p h p đ m đ c (t p h p cá
các câu) là
là không đ m đ c
T p h p cá
các NNCQ là
là đ m đ c vì
vì m i NNCQ đ c bi u di n
b i m t BTCQ và
và t p h p cá
các BTCQ là
là đ m đ c
S có nhi u ngôn ng khá
khác v i NNCQ
* = { a, b }*
ó 22nn tt
C
Có
N
N
pp hh pp con
ó nn ph
ccó
con cc aa m
m tt tt pp hh pp AA có
ph nn tt
uu AA có
ó vô
ó vô
ccó
th
vô hh nn đđ m
m đđ cc ph
ph nn tt thì
thìì 22AA ccó
vô hh nn không
không đđ m
m đđ
cc ph
ph nn tt
45/56
45/
56
46/56
46/
56
V n đ bi u di n ngôn ng
Ví d t p con
M t ngôn ng trên b ng ch là t p h p con c a +
Cho A = { c c, c , c ng)
H i có
có bao nhiêu t p h p con c a A ?
Cho L
L+, là
làm sao đ bi u di n h t m i câu w
wL ?
Chi r a ?
Khi L có
có h u h n câu, ch vi c li t kê cá
các câu
Tr l i : có
có 2|A| =23 = 8 t p h p con c a A
ó là các t p h p con :
Khi
L có
có vô h n câu, không th li t kê h t cá
các câu c a L,
mà ph i tì
tìm cá
cách bi u di n h u h n :
{ r ng, {c
{c c} , {c } , {c ng},
{c c , c }, {c
{c c , c ng } , {c ,c ng}, {c c, c , c ng} }
Lý thuy t s
, , vô h n đ m đ
vô
vô h n không đ m đ
-
c
L = { w
* | P(w) }
w*
c (l p đ y tr c s )
2
D ng b ng compacompa-êke s
0
1
N u L g m cá
các câu có
có m t s tính ch t nh t quá
quán P nà
nào đó
đó,
dùng tân t đ bi u di n tính ch t P đó
đó
N u L là
là NNCQ, s d ng BTCQ ch đ nh L :
L = L(
L()
2
...
+
L tu ý, không ph i là
là NNCQ : s d ng ôtômat và
và v n ph m
- Ôtômat đoá
đoán nh n câu c a m t ngôn ng
2
- V n ph m s n sinh ra câu cho m t ngôn ng
47/56
47/
56
48/56
48/
56
8
Ví d bi u di n ngôn ng
Ví d s n sinh ra câu c a ngôn ng
Cho L là
là ngôn ng trên { a,
a, b } đ
Ngôn ng có vô h n câu :
L1 = { ai i là
là m t s nguyên t }, hay
= { a2, a3, a5, a7, …, a11, a13, … }
L2 = { aibj i j 0 }, hay
= { , a, ab, aab, aabb, … }
là ngôn ng g m cá
các câu có
có m t dãy con a r i đ n m t dãy con b,
2. N u w L thì
thì awb L
trong đó
đó s con a bên trá
trái nhi u h n ho c b ng s con b bên ph i
c đ nh ngh a nh sau :
1. L
L3 = (ab)*
= { , ab, abab, ababab, … }
là ngôn ng g m cá
các câu có
có các c p ab tu ý (0..n c p)
3. L không còn câu nà
nào khá
khác n a (ngoà
(ngoài 1 và
và 2)
Qui lu t s n sinh cá
các câu c a L nh sau :
T (1), L = { }
Coi là w, t (2), ta có
có câu awb = a
ab = ab, L = { , ab }
L i do (2), ta có
có L = { , ab, aabb, aaabbb, ... }
C th , ta có
có m i câu c a L có
có d ng aibi i 0
Có th bi u di n L d i d ng :
L = { aibi i 0 }
49/56
49/
56
50/56
50/
56
Ví d đoá
đoán nh n m t câu c a ngôn ng
B ài t p 1
Gi s đ nh ngh a ngôn ng L g m cá
các câu w
w :
Có th thu g n w v câu r ng : w
Thu g n b ng cá
cách thay th d n cá
các xâu con ab c a w b i
Ví d :
w = ab L vì
vì
w = aabbab L vì
bab abab
vì : aab
aabbab
abab ab
Coi a, b l n l
: ab
Cho các bi u th c chí
chính qui r, s, t,
trong đó
đó n u r = s thì
thì có ngh a L(r) = L(s)
Ch ng minh cá
các tinh ch t sau (d u + ~ d u ):
1. r + s = s + r
8. (r*)* = r*
2. r + (s + t) = (r + s) + t
9. r + r = r
3. r (s + t) = rs + rt
10. r(st ) = (rs)t
4. r = r = r
t là
là c p d u ngo c đ n ( và
và ) :
L g m cá
các c p d u ngo c đ n cân b ng nhau không cà
cài nhau
thu đ c t m t bi u th c toá
toán h c nà
nào đó
đó
Ví d , t bi u th c (3*(x y)) (x + 1),
1), th c hi n b h t cá
các
ký hi u toá
toán t và toá
toán h ng, ta nh n đ c câu ngo c đ n
cân b ng (())(),
(())(), là
là câu aabbab
5. r + = r
6. (
( + r)* = r*
7. r = r
r =
11. * =
12. (r*s*)* = (r + s)*
13. r + r* = r*
14. (r + s)t = rt + st
51/56
51/
56
52/56
52/
56
Bài t p_2
Phé
Phép ch ng minh
2. Tì
Tìm cá
các BTCQ ch đ nh ph n bù
bù c a cá
các ngôn ng sau :
(a
(ab)*b
((a
((ab)(a
b)(ab))*
H
H qu
qu
3. Cho ngôn ng L trên b ng ch { a, b }
đ c đ nh ngh a nh sau :
Phép
Phép CM
CM quy
quy n
n
L
N u w L thì
thì awb L
N u w L thì
thì bwa L
N u w1, w2 L thì
thì w1w2 L
p
p (induction)
(induction) ::
•• C
C n
n CM
CM P(n),
P(n), n
n
?
?
•• Th
tr
ng
h
p
P(0),
Th tr ng h p P(0), P(1)
P(1)
•• Gi
s
P(n)
đúng
Gi s P(n) đúng
C
C n
n CM
CM rr ng
ng P(n+1)
P(n+1) đúng
đúng
nh
nh lý
lý
B đ
M
M nh
nh đ
đ
Pitagore:
Pitagore: a
a22+b
+b22=c
=c22
Tiên đ // nh
nh đ
đ
(công
(công nh
nh n)
n)
Ch ng minh b ng quy n p r ng :
ngôn ng L theo cá
cách đ nh ngh a trên kh L g m m i câu có
có
s ch a đú
đúng b ng s ch b (vi t g n na(w) = nb(w) ?
53/56
53/
56
Tr i sinh ra th !
54/56
54/
56
9
CM r + s = s + r
CM (r*s*)* = (r + s)*
S d ng đ nh ngh a ngôn ng L* đ CM :
“L” hai v , c n CM r ng L(r + s) = L(s + r) :
Th t v y, bi n đ i v trá
trái :
L(r
L(r + s)
s) = (theo
(theo đn)
đn) = L(r) L(s)
= {w * | w L(r) w L(s) }
= {w * | w L(s) w L(r) } (không tin, l p b ng chân lý)
= L(s
+ r)
r)
(đpcm)
đpcm)
(Qed(Qed-Quote Erat Demonstandum)
t L1= (r*s*)*, L2 = (r + s)*,
CM L1= L2 b ng cá
cách CM L1
L1 L2 và
và L2 L1
L1
L1 L2 là
là hi n nhiên vì
vì L2 là
là m t bao đó
đóng ch á m i
câu t các BTCQ r và
và s
L2 L1
L1 ?
Theo đn L1={w|
k: wkr*s*, w= w0w1 ... wk}
L1={w|
Cho w
w L, CM w
wL1
55/56
55/
56
w
= r* = r* (
() r* s*
w
= s* = (
() s* r* s*
w
= r*s* r* s*
s** = L1
r, s
56/56
56/
56
10