Top Banner
1 Finite Automata นําเสนอโดย ดร.สุธี สุดประเสริฐ Source: Chapter 1.1 - Introduction to the Theory of Computation by Michael Sipser
50
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Finite automata

1

Finite Automata

นําเสนอโดยดร.สุธี สุดประเสรฐิ

Source: Chapter 1.1 - Introduction to the Theory of Computation by Michael Sipser

Page 2: Finite automata

2

คอมพิวเตอรคืออะไร?

� ทฤษฎีการคํานวณเริ่มตนจากปญหาที่วา: คอมพิวเตอรคอือะไร?� ดูเหมือนเปนปญหาไรสาระหรือเปลา?

� แตคอมพิวเตอรจริงๆมีความซับซอนมาก� ดังนั้นเราจะศึกษาคอมพิวเตอรในอุดมคติแทนซึ่งเรียกวา

แบบจําลองทางการคํานวณ (computational model).

� ในที่นีเ้ราจะเริ่มศึกษาแบบจําลองที่เรียบงายที่สุดกอนซึ่งเรียกวา finite state machine หรือ finite automaton.

Page 3: Finite automata

3

Finite Automata

� finite automata เปนแบบจําลองที่ดีสําหรับคอมพิวเตอรที่มีหนวยความจําที่จํากัด� แลวคอมพิวเตอรที่มีหนวยความจํานอยๆ สามารถทํา

อะไรไดบาง?

� ตัวควบคุมอุปกรณไฟฟา เชน ประตูไฟฟาที่สามารถเปด-ปด อัตโนมัติเองได เปนตัวอยางของคอมพิวเตอรที่มีหนวยความจําขนาดเล็ก

Page 4: Finite automata

4

ตัวอยาง (1)

� มี 2 สถานะคือ� OPEN และ CLOSED (เปดประตู และ ปดประตู)

� มีอินพตุ 4 แบบ� FRONT, REAR, BOTH, และ NEITHER

� คนอยูดานหนา คนอยูดานหลัง คนอยูทั้งดานหนาและหลัง และ ไมมีคนอยูทั้งหนาและหลัง

frontpad

rearpad

door����������� �

Page 5: Finite automata

5

ตัวอยาง (2)

CLOSED OPEN

FRONT

NETHER

REARBOTH

NETHER

FRONTREARBOTH

CLOSEDCLOSEDOPENCLOSEDCLOSED

OPENOPENOPENCLOSEDOPEN

BOTHREARFRONTNETHER

สัญญาณอินพุต

สถานะปจจุบัน

Page 6: Finite automata

6

ตัวอยาง (3)

� อุปกรณไฟฟาที่มีตัวควบคุมที่มีความซับซอนมากขึ้น (ใชหนวยความจํามากขึ้น)� ลฟิท� เครื่องซักผา� โทรศัพทมือถือ� นาฬิกา� เครื่องคดิเลข

Page 7: Finite automata

7

Finite Automata

� กอนที่เราจะอธิบาย finite automata โดยใชคณิตศาสตร เราเริ่มศึกษาภาพรวมของ finite automata ในรูปแบบทั่วไปที่ไมไดเจาะจงสําหรับการประยุกตใชในงานใดงานหนึ่งกอน

Page 8: Finite automata

8

Finite Automata

� The start state is q1

� The accept state is q2

� The arrows going from one state to another are called transitions

� The output is either acceptor reject.

q1 q3q2

0

1

1

0,1

0

A finite automaton called M1 that has three states

Page 9: Finite automata

9

Finite Automata

� เมื่ออินพุตคือ “1101”,1. Start in state q1.2. Read 1, follow transition from q1 to q2.3. Read 1, follow transition from q2 to q2. 4. Read 0, follow transition from q2 to q3. 5. Read 1, follow transition from q3 to q2. 6. Accept because M1 is in an accept state q2 at the end of the input.

q1 q3q2

0

1

1

0,1

0

Page 10: Finite automata

10

Finite Automata

� ภาษาที่ประกอบดวย strings ที่ M1 ยอมรับ อธิบายไดวาอยางไร?� 1,01,11, and 0101010101.� 100, 0100, 110000, and 0101000000.

q1 q3q2

0

1

1

0,1

0

Page 11: Finite automata

11

Formal Definition

� แมวาการใช state diagrams จะงายในการทําความเขาใจ, เราก็ยังตองการนิยามอยางเปนทางการ (formal definition) เพราะ� ประการแรก formal definition มีความชัดเจน

