È un gruppo i cui elementi sono le permutazioni di un insieme e la cui operazioni è la composizione delle permutazioni in .

In particolare, il gruppo di tutte le permutazioni di un insieme si chiama gruppo simmetrico di , scritto come o , dove è la cardinalità di .

Esempio:

Terminologia

Il grado di un gruppo di permutazioni di un insieme finito è il numero degli elementi di .

Operazione di composizione

Consideriamo e due suoi elementi e . La composizione è

Però la composizione è

: abbiamo appena dimostrato che non è un gruppo abeliano.

La composizione di cicli a supporti disgiunti è commutativa.

Teorema: ogni permutazione si decompone in modo unico come prodotto di cicli disgiunti.

Teorema: ogni permutazione è prodotto di trasposizioni (“basta” vedere la proprietà sui cicli, infatti se ogni ciclo è prodotto di trasposizioni, allora ogni prodotto di cicli è prodotto di trasposizioni, ma ogni trasposizione è prodotto di cicli).

Isomorfismo con

Esiste un unico isomorfismo che si può trovare tra un sottogruppo generato da un elemento di un gruppo di permutazioni (quindi generato componendo la permutazione con se stessa un numero variabile di volte) e un sottogruppo è definito come segue:

Esempio

Sia

può essere scomposta in cicli a supporto disgiunto:

Intuitivamente, l’ordine di è il numero composizioni di con se stessa necessario per ritrovare la permutazione identitaria (quella banale che non scambia gli elementi)

Dato che , allora . È evidente che questa uguaglianza genera 10 classi di equivalenza, ognuna corrispondente a un , dove la classe .

Ciò corrisponde esattamente a .

Esistono sono gruppi abeliani?

I gruppi e sono abeliani, invece quelli con non sono abeliani.

Script che lo dimostra per :

from itertools import permutations, product
 
def transpose(t: tuple, element: int):
    return t[element - 1]
 
def check_composition_commutes(a: tuple, b: tuple) -> bool:
    elements = set(a)
    for element in elements:
        ab = transpose(a, transpose(b, element))
        ba = transpose(b, transpose(a, element))
        print(f'{a}{b} applicata a {element} {[f"non commuta ({ab=}, {ba=})", f"commuta (ab=ba={ab})"][ab == ba]}')
        if ab != ba: return False
    return True
 
def check_sym_group_commutes(n: int) -> bool:
    perms = list(permutations(range(1, n+1)))
    for a, b in product(perms, perms):
        if not check_composition_commutes(a, b):
            return False
    return True
 
for n in range(1, 7):
    print(f'S_{n}: {["non è", "è"][check_sym_group_commutes(n)]} abeliano\n')
def check_sym_group_commutes(n: int) -> bool:
    perms = list(permutations(range(1, n+1)))
    rez = [check_composition_commutes(a, b) for a, b in product(perms, perms)]
    return f"S_{n}: {rez.count(True)}/{len(rez)} = {rez.count(True)/len(rez)*100}%"
 
for n in range(1, 7):
    print(check_sym_group_commutes(n))
Composizioni commutative di (Coincide con https://oeis.org/A053529)Composizioni totali di
11 (100%)1
24 (100%)4
318 (50%)36
4120 (20.833%)576
5840 (5.833%)14400
67920 (1.527%)518400
775600 (0.298%)25401600
8- (16 GB di RAM sono troppo pochi)-