TRƢỜNG ĐẠI HỌC HÀNG HẢI
BỘ MÔN: KHOA HO
̣
C MA
́
Y TI
́
NH
KHOA: CÔNG NGHỆ THÔNG TIN
BÀI GIẢNG
NGÔN NGỮ HÌNH THỨC VÀ ÔTÔMAT
Ngôn ngữ hình thức và Ôtômat
17204
TRÌNH ĐẠI HỌC CHÍNH QUY
DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN
HẢI PHÒNG - 2008
Otomat
i
ĐỀ CƢƠNG CHI TIẾT
Tên học phần: mat Loại học phần: 1
Bộ môn phụ trách giảng dạy: Khoa phụ trách: CNTT
Mã học phần: 17204 Tổng số TC: 2
45
45
0
0
0
0
Điều kiện tiên quyết:
Mục tiêu của học phần:
-
-
Nội dung chủ yếu
Gồm các phần:
-
-
-
-
Nội dung chi tiết của học phần:
TÊN CHƢƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS
LT
TH/Xemina
BT
KT
MỞ ĐẦU
Chƣơng I. Văn phạm và ngôn ngữ.
05
04
01
1.1.
1.2.
1.3.
1.4.
1.5.
Chƣơng II. Ngôn ngữ chính quy và otomat hữu hạn
16
12
03
01
2.12. Ngôn ng
Otomat
ii
TÊN CHƢƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS
LT
TH/Xemina
BT
KT
Chƣơng III. Ngôn ngữ phi ngữ cảnh và otomat đẩy
xuống.
09
06
02
01
Chƣơng IV: Cơ bản về chƣơng trình dịch
15
12
02
01
4.1.
4.2.Ch
4.2.1.
4.2.2.
4.2.3.
4.2.4.
4.2.5.
4.3.
4.4.
Nhiệm vụ của sinh viên :
Tài liệu học tập :
- Ngôn ngữ hình thức
- Lý thuyết otomat và thuật toán
- Ngôn ngữ hình thức
- Giáo trình chương trình dịch
- Phân tích cú pháp
Hình thức và tiêu chuẩn đánh giá sinh viên:
-
-
Thang điểm: Thang điểm chữ A, B, C, D, F
Điểm đánh giá học phần: Z = 0,2X + 0,8Y.
chính thức và thống nhất ,
Ngày phê duyệt: / /2010
Trƣởng Bộ môn: Thạc sỹ Nguyễn Hữu Tuân
Otomat
iii
MỤC LỤC
Trang
Chƣơng 1: Văm phạm và ngôn ngữ
1
1
1.
2
1.
4
1.
6
1.
8
8
Chƣơng 2: Ngôn ngữ chính quy và Otomat hữu hạn
9
9
2. 2
10
18
26
30
30
30
31
31
31
31
2. 12. -
31
31
Chƣơng 3: Ngôn ngữ phi ngữ cảnh và Otomat đẩy xuống
32
3. 1.
32
3. 2.
32
3. 3.
32
3. 4. Khái
32
32
Chƣơng 4: Cơ bản về chƣơng trình dịch
33
4. 1.
33
4. 2.
33
33
37
44
50
58
58
60
62
63
64
Otomat
1
CHƢƠNG 1: VĂN PHẠM VÀ NGÔN NGỮ
Kiến thức cơ bản:
1.1. Bảng chữ cái, từ, ngôn ngữ
1.1.1.
= {0,1}
1.1.2.
1
, a
2,
n
(a
i
, i=1 .
= {0,1}
a
1
= 0, a
2
= 1, a
3
= 00, a
4
=
: = {a,b,c}
a
1
= aabb, a
2
= ac, | a
1
| = 4, |a
2
| = 2
Otomat
2
, thì a
. = {0,1} ,
a
1
=
0110 , a
*.
+
+
=
*
\ {}
1.1.3.
.
*
.
= {a,b,c}
A = {x
*
*.
.
.
1.2. Tích ghép, phép chia, phép soi gƣơng
1.2.1. Tích ghép hai xâu
= a
1
a
2
a
a
n
, = a
1
a
2
m
( a
i
)
và .
= . = a
1
a
2
a
3
n
a
1
a
2
m
={0,1}
= 011, =1101
= 0111101
+
+
() = ()
Otomat
3
+ chính nó
. = . =
=.
1.2.2. Chia xâu
*
)
+ Phép chia trái
cho x
x\
Z
= y
Z
/y = x
= {0,1}, x = 10, y = 11
Z = x.y = 1011
x\
Z
= 11
Z
/y = 10
1.2.3.
= a
1
a
2
m-1
a
m
*
= a
m
a
m-1
2
a
1
| | = | |
1.3. Các phép toán trên ngôn ngữ
C = A B = {x */x B}
= {a,b,c}
A = {a, b, ab, ac, cb}, B = {aa, bb, cc}
Otomat
4
C = A B = {a, b, ab, ac, cb, aa, bb, cc}
A B = B A
(A B) C= A (B C)
C = A B = {x * | x A và x B}
= {a, b}
A = {a, ab, ac, cb}, B = {b, ab, cb, aa, bc}
C = A B = {ab, cb}
C (A B) = B (A C)
Tính giao hoán
A B = B A
A = A =
1.3.3.
C=A.B={z *| z=x.y | x A, y B}
= {a, b, c}
A = {a, b, ab, ac}, B{c, cb}
C = A.B = {ac, bc, abc, acc, acb, bcb, abcb. accb}
-
A.B B.A
-
A.(B.C) = (A.B).C
-
A.(B C) = (A.B) (A.C)
Otomat
5
-
n
1.3.4.
C = A\B = {x * | x A, x B}
= {a, b, c}
A = {a, b, ac, bc, aa}, B = {b, bc, ab, bb}
C = B\A = {b, ab, bb}
1.3.5.
A = C
B
= { x */ x B}
Cho B = {a, bc}.
A = {x * | x a, x bc}.
1.3.6.
.
*| x A, y
\
A
.
* | x A, y
= {a, b, c}
A = {a, bc, abc, aba} , B = {, b, ab, cbc}
B\
A
= { a, bc, abc, aba, c}
A/
B
= {a, bc, abc, aba}
1.3.7.
.
Otomat
6
B = Ã = { * / A }.
= {0, 1}
A = {0, 1, 10, 110}
B = Ã ={0, 1, 01, 011}
1.3.8.
.
A
*
= { } A A A
n
-
(A
*
)* = A
*
-
{}
*
= {}
-
()
*
= {} . }
-
()
+
= .
1.4. Văn phạm
1.4.1. Định nghĩa văn phạm cấu trúc (Grammar)
và c
n
trung gian
Quá trình
th
Otomat
7
Định nghĩa : G
(,V, S, P)
- : terminal)
- V v
- P: production.
- S: start)
.
Nhận xét
1.4.2. Sự phân cấp Chomsky trên văn phạm
1) Văn phạm loại 0:
văn phạm không hạn chế (Unrestricted Grammar)
2) Văn phạm loại 1: ||<|| thì G
văn phạm cảm ngữ cảnh CSG (Context-Sensitive
Grammar)
3) Văn phạm loại 2: là
(V văn phạm phi
ngữ cảnh CFG (Context-Free Grammar)
4) Văn phạm loại 3tuyến tính phải (rightlinear): A
ó
tuyến tính trái (left-linear): A
Otomat
8
văn phạm chính quy RG (Regular Grammar)
Ta có : L3 L2 L1
1.6. Các ví dụ về văn phạm
Cho
12
, , ,
n
a a a
.
VD 1. L = *
VD 2. L =
+
VD 6.
0,1,2
BÀI TẬP
Bài 1
1
= {a, ab, abb, aabbb, abbaa, aaaabb, ababba}
L
2
= {, ab, bb, aba, bbb, aabb}
1
và L
2
1
cho L
2
1
.
Bài 2
L = {a
n
b
2n+1
c
k
*n > 0, k 0}
Otomat
9
CHƢƠNG II: NGÔN NGỮ CHÍNH QUY VÀ OTOMAT HỮU HẠN
2.1. Nguồn và ngôn ngữ đƣợc sinh bởi nguồn
2.1.1.
O)
□)
{}.
2.1.2.
1
2.1.3.
.
2.1.4.
r
0
r
1
r
2
a,b,c
c
a
b,c
a,b
2
S
1
S
2
S
3
S
4
S
5
a
b,c
a,c
b,a
c
a
1
Otomat
10
2. 1. 5.
-
-
{x *| x N
I
(v(I),s), s F(I)}.
-
N
I
(s
1
,s
3
) = {b,c}
N
I
(s
1
,s
4
) = N
I
(s
1,
s
3
).{b,a}.c
*
= {b,c}.{b,a}.{c
s
= {bbc
s
,bac
s
,cbc
s
,cac
s
N
I
(s
1,
s
2
) = {a} N
I
(s
1
,s
4
).{a} = {a}. {bbc
s
a,bac
s
a,cbc
s
a,cac
s
a}
={bbc
s
a,bac
s
a,cbc
s
a,cac
s
a,a
N
I
(s
1
,s
5
)=N
I
(s
1
,s
2
).{a,c} =
bbc
s
aa,bac
s
aa,cbc
s
aa,cbc
s
aa,aa,bbc
s
ac,bac
s
ac,cbc
s
ac,cac
s
1
là :
N(I
1
) = N
I
(s
1
,s
4
) N
I
(s
1
,s
5
) = {bbc
s
,bac
s
,cbc
s
,cac
s
bbc
t
aa, bac
t
aa, cbc
t
aa,
cbc
t
aa, aa, bbc
t
ac, bac
t
ac, cbc
t
ac, cac
t
s
, bac
s
, cbc
s
, cac
s
, bbc
t
aa,
bac
t
aa, cbc
t
aa, cbc
t
aa, bbc
t
ac, bac
t
ac, cbc
t
ac, cac
t
ac
2.2. Các phép toán trên nguồn
2.2
Thuật toán đơn định hoá nguồn như sau:
1)
T
1
(s,a) = {u D(I) |a N(s,u)}.
H
1
(M,a) =
Ms
T
1
(s,a).
a.
Otomat
11
1
1
(M,a).
F(K) = {M A(K) | M F(I) }
2. 2. 2.
1.
S
0
S
1
S
2
a,b
a
b
a,b
q
0
={S
0
}
q
2
={S
0
,S
2
}
a
q
1
={S
0
,S
1
}
q
2
={S
0
,S
2
}
b
b
b
a
a
b
b
q
0
q
1
q
2
q
3
a
a
a
b
a
b
a
b
Otomat
12
2.
N(K) = C
N(I).
2.2.3.
1
và I
2
1
và I
2
1
) N(I
2
1
và I
2
.
Thuật toán:
1
và I
2
1
và I
2
, thêm
1
2
1
) và v(I
2
).
1
) F(I
2
).
1
) N(I
2
).
Chú ý: Ta có th
1
, I
2
n
1
, I
2
n
s
i 1
N(I
i
).
1
và I
2
:
I
1
và I
2
là :
1
và I
2
q
0
q
1
q
2
b
a
c
S
0
S
2
a
c
b
S
1
1
và I
2
v(I)
S
0
S
2
a
c
b
q
0
q
1
q
2
b
a
c
S
1
Otomat
13
2.2.4.
1
, I
2
I
1
, I
2
1
) N(I
2
1
, I
2
.
Thuật toán xây dựng nguồn giao I:
1
, I
2
1.
1
), v(I
2
)};
2. D(I
1
), Q D(I
2
là k
1
I
H
(P,a),
2
I
H
3. F(I
1
)
và R F(I
2
) .
1
, I
2
sinh ra.
1
và I
2
(hình 1.5 )
S
0
, q
0
, q
1
, S
2
S
2
,
,
, q
2
a
c
b
b
a,b,c
a,c
a,b,c
a,b,c
c
a,b
S
0
,q
0
Otomat
14
2.2.5.
1
, I
2
1
, I
2
1
).N(I
2
).
1
, I
2
.
Thuật toán xây dựng nguồn tích ghép:
1
,I
2
1
,I
2
1
1
2
I(F(I)=F(I
2
1
2
.
1
1
, I
2
sinh ra.
1
và I
2
(hình 1.5)
:
2.2.6.
1
1
1
Thuật toán xây dựng nguồn lặp I:
1
S
1
S
0
a
1
và I
2
S
0
a
c
b
q
0
q
1
q
2
b
a
c
S
1
S
2
Hình 1.8. Tích ghép 2
1
và I
2
Otomat
15
1
1
)
1
1
1
1
1
)
*
(N(I) = N(I
1
)
*
) .
1 :
2.2.7.
1
1
1
.
Thuật toán xây dựng nguồn soi guơng:
1
sau:
1)
1
.
2)
1
(v(I
1
F(I) = {v(I
1
)};
3)
1
S
0
S
2
a
c
b
S
1
S
I
Hình 1.9.
1
Otomat
16
1
).
1
:
2.2.8. Phép chia trái
1
, I
2
1
, I
2
1
, I
2
.
Thuật toán xây dựng nguồn thương bên trái:
1)
1
, I
2
.
2)
v(K);
3)
1
);
4) S (S
A(I
1
F(I
2
) .
2. 2. 9.
1
, I
2
1
, I
2
1
, I
2
.
Thuật toán xây dựng nguồn thương bên phải:
1)
1
1
D(I
1
s
i
i
(v(I
s
i
)
= s
i
) và F(I
s
i
) = F(I
1
)
N(I
1
)
N(I
2
)
S
1
a
c
b
S
0
S
2
S
I
1
Otomat
17
2)
1
1
và I
2
.
s
i
s
i
s
i
và I
2
.
3)
1
và I
2
.
-
1
v(I
1
) .
-
i
D(I
1
s
i
)
I
1
,I
2
=
N(I
1
)
N(I
2
)
Otomat
18
2. 3. Otomat hữu hạn không lối ra và ngôn ngữ đƣợc đoán nhận bởi otomat hữu hạn không
lối ra:
2. 3.1. Otomat đơn định (ÔHĐ)
-
-
-
thái (Hình 1.3.1).
-
: Q Q.
-
0
trạng thái đầu
trạng thái cuối.
-
*
0
1
1
0
0
1
1
1
Q
Otomat
19
0
-
= {0,1}, Q = {q
0
, q
1
, q
2
, q
3
} , F= {q
0
}
Hàm
q
0
q
1
q
2
q
3
0
q
2
q
3
q
0
q
1
1
q
1
q
0
q
3
q
2
q
0
q
1
q
3
q
2
1
1
1
1
1
1
0
0
q
0
110101
q
1
q
0
q
2
q
3
q
1
110101
110101
110101
110101
110101
110101
q
0
Otomat
20
Vì q
0
2. 3. 1. 1.
A = {S, , S
0
,
, F }
Otomat
S
0
: S x
F
Q và x
1
x
2
n
S
0
x
1
x
2
n
S
1
x
2
n
S
n
x
n
S
n+1
0
0
n+1
A=({S
0
,S
1
,S
2
}, {a,b,c}, S
0
, ,{S
2
S
0
S
1
S
2
a
S
1
S
0
S
1
b
S
0
S
1
S
2
c
S
1
S
2
S
2
x
q
Otomat
21
Quá trình
S
0
aabccb S
1
abccb S
0
bccb S
0
ccb
S
1
cb S
2
b S
2
( s, )=S, s S
(s, ax) = ( (s, a), x), a , x
*
, s S
2. 3. 1. 2.
*
T(A) = {x
*
| (S
0
, x ) F}
2. 3. 2. Otomat không đơn định (ÔHK)
A={S, , S
0
, , F}
S
0
: S x S)
F
Ví
0
, t
1
, t
2
}, {0, 1}, {t
0
}
, , {t
1
,t
2
}
t
0
t
1
t
2
0
t
1
{t
0,
t
1
}
t
1
1
{t
1,
t
2
}
t
0
(Q, )= Q, (Q=
SSi
Si
)
(Q, ax)= ( (Q,a),x) , a , x
*