Aby do ABBY
Poczytuję ostatnio o lingwistyce matematycznej, a ściślej – o językach formalnych. To temat ciekawy i dość przystępny, choć bardzo rzadko poruszany w lżejszej formie. W Polsce ukazała się chyba tylko jedna książka popularnonaukowa, w której jest krótki rozdział o gramatyce formalnej – Granice rozumu A.K. Dewdneya (2005). W sieci znalazłem też polską stronę z interesującym i zrozumiałym dla maluczkich opisem podstawowych zagadnień. Wspominam o tym, bo języki formalne są trochę łamigłówkowe.
Mamy dwa słowa – np. AJEDREZ i SAKK – oraz zagadkę: czy pochodzą one z jednego, czy z dwu różnych języków naturalnych? Kto nie jest lingwistą, musi sięgnąć do źródeł, bo odpowiedź „na czuja” często jest loterią, zwłaszcza gdy języki należą do tej samej rodziny. W przypadku języków formalnych – nawet opartych na najskromniejszym 2-literowym alfabecie, czyli przypominającym system dwójkowy – sprawa też bywa nieprosta, ale przynajmniej istnieje metoda, pewien schemat dochodzenia do odpowiedzi na pytanie o wspólnotę językową pary słów.
Oto dwa słowa:
(1) BBABB
(2) ABBA
Oba należą do jednego języka wówczas, jeżeli jedno z nich można przekształcić w drugie, korzystając z gramatyki przejściowej, która w tym przypadku wygląda tak:
(a) A -> BAA
(b) AAB -> A
(c) BBA -> AB
Oznacza to, że wychodząc od słowa (1) należy w kolejnych krokach wymieniać litery lub grupy liter (podsłowa) na inne – zgodnie z gramatyką – dotąd, aż powstanie słowo (2). Na przykład, dokonując w (1) najpierw podmiany (a), a potem (c), początek metamorfozy wyglądałby tak (wymieniane litery są wyróżnione):
BBABB > BBBAABB > BABABB > …
Zadanie polega na dotarciu od (1) do (2) w minimalnej liczbie kroków.
Komentarze z prawidłowymi rozwiązaniami uwalniane są wieczorem w przeddzień kolejnego wpisu. Wpisy pojawiają się co kilka dni.
Komentarze
1. BB(A)BB->BBBAABB
2. BBB(AAB)B->BBBAB
3. BBB(A)B->BBBBAAB
4. BBBB(A)AB->BBBBBAAAB
5. BBB(BBA)(AAB)->BBBABA
6. B(BBA)BA->BABBA
7. B(A)BBA->BBAABBA
8. BB(AAB)BA->BBABA
9. (BBA)BA->ABBA
1. [BBA]BB > (AB)BB
2. [A]BBB > (BAA)BBB
3. B[AAB]BB > B(A)BB
4. B[A]BB > B(BAA)BB
5. BB[AAB]B > BB(A)B
6. BB[A]B > BB(BAA)B
7. BBB[AAB] > BBB(A)
8. BBB[A] > BBB(BAA)
9. BB[BBA]A > BB(AB)A
10. [BBA]BA > (AB)BA
Jestem prawie pewien, ze nie da sie zejsc ponizej 10 wymian
a
BB(A)BB
BBB(A)(A)BB
BB(BBA)AB(AAB)B
(BBA)BAB(A)B
A(BBA)BB(AAB)
(AAB)BBA
ABBA
Jeden krok oznacza jedna wymianę?
Uważam, że powinna być dozwolona wielokrotna wymiana w jednym kroku, jeśli jest ona możliwa, np:
(A)BB(A) -> BAABBBAA
Umówmy się, że są dwie „konkurencje”:
1. minimalna liczba wymian
2. minimalna liczba kroków – wtedy w jednym kroku można dokonać kilku nie kolidujących z sobą (równoczesnych) wymian.
mp
1. BB(A)BB
2. BBB(AAB)B
3. B(BBA)B
4. B(A)BB
5. BBA(A)BB
6. BBAB(A)ABB
7. BBABBA(AAB)B
8. BBA(BBA)AB
9. BB(AAB)(A)B
10. (BBA)B(AAB)
ABBA
mała poprawka:
1. BB(A)BB
2. BBB(AAB)B
3. B(BBA)B
4. B(A)BB
5. BBA(A)BB
6. BBAB(A)ABB
7. BBA(BBA)(AAB)B
8. BB(AAB)(A)B
9. (BBA)B(AAB)
ABBA
1. BB(A)BB
2. BBB(A)ABB
3. BBBBA(AAB)B
4. BBBB(AAB)
5. BB(BBA)
6. (BBA)B
7. AB(A)B
8. ABB(AAB)
ABBA
W 6. podmianie jest błąd – powstaje ABB, a nie ABAB.
mp
Oj, widze w tych 8 ruchach błąd 🙁
bb(a)bb – bbbaabb
b(bba)abb – bababb
b(a)babb – bbaababb
bb(aab)abb – bbaabb
bb(aab)b – bbab
bb(a)b – bbbaab
bbb(a)ab – bbbbaaab
bb(bba)aab – bbabaab
(bba)b(aab) – abba