43
13/09/52 Rojanavasu P. 1 Introduction to Automata Theory, Languages, and Computational 305331-Discrete Mathematics .พรเทพ โรจนวสุ วิศวกรรมคอมพิวเตอร มหาวิทยาลัย นเรศวร พะเยา

Introduction to Automata Theory, Languages, and … of computational I... · 13/09/52 Rojanavasu P. 1 Introduction to Automata Theory, Languages, and Computational 305331-Discrete

Embed Size (px)

Citation preview

13/09/52 Rojanavasu P. 1

Introduction to Automata Theory, Languages, and Computational

305331-Discrete Mathematicsอ.พรเทพ โรจนวสุ

วิศวกรรมคอมพวิเตอรมหาวิทยาลัย นเรศวร พะเยา

13/09/52 Rojanavasu P. 2

Why we study?Finite automata เปนโมเดลที่สามารถใชไดทั้งกับ Hardware และ Software

ออกแบบตรวจสอบพฤติกรรมของวงจร Digital – Moore and Mealy Machine

Lexical analyzer เปนสวนประกอบสําคัญของ Parser ใน Compiler ที่คอยทําหนาที่แปลงสายของอักขระ (Sequence of character) เปนสวนประกอบตาง ๆ

sum=3+2;

13/09/52 Rojanavasu P. 3

Software for scanning large body of textTest if a string match some pattern., Scan for virus signatures., Process natural language., Search for information., Search and replace string., Filter text. (spam), Validate data-entry fields. (date, email, URL, credit card), Hand writing recognition. .. etc.

Software for verifying systemcommunication protocol secure exchange of information …etc.

Automata and ComplexityCan a computer solve any problem, given enough time and disk-space?

13/09/52 Rojanavasu P. 4

String and Languageตัวอักษร (Alphabet) หนวยยอยที่สุดของภาษา เซตของตัวอักษรแทนดวย ∑ เชน ∑={a,e,i,o,u} สตริง (String) เกิดจากการนําตัวอักษรหลาย ๆ ตัวมาเรียงตอกัน เชน aeiou คือ สตริงที่เกิดจากเซตของตัวอักษร ∑ สตริง w สามารถหาแทนความยาวไดเปน |w| สตริงวาง (Empty string - ε) สตริงที่ไมมีตัวอกัษรใด ๆ ประกอบอยูเลย |ε|=0εw = wε = wสตริงยอย (Substring) สวนใด ๆ ของตัวอักษรที่อยูติดกันในสตริงw = aeiouเซตของสตริงยอยของ w คือ {ε, a, e, i, o, u, ae, ei, … eiou, aeiou}

13/09/52 Rojanavasu P. 5

สตริงยอยสวนหนา (Prefix) สตริงยอยสวนหลัง (Suffix)If w = xv for some x, then v is a suffix of w.If w = vy for some y, then v is a prefix of w.

w=abbbaab(prefix), bba(suffix)- ε(prefix), abbba(suffix) - abbba(prefix), ε(suffix)

การเชื่อมตอสตริง (Concatenation) คอืการนําเอาสตริงสองตัวมาเชื่อมกันx=aei, y=ou, z=xy=aeiou

13/09/52 Rojanavasu P. 6

การทําซ้ําสตริง (Repetition) คือการนําเอาสตริงมาตอกันหลาย ๆ ครั้ง เชนถา w เปนสตริงwn คือการทําซ้ําของสตริง w ทั้งหมด n ครั้ง โดยที่ w0=εถา w= abc ดั้งนั้น w1=abc, w2=abcabc, w3=abcabcabcหากเซตตัวอักษรแทนดวย ∑ เราใช ∑* เซตของตัวอักษรที่เกิดจากการนําสมาชิกภายใน ∑ มาตอกันตั้งแตศนูยครั้งเชน∑ = {a, b}∑* = ∑0 ∪ ∑1 ∪ ∑2 ∪ ∑3 ∪ …

