1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Ôtômát và ngôn ngữ hình thức: Chương 2 - ThS. Nguyễn Thị Thùy Linh

12 30 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 667,86 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Ôtômát và ngôn ngữ hình thức: Chương 2 Ngôn ngữ, văn phạm và ôtômát cung cấp cho người học những kiến thức như: Ngôn ngữ (languages); Văn phạm (grammar); Ôtômat (automata). Mời các bạn cùng tham khảo!

Trang 1

Chương 2

Ngôn ngữ, văn phạm và

ôtômát

2

Nội dung

Ba khái niệm cơ bản

Khái niệm ngôn ngữ

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

Hệ viết lại và vấn đề biểu diễn ngôn ngữ

2 Văn phạm (grammar)

Định nghĩa văn phạm

Sự phân cấp văn phạm

3 Ôtômat (automata)

3

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

 Ngôn ngữ tự nhiên:tiếng Việt,tiếng Anh, …

 Ngôn ngữ lập trình: Pascal, C/C++, …

 ĐN ngôn ngữ trong các từ điển:

 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

 Định nghĩa trên chưa đủ chính xác để nghiên cứu về ngôn

ngữ hình thức (ngôn ngữ dùng chung cho cả ngôn ngữ tự

nhiên lẫn ngôn ngữ lập trình) Chúng ta cần xây dựng một

định nghĩa toán học cho khái niệm về ngôn ngữ

4

Ký hiệu, bộ chữ cái, chuỗi

Ký hiệu (symbol):

 Ví dụ: các chữ cái a,b,c,…; các chữ số 1,2,3,…

Bộ chữ cái (alphabet hay bảng chữ cái) Σ :là một tập hợp không rỗng

các ký hiệu

 Bảng chữ cái La Mã : {I, V, X, L, C, D, M}

 Bảng chữ số nhị phân: {0, 1}

 Bảng chữ số thập phân: {0,1,2,…,9}

 Bảng chữ cái Latinh :{A, B, C, , Z, a, b, c, , z}

 Bảng chữ cái Hi Lạp: {  , β, γ, …,}

Qui ước:

Bộ chữ cái thường dùng Σ = {a,b,c} , Σ = {0,1}

Các kí hiệu u,v,w,x,y,z,t dùng gọi cho tên chuỗi

Trang 2

5

Ký hiệu, bộ chữ cái, chuỗi

Chuỗi (Xâu, string) là một dãy hữu hạn các ký hiệu xếp liên tục

nhau gồm:

 Các ký hiệu thuộc Σ

 Mỗi ký hiệu có thể xuất hiện nhiều lần

 Ví dụ: 010001 là một chuỗi trên bộ chữ cái Σ = {0, 1}

 w = abbcab là một chuỗi trên bộ chữ cái Σ = {a,b,c}

Độ dài chuỗi w, ký hiệu bởi |w|, là số những ký hiệu hợp thành w

Chẳng hạn |010001| = 6

Chuỗi rỗng, ký hiệu  (hay ), là chuỗi có độ dài 0, tức là chuỗi

không có ký hiệu nào

Chuỗi con: Chuỗi v được gọi là chuỗi con của chuỗi w nếu v được

tạo bởi một dãy các ký hiệu kề nhau trong w

Ký hiệu, bộ chữ cái, chuỗi

Chuỗi tiền tố: là một chuỗi con bất kỳ nằm ở đầu chuỗi đó

Chuỗi hậu tố:là một chuỗi con bất kỳ nằm ở cuối chuỗi đó

 Ví dụ: chuỗi abc có các tiền tố là , a, ab, abc và có các hậu tố

là , c, bc, abc

Chuỗi nối kết (ghép): ký hiệu bởi vw, là một chuỗi được tạo

bằng cách viết v rồi viết w tiếp theo sau, không có khoảng cách

 Ví dụ: ghép Long và Int là LongInt

 Nối kết với chuỗi rỗng: εw = wε = w (w) khi đó ε là đơn vị của phép nối kết

 |uv| = |u| + |v|

 |εw| = |wε| = |w|

7

Ký hiệu, bộ chữ cái, chuỗi

Đảo ngược của một chuỗi u, ký hiệu uR : là chuỗi u viết theo

thứ tự ngược lại, nghĩa là nếu:

u = a1a2…an thì uR = anan-1…a1

Đương nhiên R = 

 Phép lũy thừa: Cho w là một chuỗi

w0 = 

w1 = w

w2 = ww

w3 = ww2

wn = wwn-1

8

Khái niệm về bao đóng sao và bao đóng dương

* và + : (bao đóng sao và bao đóng dương)

● * : tập hợp tất cả các chuỗi con được sinh ra từ bộ chữ cái ,

kể cả chuỗi rỗng ε

● + : tập hợp tất cả các chuỗi con, được sinh ra từ bộ chữ cái , ngoại trừ chuỗi rỗng ε

* = + + {ε} + = * - {ε}

●  = {0,1} thì:

* = {ε, 0, 1, 00, 01, 10, 11, 000, …}

+ = {0, 1, 00, 01, 10, 11, 000, …}

Chuỗi 010210 * vì có số 2 

Rõ ràng Σ thì hữu hạn còn Σ* và Σ+ thì vô hạn đếm được

Trang 3

9

Ngôn ngữ (Languages)

• Một ngôn ngữ (hình thức) L là một tập con của Σ* hay nói cách khác

là một tập hợp các chuỗi của các ký hiệu được sinh ra từ bộ chữ cái

Σ

• Ví dụ: Cho Σ = {a, b}

Σ* = {  , a, b, aa, ab, ba, bb, aaa, aab, … }

• Ta có:

• L =  là ngôn ngữ trên bộ chữ cái Σ tùy ý

• L = {  } là ngôn ngữ trên bộ chữ cái Σ tùy ý

• L = {a, aa, aab} là một ngôn ngữ hữu hạn trên Σ = {a,b}

• L = {(ab) n | n  0 } là một ngôn ngữ vô hạn trên Σ ={a,b}

• L = {a n b n | n ≥ 0 } là một ngôn ngữ vô hạn trên Σ = {a,b}

• L = {0 n 1 n | n ≥ 0 } là một ngôn ngữ vô hạn trên Σ = {0,1}

10

Từ các ngôn ngữ có trước, ta có thể thu được các ngôn ngữ mới nhờ áp dụng các phép toán lên ngôn ngữ Các phép toán trên tập hợp đều có thể

áp dụng lên các ngôn ngữ

Phép phần bù (complement):

=* - L

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

L1L2 = {w1w2 | w1 L1 và w2 L2} trên bộ chữ cái Σ1 Σ2

L0 = {ε}  

L1 = L

L2 = LL

L3=LL2

Ln = L Ln-1

Các phép toán trên ngôn ngữ

L

11

Phép bao đóng (closure): Thành lập một ngôn ngữ bằng cách kết nối

các chuỗi (với số lượng bất kỳ) các chuỗi của một ngôn ngữ L cho

trước:

 Bao đóng sao của một ngôn ngữ L, ký hiệu L*

L* = L 0  L 1  L 2  …

Trong đó L i cho bởi định nghĩa đệ quy sau:

L 0 = {  }

L i = LL i-1 với i  1

 Bao đóng Kleene: L* = ∞ 𝐿 𝑖

𝑖=0

 Bao đóng dương (positive): L + = ∞ 𝐿 𝑖

𝑖=1 = L 1  L 2  L 3 …  L n

Chú ý: L* = L0 + L+

Các phép toán trên ngôn ngữ

Ví dụ: cho L = {a, ba} trên bộ chữ cái  = {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, …}

• L+ = { a, ba, aa, aba, baa, baba, aaa, aaba, …}

Độ ưu tiên của phép toán : (1)bao đóng, (2)ghép,

(3)hợp

12

Trang 4

13

Biểu diễn ngôn ngữ

1 Cách 1: Liệt kê chuỗi: L = {aa, aba, baa, baba}

2 Cách 2: Mô tả đặc điểm chủ yếu: L = {ai | i là số nguyên tố}

3 Cách 3: Biểu diễn thông qua văn phạm và 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ế sản sinh ra mọi chuỗi của ngôn ngữ

VD văn phạm có tập qui tắc: P={Câu đơn  Chủ ngữ Vị ngữ;

….} là cơ chế sản sinh ra mọi câu đơn của Tiếng Việt

• 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?

14

Hệ viết lại và vấn đề biểu diễn ngôn ngữ (tt)

 Ta thường biểu diễn ngôn ngữ bằng một văn phạm hay một Ôtômát Văn phạm hay Ôtômát gọi là hệ viết lại (written rule)

