NFA ใช้การเปลี่ยน epsilon อย่างไร


12

ในภาพด้านล่างฉันพยายามเข้าใจว่า NFA นี้ยอมรับอะไรกันแน่

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งที่ฉันสับสนเป็นกระโดดที่q_0q 0ϵq0

  • หากป้อนระบบจะย้ายไปที่ทั้งและ (สถานะยอมรับ) หรือไม่q 0 q 10q0 q1

  • หากป้อนระบบจะย้ายไปที่ทั้งและหรือไม่q 1 q 21q1q2

  • ระบบย้ายไปที่ (ยอมรับสถานะ) เท่านั้นหากไม่มีการป้อนข้อมูล (สตริงว่าง)?q1


2
กลับไปที่คำจำกัดความ: NFA ยอมรับคำว่าหากการคำนวณใด ๆที่มันยอมรับ NFA ไม่ใช่ "อัลกอริธึม" ในแง่ DFA คือ
กราฟิลส์

คำตอบ:


10

ทุกครั้งที่คุณอยู่ในสถานะที่มีการเปลี่ยนแปลงหมายความว่าคุณอยู่ในสถานะทั้งสองโดยอัตโนมัติเพื่อทำให้สิ่งนี้ง่ายขึ้นสำหรับคุณ:ϵ

หากสตริงคือออโตมาตาของคุณจะสิ้นสุดทั้งในและq 0 q 1ϵq0q1

หากสตริงของคุณคือ '0' จะมีอีกครั้งในและq 1q0q1

หากสตริงของคุณคือ '1' จะเป็นเพียงในเพราะถ้าคุณดูจากจุดคุณจะได้เปลี่ยนเป็น '1' เป็นแต่คุณต้องดูคุณอยู่ใน (หรือไม่ หากคุณอยู่ในคุณจะอยู่ในด้วยเสมอ) ดังนั้นจึงไม่มีการเปลี่ยนแปลง '1' ดังนั้นเส้นทางอื่นนี้จะ "ตาย"q2q0q2q1q0q1

เพียงแค่ดูกรณีเหล่านี้มันง่ายที่จะเห็นว่าออโตมาตาของคุณยอมรับ ,และไปจากถึงวิธีเดียวในการเข้าถึงคือดังนั้นสิ่งนี้จะดำเนินการออโตมาตาของคุณต่อไป , ,ϵ0q0q1q20111ϵ00111

หวังว่านี่จะช่วยคุณได้ถ้าคุณมีข้อสงสัยเพิ่มเติมโปรดถาม!


7
"มันหมายความว่าคุณอยู่ในสถานะทั้งสองโดยอัตโนมัติ" - ฉันไม่คิดว่านั่นเป็นสัญชาตญาณที่มีประโยชน์กล่าวคือมันแสดงให้เห็นถึงความไม่แน่นอนในทางที่ผิด
กราฟิลส์

ทำไมมันถึงแสดงว่ามันผิด ทีนี้ตามนิยามของเดลต้าว่าไม่ใช่ระดับคุณจะได้ชุดของรัฐแทนที่จะเป็นเพียง 1 อย่างถูกต้องหรือ ซึ่งหมายความว่าคุณอยู่ในทั้งสองสถานะเท่านั้น
H_DANILO

มันส่งเสริมความคิดที่ว่าเครื่องที่ไม่ได้กำหนด "ลองโซลูชั่นทั้งหมดในแบบคู่ขนาน" นั่นไม่ใช่สิ่งที่เกิดขึ้น Nondeterminism เป็นพิธีการเชิงพรรณนาไม่ใช่เทคนิคอัลกอริทึม
กราฟิลส์

ฉันพยายามใส่มันในแบบที่เข้าใจได้ตั้งแต่นะที่พยายามดิ้นรนเพื่อทำความเข้าใจกับหลักการของลัทธิ nondeterminism ในทาง
ทฤษฎี

@Raphael สิ่งที่จะเป็นสัญชาตญาณที่เป็นประโยชน์มากขึ้นในความคิดของคุณ?
Andrey Portnoy

6

