Properties of Regular languages

Download Report

Transcript Properties of Regular languages

Properties of Regular Languages
Draw DFA for L={e}
for a regular language, L={e, 01}
for the r.l., L={e, 01, 0011}
for the r.l., L={e, 01, 0011, 000111}
…
now, try for the r.l., L={0k1k | 0≤k ≤ infinity}
1
•
Example:
{0n1n | 0=<n}
is not regular, but
{0n1n | 0nk, for some fixed k}
•
is regular, for any fixed k.
For k=3:
L = {ε, 01, 0011, 000111}
0
q0
q1
1
0/1
q7
0
q2
1
0/1
q6
0
q3
1
1
0
1
1
q5
q4
0
0
2
Pumping Lemma for Regular Languages
•
Pumping Lemma relates the size of string accepted
with the number of states in a DFA
•
If there is a loop in the path for accepting a string,
what type of strings are accepted via the loop(s)?
•
Think of a string in the language: 001 10 111, with middle 10 on a loop
q0  001  q5  10  q5  111
Now, what type of strings should also be accepted?
•
What is the largest string accepted by a DFA with n states,
presuming there is no LOOP ?
3
Pumping Lemma for Regular Languages
•
Lemma: (the pumping lemma)
Let M be a DFA with |Q| = n states.
If there exists a string x in L(M), such that |x|  n,
then there exists a way to write it as x = uvw,
where u,v, and w are all in Σ* and:
– 1 |uv|  n
– |v|  1
– AND, all the strings uviw are also in L(M), for all i  0
4
Pumping Lemma for Regular Languages
•
Proof:
Let x = a1a2 … am where m  n, x is in L(M), and δ(q0, a1a2 … ap) = qjp
a1
a2
qj0 qj1
a3 … am
qj2 qj3… qjm
mn
and
qj0 is q0
Consider the first n symbols, and first n+1 states on the above path:
a1
a2
qj0 qj1
a3 … an
qj2 qj3… qjn
Since |Q| = n, it follows from the pigeon-hole principle that js = jt for some
0  s<t  n, i.e., some state appears on this path twice (perhaps many states
appear more than once, but at least one does).
5
n
a1
q0
a2
qj1
as
…
as+1
at
at+1
…
qjs
qjt
an
…
qjn
same state
so, loop >= 1
as+1…at
a1…as
q0
at+1…an
qjs = qjt
qjn
6
•
Let:
– u = a1…as
– v = as+1…at
•
Since 0  s<t  n and uv = a1…at it follows that:
– 1  |v| and therefore 1  |uv|
– |uv|  n and therefore 1  |uv|  n
•
In addition, let:
– w = at+1…am
•
It follows that uviw = a1…as(as+1…at)iat+1…am is in L(M), for all i  0.•
In other words, when processing the accepted string x, the loop was traversed
once, but could have been traversed as many times as desired, and the
corresponding strings would be accepted. AND, “as many times” >= 0
7
•
Example:
1
0/1
q0
0/1
q1
q2
0/1
0
q3
0
q4
1
n=5
x = 0001000 is in L(M)
0
q0
0
q1
0
q2
1
q3
0
q1
0
q2
0
q3
q4
first n+1 states
u=0
v = 001
w = 000
uviw is in L(M), i.e., 0(001)i000 is in L(M), for all i  0
8
1
q0
0/1
q1
0/1
q2
0/1
0
q3
0
q4
1
•
Note that this does not mean that every string accepted by the DFA has this
form:
– 001 is in L(M) but is not of the form 0(001)i000
•
Similarly, this does not mean that every long string accepted by the DFA has
this form:
– 0011111 is in L(M), is very long, but is not of the form 0(001)i000
•
Note, however, in this latter case 0011111 could be similarly decomposed.
9
•
Note: It may be the case that no x in L(M) has |x|  n.
0/1
0/1
q0
0/1
q1
q2
10
• Example:
a
b
q0
n=4
a
q1
b
a
q2
b
a/b
q3
x = bbbab is in L(M)
|x| = 5
u=ε
v=b
or
w = bbab
(b)ibbab is in L(M), for all i  0
b b b a b
q0 q0 q0 q0 q1 q3
u=b
u = bb
v=b
v=b
w = bab
w = ab
b(b)ibab is in L(M), for all i  0
11
Non-Regular Language: Example
• Theorem: The language:
L = {0k1k | k  0}
is not regular.
(1)
• Proof: (by contradiction) Suppose that L is regular. Then there exists a DFA M
such that:
L = L(M)
(2)
We will show that M accepts some strings not in L, contradicting (2).
Suppose that M has n states, and choose a string x=0m1m, where m>>n.
By (1), x is in L.
By (2), x is also in L(M), note that the machine accepts a language not just a
string
12
Since |x| = m >> n, it follows from the pumping lemma that:
– x = uvw
– 1  |uv|  n
– 1  |v|, and
– uviw is in L(M), for all i  0
Since 1  |uv|  n and n<<m, it follows that 1  |uv| < m.
Also, since x = 0m1m it follows that uv is a substring of 0m.
In other words v=0j, for some j  1.
Since uviw is in L(M), for all i  0, it follows that 0m+cj1m is in L(M), for all c 
1 (no. of loops), and j  1 (length of the loop)
But by (1) and (2), 0m+cj1m is not in L(M), for any c  1, i.e., m+cj > m,
a contradiction.•
• Note that L basically corresponds to balanced parenthesis.
13
Non-Regularity Example
• Theorem: The language:
L = {0k1k2k | k  0}
is not regular.
(1)
• Proof: (by contradiction) Suppose that L is regular. Then there exists a DFA M
such that:
L = L(M)
(2)
We will show that M accepts some strings not in L, contradicting (2).
Suppose that M has n states, and consider a string x=0m1m2m, where m>>n.
By (1), x is in L.
By (2), x is also in L(M), note that the machine accepts a language not just a
string
14
Since |x| = m >> n, it follows from the pumping lemma that:
– x = uvw
– 1  |uv|  n
– 1  |v|, and
– uviw is in L(M), for all i  0
Since 1  |uv|  n and n<<m, it follows that 1  |uv|  m.
Also, since x = 0m1m2m it follows that uv is a substring of 0m.
In other words v=0j, for some j  1.
Since uviw is in L(M), for all i  0, it follows that 0m+cj1m2m is in L(M), for all c
 1 and j  1.
