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

Bài giảng ngôn ngữ hình thức và automat

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 (984.15 KB, 68 trang )







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 3tuyế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  
*

×