Gramatyka
asd: Mam odgadnąć gramatyki.
Język : L = {a,b,aba,aabaa,aaabaaa,aaaabaaaa,.....}
Zapisałem to tak,ale nie mam pojęcia czy dobrze
G=<N,V,P,S>
N={X,Y}
V={a,b}
P={X−>a,Y−>b,X−>Y,X−>XbX}
S = X
4 lut 12:10
Filip:
Może inaczej zapisać zbór produkcji?
P = { X→XYX | a | ε | Y, Y → b}
Ja bym to widział tak, poczekaj na opinie
Pytającego, ponieważ nieraz mi także w tym
pomagał
4 lut 12:59
Filip:
Wydaje mi się, że to jest to samo prawie co u ciebie, jednak inaczej zapisane (tak mnie uczyli)
Tak teraz patrzę, że u mnie ε jest zupełnie zbędne
Wychodzi na to, że mamy to samo (usuwając ε), jednak inaczej zapisane
4 lut 13:06
Filip:
No i nie wiem jak u ciebie się oznaczało gramatykę, u mnie to było
G = (V, T, P, S)
W tym przypadku
V = {X, Y}
T = {a, b}
P = {X → XYX, X → a, X → Y, Y → b }
S = X
4 lut 13:14
Filip:
Tak teraz patrze, to nie będzie poprawne, ze względu na to, iż przy takim zbiorze produkcji,
możemy dostać przykładowy łańcuch "bba", może coś takiego?
P = { Y → b, Y → XYX, X → a }
4 lut 15:01
asd: aa u mnie różnie,inaczej na wykładach inaczej na ćwiczeniach − dlatego sam już nie wiem jak mam
oznaczać
a da się uzyskać słowo b w Twoim zapisie skoro S = X ?
4 lut 16:15
Filip:
Nie, trzeba zmienić opis:
G = (V, T, P, Y)
V = {X, Y}
T = {a, b}
P = {Y → XYX, Y → b, X → a}
4 lut 16:43
Filip:
Jakbyś chciał to generować przy pomocy kodu, mogłoby to mniej więcej tak wyglądać
t0 = 'a';
t1 = 'b'
ti = 'a' + ti − 1 + 'a', gdzie i > 1
Przykładowo w C++ (ostrzegam nie jestem z niego dobry), tak bym to widzał
std::vector<std::string> vec;
vec.pushback("a");
vec.pushback("b");
for (int i = 2; i < n; i++) {
std::string temp = "aa";
temp.insert(1, vec[i − 1]);
vec.pushback(temp);
}
for (auto i : vec)
std::cout << i << '\n';
4 lut 16:54
asd: na szczęście nie będę musiał chyba tego zakodzić tsk myślę, ale zerkne z ciekawości, dzięki za
pomoc
4 lut 17:10