Ví dụ 1: Cho L là một ngôn ngữ trên bộ chữ ={a, b}, L định nghĩa như sau:

(1)  L (2) Nếu X  L, thì aXb  L

(3) Không còn chuỗi nào khác thuộc L

 Ban đầu, do (1), ta có chuỗi  L Xem  là X thì do (2) ta sẽ có chuỗi ab  L tức là chuỗi ab  L Bây giờ xem ab như là X thì do (2) ta sẽ có aabb  L

Tương tự ta có aaabbb  L, …cứ thế tiếp tục ta có các chuỗi aibi L (i≥0)

 Trên đây cho ta một quy tắc viết lại chuỗi

 Dễ nhận thấy rằng ngôn ngữ cần tìm là L = {aibi| i = 0, 1, 2, …}

15

Hệ viết lại và vấn đề biểu diễn ngôn ngữ (tt)

Ví dụ 2: Ngôn ngữ L được định nghĩa là tập tất cả các chuỗi

có thể thu về chuỗi rỗng  bằng một dãy phép thay thế các

chuỗi con ab bởi  Định nghĩa này cho ta một cách đoán

nhận một chuỗi bất kỳ có thuộc ngôn ngữ hay không

 Đoán nhận cũng là một quy tắc viết lại chuỗi Chẳng hạn sau

đây là một quá trình đoán nhận trong đó chuỗi con ab thay

thế  được gạch dưới

aabbab

abab

ab

 Như thế chuỗi aabbab là thuộc ngôn ngữ L

16

Hệ viết lại và vấn đề biểu diễn ngôn ngữ (tt)

 Định nghĩa: Một hệ viết lại là một bộ đôi W = (Σ, P) trong

đó Σ là bộ chữ cái và P là tập hợp hữu hạn các cặp chuỗi trên Σ Một phần tử (Σ, w) của P được gọi là một quy tắc viết lại hay một sản xuất và thường viết Σ  w

 ĐN suy dẫn trực tiếp: Ta nói chuỗi x trên Σ suy dẫn trực tiếp chuỗi y, và viết x  Wy hoặc viết gọn x  y khi hệ W

đã rõ, khi và chỉ khi tồn tại các chuỗi x1, Σ, x2 và w sao cho

x = x1 Σ x2, y = x1wx2, và Σ  w là một sản xuất trong P

Trang 5

17

Hệ viết lại và vấn đề biểu diễn ngôn ngữ (tt)

 ĐN suy dẫn gián tiếp : Ta nói chuỗi x suy dẫn chuỗi

y, và viết x * y,

hoặc viết gọn là x *y khi hệ W đã rõ, khi và chỉ khi

tồn tại một dãy các chuỗi trên Σ dạng x0, x1, …, xk

với k  0 sao cho x0 = x, xk = y, và xi suy dẫn trực

tiếp xi+1 đối với 0  i  k-1

w

Hệ viết lại và vấn đề biểu diễn ngôn ngữ (tt)

các sản xuất có cùng một vế trái dạng

Σ  w1

Σ  w2

Σ  wn thì các sản xuất đó thường được viết gộp vế trái là:

Σ  w1| w2| …| wn

18

19

Hệ viết lại và vấn đề biểu diễn ngôn ngữ (tt)

 Các ngôn ngữ cho ở các ví dụ 1 và ví dụ 2 ở trên có

thể biểu diễn bởi hệ viết lại như sau:

Ví dụ 1: Cho L là một ngôn ngữ trên bộ chữ {a, b}, định

nghĩa như sau:

  L

Nếu X  L, thì aXb  L

Vậy L = {a i b i | i ≥ 0}

Ls(W, {X})  {a, b} * , trong đó:

W = ({a, b, X}, {X   ,

X  aXb})

Ví dụ 2: Ngôn ngữ L được định nghĩa là tập tất cả các

chuỗi có thể thu về chuỗi rỗng  bằng một dãy phép thay

thế các chuỗi con ab bởi  Định nghĩa này cho ta một

cách đoán nhận một chuỗi có thuộc ngôn ngữ hay không?

Trường hợp này L không thể biểu diễn!

Lđ = (W, {  }), trong đó:

W = ({a, b}, {ab   })

20

Văn phạm là gì?

Các từ điển định nghĩa văn phạm một cách không chính xác

là một tập các qui tắc về cấu tạo từ và các qui tắc về cách liên kết các từ lại thành câu