But by (1) and (2), 0m+cj1m2m is not in L(M), for any integer c  1, a
contradiction.•
• Note that the above proof is almost identical to the previous proof.
15
NonRegularity Example
• Theorem: The language:
L = {0m1n2m+n | m,n  0}
is not regular.
(1)
• Proof: (by contradiction) Suppose that L is regular. Then there exists a DFA M
such that:
L = L(M)
(2)
We will show that M accepts some strings not in L, contradicting (2).
Suppose that M has n states, and consider a string x=0m1n2m+n, where m>>n.
By (1), x is in L.
By (2), x is also in L(M).
16
Since |x| = m >> n, it follows from the pumping lemma that:
–
–
–
–
x = uvw
1  |uv|  n
1  |v|, and
uviw is in L(M), for all i  0
Since 1  |uv|  n and n<<m, it follows that 1  |uv|  m.
Also, since x = 0m1n2m+n it follows that uv is a substring of 0m.
In other words v=0j, for some j  1.
Since uviw is in L(M), for all i  0, it follows that 0m+cj1m2m+n is in L(M), for all
c  1. In other words v can be “pumped” as many times as we like, and we still
get a string in L(M).
But by (1) and (2), 0m+cj1n2m+n is not in L(M), for any c  1, because the
acceptable expression should be 0m+cj1n2m+cj+n, a contradiction.•
17
• What about {0m1n | m, n  0}?
Is this regular language, or not?
18
•
Theorem: Let M = (Q, Σ, δ, q0, F) be a DFA. Then L(M) is finite iff |x| < |Q| for
all x in L(M).
•
Proof:
(if) Suppose that |x| < |Q| for all x in L(M). Since the number of states |Q| and
the number of input symbols |Σ| are both fixed, it follows that there are at most a
finite number of strings of length less than |Q|. It follows that L(M) is finite.
(Exercise: provide an upper bound on the number of such strings).
(only if) By contradiction. Suppose that L(M) is finite, but that |x|  |Q| for some
x in L(M). From the pumping lemma it follows that x=uvw, |v|  1 and uviw is
in L(M) for all i  0. But then L(M) would be infinite, a contradiction.•
19
•
Theorem: Let M = (Q, Σ, δ, q0, F) be a DFA. Then L(M) is infinite iff there
exists an x in L(M) such that |x|  |Q|.
•
Proof:
(if) Suppose there exists an x in L(M) such that |x|  |Q|. From the pumping
lemma it follows that x=uvw, |v|  1 and uviw is in L(M) for all i  0.
Therefore L(M) is infinite.
(only if) By contradiction. Suppose that L(M) is infinite, but that there is NO x
in L(M) such that |x|  |Q|. It follows that each x in L(M) has length less than
|Q|. Since the number of states |Q| and the number of input symbols |Σ| are
both fixed, it follows that there are at most a finite number of strings of length
less than |Q|. It follows that L(M) is finite. A contradiction.•
•
Note that the above also follows directly from the previous theorem.
20
•
Theorem: Let M = (Q, Σ, δ, q0, F) be a DFA. Then L(M) is non-empty iff
there exists an x in L(M) such that |x| < |Q|.
•
Proof:
(if) Suppose there exists a string x in L(M) such that |x| < |Q|. Then clearly
n
L(M) is non-empty.
z
(only if) By contradiction. Suppose that L(M) is non-empty, but that there
exists no string x in L(M) such that |x| < |Q|. It follows that for all strings y in
L(M), |y| is  |Q|.
Let z be a string of shortest length in L(M). Then |z|  n and, by the pumping
lemma z=uvw, |v|  1 and uviw is in L(M) for all i  0. But then uv0w = uw is
in L(M) and:
|uw| = |z| - |v|
 |z| - 1