� จะทําใหเราเห็นชัดเจนวาอะไรที่ finite automata สามารถทําไดหรือไมสามารถทําได

� ประการที่สอง formal definition ทําใหเราสามารถใชสัญลักษณ (notation) แทนได.� การใชสัญลักษณทําใหเราสามารถคิดและแสดงความคิดได

ชัดเจนขึ้น

Page 12: Finite automata

12

Formal Definition

� formal definition สําหรับ finite automaton

สามารถกําหนดไดโดยใชวัตถุ 5 ตัวตอไปนี้

� set of state� input alphabet� rules for moving� start state� accept states

Page 13: Finite automata

13

Formal Definition

A finite automaton is a 5-tuple (Q, Σ, δ, q0, F), where

1. Q is a finite set called the states,

2. Σ is a finite set called the alphabet, 3. δ : Q x Σ → Q is the transition function,4. q0 ∈ Q is the start state, and 5. F ⊆ Q is the set of accept states.

Page 14: Finite automata

14

Formal Definition

� Q = { q1, q2, q3 }

� Σ = { 0, 1 }� δ is described as

q1 q3q2

0

1

1

0,1

0

We can describe M1 formally by writing M1 = (Q, Σ, δ, q1, F), where

� q1 is the start state, and� F = { q2 }.

q2q2q3

q2q3q2

q2q1q1

10

δ(q1,0) = q1δ(q2,0) = q3δ(q3,0) = q2

δ(q1,1) = q2δ(q2,1) = q2δ(q3,1) = q2

Page 15: Finite automata

15

Formal Definition

� ถา A คือเซตของสตริงทั้งหมดที่เครื่องจักร M ยอมรับ, เราพูดไดวา A คือภาษาของเครื่องจักร M และเขียนไดวา L(M) = A

� เราพูดวา M recognizes A หรือ M accepts A.� หนึ่งเครื่องจักรอาจจะยอมรับหลายสตริง, แต

สามารถจดจําไดแคภาษาเดียวเทานั้น� สําหรับเครื่องจักรที่ไมยอมรับสตริงใดเลย, เราบอกวา

เครื่องจักรนัน้จดจําภาษาวาง (empty language ∅)

Page 16: Finite automata

16

Extended Transition Function

δ : Q x Σ → Q is the transition functionδ(q, a) = “the state to which the machine M

goes if it is in state q and receives input symbol a”

δ*: Q x Σ* → Q is the extended transition functionδ*(q, w) = “the state in which M ends up, if it begin in state q, and receives the string w of several symbols”

Page 17: Finite automata

17

Extended Transition Function

ตัวอยาง:

q0 q6……..a b a

w = ab…a

δ*(q0,w) = q6

Page 18: Finite automata

18

Extended Transition Function

Definition: Let M = (Q, Σ, δ, q0, F) be a DFA. Define the function

δ*: Q x Σ* → Q

recursively as follows.

When q ∈ Q, w ∈ Σ*, and a ∈ Σ,1. δ*(q, ε) = q2. δ*(q, wa) = δ(δ*(q, w), a)

Page 19: Finite automata

19

Extended Transition Function

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

q1 q3q2

0

1

1

0,1

0

Page 20: Finite automata

20

Formal Definition of Computation

� ตอนนี้เราทราบถึงวิธีการคํานวณอยางคราวๆของ

FA ตอไปจะเปนการนิยามอยางเปนทางการของคํานวณของ FA

Page 21: Finite automata

21

Formal Definition of Computation

� Let M = (Q, Σ, δ, q0, F) be a finite automaton� Let w = w1w2…wn be a string where each wi is a

member of the alphabet Σ.� Then M accepts w if δ*(q0, w) ∈ F.� We say that M recognizes language A if

A = {w I M accepts w }. � A language is called a regular language if some

finite automaton recognizes it.

Page 22: Finite automata

22

การออกแบบ Finite Automata

� การออกแบบ automata เหมือนงานศิลปะซึ่งตองอาศัยความคิดสรางสรรค

� ซึ่งไมมีสูตรสําเร็จตายตัว �

� อยางไรก็ตามยังมีแนวทางที่เปนประโยชน ในการนําไปใชเพื่อออกแบบ automata ชนิดตางๆ ได ☺

� หลักการคือใหคิดวาตัวเองเปน automata ที่เราตองการออกแบบ หรือ เรียกวา� "reader as automaton" method

Page 23: Finite automata

23

ตัวอยาง (1)

