Moed B + solutions

‫אוטומטים ושפות פורמליות‬
‫מבחן מועד א' תשע"א ‪12.01.2011‬‬
‫פרופ' יעקב הל‪-‬אור‬
‫מספר ת‪.‬ז‪______________________________:‬‬
‫מספר מחברת‪_________________________:‬‬
‫שאלה‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫סה"כ‬
‫ניקוד‬
‫‪/25‬‬
‫‪/25‬‬
‫‪/25‬‬
‫‪/25‬‬
‫‪/100‬‬
‫הנחיות‪:‬‬
‫‪ .1‬משך הבחינה ‪ 3‬שעות‬
‫‪ .2‬יש לענות על דפים אלו בלבד ואין לחרוג מהמקום המוקצה לכל תשובה‪ .‬יש לענות בכתב יד קריא וברור‪ .‬תשובה‬
‫שאיננה קריאה תפסל!‬
‫‪ .3‬המבחן עם חומר סגור‪ .‬דף סיכום מצורף‪.‬‬
‫‪ .4‬מותר להסתמך בתשובותיכם על טענות שהוכחו בכתה או טענות שמצורפות בדף הסיכום‪.‬‬
‫‪ .5‬שימו לב‪ :‬אין צורך ולא כדאי ל"המציא" תשובות‪ .‬במידה ואינכם יודעים תשובה על סעיף מסויים ניתן לכתוב‬
‫"אינני יודע" ולקבל ‪ 02%‬מהניקוד עבור הסעיף‪ .‬תשובה לא נכונה לא תקבל ניקוד כלל‪.‬‬
‫בהצלחה!‬
‫שאלה ‪ 25( 1‬נקודות)‬
‫השלם את הטבלה הבאה‪ ,‬סמן בכל כניסה בטבלה נכון (‪ )‬או לא נכון (‪ .)x‬אין צורך לנמק!‬
‫‪1‬‬
‫איננה חסרת‬
‫הקשר‬
‫חסרת הקשר‬
‫רגולרית‬
‫שפה‬
‫‪V‬‬
‫‪X‬‬
‫‪X‬‬
‫}‪{anbnc2n | n>0‬‬
‫‪X‬‬
‫‪V‬‬
‫‪X‬‬
‫}‪{aibjck | i,j,k0, ij or jk‬‬
‫‪X‬‬
‫‪V‬‬
‫‪V‬‬
‫‪{xyz | xzL, yL} and L is regular‬‬
‫‪X‬‬
‫‪V‬‬
‫‪V‬‬
‫}‪{(ab)ka(ba)k | k>0‬‬
‫‪X‬‬
‫‪V‬‬
‫‪X‬‬
‫}‪{anbmcn | m,n0 and m+n is even‬‬
Explanations:
a. L= anbnc2n is not CFL.
Proof: Assume L is a CFL. Define a regular substitution S(c)=c+d.
 S(L) is a CFL  L’= [ S(L)  a*b*c*d* ]={anbncndn} is CFL. Define a regular
substitution E(d)=.  E(L’) is CFL. But E(L’) is anbncn which is known to be non
CFL  contradiction!
b. The language is CFL, where the grammar is:
SE | F
EaEbC | aA | Bb
FAbFc | bB | Cc
CcC | 
BbB | 
AaA | 
c. The language is regular.
L is regular  there is a DFA A s.t. L(A)=L.
L is regular  ~L (i.e. A complement) is regular  there is a DFA B s.t.
L(B)=~L.
It is possible to build an NFA C for L’={xyz | xzL, yL} s.t. L(C)=L’  L’ is
regular.
The NFA C is composed as follows:
a. We start with the DFA A after making all its accepting states regular
states (non-accepting). The starting state is the starting state of A.
b. For each state q in A we add an epsilon transition to the starting state of
a new DFA Bq which is a copy of the DFA B.
c. From each accepting state in Bq we add an epsilon transition to the
starting state of a new DFA Aq which is a copy of the DFA A.
d. We make all accepting states in Bq, non-accepting states.
d. {(ab)ka(ba)k | k>0} is regular. Note that (ab)ka(ba)k =
= a (ba)k(ba)k=a(ba)2k=a(baba)(baba)* which is a RE  regular
e. This is a CFL. We can divide into two cases: n is even and n is odd.
The grammar is:
SE | aOc
EaaEcc | B
OaaOcc | bB
BbbB | 
2
‫שאלה ‪ 25( 2‬נקודות)‬
‫לכל אחת מהטענות הבאות הקיפו נכון או לא נכון ונמקו בקצרה (במקום המוקצה לכך בלבד)‪.‬‬
‫בכל טענה‪ 3 ,‬נק' יינתנו לאבחנה נכונה ו‪ 3-‬נק' לנימוק‪.‬‬
‫א‪ .‬חיתוך של שפה חפשית הקשר עם שפה סופית היא שפה רגולרית‪.‬‬
‫נכון‪ /‬לא נכון‬
‫נימוק‪:‬‬
‫‪True. The intersection of a finite language with any language is finite  regular‬‬
‫ב‪ .‬אוטומט ‪ A DFA‬בעל ‪ 6‬מצבים מזהה שפה ‪ L‬מעל }‪. ={0,1‬‬
‫אם בשפה ‪ L‬יותר מ ‪ 70‬מילים אזי ‪ L‬אינסופית‪.‬‬
‫נכון‪ /‬לא נכון‬
‫נימוק‪:‬‬
‫‪True. A has 6 states, i.e. if wL and |w|6, w can be pumped using the pumping‬‬
‫‪lemma for RL  L is infinite. We will show that there must be a word wL where‬‬
‫‪|w|6. The maximum number of words where for |w|<6 is 1+2+4+8+16+32=63 i.e.‬‬
‫‪there must be a word wL where |w|6  L is infinite.‬‬
‫ג‪ .‬הביטויים הרגולריים הבאים שקולים‪:‬‬
‫*‪B= (ab*)*ba‬‬
‫נכון‪ /‬לא נכון‬
‫*‪A=(a*ba*)*a‬‬
‫נימוק‪:‬‬
‫‪False. For example, aA but aB‬‬
‫ד‪ .‬כל המילים בדקדוק הבא הן בעלות אורך זוגי‪:‬‬
‫נכון‪ /‬לא נכון‬
‫נימוק‪:‬‬
‫‪S  AB‬‬
‫‪A  aAb | c‬‬
‫‪B  bBa | c‬‬
‫‪True. A generates odd length prefix, and B generates odd length suffix.‬‬
‫‪Concatenating together we must have an even length word.‬‬
‫שאלה ‪ 25( 3‬נקודות)‬
‫נתון אוטומט ‪ A‬המגדיר שפה )‪ L=L(A‬מעל }‪ .={a,b‬לכל שפה מהשפות הבאות קבע אם היא שפה רגולרית‬
‫או לא‪ .‬במידה ורגולרית הוכח בעזרת בניית אוטומט (‪ .)NFA‬במידה ולא רגולרית הוכח בעזרת לימת הניפוח או‬
‫בעזרת אי‪-‬קיום תכונות סגור‪.‬‬
‫‪3‬‬
dropa(L)={xy | xayL } .a
dropa(L) is regular. We prove it by construction: we will build a NFA B recognizing
dropa(L)  dropa(L) is regular.
Assume A=(Q,,, q0,F). The NFA B=(Qb,b,b, q0b,Fb) is composed of two copies of
DFA A, denoted A1=(Q1={qi1},,1, q01,F1) and A2=(Q2={ qi2},,2, q02,F2) as follows:
a. Qb= Q1Q2
b. b = 
c. q0b= q01
d. Fb = F2
e. b = 12{ for each ( (qi1,a)=qj1 )1 add a rule (qi1,)= qj2 }
adda*(L) = {xa*y | xyL } .b
adda*(L) is regular. We prove it by construction: we will build a NFA B recognizing
adda*(L)  adda*(L) is regular.
Assume A=(Q,,, q0,F). The NFA B=(Qb,b,b, q0b,Fb) is composed of three copies
of DFA A, denoted A1=(Q1={qi1},,1, q01,F1) , A2=(Q2={qi2},,2, q02,F2) and
A3=(Q3={qi3},,3, q03,F3) as follows:
a. Qb= Q1Q2 Q3
b. b = 
c. q0b= q01
d. Fb = F3
e. b = 13{ for each qi1Q1 add 3 rules: (qi1,)=qi2 , (qi2,a)=qi2 and
(qi2,)=qi3 }
add_mida (L)={xay | xyL & |x|=|y|} .c
add_mida (L) is not necessarily regular.
A contrary example: Let L={b2n | n>0}. L is regular (RE exists: L=(bb)* ).
L’=add_mida (L)={bnabn | n>0 }
L’ is not-regular.
Proof: Assume by contradiction that L’ is regular.
Define a regular substitution S(b)=b+c.
S(L’) is regular.
 L’’=(S(L’)  b*ac* )=bnacn is regular (closure under intersection).
Define a regular substitution E(a)=
E(L’’) is regular
But E(L’’)=bncn is not regular  contradiction.
4
)‫ נקודות‬25( 4 ‫שאלה‬
‫ אם היא חסרת‬.‫ לגבי כל שפה החלט אם היא חסרת הקשר או לא‬. ={0,1} ‫שתי השפות הבאות מוגדרות מעל‬
.‫ ואם איננה חסרת הקשר הוכח בעזרת לימת הניפוח‬,‫הקשר בנה דקדוק המזהה את השפה‬
L={xy | |x|=|y| but xy} .a
L is CFL (as was shown in class).
L={ n0mn1m  n1mn0m | m,n0} = { n0nm1m  n1nm0m | m,n0}
And the grammar is:
SAB | BA
ADAD | 0
BDBD | 1
D0 | 1
L={x#y | |x|=|y| but xy} .b
L is CFL.
L={ L1  L2 where L1=n0m#n1m and L2=n1m#n0m | m,n0}
Case a: nm
L1a= mn-m0m#mn-m1m
L2a= mn-m1m#mn-m0m
Case b: n<m
L1b= n0m-nn #n1m-nn
L2b= n1m-nn #n0m-nn
Each case can be parsed recursively. For example:
L1a= m n-m 0 m # m n-m1m
C
B1
A1
And the grammar is:
SA1 | A2 | A3 | A4
D0 | 1
CDCD | #
A1DA1D | B11
B1DB1D | 0C
5
A2DA2D | B20
B2DB2D | 1C
A3DA3D | 0B3
B3DB3D | C1
A4DA4D | 1B4
B4DB4D | C0
6