True. In an NFA δ outputs a set of states (P(Q)). The empty set ∅ is a perfectly legal set — it just means "this branch dies here." Other branches may still reach F. Contrast with a DFA, where a missing edge really is a modelling gap.
Recall Solution
ECLOSE(q0): start at q0 (include it — zero ε-moves allowed). One ε-arrow q0εq1. From q1 there are no ε-arrows. So ECLOSE(q0)={q0,q1}.
ECLOSE(q1): start at q1, no outgoing ε-arrows. So ECLOSE(q1)={q1}.
Recall Solution
δ:Q×(Σ∪{ε})⟶P(Q)
Two differences from a DFA's δ:Q×Σ→Q:
Output is a set (P(Q)) → allows many/zero targets.
Base: δ^(q0,ε)=ECLOSE(q0)={q0,q1}. Why? Before reading anything, ε-arrows already carry us to q1 for free.
Read 1 from set {q0,q1}:
δ(q0,1)={q0}
δ(q1,1)={q2}
union ={q0,q2}, then ECLOSE({q0,q2})={q0,q1,q2} (ε-arrow from q0 re-adds q1).
{q0,q1,q2}∩F={q2}=∅ ⇒ accept ✅ (1 ends in 1).
Recall Solution
Base: {q0,q1}.
Read 1: union {q0,q2} → ECLOSE {q0,q1,q2}.
Read 0 from {q0,q1,q2}:
δ(q0,0)={q0}
δ(q1,0)=∅ (that guess dies — a 0 can't be preceded straight into q2)
δ(q2,0)=∅
union ={q0}, ECLOSE ={q0,q1}.
{q0,q1}∩F=∅ ⇒ reject ✅ (10 ends in 0).
Recall Solution
Q={p0,p1,p2}, start p0, F={p2}.
δ(p0,a)={p0,p1}, δ(p0,b)={p0}
δ(p1,b)={p2}, δ(p1,a)=∅
δ(p2,a)={p2}, δ(p2,b)={p2}
Why nondeterminism helps: at p0 on a we guess "this a starts the ab" (go to p1) while also keeping the "not yet" branch alive at p0. If a b follows, the guess pays off (p2) and p2 loops forever, so acceptance sticks. The DFA would need explicit bookkeeping of each partial match — the NFA gets it for free.
Reachability of q2: The only way into q2 is δ(q1,1). The only way into q1 is the ε-arrow from q0. And q0 is reachable after reading any prefix (it loops on 0 and 1). So the accepting path is: sit in q0 through the whole prefix, ε-slide to q1, read a final 1 → q2.
(⇒) If N1 accepts w, that path required a last consumed symbol equal to 1 (the q11q2 step). Hence w ends in 1.
(⇐) If w=u1 ends in 1: read u staying in q0 (loops absorb everything), ε-slide to q1, read the final 1 → q2∈F. Accept.
Empty string w=ε:δ^(q0,ε)=ECLOSE(q0)={q0,q1}. Intersect with F={q2}: empty ⇒ reject. Correct — the empty string does not "end in 1."
Recall Solution
ECLOSE(r0): follow ε-chain r0→r1→r2. So ECLOSE(r0)={r0,r1,r2}. Why chain fully? "zero or more" ε-moves means we follow the arrows transitively until nothing new appears.
w=a: from {r0,r1,r2} read a: only δ(r2,a)={r2} fires; union {r2}; ECLOSE {r2}; contains r2 ⇒ accept.
This machine accepts a∗.
Recall Solution
Number of subsets of a 3-element set =23=8: namely ∅,{q0},{q1},{q2},{q0,q1},{q0,q2},{q1,q2},{q0,q1,q2}.
Why it matters: the subset construction makes each DFA state one subset of NFA states (the set the NFA "is in"). Hence a 3-state NFA yields a DFA with at most 23=8 states — that power-set blow-up is the price of removing nondeterminism, and it links directly to Regular Languages being closed under this conversion.
Effect of the new arrow q2→q0:q2 is accepting, q0 is not, and q0 was already reachable on every prefix. The new arrow only addsq0 (and via its ε-arrow q1) to any set already containing q2. It never removes states, and it never adds q2 to a set that lacked it.
So a string previously accepted (reached a set containing q2) still reaches a set containing q2 (nothing is deleted) ⇒ still accepted.
A string previously rejected reached a set withoutq2; the new arrow fires only fromq2, so it cannot manufacture a q2 where none existed ⇒ still rejected.
Conclusion:L(N1) is unchanged — still "ends in 1." Silent arrows only matter when they open a new route into F.
Recall Solution
Bound: at most 2n DFA states (one per subset of Q). Tight in the worst case; often far fewer after removing unreachable subsets.
Why ∅ is a legit DFA state: when all NFA branches die on some symbol, the "current set" becomes ∅. In the DFA this is a non-accepting dead state that loops to itself on every symbol (since δ^ of the empty set is empty). It is the DFA's honest bookkeeping of "no NFA branch survives." This ties to DFA — formal definition, where every transition must be total — the ∅ state supplies the missing edges.
Recall Solution
Concept: Intersection of two regular languages is regular — a Closure Properties of Regular Languages result, realised by the product construction (run both machines' state-sets in parallel, accept when both accept). You would take N1 (ends in 1) and a 2-state parity NFA (even length), form the product, and mark states final only where both components are final.
Verify N1 on 01:
Base: ECLOSE(q0)={q0,q1}.
Read 0: q0→{q0}, q1→∅; union {q0}; ECLOSE {q0,q1}.
Read 1: q0→{q0}, q1→{q2}; union {q0,q2}; ECLOSE {q0,q1,q2}.
Contains q2∈F ⇒ accept ✅. (01 ends in 1; its length is even, so it would also survive the intersection.)