Ví dụ:

Cho đoạn văn phạm tiếng Anh sau

<sentence> → <noun phrase><predicate>,

<noun phrase> → <article><noun>,

<predicate> → <verb>,

<article> → a | the,

<noun> → boy | dog,

<verb> → runs | walks,

Trang 6

21

Định nghĩa văn phạm

Định nghĩa 1: văn phạm cấu trúc G là một hệ thống gồm

4 thành phần 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)

22

Các luật sinh (production) đôi khi còn được gọi là các qui tắc (rule) hay luật viết lại (written rule)

Ví dụ 3: Cho văn phạm sau

G = (V={S, A, B}, T={a, b}, P,S), với P:

S → aAS | bBS | λ,

A aaA | b,

B bbB | a,

Văn phạm là cơ chế sinh ra mọi chuỗi con của ngôn ngữ:

Thật vậy, mọi dẫn xuất bắt đầu từ S có dạng:

S →* ab

S →* ba

23

Một số qui ước

Các kí tự chữ hoa A, B, C, D, E và S biểu thị các biến; S là kí

hiệu khởi đầu trừ Khi được phát biểu khác đi

Các kí tự chữ thường a, b, c, d, e, các kí số, các chuỗi in đậm

biểu thị các kí hiệu kết thúc (terminal)

Các kí tự chữ hoa X, Y, Z biểu thị các kí hiệu có thể hiểu là kí

hiệu kết thúc hoặc biến

Các kí tự chữ thường u, v, w, x, y, z biểu thị chuỗi các kí hiệu

kết thúc

 Các kí tự chữ thường Hi Lạp ,β,γ biểu thị chuỗi các biến và

các kí hiệu kết thúc

24

Định nghĩa ngôn ngữ L sinh bởi văn phạm G

Định nghĩa 2: Ngôn ngữ L được sinh bởi văn phạm G:

L (G) = {w  w  T * và S  * w}

Ví dụ:Tìm ngôn ngữ được sinh ra bởi văn phạm trong ví dụ 3 trên

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) )

Trang 7

Ví dụ: Hai văn phạm tương đương

V = {A,B,C}

T = {a,b}

P = {A  BC

B  aB | a

C  bC | b }

S = A là kí hiệu bắt đầu

V = {S,A,B}

T = {0,1}

P = {S  0A

A  0A | 1B |1

B  1B | 1 }

S là kí hiệu bắt đầu Tìm ngôn ngữ được sinh ra bởi văn phạm?

Có nhận xét gì về G1 và G2?

Hướng dẫn:

L1= {a n b m | n,m  1} trên  ={a,b} L2 = {0 n 1 m | n,m > 0} trên

 ={0,1}

Nhận xét : Rõ ràng L1= L2 nên G1  G2

SV tự chứng minh!

Mở rộng: Cho G1 tìm G2 sao cho G2  G1

G2 tìm được không nhất thiết phải giống như trên

Dẫn xuất câu (derivation)

Nếu w ∈ L(G) thì phải tồn tại dãy dẫn xuất (quá trình dẫn xuất):

S  w1 w2 w3 … wn w

Hệ viết lại là S  * w Dãy này được gọi là một sự dẫn xuất câu của w

Dạng câu (sentential forms)

Dãy S,w1,w2,…wn được gọi là các dạng câu của sự dẫn xuất

Câu w cũng được xem là một dạng câu đặc biệt

27

 Ví dụ: cho văn phạm

G = ({S},{a,b},P,S} với dẫn xuất P sau:

P = { S  aSb | λ }

 Một dẫn xuất từ S có dạng:

S  aSb  aaSbb  aabb

Gọi là một dãy dẫn xuất (quá trình dẫn xuất câu)

Vì vậy có thể viết S  * aabb

 Chuỗi aabb là một câu của ngôn ngữ được sinh ra

bởi G, còn aaSbb là một dạng câu

 Ngôn ngữ tương ứng với văn phạm này là:

Phân cấp văn phạm

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

