简体   繁体   中英

Pumping lemma for regular language

I have a little confusion in checking whether the given language is regular or not using pumping lemma.

Suppose we have to check whether:

L. The language accepting even number of 0 's in regular or not?

We know that it is regular because we can construct a DFA for L. But I want to prove this with pumping lemma.

Now suppose, I take a String w= "0000" :

Now will divide the string as x = 0 , y = 0 , and z = 00 . Now on applying pumping lemma for i = 2 , I will get the string "00000" , which is not present in my language so by pumping lemma its prove that the language is not regular. But it is accepted by DFA ?

Any help will be greatly appreciated
Thank you

You are not completely clear about pumping lemma.

What pumping lemma say:

Formal definition: Pumping lemma for regular languages

Let L be a regular language. Then there exists an integer p ≥ 1 depending only on L such that every string w in L of length at least p ( p is called the "pumping length" ) can be written as w = xyz (ie, w can be divided into three substrings), satisfying the following conditions:

  1. | y | ≥ 1 | ≥ 1
  2. | xy | ≤ | ≤ p
  3. for all i ≥ 0 , xy i z L

But what this statement says is that:

If a language is really a regular language then there must be some way to generate( pump ) new strings from all sufficiently large strings .

  1. Sufficiently large string means, a string in language that is of the length ≥ P .
    So it may not be possible to generate new string from small strings even if language is Regular Language

  2. Some way means, if language is really a regular and our choice of w is correct. Then there should be at lest one way to break w in three parts xyz such that by repeating(pumping) y for any number of times we can generate new strings in the language.
    correct choice of w means: w in language and sufficiently large ≥ P

note : in second point, there may be a chance that even if you breaks w correctly into xyz according to formal definition still some new generated strings are not in language. As you did .

And in this situation you are to retry with some other possible choice of y .

In you chosen string w = " 0000 " you can break w such that y = 00 . And with this choice of y you would always find a new generated string in in Language that is "even number of zeros"

One mistake you are doing in your proof that you are doing for a specific string 0000. You should proof for all wP . So still your proof is incomplete

Read my this answer IN CONTEXT OF PUMPING LEMMA FOR REGULAR LANGUAGES

In that answer, I have explained that breaking w into xyz and pumping y means finding looping part and repeating looping part to generate new strings in language.
When we proof that some language is regular; then actually we don't know where is the looping part so we try with all possible choices that satisfies pumping lemma's rule 1,2 & 3.

And Pumping lemma says that if language is regular and infinite them there must be a loop in the DFA and every sufficiently large string in language passes through looping part (according to pigeonhole principle ) of DFA (and hence y can't be null. That's rule-1 in above formal definition).

Think, loop can be at initial position or at end and so x and z can be null strings.

But actually we don't know where loop falls in DFA so we try with all possible ways.

To proof a language is regular : You are to proof that for all sufficiently long strings ( w ) in language there is at-least one way ( y ) to generate new strings in the language by repeating looping part any number ( i ) of times.

To proof a language is not regular :You are to find at least one sufficiently long strings ( w ) in language such that there no choice for any way 'y' so that its possible to generate new strings with all possible repetition ( i ).

To proof using Pumping Lemma: 
+-------------------------+--------------------------+----------------+--------------+
|                         | Sufficient large W in L  |     y          |    i >=0     |
+-------------------------+--------------------------+----------------+--------------+
| language is regular     | For all W (all W can use | At-least one   | For all i>=0 |  
|                         | to generate new W' in L) |                |              |
+-------------------------+--------------------------+----------------+--------------+
| language is NOT regular | Find Any W (at-least 1   | With all (Show | At-least one |   
|                         | W that can't generates   | no possible Y  | i            | 
|                         | new W' in L              | exists)        |              |
+-------------------------+--------------------------+----------------+--------------+

CAUTION: : The Rule always not works to proof 'Weather a Language is Regular?'

Pumping Lemma necessary but not sufficient condition for a language to be regular. A language possible that satisfies these conditions may still be non-regular.
Reference

To proof a language is regular you have some necessary and sufficient conditions for a language to be regular.

Although the accepted answer is complete in its own way, I had to add a few things. I have a very playful way to exploit the pumping lemma to be able to prove that a given language is not a Regular language. Just to have a context to talk about, let me state the lemma:

Pumping Lemma for Regular Languages:

For any regular language L, there exists an integer k.

Such that for all x ∈ L with |x| ≥ k, there exists u, v, w ∈ Σ∗, such that x = uvw, and

(1) |uv| ≤ k

(2) |v| ≥ 1

(3) for all i ≥ 0: u(v^i)w ∈ L

The k is called the Pumping lemma constant . Let me come straight to the point and show you how to go about proving a language L is not regular.

Now to start the game you need two players here. One is the Reader( R ) and the other is the Adversary( A ).

Input: A language L

The Goal of R : Somehow prove the language L is not regular by some contradiction.

The Goal of A : Somehow be prepared enough to face the arguments of R and do not let him/her create a contradiction.

Now let us start the argument.

A : The language L is not Irregular because none could show the contradiction using pumping lemma with a certain pumping constant k. (Each language is mapped to only one integer k)

R : Let me assume what you say. If language L is regular then it must satisfy the conditions of the pumping lemma. So, let me choose a suitable string x ∈ L (|x| >= k), such that it helps me create a contradiction later.

A : Challenged by the R , A tries its best to find at least one suitable partitioning u, v and w of the string x, such that

x = uvw  and |uv| <= k and |v| > 0

R : With any possible partition given by A , wins the the argument if able to show an integer i >= 0 such that

u(v^i)w ∉ L

Because now the R has shown that the Language L has at least one string x which doesn't have any partition(u, v, w) such that it satisfies the pumping lemma. The contradiction happened because our assumption that L is regular is FALSE . Therefore the language L is proven to be not regular.

If the R is not able to show the above, this is not a Proof of the language being Regular. It just means that L can be a Regular or Irregular language which just happens to satisfy the pumping lemma conditions.

Always remember, the pumping lemma is if ( L is regular), then Statements. The vice-versa is not necessarily TRUE . Although it might be TRUE in some cases.

Therefore the pumping lemma is useful only if you want to prove that a language is not regular.

(Source: Theory of Computation(NPTEL): Prof. Somenath Biswas(IIT Kanpur)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM