Moore และ Mealy Machines

Finite automata อาจมีเอาต์พุตที่สอดคล้องกับการเปลี่ยนแต่ละครั้ง มีเครื่องจักรสถานะ จำกัด สองประเภทที่สร้างเอาต์พุต -

  • เครื่องแป้ง
  • เครื่องมัวร์

เครื่องแป้ง

Mealy Machine เป็น FSM ซึ่งเอาต์พุตขึ้นอยู่กับสถานะปัจจุบันและอินพุตปัจจุบัน

สามารถอธิบายได้ด้วย 6 ทูเปิล (Q, ∑, O, δ, X, q 0 ) โดยที่ -

  • Q เป็นชุดของรัฐที่ จำกัด

  • เป็นชุดสัญลักษณ์ จำกัด ที่เรียกว่าตัวอักษรอินพุต

  • O เป็นชุดสัญลักษณ์ จำกัด ที่เรียกว่าอักษรเอาต์พุต

  • δ คือฟังก์ชั่นการเปลี่ยนอินพุตโดยที่δ: Q × ∑ → Q

  • X คือฟังก์ชันการเปลี่ยนเอาต์พุตโดยที่ X: Q × ∑ → O

  • q0คือสถานะเริ่มต้นจากการประมวลผลอินพุตใด ๆ (q 0 ∈ Q)

ตารางสถานะของเครื่อง Mealy แสดงไว้ด้านล่าง -

สถานะปัจจุบัน ชาติหน้า
อินพุต = 0 อินพุต = 1
สถานะ เอาต์พุต สถานะ เอาต์พุต
→ก x 1 x 1
x 2 x 3
x 3 x 1
x 3 x 2

แผนภาพสถานะของ Mealy Machine ข้างต้นคือ -

มัวร์แมชชีน

Moore machine เป็น FSM ที่เอาต์พุตขึ้นอยู่กับสถานะปัจจุบันเท่านั้น

เครื่อง Moore สามารถอธิบายได้ด้วย 6 tuple (Q, ∑, O, δ, X, q 0 ) โดยที่ -

  • Q เป็นชุดของรัฐที่ จำกัด

  • เป็นชุดสัญลักษณ์ จำกัด ที่เรียกว่าตัวอักษรอินพุต

  • O เป็นชุดสัญลักษณ์ จำกัด ที่เรียกว่าอักษรเอาต์พุต

  • δ คือฟังก์ชั่นการเปลี่ยนอินพุตโดยที่δ: Q × ∑ → Q

  • X คือฟังก์ชันการเปลี่ยนเอาต์พุตโดยที่ X: Q → O

  • q0คือสถานะเริ่มต้นจากการประมวลผลอินพุตใด ๆ (q 0 ∈ Q)

ตารางสถานะของ Moore Machine แสดงไว้ด้านล่าง -

สถานะปัจจุบัน รัฐถัดไป เอาต์พุต
อินพุต = 0 อินพุต = 1
→ก x 2
x 1
x 2
x 3

แผนภาพสถานะของ Moore Machine ข้างต้นคือ -

Mealy Machine กับ Moore Machine

ตารางต่อไปนี้เน้นประเด็นที่ทำให้ Mealy Machine แตกต่างจาก Moore Machine

เครื่องแป้ง มัวร์แมชชีน
เอาต์พุตขึ้นอยู่กับสถานะปัจจุบันและอินพุตปัจจุบัน ผลลัพธ์ขึ้นอยู่กับสถานะปัจจุบันเท่านั้น
โดยทั่วไปจะมีสถานะน้อยกว่า Moore Machine โดยทั่วไปจะมีสถานะมากกว่า Mealy Machine
ค่าของฟังก์ชันเอาต์พุตเป็นฟังก์ชันของการเปลี่ยนและการเปลี่ยนแปลงเมื่อตรรกะอินพุตในสถานะปัจจุบันเสร็จสิ้น ค่าของฟังก์ชันเอาต์พุตเป็นฟังก์ชันของสถานะปัจจุบันและการเปลี่ยนแปลงที่ขอบนาฬิกาเมื่อใดก็ตามที่เกิดการเปลี่ยนแปลงสถานะ
เครื่องจักร Mealy ตอบสนองต่ออินพุตได้เร็วขึ้น โดยทั่วไปจะตอบสนองในวงจรนาฬิกาเดียวกัน ในเครื่อง Moore จำเป็นต้องใช้ตรรกะมากขึ้นในการถอดรหัสเอาต์พุตซึ่งส่งผลให้วงจรล่าช้ามากขึ้น โดยทั่วไปจะตอบสนองหนึ่งรอบนาฬิกาในภายหลัง