(tham khảo http://vi.wikipedia.org/wiki/Noam_Chomsky )

Trang 8

29

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 văn phạm

30

Phân cấp văn phạm

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

• VPCQ Tuyến tính phải (gọi tắt VPCQ phải):

A → wB | w

• VPCQ Tuyến tính trái (gọi tắt VPCQ trái):

A → Bw | 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

31

Ví dụ 1: văn phạm G( {S, A}, {a, b}, P, S )

Các ví dụ về văn phạm

S  aS

S  aA

A  bA

A  b 

P = 

1 G là văn phạm gì?

2 Tìm ngôn ngữ L(G) được sinh bởi văn phạm Ngôn ngữ

tìm được là ngôn ngữ gì?

32

Ví dụ 2: văn phạm G( {S}, {a, b}, P, S ) Các ví dụ về văn phạm

S  aSb

S  ab 

P = 

1 G là văn phạm gì?

2 Tìm ngôn ngữ L(G) được sinh bởi văn phạm Ngôn ngữ tìm được là ngôn ngữ gì?

Trang 9

33

Ví dụ 3: văn phạm G( {S, B, C}, {a, b, c}, P, S )

Các ví dụ về văn phạm

S → aSBC

S → aBC

CB → BC

aB → ab

bB → bb

bC → bc

cC → cc 

P = 

1 G là văn phạm gì?

2 Tìm ngôn ngữ L(G) được sinh bởi văn phạm Ngôn ngữ

tìm được là ngôn ngữ gì?

34

Ví dụ 1: văn phạm G( {S, A}, {a, b}, P, S )

Đây là văn phạm chính qui (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) = {anbm | n,m ≥ 1}

Gợi ý đáp án

S  aS

S  aA

A  bA

A  b

P =

35

Ví dụ 2: văn phạm G( {S}, {a, b}, P, S )

Đây là văn phạm phi ngữ cảnh

Một dẫn xuất từ S có dạng:

S  aSb  aaSbb  aaaSbbb  aaaabbbb = a4b4

 L(G) = {anbn | n ≥ 1}

Gợi ý đáp án

S  aSb

S  ab

P =

36

Ví dụ 3: văn phạm G( {S, B, C}, {a, b, c}, P, S )

Đây là văn phạm cảm ngữ cảnh Một dẫn xuất từ S: S  aSBC  aaBCBC  aabCBC 

aabBCC  aabbCC  aabbcC  aabbcc=a2b2c2

 L(G) = {anbncn | n ≥ 1}

Gợi ý đáp án

S → aSBC

S → aBC

CB → BC

aB → ab

bB → bb

bC → bc

cC → cc

P =

Trang 10

Ôtômát (Automata)

Nội dung:

1 Định nghĩa Ôtômát

2 Cấu tạo

3 Hoạt động

4 Phân loại

5 Ứng dụng

Định nghĩa Ôtômát (Automata) Định nghĩa: là máy trừu tượng, là thiết bị có thể tự động

thực hiện công việc mà không cần sự can thiệp của con người

• Cơ cấu và hoạt động đơn giản nhưng có khả năng đoán nhận ngôn ngữ

• Con người dựa trên tập quy tắc lập trình sẵn cho máy một ‘lộ trình’ để thực hiện

• Máy trừu tượng này là mô hình điển hình của máy tính

số ngày nay

39

Cấu tạo Ôtômát

Máy này gồm các thành phần chủ yếu như sau:

Bộ điều khiển

INPUT

OUTPUT

BỘ NHỚ

40

Chức năng các bộ phận

Thiết bị đầu vào (input file): là nơi mà các chuỗi nhập (input string) được

ghi lên, và được ôtômát đọc nhưng không thay đổi được nội dung của nó

Nó được chia thành các ô (cells, squares), mỗi ô giữ được một kí hiệu

Cơ cấu nhập (input mechanism): là bộ phận có thể đọc input file từ trái

sang phải, một kí tự tại một thời điểm Nó cũng có thể dò tìm được điểm kết thúc của chuỗi nhập (eof, #)

Bộ nhớ tạm (temporary storage): là thiết bị bao gồm một số không giới

hạn các ô nhớ (cell), mỗi ô có thể giữ một kí hiệu từ một bảng chữ cái (không nhất thiết giống với bảng chữ cái ngõ nhập) Ôtômát có thể đọc và thay đổi được nội dung của các ô nhớ lưu trữ (storage cell)

Đơn vị điều khiển (control unit): mỗi ôtômát có một đơn vị điều khiển, cái

mà có thể ở trong một trạng thái bất kỳ trong một số hữu hạn các trạng

thái nội, và có thể chuyển đổi trạng thái trong một kiểu được định nghĩa

sẵn nào đó

Ngày đăng: 13/07/2021, 11:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm