Il numero di operazioni binarie su un set di 2 elementi è 2^(2*2)=16
.
Numero di un'operazione binaria associativa sul set solo 8.
Numero di un'operazione binaria su un insieme di 3 elementi è 3^(3 * 3) = 19683.
Il numero di operazioni binarie associative su quel set è solo 113. Come sapere quante operazioni binarie associative ci sono su un insieme di n elementi?Come ottenere tutte le operazioni associative algebriche su un insieme finito mediante un algoritmo efficiente?
Anche per ottenere tutte queste 113 operazioni e scrivere in un file, è necessario scrivere un programma.
se tenterò di ottenere tutte le operazioni del 19683 e quindi controllerò la proprietà associativa "a * (b c) == (a b) * c" per tutte le operazioni del 19683, funzionerà ma questo dovrebbe richiedere un molto tempo per n = 4 elementi!
Come scrivere un algoritmo efficiente per risolvere questo compito?
Per favore aiutatemi!
La tua domanda è modo per larga, e probabilmente anche non molto ben messo a fuoco per SO. SO parla di programmazione e non di Combinatorics. –
@JensGustedt Questo problema riguarda più gli algoritmi rispetto alla combinatoria. Certo, hai bisogno della combinatoria per analizzare l'algoritmo (un'implementazione ingenua sarebbe qualcosa come 'O (n^(n^2))' in complessità), ma non si tratta di combinatoria. Sono d'accordo che questo post potrebbe essere più adatto [programmers SE] (http://programmers.stackexchange.com), dal momento che menzionano algoritmi specificatamente in [le loro FAQ] (http://programmers.stackexchange.com/tour). – bheklilr
@bheklilr: Beh, SO ha almeno un [tag algoritmo] (http://stackoverflow.com/tags/algorithm/info) (e un tag per l'algebra astratta e anche uno per i semigruppi). Ma penso, è troppo ampio, una buona risposta probabilmente sarebbe molto lunga. Infine, non c'è nulla che OP abbia provato fino ad ora (è una domanda "gimme teh algo"). IremadzeArchil: Forse http://math.stackexchange.com/? In realtà, stai chiedendo "quanti semigruppi con n elementi esistono?" – mafso