Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 26

Chương II:

NGÔN NGỮ
VÀ BIỂU DIỄN NGÔN NGỮ

Khoa KHMT – Trường CNTT


& TT Giảng viên GD: Phạm Xuân
Hiền
Nội dung

 Một số khái niệm cơ bản


 Tổng quan về ngôn ngữ

 Biểu diễn ngôn ngữ

 Văn phạm & sự phân lớp văn phạm

 Cơ chế automata

2
Một số khái niệm cơ bản (1)
 Ký hiệu (symbol): là một thực thể trừu tượng,
không định nghĩa được một cách hình thức
 Ví dụ: Các chữ cái a, b, c… hoặc các số 1, 2,
3…
 Bộ chữ cái (alphabet): ký hiệu . Là một tập
không
rỗng gồm các ký hiệu  bộ ký hiệu
 Ví dụ:
 Bộ chữ cái Latin {A, B, C, ... , Z, a, b, c, ... ,
z}
 Bộ chữ số thập phân {0, 1, 2, ... , 9}
 Bộ bit nhị phân { 0, 1}
Một số khái niệm cơ bản (2)
 Chuỗi (string): một chuỗi (hay một từ - word) trên bộ chữ cái
:
 là một dãy hữu hạn gồm một số lớn hơn hay bằng không

gồm các ký hiệu của .


 một ký hiệu có thể xuất hiện nhiều lần

 Ví dụ:

 abcac là một từ trên bộ chữ cái Latin {A, B, C, ... , Z, a,

b, c, ... , z}
 , 0, 1011, 00010,… là các từ trên bộ chữ cái  = {0, 1}

 Độ dài của một chuỗi w, ký hiệu |w|, là số các ký hiệu tạo


thành chuỗi w.
 Ví dụ: |abca| = 4
Một số khái niệm cơ bản (3)
 Chuỗi rỗng (ký hiệu ) là chuỗi không có ký hiệu nào
 || = 0
 Chuỗi con: chuỗi v là chuỗi con của w nếu v được tạo
bởi các ký hiệu liền kề nhau trong chuỗi w.
 Ví dụ: Chuỗi 10 là chuỗi con của chuỗi 010001
 Chuỗi tiền tố: là chuỗi con bất kỳ nằm ở đầu chuỗi
 Chuỗi hậu tố: là chuỗi con bất kỳ nằm ở cuối chuỗi
 Ví dụ:
 Chuỗi abc có các tiền tố a, ab, abc
 Chuỗi 0246 có các hậu tố 6, 46, 246, 0246
Một số khái niệm cơ bản (4)
 Chuỗi nối kết (ghép): là chuỗi được tạo thành bằng
cách viết chuỗi thứ nhất sau đó là chuỗi thứ hai
(không có khoảng trống ở giữa).
 Ví dụ: Nối kết của chuỗi Long và Int là LongInt
 ε là đơn vị của phép nối kết vì:
 εw = wε = w (với mọi w)
 v0 = ε; v1 = v; v2 = vv; vi = vvi-1 (i>0)
 Chuỗi đảo ngược của chuỗi w, ký hiệu wR, là chuỗi
w
được viết theo thứ tự ngược lại.
 w = abcd → wR = dcba εR = ε
Tổng quan về ngôn ngữ
 Ngôn ngữ
 Là tập hợp các câu theo cấu trúc quy định nào đó
 Biểu thị các ý nghĩ, các sự kiện hay các khái niệm
 Bao gồm một tập các ký hiệu và các quy tắc để
vận dụng chúng
 Ví dụ:
 Ngôn ngữ tự nhiên: tiếng Việt, tiếng Anh, …
 Ngôn ngữ lập trình: C/C++, Java, Python…
Tổng quan về ngôn ngữ
 Một ngôn ngữ hình thức (formal language) L:
 một tập hợp các chuỗi được xây dựng dựa
trên
 một bảng chữ cái  nào đó,

 và được ràng buộc bởi các luật (rule) hoặc


văn phạm (grammar) đã được định nghĩa
trước.
Tổng quan về ngôn ngữ
 Một ngôn ngữ hình thức (formal language) L:
một tập hợp các chuỗi …
 VD:  = {0,1}
 L1= tập hợp những chuỗi có độ dài bằng 2 = {00,
01,10, 11}
 L2= tập hợp những chuỗi có độ dài bằng 3 =
{000, 001, 010, 011, 100, 101, 110,111}
 L3= tập hợp những chuỗi bắt đầu là 0 = {0, 00, 01,
000, 001, 010, 011, 0000,….}
Tổng quan về ngôn ngữ
 VD:  = {0,1}
 0 = tập hợp các chuỗi có độ dài là 0 = {ε}
 1 = tập hợp các chuỗi có độ dài là 1= {0, 1}

 2 = tập hợp các chuỗi có độ dài là 2

