Sign up ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

How can I show that $ALL_{DFA}$ is in P ?

$ALL_{DFA} = \{ \langle A \rangle \mid A \text{ is a DFA and } L(A) = \Sigma^* \}$

share|cite|improve this question
What is $ALL$? (presumably $DFA$ is determinsitic finite automaton). And then what is their relation in $ALL_{DFA}$? –  Mitch Mar 20 '11 at 22:51
@Mitch: Edited. –  metdos Mar 21 '11 at 7:14

2 Answers 2

up vote 11 down vote accepted

Note that a DFA accepts $\Sigma^*$ if and only if all reachable states from the start state, $q_0$, are accepting. This can easily be decided in polynomial-time by performing a breadth- or depth-first search on the DFA from $q_0$. If at any time a non-accepting state is visited, reject, otherwise, if only accepting states are found, accept.

Interestingly, this problem is much harder for NFAs; $\{ \langle A \rangle \mid A \text{ is an NFA and } L(A) = \Sigma^* \}$ is NP-hard.

share|cite|improve this answer
I have understood edit part. Apart from that I could not see how using $\overline{ALL_{DFA}}$ additionally helps. –  metdos Mar 21 '11 at 20:33
It is just another school of thought. But you are correct; I didn't use it in my solution. –  Zach Langley Mar 21 '11 at 21:42

My answer to this problem on a recent homework was originally similar to the other answer on this question: Perform a breadth first search on the input, If a non-accept state is visited reject, Otherwise accept. However, this solution is wrong. This decider will accept a DFA that does not accept all inputs if, for example, there is no transition for one of the characters in Σ. The following DFA (with an alphabet of 0 and 1) is an example of this. It will not accept inputs with a 1, but there is no reject state that will cause this DFA to be rejected by the decider.

The decider accepts this DFA but this DFA does not accept all inputs.

The answer is actually to construct the complement to the input and test whether the language of the complement is an empty set. You can do this by doing a breadth or depth first search on the complement and if an accept state is found, reject the input and otherwise, accept.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.