introduzione
Puoi saltare questa parte se sai già cos'è un gruppo ciclico.
Un gruppo è definito da un insieme e da un'operazione binaria associativa $
(cioè (a $ b) $ c = a $ (b $ c)
. Esiste esattamente un elemento nel gruppo in e
cui a $ e = a = e $ a
per tutti a
nel gruppo ( identità ). Per ogni elemento a
nel gruppo esiste esattamente uno b
tale che a $ b = e = b $ a
( inverso ) Per ogni due elementi a, b
nel gruppo, a $ b
è nel gruppo ( chiusura ).
Possiamo scrivere a^n
al posto di a$a$a$...$a
.
Il sottogruppo ciclico generato da qualsiasi elemento a
nel gruppo è <a> = {e, a, a^2, a^3, a^4, ..., a^(n-1)}
dove si n
trova l'ordine (dimensione) del sottogruppo (a meno che il sottogruppo sia infinito).
Un gruppo è ciclico se può essere generato da uno dei suoi elementi.
Sfida
Data la tabella Cayley (tabella dei prodotti) per un gruppo finito, determinare se è ciclica o meno.
Esempio
Diamo un'occhiata al seguente tavolo Cayley:
1 2 3 4 5 6
2 3 1 6 4 5
3 1 2 5 6 4
4 5 6 1 2 3
5 6 4 3 1 2
6 4 5 2 3 1
(Questa è la tabella Cayley per Dihedral Group 3, D_3).
Questo è 1-indicizzato, quindi se vogliamo trovare il valore di 5 $ 3
, guardiamo nella quinta colonna sulla terza riga (si noti che l'operatore non è necessariamente commutativo, quindi 5 $ 3
non è necessariamente uguale a 3 $ 5
. Vediamo qui che 5 $ 3 = 6
(anche quello 3 $ 5 = 4
).
Possiamo trovare <3>
iniziando con [3]
, e quindi mentre l'elenco è unico, aggiungi il prodotto dell'ultimo elemento e il generatore (3). Abbiamo capito [3, 3 $ 3 = 2, 2 $ 3 = 1, 1 $ 3 = 3]
. Ci fermiamo qui con il sottogruppo {3, 2, 1}
.
Se si calcola <1>
attraverso <6>
vedrai che nessuno degli elementi del gruppo di generare l'intero gruppo. Pertanto, questo gruppo non è ciclico.
Casi test
L'input verrà dato come matrice, l'output come valore di decisione true / false.
[[1,2,3,4,5,6],[2,3,1,6,4,5],[3,1,2,5,6,4],[4,5,6,1,2,3],[5,6,4,3,1,2],[6,4,5,2,3,1]] -> False (D_3)
[[1]] -> True ({e})
[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]] -> True ({1, i, -1, -i})
[[3,2,4,1],[2,4,1,3],[4,1,3,2],[1,3,2,4]] -> True ({-1, i, -i, 1})
[[1,2],[2,1]] -> True ({e, a} with a^-1=a)
[[1,2,3,4,5,6,7,8],[2,3,4,1,6,7,8,5],[3,4,1,2,7,8,5,6],[4,1,2,3,8,5,6,7],[5,8,7,6,1,4,3,2],[6,5,8,7,2,1,4,3],[7,6,5,8,3,2,1,4],[8,7,6,5,4,3,2,1]] -> False (D_4)
[[1,2,3,4,5,6],[2,1,4,3,6,5],[3,4,5,6,1,2],[4,3,6,5,2,1],[5,6,1,2,3,4],[6,5,2,1,4,3]] -> True (product of cyclic subgroups of order 2 and 3, thanks to Zgarb)
[[1,2,3,4],[2,1,4,3],[3,4,1,2],[4,3,1,2]] -> False (Abelian but not cyclic; thanks to xnor)
Ti verrà garantito che l'input è sempre un gruppo.
È possibile accettare input come valori indicizzati 0.
[1..n]
che può nascondere difetti in alcune risposte.
[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]]
)?