= {00, 01, 10, 11}


 3 = tập hợp các chuỗi có độ dài là 3

= {000, 001, 010, 011, 100, 101, 110,111}


 n = tập hợp các chuỗi có độ dài là n

 số lượng phần tử trong tập 2n


Tổng quan về ngôn ngữ
 * và +:
 * = 0  1  2  3… = {ε}  {0, 1} 
{00, 01, 10, 11}  {000, 001, 010, 011, 100, 101,
110,111} … = tập hợp tất cả các chuỗi con, kể cả
chuỗi rỗng ε, sinh ra từ bộ chữ cái .
 +: tập hợp tất cả các chuỗi con, ngoại trừ chuỗi rỗng ε,
sinh ra từ bộ chữ cái .
 * = + + {ε} + = * - {ε}
  = {0,1} thì:
 * = {ε, 0, 1, 00, 01, 10, 11, 000, …}
 + = {0, 1, 00, 01, 10, 11, 000, …}
 Chuỗi 010210  * vì có số 2  
Các phép toán trên ngôn ngữ (1)
 Phép phần bù (complement):

L = * - L

 Phép nối kết (concatenation):


L1L2 = {w1w2 | w1  L1 và w2  L2} trên bộ chữ cái 1
 2
 LLL…LL = Li = LLi-1 (nối kết i lần trên cùng ngôn ngữ L,
hoặc phép lũy thừa trên chuỗi)
 L0 = {ε}
Các phép toán trên ngôn ngữ (2)
 Phép bao đóng (closure): thành lập một ngôn ngữ
bằng cách nối kết các chuỗi (với số lượng bất kỳ)
của một ngôn ngữ L cho trước
 Bao đóng Kleene: L* Li
i=0
=

 Bao đóng dương (positive): L+ = Li
i=1

 Chú ý: L+ = L*L = LL*
L* = L+  {ε}
 Ví dụ: cho L = {a, ba}
 L2 = {aa, aba, baa, baba}
 L3 = {aaa, aaba, abaa, ababa, baaa,baaba, babaa, bababa}
 L* = {ε, a, ba, aa, aba, baa, baba, aaa, aaba, …}
Biểu diễn ngôn ngữ
1. Liệt kê chuỗi: L = {aa, aba, baa, baba}
2. Mô tả đặc điểm chủ yếu:
 L = {ai | i là số nguyên tố}
 L = {aibj | i>=j>=0 }
 L = {w  {a,b}* | số a trong w = số b trong w}
 Ví dụ: Cho L là một ngôn ngữ trên bộ chữ cái Σ = {a, b}
được định nghĩa như sau:
i) ε ∈ L
ii) Nếu X∈ L thì aXb ∈ L
iii) Không còn chuỗi nào khác thuộc L
Biểu diễn ngôn ngữ
1. Liệt kê chuỗi: L = {aa, aba, baa, baba}
2. Mô tả đặc điểm chủ yếu:
 L = {ai | i là số nguyên tố} = {aa, aaa, aaaaa,…}
 L = {aibj | i>=j>=0 } = {???}
 L = {w  {a,b}* | số a trong w = số b trong w}={???}
 Ví dụ: Cho L là một ngôn ngữ trên bộ chữ cái Σ = {a, b}
được định nghĩa như sau:
i) ε ∈ L
ii) Nếu X∈ L thì aXb ∈ L
iii) Không còn chuỗi nào khác thuộc L
{ε, ab, aabb, aaabbb,….}  chuỗi có số chữ a - liên tục bằng
số chứ b - liên tục
Biểu diễn ngôn ngữ
3. Biểu diễn thông qua văn phạm hoặc automata:
 Cho phép biểu diễn ngôn ngữ một cách tổng quát
 Văn phạm: cơ chế cho phép sản sinh ra mọi chuỗi
của ngôn ngữ
 Automata: cơ chế cho phép đoán nhận một chuỗi
bất
kỳ có thuộc một ngôn ngữ L hay không
Văn phạm
 Văn phạm là một tập các quy tắc về cấu tạo từ và
các quy tắc về cách thức liên kết từ lại thành câu
(theo từ điển)
 Định nghĩa: văn phạm cấu trúc G là một hệ thống
gồm 4 thành phần, ký hiệu: G(V, T, P, S)
 V (variables): tập các biến (VD: A, B, C, …)
 T (terminal): tập các ký hiệu kết thúc (V  T = Ø) (VD: a, b,
c, …, w, x, y, ...)
 P (production): tập luật sinh, dạng α→β với α, β  (V  T)*
 S (start): ký hiệu bắt đầu (S  V)