ในรัฐโดยไม่ต้องอ่านการป้อนข้อมูลใด ๆ NFA การเข้าพักทั้งในและ (ในจักรวาลทางเลือกถ้าคุณจะ) มันก็จะย้ายไปที่รัฐq_1สิ่งนี้คล้ายกับสิ่งที่จะเกิดขึ้นใน NFA ซึ่งมีการเปลี่ยนสถานะเป็นสองสถานะที่แตกต่างกันสำหรับอินพุตของอักขระ โดยเฉพาะอย่างยิ่ง NFA ของคุณยอมรับสตริงว่างเนื่องจากไม่มีการป้อนข้อมูลที่จะสามารถทำให้การเปลี่ยนแปลงที่จะยอมรับรัฐq_1q0q0q1q1

อย่างต่อเนื่องตัวอย่างของคุณจากรัฐเห็นอินพุตก็จะใช้สัญลักษณ์ที่เข้าพักในรัฐ (วง) และยังไปยังรัฐจึงรับข้อมูล0ในรัฐอ่านอินพุตที่ NFA จะไปรัฐq_2มันอาจจะยังไม่ได้กินการเปลี่ยนแปลงไปยังรัฐในจักรวาลอื่นและได้รับการติดมี (และไม่ยอมรับเพราะมันไม่เคยอ่านทั้งหมดป้อนข้อมูล) เนื่องจากมีการเปลี่ยนแปลงจากไม่มีบน1q00q0q10q01q21q1q11

ดูว่าคุณสามารถโน้มน้าวใจตัวเองหรือไม่ว่าภาษาที่ยอมรับโดยเครื่องนี้แสดงออกด้วยนิพจน์ทั่วไปนั่นคือสตริงใด ๆ ที่ประกอบด้วยศูนย์หรือมากกว่าวินาทีตามด้วยอะไรเลยหรือทั้งสองอย่าง หรือมากกว่าวิ0 10+011101


อย่างไรก็ตามมีอัลกอริทึมที่ใช้ NFA กับ -move และสร้าง NFA ที่เทียบเท่าโดยไม่มี -move ซึ่งฉันคาดว่าคุณจะเรียนรู้ในไม่ช้าϵϵϵ


-1

ฉันพยายามสร้าง DFA สำหรับ NFA นี้

- ชุดตัวอักษร

Qตั้งค่า -ates

σ(Q×(ϵ))P(Q)สถานะ func

q0=q0

FQ,F={q0}

เพราะทุก NFA มี DFA เท่ากันให้สร้าง DFAสำหรับ NFA ที่ได้รับนี้M

ตัวอักษร - เหมือนกัน

Q=P(Q) - สถานะ

สถานะปัจจุบันคือRP(Q)

E(R) - เอปไซลอนปิดคืนชุดของรัฐที่สามารถเข้าถึงได้มากกว่าศูนย์หรือมากกว่า - การเชื่อมต่อสำหรับทุกϵrR

σ(R,a)=rRE(σ(r,a)) -transitions

q0=E({q0})

F=P(Q)÷F

คำนวณบางอย่างใน FSM นี้

1. ϵในอินพุต: สถานะเริ่มต้นรวมดังนั้น FSM จึงยอมรับq0=E({q0})={q0,q1}q1ϵ

2. 0ที่อินพุต: ดังนั้น FSM จึงยอมรับσ({q0,q1},0)=E(σ(q0,0))E(σ(q1,0))={q0,q1}{}={q0,q1}0

อย่างน้อย{ϵ,0}L(M)

ขอบคุณDavid Richerby


ขอบคุณที่ขอบคุณฉัน แต่ฉันไม่เห็นว่าสิ่งนี้ตอบคำถามได้อย่างไร คุณยังไม่ได้สร้างภาษาที่เครื่องยอมรับและคุณยังไม่ได้ตอบคำถามสามข้อใด ๆ
David Richerby

1) เมื่ออินพุตคือ (สตริงว่าง) สถานะ FSM คือ 2) เมื่ออินพุตเท่ากับ หรือ สถานะ FSM คือ ทั้งคู่ของคำถามเริ่มต้น มันไม่ได้เป็น? { q 0 , q 1 } 0 0 { q 0 , q 1 }ϵ{q0,q1}00{q0,q1}
OrangeFish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.