= {ε, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, aaaa, …}

∑ 1 ∑2 ∑ 3

13/09/52 Rojanavasu P. 7

∑+ - เซตของตัวอักษรที่เกิดจากการนําสมาชิกภายใน ∑ มาตอกันตั้งแตหนึ่งครั้ง ∑ = {a, b}∑+ = ∑1 ∪ ∑2 ∪ ∑3 ∪ …

= {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb, aaaa,….}∑+= ∑*- ε

การยอนกลับ (Reverse - wR) คอืการสรางสตริงใหมโดยการยอนกลับตัวอักษร w = abcdef wR=fedcba

13/09/52 Rojanavasu P. 8

ภาษา (Language) คือ เซตของสตริงที่เกิดจากการประกอบกันของเซตตัวอักษร (∑ ) โดยมีคุณสมบัติตามที่กําหนด เชน

L1 ={w|w∈{0,1}*, w เปนสตริงที่มีจํานวนของ 0 และ 1 เทากัน}กําหนดให ∑ = {0, 1}

L2 ={w|w∈ ∑* : w = wR}L3 ={w|w∈ ∑* : w มี 0 เปนจํานวนคู}L4 ={w|w∈ ∑* : w เริ่มตนดวย 0 นอกนั้นเปน 1 }L3L4 = {w : w มีศูนยเปนจํานวนคี}่ – เราสามารถนําภาษามาเชื่อมตอ

(Concatenation) กันได

13/09/52 Rojanavasu P. 9

ในบางครั้งเราแทน w ดวย นิพจน (Expression - well-formed combination of math symbol){0n1n| n ≥1} → {01,0011,000111,….}{0i1j0k| i,j,k ≥1} → {010,00100,000110,….}(0+1)สรุปรูปแบบการแทนภาษา

L1 ={w∈{0,1}*, w เปนสตริงที่มีจํานวนของ 0 และ 1 เทากัน}L2= {0n1n| n ≥1}

13/09/52 Rojanavasu P. 10

Automata Theoryประวัติความเปนมา

ป 1930 (กอนจะมีคอมพิวเตอร) Alan turning ไดศึกษาเกี่ยวกับ abstract machine ซึ่งเปนโมเดลพืน้ฐานของคอมพิวเตอรในยุคปจจุบัน จุดประสงคคือเพื่อบงบอกวาสิ่งใดที่จักรกล (machine) สามารถทําไดและทําไมได ทฤษฎีของเขาเรียกวา Turning Machineซึ่งปจจุบันไมไดเปนเพยีง abstract model อีกตอไปป 1940-1950 ถือกําเนิด Finite automata จําลองฟงกชั่นของสมอง ถูกนําไปใชกันอยางแพรหลายในหลายวงการปลาย ๆ ป 1950 Chomsky ศึกษาเรื่อง Grammars พบวามีความเกี่ยวเนื่องกับ automata เปนอยางยิ่ง ซึ่งในปจจุบัน automata ถือเปนพืน้ฐานของการสราง software components และการสราง compilersป 1969 Cook ไดตอยอดงานวิจยัของ Turning ในเรื่อง “What could and what could not be computed”

13/09/52 Rojanavasu P. 11

องคประกอบพื้นฐานในการคํานวณทางคอมพวิเตอร

CPU

Temporary memory

Input memory

Output memory

Program Memory

13/09/52 Rojanavasu P. 12

Automataใชเรียกแทนแบบจําลองการทํางานของคอมพิวเตอร มีสวนประกอบ 3 สวน

อินพุตเทป (Input Tape) - เก็บขอมูลและโปรแกรมหนวยประมวลผล (Processor) – Finite Automataที่เก็บขอมูล (Storage) - เก็บผลระหวางการคํานวณ

a b a

Yes/No

Input

Finite Automata Output

x y z Storage

13/09/52 Rojanavasu P. 13

Finite Automataประกอบไปดวย เซตของสถานะ (States) และ สวนที่ใชสําหรับควบคุมการเปลี่ยนสถานะจากอินพุตที่รับเขามาFinite Automata – มีเฉพาะสวนของอินพุต เอาทพุต และหนวยประมวลผล

ทําใหสถานะ (State) ถูกจํากัดและความสามารถของ FA ก็ถูกจํากัดดวยชนิดของ Finite Automata

Deterministic ระบบเปลีย่นไปยังสถานะอื่น ๆ ไดเพียงแคหนึ่งสถานะสําหรับอินพุตเดียว Non-deterministic ระบบสามารถเปลี่ยนไปยังสถานะอืน่ ๆ ไดมากกวาหนึ่งสถานะสําหรับอินพุตเดียว

13/09/52 Rojanavasu P. 14

นิยามFinite Automata มีองคประกอบ 5 สิ่ง

< Q , ∑ , δ, q0 ,F >Q – เซตของสถานะ (State)ของออโตมาตา เปนเซตจํากัด∑ - เซตของตัวอักษร (Alphabet) เปนเซตจํากัดδ - เซตของ Transition function ซึ่งมีความสัมพันธคือ Q×∑→Qq0 – สถานะเริ่มตนของ FA โดยที่ q0 ∈Q

F – สถานะสดุทาย final state โดยที่ F ⊆Q ถือวาเปนสถานะที่ยอมรับอินพุตที่เขามา

13/09/52 Rojanavasu P. 15

การทํางานของออโตมาตา

ลักษณะการทํางานจะอานอินพุตเขามาทีละตัวจากซายไปขวาเพื่อตรวจสอบอินพุตที่เขามาถาอินพตุถูกยอมรับ FA จะเปลี่ยนสถานะเขาสู Final state เพื่อตอบใช แตถาอินพุตไมถูกยอมรับสถานะสิ้นสุดจะไมใช Final state

a b a

Yes/No

input string = “aba”

Finite AutomataOutput

δ(q0,a) = q1

current state current input

next state

13/09/52 Rojanavasu P. 16

Deterministic Finite Automata - DFAตัวอยาง FA - M1 ประกอบดวย

M1=({q0,q1},{0,1}, δ, q0, {q1}) ↔ < Q , ∑ , δ, q0 ,F >

โดยที่ δ คือ δ(q0,0)=q0 δ(q0,1)=q1 δ(q1,0)=q1 δ(q1,1)=q1

q0 q1

01 0,1

q1q1q1

q1q0q0

10δ

สงัเกตวา Transition function แตละอันจะใหคาเอาทพุตเพียงสถานะเดียวเทานัน้เชน δ(q0,0)=q0เราเรียก FA แบบนี้วา Deterministic Finite Automata - DFA

Transition TableTransition Diagram

Final State

Transition function

13/09/52 Rojanavasu P. 17

จงตรวจสอบวา Machine M1 ยอมรับ สตริง 00100 หรือไม

q0 q1

01 0,1

(q0,00100) (q0,0100)(q0,100)(q1,00)(q1,0)(q1,ε)

(q0,00100) (q1,ε) และ q1 ∩ F ≠∅ ดังนั้น M1 จึงยอมรับสตริง 00100 *

13/09/52 Rojanavasu P. 18

หรืออธิบายในแบบ Recursion ของสตริง δ*: Q×∑*→Q , δ*(q,ε)=q เปนจุด termination , δ*(q, wσ) = δ( δ*(q,w), σ) โดยที่สตริงถูกแบงยอยเปน w และ σ , σ จะเปนอักขระที่ถูกสงเขาไปยัง Transition Function

จากนั้นก็จะแบงยอยสตริง w ตอไปเรื่อย ๆ จนกระทั้งถึง ε

q0 q1

01 0,1

δ*(q0,010) = δ(δ*(q0,01),0)= δ(δ(δ*(q0,0),1),0)= δ(δ(δ(δ*(q0,ε),0),1),0)= δ(δ(δ(q0,0),1),0)= δ(δ(q0,1),0)= δ(q1,0)= q1

