You are on page 1of 35

ĐẠI HỌC QUỐC GIA TPHCM

TRƯỜNG ĐẠI HỌC


CÔNG NGHỆ THÔNG TIN

XỬ LÝ NGÔN NGỮ TỰ NHIÊN


CHƯƠNG VII

FINITE STATE AUTOMATA

Nguyễn Trọng Chỉnh


1
chinhnt@uit.edu.vn
FINITE STATE AUTOMATA

❖NGÔN NGỮ HÌNH THỨC


❖FINITE STATE AUTOMATON
❖NGÔN NGỮ CHÍNH QUY
❖FINITE STATE TRANDUCER
❖PHÂN TÍCH HÌNH THÁI

2
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


1. Bộ ký tự (Alphabet):
Bộ ký tự, ký hiệu là , là tập hợp hữu hạn các ký hiệu
khác nhau được sử dụng để biểu diễn ngôn ngữ.
Ví dụ:
- Bộ ký tự của ngôn ngữ Việt:
 = {a, ă, â, …, y}
- Bộ ký tự của những số nguyên dương:
 = {0, 1, 2, …, 9}

3
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


2. Chuỗi (String):
- Một chuỗi w xác định trên một bộ ký tự  là một dãy
có chiều dài hữu hạn gồm các phần tử trong bộ ký
tự .
- Chiều dài của chuỗi w, ký hiệu là |w| là tổng số lần
xuất hiện của các ký hiệu trong w.
- Chuỗi không chứa ký hiệu nào được gọi là chuỗi
rỗng, ký hiệu là .
Ví dụ:  = {0, 1}, w = 10110, |w| = 5.
4
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


3. Phép nối chuỗi (Concatenation):
Cho hai chuỗi v=v1v2..vm và w=w1w2..wn, phép nối hai
chuỗi v và w, được định nghĩa là:
v.w = vw = v1v2..vmw1w2..wn

Ví dụ:  = {0, 1}, v = 101, w = 100


v.w = vw = 101100

5
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


4. Phép lũy thừa (exponent):
Cho tập ký tự  và a là ký hiệu được xác định trên ,
phép lũy thừa của a được định nghĩa như sau:
- a0 = 
- an = aaa...a (n lần ký hiệu a)
- an+1 = ana
Ví dụ:  = {0, 1}, a = 10,
- a0 = 
- a3 = 101010
6
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


5. Phép đảo chuỗi (reverse):
Cho chuỗi w=w1w2..wn, kết quả của phép đảo chuỗi w,
ký hiệu wR, được định nghĩa như sau:
wR = wnwn-1..w1

Ví dụ:  = {0, 1}, w = 100111,


wR = 111001

7
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


6. Chuỗi con (substring):
Cho chuỗi w, chuỗi y được gọi là chuỗi con của w nếu
tồn tại hai chuỗi x và z sao cho:
|x|  0, |y|  0, |z|  0: w = xyz
- x được gọi là tiền tố của y
- z được gọi là hậu tố của y
Ví dụ:  = {a,b,c,... z}, w = unbelievable,
y = believ là chuỗi con của w có tiền tố là x = un và
hậu tố là z = able.
8
I. NGÔN NGỮ HÌNH THỨC

❖CÁC KHÁI NIỆM


7. Tập hợp tất cả những chuỗi được xác định trên
bộ ký tự , ký hiệu *
* = 0  1  ...  n = 0 i
Trong đó
- 0 = {}
- n = {w | w = xy, x n-1, y }
- n = n-1

9
I. NGÔN NGỮ HÌNH THỨC

❖KHÁI NIỆM NGÔN NGỮ HÌNH THỨC


Ngôn ngữ hình thức (Formal language) L xác định trên
bộ ký tự  là tập con của *. Trong đó, L có thể là tập
hữu hạn hoặc vô hạn đếm được.
Ví dụ:
- Tập các dãy Palindrome:
L = {w | w = wR},  = {0, 1, 2 , ..., 9}
- Ngôn ngữ lập trình C:
L = {w | w là câu lệnh trong C}

10
I. NGÔN NGỮ HÌNH THỨC

❖CÁC PHÉP TOÁN TRÊN NGÔN NGỮ


HÌNH THỨC
Ngôn ngữ hình thức là một tập hợp, vì thế các phép
toán trên tập hợp đều áp dụng được trên ngôn ngữ
hình thức. Ngoài ra, ngôn ngữ hình thức còn có phép
nối, lấy phần bù và lũy thừa

11
I. NGÔN NGỮ HÌNH THỨC

❖CÁC PHÉP TOÁN TRÊN NGÔN NGỮ


HÌNH THỨC
1. Phép nối.
Cho L1, L2 là hai ngôn ngữ hình thức, phép nối L1 và
L2 được định nghĩa như sau:
L1 . L2 = L1L2 = {xy| x  L1, y  L2}

Ví dụ: L1 = {ab, ac}, L2 = {xy, yz}

12
I. NGÔN NGỮ HÌNH THỨC

❖CÁC PHÉP TOÁN TRÊN NGÔN NGỮ


HÌNH THỨC
1. Phép nối.
Cho L1, L2 là hai ngôn ngữ hình thức, phép nối L1 và
L2 được định nghĩa như sau:
L1 . L2 = L1L2 = {xy| x  L1, y  L2}

Ví dụ: L1 = {ab, ac}, L2 = {xy, yz}


L1 . L2 = {abxy, abyz, aczy, acyz}

13
I. NGÔN NGỮ HÌNH THỨC

14
I. NGÔN NGỮ HÌNH THỨC

❖CÁC PHÉP TOÁN TRÊN NGÔN NGỮ


HÌNH THỨC
3. Phép lũy thừa.
Cho L là ngôn ngữ hình thức, phép lũy thừa trên L
được định nghĩa như sau:
- L0 = {} và Ln = Ln-1L
- L* = 0 Li
- L+ = 0 Li - {}

15
II. FINTE STATE AUTOMATON

❖KHÁI NIỆM
Máy chuyển đổi trạng thái hữu hạn (Finite State
Automaton – FSA, hoặc FSM) là mô hình tính toán
của máy tính.
1

0
1 0 0 1
0

16
II. FINTE STATE AUTOMATON

❖KHÁI NIỆM
Máy chuyển đổi trạng thái hữu hạn (Finite State
Automaton – FSA, hoặc FSM) là mô hình tính toán
của máy tính.
1

0
1 0 0 1
0

17
II. FINTE STATE AUTOMATON

❖KHÁI NIỆM
Máy chuyển đổi trạng thái hữu hạn (Finite State
Automaton – FSA, hoặc FSM) là mô hình tính toán
của máy tính.
1

0
1 0 0 1
0

18
II. FINTE STATE AUTOMATON

❖KHÁI NIỆM
Có hai dạng FSA là:
- Deterministic Finte Automaton (DFA – Máy chuyển
đổi trạng thái hữu hạn hạn định)
- Non-deterministic Finite Automaton (NFA – Máy
chuyển đổi trạng thái hữu hạn không hạn định)

19
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


DFA được định nghĩa là một bộ năm
M = {Q, , , q0, F }
Trong đó
• Q là tập hữu hạn các trạng thái.
•  là bộ ký tự.
•  là hàm chuyển đổi trạng thái trả về trạng thái sẽ
được chuyển đến,  là đơn ánh.
• q0 là trạng thái bắt đầu duy nhất, q0  Q.
• F là tập các trạng thái kết thúc. F  Q.
20
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Một DFA M có thể được biểu diễn bằng một đồ thị như
sau:

- Q = {q0, q1, q2},  = {0, 1}


−  là tập hợp các cung có hướng,
- trạng thái bắt đầu và kết thúc lần lượt là q0, q1

