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

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

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


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

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

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

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

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

6

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

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

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


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


-1

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

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

Qตั้งค่า -ates

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

q0=q0

F⊆Q,F={q0}

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

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

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

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

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

σ′(R,a)=⋃r∈RE(σ(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.