< |z|
Since uw is in L(M), it follows that z is not a string of shortest length in L(M),
a contradiction.•
21
•
Corollary: Let M = (Q, Σ, δ, q0, F) be a DFA. Then there is an algorithm to
determine if L(M) is empty.
•
Proof:
From the theorem it follows that if L(M) is non-empty then there exists a
string x where |x| < n and n = |Q| such that M accepts x. We can try running M
on each string of length < n to see if any are accepted. If one is accepted then
L(M) is non-empty, otherwise L(M) is empty. Since the number of states |Q|
and the number of input symbols |Σ| are both fixed, it follows that there are at
most a finite number of strings (of length less than |Q|) that need to be tested.•
22
•
Theorem: Let M = (Q, Σ, δ, q0, F) be a DFA and let n = |Q|. Then L(M) is
infinite iff there exists an x in L(M) such that n  |x| < 2n.
2n
n
z
n
•
•
Proof: (if part left as an exercise; similar to the previous theorem).
(only if: by Contradiction) Suppose there is no string of length between n and
2n in the language accepted by DFA M with n states.
Suppose a string z is the shortest string accepted by the machine M, such that
|z|  2n. Since |z| > n, by pumping lemma z = uvw, and 1  |v|  n, because |uv|
 n. Then z’=uw must be accepted by the machine M.
So, |z’| = |z| - |v| cannot be < n. As per assumption, |z’|  2n is not possible as
z is the shortest such string and |z|>|z’|. And we presumed that there is no
string of size between n and 2n, so, n  |z’|  2n cannot be true either.
Contradiction.
•
•
Corollary: Let M = (Q, Σ, δ, q0, F) be a DFA. Then there is an algorithm to
determine if L(M) is infinite.
Proof: (left as an exercise).
23
Closure Properties of Regular Languages
•
Consider various operations on languages:
L
L1  L2
L1  L2
L1  L2
L1L2
L*
L+
= {x | x is in Σ* and x is not in L}
= {x | x is in L1 or L2}
= {x | x is in L1 and L2}
= {x | x is in L1 but not in L2}
= {xy | x is in L1 and y is in L2}
=  Li = L0 U L1 U L2 U…
=  Li = L1 U L2 U…

i 0

i 1
24
•
Theorem: Let M = (Q, Σ, δ, q0, F) be a DFA. Then M’ = (Q, Σ, δ, q0, Q-F) is a
DFA where L(M’) = Σ* - L(M).
•
Proof: (left as an exercise).•
•
Corollary: The regular languages are closed under complementation, i.e., if L
is a regular language then so is L .
•
Does the above construction work for NFAs?
25
•
Theorem: The regular languages are closed with respect to union,
concatenation and Kleene closure.
•
Proof: Let L1 and L2 be regular languages. By definition there exist regular
expressions r1 and r2 such that L(r1) = L1 and L(r2) = L2. But then r1 + r2 is a
regular expression representing L1  L2 . Similarly for concatenation and
Kleene closure.
•
Corollary: L+ too: it is LL*
26
•
Lemma: Let L1 and L2 be subsets of Σ*. Then L1  L2  L1  L2 .
•
Theorem: Let L1 and L2 be regular languages. Then L3  L1  L2 is a
regular language.
•
Proof: Let L1 and L2 be regular languages. Then:
L1
is regular
L2
is regular
L1  L2
is regular
L1  L2
is regular
[uses: union regular languages is regular]
But by the lemma in set theory:
L1  L2  L1  L2  L1  L2
•
27
•
A direct construction of a DFA M such that L( M )  L1  L2 :
•
Let:
M1 = (Q1, Σ, δ1,p0,F1), where Q1 = {p0, p1,…}
M2 = (Q2, Σ, δ2,q0,F2), where Q2 = {q0, q1,…}
where L(M1) = L1 and L(M2) = L2.
•
Construct M where:
Q
= Q1 x Q2
= {[p0, q0], [p0, q1], [p0, q2],…}
Σ
= as with M1 and M2
F
= F1 x F2
Note that M has a state for each
pair of states in M1 and M2
start state = [p0, q0]
δ([pi, qj], a) = [δ1(pi, a), δ2(qj, a)]
for all [pi, qj] in Q and a in Σ
28
•
Example:
1
1
1
0
0
p0
p1
q0
q1
1
0
0
The construct gives:
Q
q2
= Q1 x Q2
= {[p0, q0], [p0, q1], [p0, q2], [p1, q0], [p1, q1], [p1, q2]}
Σ
= {0, 1}
F
= {[p1, q2]}
0/1
start state = [p0, q0]
δ – Some examples:
δ([p0, q2], 0) = [δ1(p0, 0), δ2(q2, 0)] = [p1, q2]
δ([p1, q2], 1) = [δ1(p1, 1), δ2(q2, 1)] = [p1, q2]
29
•
Final Result:
1
1
1
p0, q0
p0, q1
0
p0, q2
0
0
0
0
0
p1, q0
p1, q1
p1, q2
1
1
1
•
Question: What if Σ1 does not equal Σ2?
•
Exercise: Prove that
L1  L2
is a regular language.
30