� สมมุติให alphabet คือ {0, 1} ใหสราง FA ที่จดจําภาษาที่ประกอบดวยสตริงทั้งหมดที่มี 1 เปนเลขคี่

� เริ่มตน เราตองพิจารณาใหรูวา อะไรคือสิ่งที่เราจําเปนจะตองจําในขณะที่เรากําลังอานขอมูล� ทําไมเราจําขอมูลที่ตองการทั้งหมดเลย?

� ในกรณีนี้ สิ่งที่เราจําเปนตองจําคือจํานวนของ 1 วาเปนจํานวนคูหรือจํานวนคี่

Page 24: Finite automata

24

Example (2)

� จากนั้นจึงสรางสถานะที่เปนไปไดทั้งหมด

qeven qodd

Page 25: Finite automata

25

Example (3)

� ตอไปจึงกําหนดการเปลี่ยนสถานะที่เปนไปไดทั้งหมด ซึ่งเกิดการอานอินพุตสตริง

� ในกรณีตัวอยาง สถานะจะถูกเปลี่ยนก็ตอเมื่ออินพุตเปน 1 และจะอยูกับที่เมื่ออินพุตเปน 0

Page 26: Finite automata

26

Example (3)

� เราจะเขียนการเปลี่ยนสถานะไดดังนี้

qeven qodd

1

1

00

Page 27: Finite automata

27

Example (4)

� ตอไปจึงกําหนดสถานะเริ่มตน ซึ่งก็คือสถานะที่ยังไมมีอินพุตเขามาหรือสตริงขนาด 0 ตัว (สตริงวาง

ε)� จากนั้นจึงกําหนดสถานะยอมรับ ใหสอดคลองกับ

รูปแบบที่เราตองการจะยอมรับจากอินพุตสตริง

Page 28: Finite automata

28

Example (5)

� เพิ่มสถานะเริ่มตนและสถานะยอมรับ

qeven

1

1

00

qodd

Page 29: Finite automata

29

The Regular Operations

Definition� Let A and B be languages. We define the regular

operations union, concatenation, and star as follows.

� Union: A ∪ B = {x | x ∈ A or x ∈ B}� Concatenation: A○B = {xy | x ∈ A and y ∈ B}� Star: A* = {x1x2…xk | k ≥ 0 and each xi ∈ A}.

Page 30: Finite automata

30

ตัวอยาง

� ใหอักษร (alphabet) Σ เปนตัวหนังสือภาษาอังกฤษมาตราฐาน 26 ตัว {a, b,..., z}.

� ถา A = {good, bad} และ B = {boy, girl}, thenA ∪ B = {good, bad, boy, girl}

A ○ B = {goodboy, goodgirl, badboy, badgirl}A* = {ε, good, bad, goodgood, goodbad, badgood, badbad, goodgoodgood, goodgoodbad, goodbadgood, goodbadbad, ...}

Page 31: Finite automata

31

The Regular Operations

� กลุมของวัตถุใดจะมี สถานะปด (closed) ภายใตตัวดําเนินหนึ่ง ถาตัวดําเนินนั้นถูกใชกับสมาชิกของกลุมของวัตถุนั้นแลวผลลัพธที่ไดยังคงอยูในกลุมของวัตถุเติม

� กลุมของ regular languages มีสถานะปดภายใต regular operations ทั้งสามตัว

� ตอไปจะเปนการพิสูจน

Page 32: Finite automata

32

The Regular Operations� Theorem

� กลุมของ regular languages มีสถานะปดภายใตตัวดําเนนิการ union

� ถา A1 และ A2 คือ regular languages, ดงันัน้ A1 ∪ A2 ก็เปน regular languages ดวย

� Proof Idea:� A1 และ A2 เปน regular ดังนัน้

� มี finite automaton M1 ที่จดจํา A1 ได และ� มี finite automaton M2 ที่จดจํา A2 ได

� เราจะแสดงวา finite automaton M ซึ่งจดจํา A1 ∪ A2 และ M ถูกสรางจาก M1 และ M2

Page 33: Finite automata

33

The Regular Operations

� Proof Idea (ตอ):� M ตองยอมรับสตริงแบบเดยีวกับที่ M1 หรือ M2 ยอมรับ� M จะทํางาน โดยการจาํลองทํางานของ M1 และ M2 โดยที่

จะยอมรับสตริงใด ก็ตอเมื่อการจําลองนัน้ยอมรับสตริงนั้น� เราจําเปนตองจําคูของสถานะทั้งหมดระหวาง M1 และ M2

