Làm thế nào để một NFA sử dụng chuyển tiếp epsilon?


12

Trong hình bên dưới, tôi đang cố gắng tìm hiểu chính xác NFA này đang chấp nhận điều gì.

nhập mô tả hình ảnh ở đây

Có gì khó hiểu cho tôi là ϵ nhảy tại .q0

  • Nếu nhập , hệ thống có chuyển sang cả (trạng thái chấp nhận) không?0q0 q1

  • Nếu nhập , hệ thống có chuyển sang cả q 1q 2 không?1q1q2

  • Có phải hệ thống chỉ di chuyển đến q1 (trạng thái chấp nhận), nếu không có đầu vào nào được đưa ra (chuỗi trống)?


2
Quay trở lại các định nghĩa: một NFA chấp nhận một từ nếu bất kỳ tính toán nào trên đó chấp nhận. NFA không phải là "thuật toán" theo nghĩa DFA.
Raphael

Câu trả lời:


9

Mỗi khi bạn đang ở trong một trạng thái trong đó có một chuyển tiếp, nó có nghĩa là bạn sẽ tự động được ở cả hai nước, để đơn giản hóa này cho bạn:ϵ

Nếu chuỗi là sau đó automata của bạn kết thúc ở cả q 0q 1ϵq0q1

Nếu chuỗi của bạn là '0', nó sẽ trở lại trong q 1q0q1

Nếu chuỗi của bạn là '1', nó sẽ chỉ ở , bởi vì nếu bạn nhìn từ điểm q 0 , bạn có chuyển đổi '1' sang q 2 , nhưng bạn cũng phải xem xét trường hợp bạn trong q 1 (nếu bạn ở q 0, bạn luôn ở q 1 ) thì không có chuyển tiếp '1', vì vậy đường dẫn thay thế này chỉ "chết".q2q0q2q1q0q1

Chỉ cần nhìn vào những trường hợp này nó dễ dàng để thấy rằng automata của bạn chấp nhận , 0 * , và đi từ q 0 đến q 1 , cách duy nhất để tầm q 20 * 11 * 1 , vì vậy, đây tiếp tục lại automata của bạn để ε , 0 * , 0 * 11 * 1ϵ0q0q1q20111ϵ00111

Hy vọng điều này đã giúp bạn, nếu bạn có bất kỳ nghi ngờ nào nữa, chỉ cần hỏi!


7
"Điều đó có nghĩa là bạn tự động ở trạng thái CẢ" - Tôi không nghĩ rằng đó là một trực giác hữu ích, nghĩa là nó thể hiện tính không xác định theo một cách sai.
Raphael

Tại sao nó đại diện cho nó sai? Vâng, theo định nghĩa của delta về tính không xác định, bạn có nhận được một tập hợp trạng thái thay vì chỉ 1 chính xác không? Điều này có thể chỉ có nghĩa là bạn đang ở cả hai tiểu bang.
H_DANILO

Nó thúc đẩy ý tưởng rằng các máy không xác định "thử tất cả các giải pháp song song". Đó không phải là những gì xảy ra, nói theo thuật toán. Nondeterminism là một chủ nghĩa hình thức mô tả, không phải là một kỹ thuật thuật toán.
Raphael

Tôi đã cố gắng đưa nó theo một cách dễ hiểu vì ngần ngại đấu tranh để hiểu các nguyên tắc không thuyết phục theo cách lý thuyết
H_DANILO

@Raphael Điều gì sẽ là một trực giác hữu ích hơn, theo ý kiến ​​của bạn?
Andrey Portnoy

5

Ở trạng thái mà không đọc bất kỳ đầu vào nào, cả NFA đều ở trạng thái q 0 và (trong vũ trụ thay thế, nếu bạn muốn), nó cũng chuyển sang trạng thái q 1 . Điều này tương tự như những gì sẽ xảy ra trong một NFA có hai lần chuyển đổi sang các trạng thái khác nhau trên đầu vào của một ký tự. Cụ thể, NFA của bạn chấp nhận chuỗi trống, vì không có đầu vào nào, nó có thể thực hiện chuyển đổi sang trạng thái chấp nhận q 1 .q0q0q1q1

Tiếp tục ví dụ của bạn, từ trạng thái nhìn thấy đầu vào 0 , nó sẽ tiêu thụ biểu tượng đó, ở trạng thái q 0 (vòng lặp) và cũng chuyển sang trạng thái q 1 , do đó chấp nhận đầu vào 0 . Ở trạng thái q 0 đọc đầu vào 1 , NFA sẽ chuyển sang trạng thái q 2 . Nó cũng có thể không tiêu thụ 1 , thay đổi sang trạng thái q 1 trong vũ trụ khác và bị mắc kẹt ở đó (và không chấp nhận, vì nó không đọc hết đầu vào), vì không có sự chuyển đổi từ q 1 trên 1 .q00q0q10q01q21q1q11

Xem nếu bạn có thể thuyết phục bản thân rằng ngôn ngữ được chấp nhận bởi máy tính này được biểu hiện bằng các biểu thức chính quy , tức là bất kỳ chuỗi gồm số không hay nhiều 0 s tiếp theo, hoặc không có gì cả hoặc hai hay nhiều 1 S.0+011101


Bằng cách này, có một thuật toán mà phải mất một NFA với -moves và tạo ra một NFA tương đương mà không ε -moves, mà tôi hy vọng bạn sẽ học được một thời gian ngắn.ϵϵ


-1

I tried construct DFA for this NFA

- alphabet set

Q -states set

σ(Q×(ϵ))P(Q) state func

q0=q0

FQ,F={q0}

Because every NFA has equal DFA lets construct DFA M for this given NFA.

alphabet - the same

Q=P(Q) - states

Current state is RP(Q)

E(R) - epsilon closure return set of states reachable over zero or more ϵ - connections for every rR

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

q0=E({q0})

F=P(Q)÷F

Some compute on this FSM

1. ϵ on input: q0=E({q0})={q0,q1} initial state include q1 so FSM accept ϵ

2. 0 on input: σ({q0,q1},0)=E(σ(q0,0))E(σ(q1,0))={q0,q1}{}={q0,q1} so FSM accept 0

at least {ϵ,0}L(M)

Thanks to David Richerby


Thanks for thanking me but I don't really see how this answers the question. You haven't established what language the machine accepts and you haven't addressed any of the three bulletted questions.
David Richerby

1) khi đầu vào là ε (chuỗi trống), trạng thái FSM là {q0,q1} 2) khi đầu vào là 0 hoặc thậm chí 0* Trạng thái FSM là {q0,q1} cả hai chủ đề của câu hỏi ban đầu, phải không?
OrangeFish
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.