Decomposition

Execution

13/09/52 Rojanavasu P. 19

13/09/52 Rojanavasu P. 20

DFA มี q2 เปนfinal state สังเกตวา DFA จะยอมรับ (accept) สตริงที่ลงทายดวย 1 เทานั้น

ดังนัน้ถามีสตริง 1, 01, 01001, 0110100111 สตริงจะถูก accept หรือกลาววา DFA ยอมรับสตริง

ดังนัน้ถา L(M) = {w | w ลงทายดวย 1} L จะถูกยอมรับโดย DFA ขางตน

13/09/52 Rojanavasu P. 21

เราเขียนแทนภาษา L ที่ถูกยอมรับโดย Finite Automata M วา L(M)ภาษา L จะถูกเรียกวา Regular language ก็ตอเมื่อมี DFA ที่ยอมรับภาษา L

13/09/52 Rojanavasu P. 22

13/09/52 Rojanavasu P. 23

13/09/52 Rojanavasu P. 24

ยอมรับเฉพาะขึน้ตนดวย b ตรงกลางมี a เพียงตัวเดียว และลงทายดวย b

a,b

q0 q1 q2

q3

b ba

a a

b

a

q0

b

Dead State

13/09/52 Rojanavasu P. 25

Exercise1. จงสราง DFA ที่ยอมรับสตริงทั้งหมดจาก {0,1}* โดยที่มีเลข 0 เปนจํานวนคู2. จงสราง DFA ที่ยอมรับสตริงทั้งหมดจาก {a,b}* โดยจํานวนของ b จะสามารถหาร 3

ลงตัว3. กําหนด FA มาให จงหาภาษาที่ถูกรองรับโดย automata M

2

q3q00

0 0,1q1 q20

111

q0 q1 q2

1

1

10 0

01

13/09/52 Rojanavasu P. 26

Non-Deterministic Finite Automata - NFAประกอบไปดวย 5 องคประกอบ < Q , ∑ , δ, q0 ,F > เหมือน DFA ยกเวน δ นิยามโดย δ : Q×(∑∪{ε}) หรือ พาวเวอรเซตของ Q (2Q)ความตางระหวาง δ ของ DFA และ NFA

NFA สามารถเปลี่ยนสถานะไดโดยไมจําเปนตองมีอินพุทใด ๆ เชน q1 x {ε}→q2

NFA สามารถเปลี่ยนไปยังสถานะอื่น ๆ ไดมากกวาหนึ่งสถานะสําหรับอินพุตเดียว เชน q1× 1 →{q2,q3}

NFA ไมจําเปนตองกําหนด δ ใหครบทุกอินพุตของเซต∑

q1 q2ε

q1

q21

q31

ยกเวนไวยงัไมกลาวถึง

13/09/52 Rojanavasu P. 27

จงเขียน NFA ที่ยอมรับสตริง 0,1 ทุกสตริงที่ลงทายดวย 01

q0 q1 q20 1

10

0

1DFA

13/09/52 Rojanavasu P. 29

เทคนิคสราง NFA สราง State และ Transition เฉพาะที่ Accept

13/09/52 Rojanavasu P. 30

จงหาภาษาที่ยอมรับโดย NFA ตอไปนี้

q01,0q1 q2

11,0

1,0

L(M)={1n(1+0):n≥0}

q0 q1

q2

1

10

0

L(M)={w|w∈{0,1}* และ w ไมมีศูนยติดกัน}

+ คือ หรือ

13/09/52 Rojanavasu P. 31

จงหาภาษาที่รองรับ NFA ตอไปนี้1

13/09/52 Rojanavasu P. 32

a+b คอื a หรือ b

13/09/52 Rojanavasu P. 33

