54
Finite Automata นําเสนอโดย 1 นําเสนอโดย ดร.สุธี สุดประเสริฐ Source: Chapter 1.1 - Introduction to the Theory of Computation by Michael Sipser

Finite Automata (Thai)

Embed Size (px)

Citation preview

Page 1: Finite Automata (Thai)

Finite Automata

นําเสนอโดย

1

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

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

Page 2: Finite Automata (Thai)

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

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

� แตคอมพิวเตอรจริงๆมีความซับซอนมาก

2

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

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

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

Page 3: Finite Automata (Thai)

Finite Automata

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

สถานะปจจบุันเทานั้น) สามารถทําอะไรไดบาง?

3

สถานะปจจบุันเทานั้น) สามารถทําอะไรไดบาง?

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

Page 4: Finite Automata (Thai)

ตัวอยาง (1)

frontpad

rearpad

4

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

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

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

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

Page 5: Finite Automata (Thai)

ตัวอยาง (2)

CLOSED OPEN

FRONT

NETHER

REARBOTH

NETHER

FRONTREARBOTH

5

NETHER

NETHER FRONT REAR BOTH

CLOSED CLOSED OPEN CLOSED CLOSED

OPEN CLOSED OPEN OPEN OPEN

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

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

Page 6: Finite Automata (Thai)

Finite Automata

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

6

การประยุกตใชในงานใดงานหนึ่งกอน

Page 7: Finite Automata (Thai)

Finite Automata

q1 q3q2

0

1

1

0,1

0

A finite automaton called M1 that has three states

7

� 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.

A finite automaton called M1 that has three states

Page 8: Finite Automata (Thai)

Finite Automata

q1 q3q2

0

1

1

0,1

0

8

� เมื่ออินพุตคือ “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.

Page 9: Finite Automata (Thai)

Finite Automata

q1 q3q2

0

1

1

0,1

0

9

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

Page 10: Finite Automata (Thai)

Formal Definition

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

10

� ประการแรก formal definition มีความชัดเจน� จะทําใหเราเห็นชัดเจนวาอะไรที่ finite automata สามารถทํา

ไดหรือไมสามารถทําได

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

ชัดเจนขึ้น

Page 11: Finite Automata (Thai)

Formal Definition

� formal definition สําหรับ finite automaton สามารถกําหนดไดโดยใชวัตถุ 5 ตัวตอไปนี้� set of state� input alphabet

11

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

Page 12: Finite Automata (Thai)

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,

12

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 13: Finite Automata (Thai)

Formal Definition

q1 q3q2

0

1

1

0,1

0

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

13

� Q = { q1, q2, q3 }� Σ = { 0, 1 }� δ is described as

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

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

0 1

q1 q1 q2

q2 q3 q2

q3 q2 q2

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

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

Page 14: Finite Automata (Thai)

Formal Definition

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

� เราพูดวา M recognizes A หรือ M accepts A.

14

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

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

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

Page 15: Finite Automata (Thai)

Extended Transition Function

δ : Q x Σ → Q is the transition functionδ(q, a) = “the state to which the machine Mgoes if it is in state q and receives input symbol a”

15

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 16: Finite Automata (Thai)

Extended Transition Function

ตัวอยาง:

δ*(q0,w) = q6

16

q0 q6……..a b a

w = ab…a

Page 17: Finite Automata (Thai)

Extended Transition Function

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

δ*: Q x Σ* → Q

17

recursively as follows.

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

Page 18: Finite Automata (Thai)

Extended Transition Function

q1 q3q2

0

1

1

0,1

0

18

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

Page 19: Finite Automata (Thai)

Example of Finite Automata (1)

q2q1

0 1

0

1

� Formal description คือ ?� L(M) = ?

19

Page 20: Finite Automata (Thai)

Example of Finite Automata (2)

q2q1

0 1

0

1

� Formal description คือ ?� L(M) = ?

20

Page 21: Finite Automata (Thai)

Example of Finite Automata (3)

21

Page 22: Finite Automata (Thai)

Example of Finite Automata (4)

22

Page 23: Finite Automata (Thai)

Formal Definition of Computation

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

23

Page 24: Finite Automata (Thai)

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.

24

� 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 25: Finite Automata (Thai)

การออกแบบ Finite Automata

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

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

อยางไรก็ตามยังมีแนวทางที่เปนประโยชน ในการ

25

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

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

Page 26: Finite Automata (Thai)

ตัวอยาง (1)

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

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

26

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

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

Page 27: Finite Automata (Thai)

ตัวอยาง (2)

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

27

qeven qodd

Page 28: Finite Automata (Thai)

ตัวอยาง (3)

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

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

28

เปน 1 และจะอยูกับที่เมื่ออินพุตเปน 0

Page 29: Finite Automata (Thai)

ตัวอยาง (3)

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

10

29

qeven qodd

1

1

00

Page 30: Finite Automata (Thai)

ตัวอยาง (4)

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

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

30

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

Page 31: Finite Automata (Thai)

ตัวอยาง (5)

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

10

31

qeven

1

1

00

qodd

Page 32: Finite Automata (Thai)

แบบฝกหัด

� จงวาดแผนภาพของ DFA ที่สามารถจดจําภาษาตอไปนี้ โดยที่ ∑ = {0,1}� อักษรตัวแรกตองแตกตางจากตัวสุดทาย� เมื่อมี 00 ปรากฎตองมี 1 ตามมาเสมอ

