Finite Automaton แบบไม่กำหนด

ใน NDFA สำหรับสัญลักษณ์อินพุตเฉพาะเครื่องสามารถย้ายไปที่สถานะใดก็ได้ในเครื่อง กล่าวอีกนัยหนึ่งไม่สามารถระบุสถานะที่แน่นอนที่เครื่องจักรเคลื่อนที่ได้ ดังนั้นจึงเรียกว่าNon-deterministic Automaton. เนื่องจากมีจำนวนสถานะ จำกัด เครื่องจึงถูกเรียกNon-deterministic Finite Machine หรือ Non-deterministic Finite Automaton.

คำจำกัดความอย่างเป็นทางการของ NDFA

NDFA สามารถแสดงด้วย 5-tuple (Q, ∑, δ, q 0 , F) โดยที่ -

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

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

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

    (ที่นี่ชุดกำลังของ Q (2 Q ) ถูกนำมาใช้เนื่องจากในกรณีของ NDFA จากสถานะการเปลี่ยนอาจเกิดขึ้นกับการรวมกันของสถานะ Q ใด ๆ )

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

  • F คือชุดของสถานะสุดท้าย / สถานะของ Q (F ⊆ Q)

การแสดงกราฟิกของ NDFA: (เหมือนกับ DFA)

NDFA แสดงด้วย digraphs เรียกว่า state diagram

  • จุดยอดแสดงถึงสถานะ
  • ส่วนโค้งที่มีป้ายกำกับด้วยอักษรอินพุตแสดงการเปลี่ยน
  • สถานะเริ่มต้นแสดงด้วยส่วนโค้งขาเข้าเดี่ยวที่ว่างเปล่า
  • สถานะสุดท้ายถูกระบุด้วยวงกลมสองวง

Example

ให้หุ่นยนต์ จำกัด ที่ไม่ใช่ปัจจัยกำหนดเป็น→

  • ถาม = {a, b, c}
  • ∑ = {0, 1}
  • q 0 = {a}
  • F = {c}

ฟังก์ชันการเปลี่ยนแปลงδดังแสดงด้านล่าง -

สถานะปัจจุบัน สถานะถัดไปสำหรับอินพุต 0 สถานะถัดไปสำหรับอินพุต 1
ก, ข
ก, ค
ข, ค

การแสดงกราฟิกจะเป็นดังนี้ -

DFA เทียบกับ NDFA

ตารางต่อไปนี้แสดงความแตกต่างระหว่าง DFA และ NDFA

DFA NDFA
การเปลี่ยนจากสถานะเป็นสถานะถัดไปเฉพาะสำหรับสัญลักษณ์อินพุตแต่ละรายการ ดังนั้นจึงเรียกว่าดีเทอร์มินิสติ การเปลี่ยนจากสถานะสามารถเป็นสถานะถัดไปได้หลายสถานะสำหรับสัญลักษณ์อินพุตแต่ละตัว ดังนั้นมันจะเรียกว่าไม่ใช่กำหนด
ไม่เห็นการเปลี่ยนสตริงว่างใน DFA NDFA อนุญาตให้เปลี่ยนสตริงว่าง
อนุญาตให้มีการย้อนรอยใน DFA ใน NDFA การย้อนรอยไม่สามารถทำได้เสมอไป
ต้องใช้พื้นที่มากขึ้น ต้องการพื้นที่น้อย
DFA ยอมรับสตริงหากส่งผ่านไปยังสถานะสุดท้าย NDFA ยอมรับสตริงหากการเปลี่ยนแปลงที่เป็นไปได้อย่างน้อยหนึ่งรายการสิ้นสุดในสถานะสุดท้าย

ตัวรับตัวแยกประเภทและตัวแปลงสัญญาณ

ผู้รับ (Recognizer)

หุ่นยนต์ที่คำนวณฟังก์ชันบูลีนเรียกว่าไฟล์ acceptor. สถานะทั้งหมดของตัวรับคือการยอมรับหรือปฏิเสธอินพุตที่ให้ไว้

ลักษณนาม

classifier มีสถานะสุดท้ายมากกว่าสองสถานะและจะให้เอาต์พุตเดียวเมื่อสิ้นสุด

ทรานสดิวเซอร์

หุ่นยนต์ที่สร้างเอาต์พุตตามอินพุตปัจจุบันและ / หรือสถานะก่อนหน้านี้เรียกว่า a transducer. ทรานสดิวเซอร์สามารถมีได้สองประเภท -

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

  • Moore Machine - เอาต์พุตขึ้นอยู่กับสถานะปัจจุบันเท่านั้น

การยอมรับโดย DFA และ NDFA

DFA / NDFA ยอมรับสตริงหาก DFA / NDFA เริ่มต้นที่สถานะเริ่มต้นจะสิ้นสุดในสถานะยอมรับ (สถานะสุดท้ายใด ๆ ) หลังจากอ่านสตริงทั้งหมด

DFA / NDFA ยอมรับสตริง S (Q, ∑, δ, q 0 , F), iff

δ*(q0, S) ∈ F

ภาษา L ยอมรับโดย DFA / NDFA คือ

{S | S ∈ ∑* and δ*(q0, S) ∈ F}

DFA / NDFA ไม่ยอมรับสตริง S ′(Q, ∑, δ, q 0 , F), iff

δ*(q0, S′) ∉ F

DFA / NDFA ไม่ยอมรับภาษา L ′(ส่วนเสริมของภาษาที่ยอมรับ L) คือ

{S | S ∈ ∑* and δ*(q0, S) ∉ F}

Example

ให้เราพิจารณา DFA ที่แสดงในรูปที่ 1.3 จาก DFA สามารถรับสตริงที่ยอมรับได้

สตริงที่ DFA ยอมรับข้างต้น: {0, 00, 11, 010, 101, ........... }

DFA ข้างต้นไม่ยอมรับสตริง: {1, 011, 111, ........ }