Khái niệm “dẫn xuất”
Dẫn xuất trực tiếp: nếu α→β là một luật sinh thì
     
Dẫn xuất gián tiếp: nếu các chuỗi 1, 2, ...., m  * và
1  2, 2  3, ..., m-1  m thì m có thể được
dẫn xuất từ 1
1 * m (1 dẫn xuất gián tiếp ra m)
Ngôn ngữ L sinh bởi văn phạm G:
L (G) = {w  w  T* và S * w}
Văn phạm tương đương: là 2 văn phạm sinh ra
cùng
một ngôn ngữ (G1 tương đương G2  L(G1)=L(G2) )
Phân cấp Chomsky trên văn phạm (1)
Bằng cách áp đặt một số quy tắc hạn chế trên các luật
sinh, Noam Chomsky đề nghị một hệ thống phân loại các
văn phạm dựa vào tính chất của các luật sinh.
Loại 0 – Văn phạm không hạn chế (Unrestricted
Grammar): không cần thỏa điều kiện ràng buộc nào
trên tập các luật sinh
Loại 1 – Văn phạm cảm ngữ cảnh (CSG – Context
Sensitive Grammar): nếu văn phạm G có các luật
sinh dạng α→β và |β| ≥ |α|
Loại 2 – Văn phạm phi ngữ cảnh (CFG – Context-Free
Grammar): có luật sinh dạng A→α với A là một biến
đơn và α là chuỗi các ký hiệu thuộc (V  T)*
Phân cấp Chomsky trên văn phạm (2)
Loại 3 – Văn phạm chính quy (RG – Regular
Grammar): có mọi luật sinh dạng tuyến tính phải hoặc
tuyến tính trái.
• Tuyến tính phải: A → wB hoặc A → w
• Tuyến tính trái: A → Bw hoặc A → w
Với A, B là các biến đơn, w là chuỗi ký hiệu kết
thúc (có thể là rỗng)
Nếu ký hiệu L0, L1, L2, L3 là các ngôn ngữ được sinh ra
bởi văn phạm loại 0, 1, 2, 3, ta có:
L3  L2  L1  L0
Các ví dụ về văn phạm (1)
Ví dụ 1: văn phạm G( {S, A}, {a, b}, P,
S)
P= S  aS
S
A  bA
aA
Ab

Đây là văn phạm loại 3 (dạng tuyến tính phải)


Một dẫn xuất từ S có dạng:
S  aS  aaS  aaaA  aaabA  aaabbA
 aaabbbA
 aaabbbb = a3 b4
 L(G) = a+b+ = {anbm | n,m ≥ 1}
Các ví dụ về văn phạm (2)
Ví dụ 2: văn phạm G( {S}, {a, b}, P,
S)
S  aSb
P=
S  ab

Đây là văn phạm loại 2 (dạng A→α )


Một dẫn xuất từ S có dạng:
S  aSb  aaSbb  aaaSbbb  aaaabbbb = a4b4
 L(G) = {anbn | n ≥ 1}
Các ví dụ về văn phạm (3)
Ví dụ 3: văn phạm G( {S, B, C}, {a, b, c}, P,
S)
S → aSBC
S → aBC
CB → BC
P= aB → ab
bB →
bb bC
→ bc
cC → cc
Đây là văn phạm loại 1
Một dẫn xuất từ S: S  aSBC  aaBCBC  aabCBC 
aabBCC  aabbCC  aabbcC  aabbcc=a2b2c2
 L(G) = {anbncn | n ≥ 1}
Định nghĩa ôtômát (automata)
Định nghĩa: là máy trừu tượng có cơ cấu và hoạt
động đơn giản nhưng có khả năng đoán nhận ngôn
ngữ xem một chuỗi có thuộc ngôn ngữ hay không
• Con người phải lập trình sẵn cho máy một ‘lộ
trình’
INPUT
để thực hiện

Bộ điều khiển

OUTPUT
BỘ NHỚ
Phân loại automata
Automata đơn định (Deterministic Automata):
• Mỗi bước di chuyển chỉ được xác định duy nhất
bởi cấu hình hiện tại (hàm chuyển của automata là
đơn trị)
Automata không đơn định (Non-deterministic Automata):
• Tại mỗi bước di chuyển, nó có vài khả năng để lựa
chọn (hàm chuyển của automata là đa trị)
Hết nội dung
Chương II:
NGÔN NGỮ
VÀ BIỂU DIỄN NGÔN NGỮ

You might also like