13/09/52 Rojanavasu P. 1 Introduction to Automata Theory, Languages, and Computational 305331-Discrete Mathematics อ.พรเทพ โรจนวสุ วิศวกรรมคอมพิวเตอร มหาวิทยาลัย นเรศวร พะเยา
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. 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. 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. 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. 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. 39
Applications of Finite AutomataRecognize a Set of Wordsจงสราง Automata หาคํา web และ ebay
เราไมสามารถเขียนโปรแกรมจาก NFA โดยตรงได ตองแปลงเปน DFA เสียกอน
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. 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