The subset construction algorithm converts any NFA into an equivalent DFA by treating sets of NFA states as single DFA states. Each DFA state corresponds to the set of NFA states reachable via some input, and the DFA's start state is the ε-closure of the NFA's start state. The resulting DFA can have up to 2ⁿ states for an n-state NFA, though many are often unreachable. This construction proves that nondeterminism adds no expressive power for finite automata — it only buys conciseness.
Work through a small NFA (3–4 states) by constructing the ε-closure table first, then building the DFA state-by-state using the transition table. Track which subsets are reachable to avoid constructing all 2ⁿ states unnecessarily.
You already know that a DFA has exactly one state active at any moment, while an NFA can be "in" many states simultaneously — it explores every possible path at once and accepts if any path reaches an accept state. The subset construction takes this intuition literally: if an NFA can be in multiple states at the same time, just treat each possible *set* of states as a single DFA state. The resulting DFA simulates the NFA by tracking, at each step, the complete set of NFA states that could be active after reading the input so far.
The algorithm works as follows. Start by computing the ε-closure of the NFA's start state — that is, every state reachable from the start by following only ε-transitions. This set becomes the DFA's start state. Then, for each input symbol, compute where the NFA could transition from every state in the current set, take the ε-closure of the result, and that gives you the next DFA state. If you have not seen that particular set of NFA states before, it becomes a new DFA state and you repeat the process. A DFA state is accepting if it contains at least one NFA accept state. You continue until no new subsets appear.
The theoretical worst case is dramatic: an NFA with *n* states can produce a DFA with up to 2ⁿ states, since there are 2ⁿ possible subsets. In practice, most of these subsets are unreachable — you never encounter them when starting from the initial ε-closure and following actual transitions. A typical conversion of a 5-state NFA might produce only 8 or 10 DFA states, not 32. This is why the algorithm builds states on demand rather than enumerating the full powerset.
The deeper significance of this construction is what it proves: NFAs and DFAs recognize exactly the same class of languages — the regular languages. Nondeterminism, for finite automata, is a convenience that can make machines smaller and easier to design, but it does not let you recognize anything new. This equivalence is foundational to formal language theory and underpins the Kleene theorem, which connects regular expressions, NFAs, and DFAs into a single unified framework. When you later encounter models where nondeterminism *does* add power (or where we do not know whether it does, as with P vs. NP), the contrast with finite automata will sharpen your understanding of what makes those questions hard.