158 views

Some one please explain these two theorems,I am struggling a lot here.

Here these theorems are based on pigeon hole principle.

1. Here it says that strings accepted by automata is finite, than atmost n states can be there. This means at most one character can be fit in a single state.

2. Now consider what if this is accepting a string of more than n characters than according to Pigeon hole principle, there should be at least one state on which input is looping. So this may accept infinite length of strings when looping state is accepting as well.

In order to check this, we have two options one is to provide all strings till infinite length and check. Obviously not feasible.

Another approach is to provide all strings of length between n and 2n. So if anyone string is accepted we will know that looping state is accepting as well so this language will accept all those strings on which it will loop on that particular state. So it will be a set of infinite strings.
But string if length N itself will suffice,why there is a limit of <2N?

Why it is not 3N ?
For more than n, any multiple of n is correct. Since for checking with 2n we need minimal work, so we take 2n otherwise u can go for higher multiples as well. Reason for taking multiples of n is we need we find which state is exactly causing loop so we need to go through all at least for one more time after initial input scanning.

I mean to say why there is a check on upper side.

Why is not just not >=N only?

If it is accepting more than n ,it means that it is infinite,and we should not consider more than that.

I also asked simlar question based on this here ,https://gateoverflow.in/104084/toc-finite-automata#a104154

Can you look into http://www.cse.msu.edu/~torng/360Book/RegLang/Decision/

I says

• When we pump it once, we increase the length of the string by at most n so we cannot exceed 2n-1. The problem is we might not exceed n-1 yet.
• The key is we can keep pumping it and at some point, its length must exceed n-1, and in the step it does, it cannot jump past 2n-1 since the size of the loop is at most n.

Can you explain it?

This is simular to what you mentioned above

Reason for taking multiples of n is we need we find which state is exactly causing loop so we need to go through all at least for one more time after initial input scanning.

But I am not able to get this point.Please clarify

Theorem. The language accepted by a DFA M with n states is infinite if and only if M accepts a string of length k , where n≤k<2n.

This makes the decision problem simple: just try all strings of length at least n and less than 2n and answer "yes" if M  accepts one of them and "no" if there's no string in that range that's accepted.

now question arises why there is need of upper bound

Without that upper bound, how would you know when to stop trying strings? This formulation makes the problem a decision problem (we can always answer "yes" or "no"), rather than a recognition problem (where we can only reliably answer "yes").