Equivalence of NFA and DFAนําเอาเซตของภาษาที่ไดจาก FA ทั้งสองมาเปรียบเทียบกัน ถาเซตภาษาของทั้งคูเหมือนกันจะถือวา FA ทั้งสองมีความเทาเทียมกันเราสามารถสราง DFA ที่มีความเทาเทียมกับ NFA ไดเสมอ

L(M1) = {10}*

L(M2) = {10}*

q0 q110

q0 q1 q21 10

0,1

0

13/09/52 Rojanavasu P. 34

การแปลง NFA เปน DFAให NFA N = <QN, ∑, δN, q0, FN> เราจะสราง DFA D = <QD, ∑, δD, {q0}, FD> โดยให L(D) = L(N) สามารถสรางโดยมีขั้นตอนไดดังนี้

กําหนดให QD เปนเซตของ subset ทั้งหมดของ QN ดังนัน้ถา QN มี n สถานะ QD จะมี 2n สถานะในเบื้องตน แตตอนสิ้นสดุกระบวนการจะไมไดใชทุกสถานะFD คือ subset S ของ QN โดยที่ S ∩FN≠∅สําหรับ subset S ของ QN

เลือกเฉพาะ state ที่ active โดยอินพุตใด ๆ ตั้งแต start state เทานั้น

∪Sinp

ND apaS ),(),( δδ =

13/09/52 Rojanavasu P. 35

13/09/52 Rojanavasu P. 36

13/09/52 Rojanavasu P. 37

NDA = NFA

13/09/52 Rojanavasu P. 38

13/09/52 Rojanavasu P. 39

Applications of Finite AutomataRecognize a Set of Wordsจงสราง Automata หาคํา web และ ebay

เราไมสามารถเขียนโปรแกรมจาก NFA โดยตรงได ตองแปลงเปน DFA เสียกอน

13/09/52 Rojanavasu P. 40

∑={a, b, c, .., z}

13/09/52 Rojanavasu P. 41

ทดสอบเขียนโปรแกรมสราง DFA เพื่อรับสตริง 0,1 โดยที่มี 0 เปนจํานวนคี่

q0 q1 q2

10 0

01

1

q0q1q2

q1q2q1

q0q1q0

10δ

01212101010

2-dimensional array

13/09/52 Rojanavasu P. 42

01212101010

13/09/52 Rojanavasu P. 43

Regular expressionนิพจน Regular

r1 = 0(0+1)*1 = 01, 001, 011, 0001, 0011, … 0xxxxx1 ดังนั้น r1 เปนภาษาที่ขึ้นตนดวย 0 และลงทายดวย 1 => เครื่องหมาย+ แทน หรือr2 = a*.b = (a)* ×b = {ε, a, aa, aaa, ….}×{b} = {b, ab, aab, aaab,….} => เครื่องหมาย × แทน ผลคูณคารทิเซียน

ตัวอยางr= (a+b)*.(a+bb)

L(r) = {a,b}* ×{a,bb}={ε,a,b,aa,ab,ba,bb,….} ×{a,bb} = {a,bb,aa,abb,ba,bbb,….}r=(aa)*.(bb)*.b

L(r) = {aa}* ×{bb}* ×b = {ε,aa,aaaa,aaaaaa,..} ×{ε,bb,bbbb,bbbbbb,..} ×{b}={b,bbb,aab,aabbb,….} = {a2nb2mb: n,m≥0}

13/09/52 Rojanavasu P. 44

จงพิสูจนใหเห็นวาภาษา L เปนภาษา Regular โดยที่L = {w|w∈{0,1}* โดยที่ w ลงทายดวย 001 เสมอ}แปลงเปนนิพจนได (0+1)*001 การพิสูจนคือการสราง FA ขึน้มารองรับภาษานี้

โจทย ยอนกลับไปแปลงโจทยกอนหนาอยูในรูปแบบนิพจนถาเขียนภาษาอยูในรูปแบบนิพจน Regular ไดแสดงวามี FA รองรับ

q0 q1 q2

0,1 1q3

00