32

� เมื่อมี 00 ปรากฎตองมี 1 ตามมาเสมอ� สตริงทุกตัวตองมี 00 แตตองไมมี 000

Page 33: Finite Automata (Thai)

The Regular Operations

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

operations union, concatenation, and star as follows.

33

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 34: Finite Automata (Thai)

ตัวอยาง

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

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

34

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

Page 35: Finite Automata (Thai)

The Regular Operations

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

35

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

regular operations ทั้งสามตัว� ตอไปจะเปนการพิสูจน

Page 36: Finite Automata (Thai)

The Regular Operations� Theorem

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

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

36

เปน regular languages ดวย� Proof Idea:

� A1 และ A2 เปน regular ดังนัน้� มี finite automaton M1 ที่จดจํา A1 ได และ� มี finite automaton M2 ที่จดจํา A2 ได

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

Page 37: Finite Automata (Thai)

The Regular Operations

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

จะยอมรับสตริงใด ก็ตอเมื่อการจําลองนัน้ยอมรับสตริงนั้น

37

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

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

ซึ่งเปนการปรับเปลีย่นสถานะของ M1 และ M2

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

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

Page 38: Finite Automata (Thai)

ตัวอยาง

q0 q1

0 1

1

0

q0 q1

1 0

0

1

M1M2

00 1 0 1M1 ∪ M2

38

q00

q01

q10

q11

0

1

0

1 0

1

1

0

q0 q0 q1

q1 q0 q1

q0 q1 q0

q1 q1 q0

Page 39: Finite Automata (Thai)

The Regular Operations

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

ดําเนนิการ concatenation� ถา A1 และ A2 เปน regular languages ดังนัน้ A1 ○ A2

39

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

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

languages A1 และ A2.

Page 40: Finite Automata (Thai)

The Regular Operations

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

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

40

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

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

Page 41: Finite Automata (Thai)

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

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

1

0,1

M2

41

q0

q4

q3

q2

q1

q5

q2q1q0

0

0

1

1

1 1

0,1 0

0,1

0 0,1

1M1

M2

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

Page 42: Finite Automata (Thai)

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

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

indistinguishableถา

42

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

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

for all w ∈ Σ*.

Page 43: Finite Automata (Thai)

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

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

หรือกลับกนั เชนนี้เราจะเรียกสถานะ p และ q วาdistinguishable โดยสตริง w

43

distinguishable โดยสตริง w

q

pu

v

w

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

ตัวอยางของ indistinguishable

Page 44: Finite Automata (Thai)

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

Indistinguishability มีคุณสมบตัิของ equivalence relations:1. p R p2. if p R q then q R p

44

2. if p R q then q R p

3. if p R q then q R r then p R r

Page 45: Finite Automata (Thai)

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

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

45

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

Page 46: Finite Automata (Thai)

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

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

46

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

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

ถา (pa, qa) ถูก mark วาเปน distinguishableให mark (p, q) วาเปน distinguishable.

Page 47: Finite Automata (Thai)

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

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

ตัวอยาง:

47

ตัวอยาง: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 48: Finite Automata (Thai)

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

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

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

indistinguishable (ตามตัวอยางที่แลว).

48

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' คือสถานะที่ประกอบดวย 05. F' คือเซตของสถานะที่ประกอบดวย i โดยที่ qi ∈ F.

Page 49: Finite Automata (Thai)

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

ตัวอยาง

q10

0 01

10,1

49

q0 q2

q3

q4

10

1

1

q1

q2

q3

q4 1 1 1 1

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

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

i

j

Page 50: Finite Automata (Thai)

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

ตัวอยาง

q10

0 01

10,1

0 1

q0 q1 q3

q1 q2 q4

q2 q1 q4

q3 q2 q4

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

50

q0 q2

q3

q4

10

1

1

q1

q2

q3

q4 1 1 1 1

q0 q1 q2 q3

q4 q4 q4

i

j

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

Page 51: Finite Automata (Thai)

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

ตัวอยาง

q10

0 01

10,1

0 1

q0 q1 q3

q1 q2 q4

q2 q1 q4

q3 q2 q4

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

51

q0 q2

q3

q4

10

1

1

q1

q2

q3

q4 1 1 1 1

q0 q1 q2 q3

q4 q4 q4

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

j

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

Page 52: Finite Automata (Thai)

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

ตัวอยาง

q10

0 01

10,1

0 1

q0 q1 q3

q1 q2 q4

q2 q1 q4

q3 q2 q4

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

52

q0 q2

q3

q4

10

1

1

q1

q2

q3

q4 1 1 1 1

q0 q1 q2 q3

q4 q4 q4

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

j

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

2

2

2

Page 53: Finite Automata (Thai)

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

ตัวอยาง

q10

0 01

10,1

0 1

q0 q1 q3

q1 q2 q4

q2 q1 q4

q3 q2 q4

53

q0 q2

q3

q4

10

1

1

q1 2

q2 2 x

q3 2 x x

q4 1 1 1 1

q0 q1 q2 q3

q4 q4 q4

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

Page 54: Finite Automata (Thai)

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

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

54

q0 q4q1230,1

0

1

0,10 1

q0 q1 q3

q1 q2 q4

q2 q1 q4

q3 q2 q4

q4 q4 q4