ออโตเมติก จำกัด nondeterministicเป็นเครื่องสถานะ จำกัด ที่ tuple ถูกแมปกับหลายรัฐ กล่าวคือ เราแทนที่ปกติδ : Q × Σ →การQฟังก์ชั่นการเปลี่ยนแปลงของDFAกับฟังก์ชั่นอื่นΔ : Q × Σ →การP ( Q )
หากคุณรู้ว่า NFA คืออะไรคุณอาจต้องการข้ามหัวข้อถัดไป
นิยามอย่างเป็นทางการ
NFA อธิบายไว้โดยเฉพาะ
- ชุดของอเมริกา จำกัด
- ขอบเขตของสัญลักษณ์
- ฟังก์ชั่นการเปลี่ยนแปลง
- สถานะเริ่มต้น
- ชุดของสถานะสุดท้าย
เครื่องจะเริ่มออกมาในและอ่านสตริง จำกัด ของสัญลักษณ์W ∈ Σ *สำหรับแต่ละสัญลักษณ์พร้อมกันจะใช้ฟังก์ชั่นฟังก์ชั่นการเปลี่ยนแปลงกับรัฐในปัจจุบันและเพิ่มแต่ละชุดใหม่ของรัฐถึงชุดของรัฐในปัจจุบัน
ท้าทาย
สำหรับความท้าทายนี้เราจะไม่สนใจเพื่อลดความซับซ้อนของมันนอกจากนี้ตัวอักษรจะเป็น (กรณีที่ต่ำกว่า) ตัวอักษรไปZและชุดของรัฐจะ{ 0 ... N }สำหรับบางคนที่ไม่ใช่เชิงลบจำนวนเต็มN สถานะเริ่มต้นจะเป็น0เสมอ
ป.ร. ให้คำและคำอธิบายของ NFA ให้งานของคุณคือการกำหนดทุกรัฐสุดท้าย
ตัวอย่าง
พิจารณาสตริงและคำอธิบายต่อไปนี้:
state, symbol, new-states
0, 'a', [1]
1, 'a', [0]
1, 'b', [1,2]
เครื่องจะเริ่มต้นใน :
- อ่าน : สถานะใหม่{ 1 }
- อ่าน : สถานะใหม่{ 1 , 2 }
- อ่าน : สถานะใหม่{ 0 }
- อ่าน : สถานะใหม่{ 1 }
- อ่าน : สถานะใหม่{ 1 , 2 }
ดังนั้นรัฐสุดท้ายและทำให้การส่งออกจะเป็น }
หมายเหตุ:ในขั้นตอน(2)การเปลี่ยนสถานะจะจับคู่กับ∅เนื่องจากคำอธิบายประกอบด้วยการเปลี่ยนเป็นชุดที่ไม่ว่างเปล่าเท่านั้น
กฎระเบียบ
การป้อนข้อมูลจะประกอบด้วยสตริงและชนิดของคำอธิบายของ NFA บางคน (โดยไม่ต้อง -transitions):
- สตริงอินพุตจะเป็นองค์ประกอบของ
- อินพุตที่ถูกต้อง (ไม่ จำกัด เฉพาะ):
- รายการ / อาร์เรย์ของสิ่งอันดับ / รายการ
- การป้อนข้อมูลแยกบรรทัดใหม่
- คำอธิบายของ NFA จะมีการเปลี่ยนเฉพาะกับชุดที่ไม่ว่างเปล่าเป็นผลลัพธ์
- คุณอาจย่อกฎที่มีตัวอักษรเดียวกันหากผลลัพธ์ของพวกเขาเหมือนกัน (เช่นกฎ
0,'a',[1,2]
และ0,'b',[1,2]
อาจใช้ตัวย่อ0,"ab",[1,2]
- คุณอาจแยกกฎแต่ละข้อออก (เช่นกฎ
0,'a',[1,2]
สามารถ0,'a',[1]
และ0,'a',[2]
)
- คุณอาจย่อกฎที่มีตัวอักษรเดียวกันหากผลลัพธ์ของพวกเขาเหมือนกัน (เช่นกฎ
- คุณอาจเลือกตัวอักษรตัวพิมพ์ใหญ่ถ้าคุณต้องการ
- คุณอาจใช้จำนวนสถานะเป็นอินพุต
- คุณอาจสมมติว่ามีการเรียงลำดับของอินพุต (เช่น. เรียงลำดับโดยรัฐหรือสัญลักษณ์)
เอาต์พุตจะเป็นรายการ / set / new-line ที่คั่นด้วยเอาต์พุตอื่น ๆ ของสถานะสุดท้าย
- คำสั่งไม่สำคัญ
- ไม่ซ้ำกัน (เนื่องจากเป็นชุด)
กรณีทดสอบ
ตัวอย่างเหล่านี้จะอยู่ในรูปแบบdescription word -> states
ที่description
เป็นรายการของ tuples (state,symbol,new-states)
:
[] "x" -> []
[] "" -> [0]
[(0,'a',[1]),(1,'a',[0]),(1,'b',[1,2])] "abaab" -> [1,2]
[(0,'a',[1]),(1,'a',[0]),(1,'b',[1,2])] "abc" -> []
[(0,'p',[0,1]),(0,'g',[2]),(1,'c',[1]),(1,'g',[4]),(1,'p',[2]),(2,'c',[0])] "ppcg" -> [2,4]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "foobar" -> [0,4]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "fooooooobar" -> [0,4]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "fobarfo" -> [1,2]
[(0,'f',[1]),(1,'o',[1,2]),(2,'b',[3]),(3,'a',[4]),(4,'r',[0,4])] "foobarrf" -> [1]
[(0,'d',[1,2]),(1,'u',[2]),(2,'u',[2,3]),(2,'p',[3]),(3,'p',[3])] "dup" -> [3]
[(0,'a',[0,2]),(0,'b',[3]),(1,'a',[1]),(1,'b',[1]),(2,'b',[1,4]),(4,'b',[2])] "aab" -> [3,1,4]
[(0,'a',[0,2]),(0,'b',[3]),(1,'a',[1]),(1,'b',[1]),(2,'b',[1,4]),(4,'b',[2])] "abb" -> [1,2]