3. Relacje – odpowiedzi
3.1.
R+ = {(a,a), (a,b), (a,c), (a,d), (d,d), (d,c), (d,b), (d,a)}
R* = R+ {(b,b), (c,c), (e,e)}
3.2.
R+ = { (a,b), (a,c), (a,d), (b,c), (b,d), (c,d) } R* = R+ {(a,a), (b,b), (c,c), (d,d), (e,e)}
3.3.
R+ = {a, b, c, d} {a, b, c, d}
R* = R+ {(e,e)}
3.4.
R+ = {a, b, c, d} {a, b, c, d}
R* = R+ {(e,e)}
3.5.
R+ = {a,b,c,d} {a,b,c,d}
R* = R+ { (e,e) }
3.6.
R+ = { (a,a), (a,d), (b,a), (b,b), (b,c), (b,d), (c,a), (c,b), (c,c), (c,d), (d,a), (d,d) } R* = R+ { (e,e) }
3.7.
R+ = {(a,b), (a,c), (a,d), (a,e), (b,c), (b,d), (b,e), (c,d), (c,e), (d,e)}
R* = R+ {(a,a), (b,b), (c,c), (d,d), (e,e)}
3.8.
Szkic algorytmu:
(1) Re := R;
(2) Re := Re { (a,a) | a A }; /* dla uzyskania zwrotności */
(3) Re := Re { (a,b) | (b,a) Re }; /* dla uzyskania symetrii */
(4) Re := Re { (a,c) | ( (a,b) Re) ( (b,c) Re) }; /* dla uzyskania przechodniości */
Dla R = { (a,b), (a,c), (d,e) } przy alfabecie A = {a, b, c, d, e, f} otrzymamy (wypisujemy tylko nowopowstałe pary w każdym kroku):
(1) Re := { (a,b), (a,c), (d,e) };
(2) Re := Re { (a,a), (b,b), (c,c), (d,d), (e,e), (f,f) } = { (a,b), (a,c), (d,e), (a,a), (b,b), (c,c), (d,d), (e,e), (f,f) }
(3) Re := Re { (b,a), (c,a), (e,d) } = { (a,b), (a,c), (d,e), (a,a), (b,b), (c,c), (d,d), (e,e), (f,f), (b,a), (c,a), (e,d) }
(4) Re := Re { (b,c), (c,b) } = { (a,b), (a,c), (d,e), (a,a), (b,b), (c,c), (d,d), (e,e), (f,f), (b,a), (c,a), (e,d), (b,c), (c,b) }
Mamy więc trzy klasy abstrakcji relacji Re: [a] = [b] = [c] = {a, b, c}
[d] = [e] = {d, e}
[f] = {f}
3.9.
FIRST1 = { (S,S), (S,A), (A,C), (B,e), (C,A), (C,e) } FIRST2 = { (S,S), (S,A), (S,C), (A,A), (A,e), (C,C) } FIRST3 = { (S,S), (S,A), (S,C), (S,e), (A,C), (C,A), (C,e) } FIRST4 = { (S,S), (S,A), (S,C), (S,e), (A,A), (A,e), (C,C) }
FIRST5 = { (S,S), (S,A), (S,C), (S,e), (A,C), (C,A), (C,e) } = FIRST3
FIRST+ = { (S,S), (S,A), (S,C), (S,e), (A,A), (A,C), (A,e), (B,e), (C,A), (C,C), (C,e) } FIRST* = FIRST+ { (B,B), (e,e), (f,f), (g,g) }
LAST1 = { (S,A), (S,g), (A,B), (A,e), (B,e), (C,A), (C,g) } LAST2 = { (S,B), (S,e), (A,e), (C,B), (C,e) }
LAST3 = { (S,e), (C,e) } LAST4 =
LAST+ = { (S,A), (S,B), (S,e), (S,g), (A,B), (A,e), (B,e), (C,A), (C,B), (C,e), (C,g) } LAST* = LAST+ { (S,S), (A,A), (B,B), (C,C), (e,e), (f,f), (g,g) }
head(S) = { S, A, C, e } head(A) = { A, C, e } head(B) = { B, e } head(C) = { A, C, e }
tail(S) = { S, A, B, e, g } tail(A) = { A, B, e } tail(B) = { B, e }
tail(C) = { A, B, C, e, g }
3.10.
FIRST1 = { (E,E); (E,T); (T,T); (T,F); (F,(); (F,a) } FIRST2 = { (E,E); (E,T); (E,F); (T,T); (T,F); (T,(); (T,a) }
FIRST3 = { (E,E); (E,T); (E,F); (E,(); (E,a); (T,T); (T,F); (T,(); (T,a) }
FIRST4 = { (E,E); (E,T); (E,F); (E,(); (E,a); (T,T); (T,F); (T,(); (T,a) } = FIRST3 FIRST+ = { (E,E); (E,T); (E,F); (E,(); (E,a); (T,T); (T,F); (T,(); (T,a), (F,(); (F,a) } FIRST* = FIRST+ { (F,F); (+,+); (*,*); ((,(); (),)); (a,a) }
LAST1 = { (E,T); (T,F); (F,)); (F,a) } LAST2 = { (E,F); (T,)); (T,a) } LAST3 = { (E,)); (E,a) } LAST4 =
LAST+ = { (E,T); (E,F); (E,)); (E,a); (T,F); (T,)); (T,a); (F,)); (F,a) } LAST* = LAST+ { (E,E); (T,T); (F,F); (+,+); (*,*); ((,(); (),)); (a,a) }
head(E) = { E, T, F, (, a } head(T) = { T, F, (, a } head(F) = { F, (, a }
tail(E) = { E, T, F, ), a } tail(T) = { T, F, ), a } tail(F) = { F, ), a }
3.11.
Niech R będzie relacją równoważności na A oraz niech a i b będą elementami A. Dalej, niech [a]R i [b]R będą odpowiednio klasami abstrakcji zawierającymi a i b, tzn.
[a]R = { c | aRc } i [b]R = { c| bRc }. Pokażemy, że albo [a]R = [b]R, albo też
[a]R [b]R = . Przypuśćmy, że [a]R [b]R , i niech d należy do [a]R [b]R. Niech teraz e będzie dowolnym elementem [a]R. Wtedy aRe. Ponieważ d należy do
[a]R [b]R, więc mamy aRd i bRd. Na mocy symetrii R, dRa. Stosując dwukrotnie własność przechodniości R, otrzymamy bRa i bRe. Tak więc e należy do [b]R, skąd [a]R [b]R. Ponieważ w analogiczny sposób można wykazać, że [b]R [a]R, to [a]R = [b]R. Zatem różne klasy abstrakcji są rozłączne. Aby wykazać, że klasy te tworzą podział A, wystarczy zauważyć, że wobec zwrotności R każde a należy do klasy abstrakcji [a]R, czyli sumą klas abstrakcji jest A.
3.12.
Niech A = {a, b, c, d} i R A A. Wtedy np. R = { (a,b), (b,a), (a,a), (b,b) }
3.13.
(g) K0 = { 0n | n 0 } K1 = { 0n2 | n 0 }
K2 = { 0n201m | n 0, m 0 } K3 = { 0n210m | n 0, m 0 }
K4 = { 0n201m0 | n 0, m 0 } { 0n210m1 | n 0, m 0 } K5 = {0, 1, 2}* – (K0 K1 K2 K3 K4)
(h) K0 = { ɛ }
Klasy jednoelementowe Kai = {ai | 100 i 1 }
Klasy wieloelementowe Kbi = {ambn | 100 m n 1, 99 m-n 0 dla i=m-n }
Liczba klas abstrakcji: 1+100+100+1=202 Liczba słów języka: 1+2+3+…+100 = 5050
(i) Klasy jednoelementowe Kbi = {bi | 16 i 0 }
Klasy pięcioelementowe Kaj = {biaj | 1024 j 1, i = 2m, 4 m 0 }
Liczba klas abstrakcji: 1+17+1024=1042 Liczba słów języka: 511 = 55