(M1 x M2)

� ดังนัน้การเปลีย่นสถานะของ M จะเปนการเปลีย่นระหวางคู ซึ่งเปนการปรับเปลีย่นสถานะของ M1 และ M2

� สถานะยอมรับของ M คือคูที่ประกอบดวยสถานะยอมรับของ

M1 หรือ M2

ดูรายละเอียดวิธีการพิสูจนไดที่ หนา 46: Introduction to the Theory of Computation

Page 34: Finite automata

34

ตัวอยาง

q0 q1

0 1

1

0

q0 q1

1 0

0

1

M1M2

q00

q01

q10

q11

0

1

0

1 0

1

1

0q1q0q1

q1q0q0

10

q0q1q1

q0q1q0

10M1 ∪ M2

Page 35: Finite automata

35

The Regular Operations

� Theorem� กลุมของ regular languages มีสถานะปดภายใตตัว

ดําเนนิการ concatenation

� ถา A1 และ A2 เปน regular languages ดงันัน้ A1 ○ A2

ก็เปน regular ดวย

� Proof Idea:� ลองใชแนวคิดแบบเดยีวกับการพสิูจนของ union� เริ่มจาก finite automata M1 และ M2 ซึ่งจดจาํ regular

languages A1 และ A2.

Page 36: Finite automata

36

The Regular Operations

� Proof Idea: (cont.)� ในกรณีนี้ M จะยอมรับ ถาเราสามารถแยกอินพตุสตริง

เปน 2 สวนโดยที่ให M1 ยอมรับสวนแรกและให M2

ยอมรับในสวนที่สอง� แตปญหาคอืเราไมรูวาจะแบงอินพตุที่ตรงไหน �

� เพื่อแกปญหานี้เราจะศกึษาวิธีการใหมที่เรียกวา

nondeterminism.

Page 37: Finite automata

37

การลดจํานวนสถานะใน FA

� FA ใดๆจะจดจําภาษาไดเพียงภาษาเดียว แตหนึ่งภาษาสามารถถูกจดจําไดจากหลาย FA

q0

q4

q3

q2

q1

q5

q2q1q0

0

0

1

1

0,1

1 1

0,1 0

0,1

0 0,1

1M1

M2

M1 และ M2 จดจําภาษาเดียวกัน

Page 38: Finite automata

38

การลดจํานวนสถานะใน FA

นิยาม:

สองสถานะ p และ q ของ FA ตัวหนึ่งจะถูกเรียกวา

indistinguishableถา

δ*(p, w) ∈ F implies δ*(q, w) ∈ F

และδ*(p, w) ∉ F implies δ*(q, w) ∉ F

for all w ∈ Σ*.

Page 39: Finite automata

39

การลดจํานวนสถานะใน FA

ในทางกลบักัน ถามสีตริง w ∈ Σ* ที่ δ*(p, w) ∈ F และ δ*(q, w) ∉ F,

หรือกลับกนั เชนนี้เราจะเรียกสถานะ p และ q วา

distinguishable โดยสตริง w

q

pu

v

w

w δ*(p, w) ∈ F implies δ*(q, w) ∈ F

ตัวอยางของ indistinguishable

Page 40: Finite automata

40

การลดจํานวนสถานะใน FA

Indistinguishability มีคุณสมบตัิของ equivalence

relations:1. p R p

2. if p R q then q R p3. if p R q then q R r then p R r

Page 41: Finite automata

41

การลดจํานวนสถานะใน FA

วิธีการหนึ่งที่ใชสําหรับลดจํานวนสถานะของ FA คือวิธีการที่ใชหลักการในการหาและรวมสถานะที่เปนแบบ indistinguishable

วิธีการนี้จะเริ่มตนจากการหาคูของสถานะที่เปนแบบ

distinguishable กอน

Page 42: Finite automata

42

การลดจํานวนสถานะใน FA

Procedure: mark1. ลบสถานะที่เขาถึงไมไดออกทั้งหมด2. พิจารณาคูของสถานะทั้งหมด (p, q) ถา p ∈ F และ q ∉F หรือกลับกัน ให mark (p, q) วาเปน distinguishable

3. วนซ้ําขั้นตอนตอไปนี้จนกวาจะไมสามารถ mark คูของสถานะใหมเพิ่มเติมได

สําหรับทุกๆ คู (p, q) และทุกๆ a ∈ Σ,คํานวณ δ(p, a) = pa และ δ(q, a) = qa

ถา (pa, qa) ถูก mark วาเปน distinguishable