Moore Machine ไปยัง Mealy Machine

อัลกอริทึม 4

Input - เครื่องมัวร์

Output - เครื่องแป้ง

Step 1 - ใช้รูปแบบตารางการเปลี่ยนแปลง Mealy Machine ที่ว่างเปล่า

Step 2 - คัดลอกสถานะการเปลี่ยนแปลงของ Moore Machine ทั้งหมดลงในรูปแบบตารางนี้

Step 3- ตรวจสอบสถานะปัจจุบันและผลลัพธ์ที่เกี่ยวข้องในตารางสถานะของ Moore Machine หากเอาต์พุตสถานะ Q iคือ m ให้คัดลอกลงในคอลัมน์เอาต์พุตของตารางสถานะ Mealy Machine ที่ใดก็ตามที่ Q iปรากฏในสถานะถัดไป

ตัวอย่าง

ให้เราพิจารณาเครื่อง Moore ดังต่อไปนี้ -

สถานะปัจจุบัน รัฐถัดไป เอาต์พุต
a = 0 a = 1
→ก 1
0
0
1

ตอนนี้เราใช้ Algorithm 4 เพื่อแปลงเป็น Mealy Machine

Step 1 & 2 -

สถานะปัจจุบัน รัฐถัดไป
a = 0 a = 1
สถานะ เอาต์พุต สถานะ เอาต์พุต
→ก

Step 3 -

สถานะปัจจุบัน รัฐถัดไป
a = 0 a = 1
สถานะ เอาต์พุต สถานะ เอาต์พุต
=> ก 1 0
1 1
0 0
0 1

Mealy Machine ไปยัง Moore Machine

อัลกอริทึม 5

Input - เครื่องแป้ง

Output - เครื่องมัวร์

Step 1- คำนวณจำนวนเอาต์พุตที่แตกต่างกันสำหรับแต่ละสถานะ (Q i ) ที่มีอยู่ในตารางสถานะของเครื่อง Mealy

Step 2- ถ้าหากผลของฉีเหมือนกันคัดลอกรัฐ Q ฉัน หากมี n เอาต์พุตที่แตกต่างกันให้แบ่ง Q iเป็น n สถานะเป็น Q ในที่ใดn = 0, 1, 2 .......

Step 3 - หากเอาต์พุตของสถานะเริ่มต้นเป็น 1 ให้ใส่สถานะเริ่มต้นใหม่ที่จุดเริ่มต้นซึ่งให้เอาต์พุต 0

ตัวอย่าง

ให้เราพิจารณา Mealy Machine ต่อไปนี้ -

สถานะปัจจุบัน รัฐถัดไป
a = 0 a = 1
รัฐถัดไป เอาต์พุต รัฐถัดไป เอาต์พุต
→ก 0 1
1 0
1 0
0 1

ที่นี่สถานะ 'a' และ 'd' ให้ผลลัพธ์เพียง 1 และ 0 ตามลำดับดังนั้นเราจึงคงสถานะ 'a' และ 'd' แต่สถานะ 'b' และ 'c' ให้ผลลัพธ์ที่แตกต่างกัน (1 และ 0) ดังนั้นเราจึงแบ่งb เป็น b0, b1 และ c เป็น c0, c1.

สถานะปัจจุบัน รัฐถัดไป เอาต์พุต
a = 0 a = 1
→ก 1 1
0 0
1 1
0 1 0 0
1 1 0 1
0 0