21
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Một chuỗi được gọi là được M đoán nhận (recognize)
nếu M đạt trạng thái kết thúc khi duyệt toàn bộ chuỗi

Cho biết M như trên có đoán nhận được các chuỗi sau
hay không: 01010100, 010010011, 0011100101101
22
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


DFA có thể được biểu diễn dưới dạng bảng
- Các cột là đầu vào tại thời điểm đang xét
- Các dòng là các trạng thái tại thời điểm đang xét
- Giá trị tại ô Aij là kết quả chuyển trạng thái khi máy
đang ở trạng thái qi nhận được đầu vào là j
VD: Biểu diễn dạng bảng của M là

23
II. FINTE STATE AUTOMATON

24
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Tích của hai DFA
Cho M1= {Q1, , 1, q1, F1}, M2 = {Q2, , 2, q2, F2 } là
hai DFA, tích của M1 và M2, ký hiệu M1M2, được định
nghĩa như sau:
- Tập trạng thái Q = Q1  Q2
- Bộ ký tự 
- Hàm chuyển trạng thái
((q1,q2), a) = (1(q1,a), 2(q2,a))
- Trạng thái bắt đầu: q = (q1, q2)
- Tập trạng thái kết thúc: tùy thuộc vào phép toán 25
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Phép hợp
Cho M1 và M2 là hai DFA, M là hợp của M1 và M2, ký
hiệu M = M1  M2, nếu M=M1M2 và tập các trạng thái
kết thúc trong M là những bộ có chứa ít nhất một trạng
thái kết thúc trong M1 hoặc M2
0 0 0 0 1
1 1
0 1

1 1 0 0
1 1 1 0 1
0
0
0 1
26
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Phép giao
Cho M1 và M2 là hai DFA, M là giao của M1 và M2, ký
hiệu M = M1  M2, nếu M=M1M2 và tập các trạng thái
kết thúc trong M là những bộ chứa cả hai trạng thái
kết thúc trong M1 và M2
0 0 0 0 1
1 1
0 1

1 1 0 0
1 1 1 0 1
0
0
0 1
27
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Phép hiệu
Cho M1 và M2 là hai DFA, M là hiệu của M1 và M2, ký
hiệu M = M1 \ M2, nếu M=M1M2 và tập các trạng thái
kết thúc trong M là những bộ chứa trạng thái kết thúc
của M1 nhưng không chứa trạng thái kết thúc của M2
0 0 0 0 1
1 1
0 1

1 1 0 0
1 1 1 0 1
0
0
0 1
28
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Xây dựng DFA
DFA đoán nhận một tập L các chuỗi có thể được xây
dựng qua 3 bước:
- Tách tập L thành các tập hợp con, xây dựng DFA
cho từng tập hợp.
- Hợp các DFA của các tập con.
- Tối tiểu DFA (gộp các trạng thái thừa)

29
II. FINTE STATE AUTOMATON

❖DETERMINISTIC FINITE AUTOMATON


Ví dụ:
Xây dựng DFA cho L = {caps, captain, cat}

30
II. FINTE STATE AUTOMATON

c a p s

a p t a i n
c

c a t s

31
II. FINTE STATE AUTOMATON

a p t a i n
c

c a t s

32
II. FINTE STATE AUTOMATON

a p t a i n
c

t s

33
II. FINTE STATE AUTOMATON

a p t a i n
c

s
t

34
BÀI TẬP

1) Vẽ DFA đoán nhận tập các chuỗi có biễu diễn sau:


a) a{ab}nb b) {a}n{b}m
c) Các số nguyên dương chẵn

2) Cho các ngôn ngữ L1, L2 được xác định trên tập từ
vựng  = {e, k, n, o, r, s, w} như sau:
L1 = {worker, ok, keen}
L2 = {error, owner, worse}
a) Xây dựng các DFA M1 và M2 tương ứng với L1 và L2
b) Xác định M1  M2, M1  M2, M1 \ M2
35

You might also like