ให mark (p, q) วาเปน distinguishable.

Page 43: Finite automata

43

การลดจํานวนสถานะใน FA

เราจะใชผลของ mark ในการแบงเซตของสถานะ Q ของ FA เปนเซตยอยที่ไมรวมกัน (disjoint subsets)

ตัวอยาง:Q = {0,1,2,3,4,5,6,7}unmarked pairs = (1,2), (1,4), (2,4), (3,5), (3,7), (5,7) (คูที่ไมแตกตางกัน)disjoint subsets = {0}, {1,2,4}, {3,5,7}, {6}

Page 44: Finite automata

44

การลดจํานวนสถานะใน FA

Procedure: reduceถามี FA M = (Q, Σ, δ, q0, F), เราสามารถสราง FA ที่ถูกลด

สถานะ M' = (Q', Σ, δ', q'0, F') ไดดงันี้1. ใชกระบวนการ mark เพื่อหาเซตของสถานะทั้งหมดที่

indistinguishable (ตามตัวอยางที่แลว).2. สรางสถานะใหมสําหรับ M' จากเซตของสถานะทั้งหมดที่

indistinguishable ตัวอยางเชน สราง q'124 จาก {1,2,4}.

3. เพิ่ม δ' (ij..k, a) = lm…n ถา qr ∈ {qi,qj,…,qk} และ qp ∈{ql,qm,…,qn} และ δ (qr, a) = qp.

4. q'0 สถานะเริ่มตนของ M' คือสถานะที่ประกอบดวย 0

5. F' คือเซตของสถานะที่ประกอบดวย i โดยที่ qi ∈ F.

Page 45: Finite automata

45

การลดจํานวนสถานะใน FA

ตัวอยาง

q0 q2

q1

q3

q4

0

1

0 0

0

1

1

1

0,1

q1

q3

1

q2q1q0

111q4

q3

q2

1: (q0,q4), (q1,q4), (q2,q4), (q3,q4)

mark คูระหวางสถานะ q4 กับสถานะอื่นๆ

i

j

Page 46: Finite automata

46

การลดจํานวนสถานะใน FA

ตัวอยาง

q0 q2

q1

q3

q4

0

1

0 0

0

1

1

1

0,1

q1

q3

1

q2q1q0

111q4

q3

q2

q4q2q3

q4q4q4

q4q1q2

q4q2q1

q3q1q0

10

i

j

marked(q0,q4)(q1,q4)(q2,q4)(q3,q4)

→ (q0,q4), (q2,q4)

Page 47: Finite automata

47

การลดจํานวนสถานะใน FA

ตัวอยาง

q0 q2

q1

q3

q4

0

1

0 0

0

1

1

1

0,1

q1

q3

1

q2q1q0

111q4

q3

q2

q4q2q3

q4q4q4

q4q1q2

q4q2q1

q3q1q0

10

2: (q0,q1), (q0,q2), (q0,q3) i

j

marked(q0,q4)(q1,q4)(q2,q4)(q3,q4)

→ (q1,q4), (q3,q4)

Page 48: Finite automata

48

การลดจํานวนสถานะใน FA

ตัวอยาง

q0 q2

q1

q3

q4

0

1

0 0

0

1

1

1

0,1

q1

q3

1

q2q1q0

111q4

q3

q2

q4q2q3

q4q4q4

q4q1q2

q4q2q1

q3q1q0

10

2: (q0,q1), (q0,q2), (q0,q3) i

j

marked(q0,q4)(q1,q4)(q2,q4)(q3,q4)

→ (q0,q1), (q0,q2),(q0,q3), (q0,q4)

2

2

2

Page 49: Finite automata

49

การลดจํานวนสถานะใน FA

ตัวอยาง

q0 q2

q1

q3

q4

0

1

0 0

0

1

1

1

0,1

2q1

q3

1

q2q1q0

111q4

xx2q3

x2q2

q4q2q3

q4q4q4

q4q1q2

q4q2q1

q3q1q0

10

Unmarked pairs = (q1,q2), (q1,q3), (q2,q3)

Page 50: Finite automata

50

การลดจํานวนสถานะใน FA

Q = {q0, q1, q2, q3, q4}Unmarked pairs = (q1,q2), (q1,q3), (q2,q3)The disjoint subsets = {q0}, {q1,q2,q3}, {q4}

q0 q4q1230,1

0

1

0,1

q4q2q3

q4q4q4

q4q1q2

q4q2q1

q3q1q0

10