Asi stručná odpoveď je, že ak máme zadanú iba tabuľku, tak kontrolu asociatívnosti nevieme vymyslieť nejako výrazne efektívnejšie ako kontrolou všetkých trojíc (prinajmenšom čo sa týka počtu potrebných operácií, možno pri veľkej tabuľke by sa oplatilo porozmýšľať ako to prehľadnejšie zapísať).Dominika Harmanová wrote: ↑Sun Nov 18, 2018 6:45 pm Mala by som dotaz k testovaniu asociativity v tomto type príkladov. Predpokladajme, že naša (M,+) nie je identická (alebo si nevšimneme, že je identická) s nejakou (X, +), o ktorej by sme vedeli, že je grupa, a teda že (M,+) by bola grupa. Vieme otestovať asociativitu aj inak než testovaním všetkých možností? Ja som vo svojom riešení tohto príkladu tiež využila len otestovanie všetkých prípadov, ktoré môžu nastať, lebo nič lepšie (ak také niečo existuje) mi nenapadlo.
V typických príkladoch aké sa môžu objaviť na písomkách či v domácich úlohách sa asi takéhoto niečoho netreba obávať - tam tabuľky nebudú príliš veľké. (A ak by sa predsa objavila nejaká úloha kde je dôležité si niečo všimnúť, tak zadanie bude pravdepodobne obsahovať nejaký hint.)
Čosi sa dá ušetriť tým, ak si všimneme že ak jeden z týchto troch prvkov je neutrálny prvok tak $(x*y)*z=x*(y*z)$ určite platí. (A zostávajú overiť trojice kde dosadzujem prvky okrem neutrálneho.)
Ak je zadaná operácia komutatívna (čo ľahko vidno z tabuľky), tak ešte môžeme ušetriť pár ďalších trojíc, ktoré nemusíme rátať. Napríklad z komutatívnosti hneď vidno, že sa budú zhodovať výsledky pre takéto trojice: $x*(x*x)=(x*x)*x$ alebo $(x*y)*x=x*(y*x)$.
Takisto v prípade komutatívnej operácie overujeme viacero trojíc naraz. Ak sme už skontrolovali že $x*(y*z)=(x*y)*z$, tak hneď máme zadarmo to že asociatívnosť platí keď otočíme poradie, t.j. $z*(y*x)=(z*y)*x$.
Ak by si o tomto niekto chcel prečítať viac, tak pridám aj nejaké linky:
- Light's associativity test (Wikipedia)
- Is there an easy way to see associativity or non-associativity from an operation's table? (Mathematics Stack Exchange)
Inak povedané, ak som overil asociatívnosť pre všetky trojice obsahujúce $a$, $b$; tak už nemusím kontrolovať trojice obsahujúce $a*b$, $b*a$, $a*b*a$ a podobne.
Spoiler: