Definições
Você pode pular esta parte se já conhece as definições de grupos , grupos finitos e subgrupos .
Grupos
Na álgebra abstrata, um grupo é uma tupla (G, ∗) , onde G é um conjunto e ∗ é uma função G × G → G, de modo que o seguinte vale:
Fechamento: para todo x, y em G , x ∗ y também está em G (implicado no fato de que ∗ é uma função G × G → G ).
Associatividade: para todos os x, y, z em G , (x ∗ y) ∗ z = x ∗ (y ∗ z) .
Identidade: existe um elemento e em G tal que para todo x em G , x x e = x = e ∗ x .
Inverso: para cada x em G , existe um elemento y em G tal que x ∗ y = e = y ∗ x , onde e é o elemento de identidade mencionado no ponto anterior.
Grupos finitos
Um grupo finito é um grupo (G, ∗) onde G é finito, ou seja, possui muitos elementos finitos.
Subgrupos
Um subgrupo (H, ∗) de um grupo (G, ∗) é tal que H é um subconjunto de G (não necessariamente subconjunto apropriado) e (H, ∗) também é um grupo (ou seja, satisfaz os 4 critérios acima).
Exemplos
Considere o grupo diédrico D 3 (G, ∗) onde G = {1, A, B, C, D, E} e ∗ é definido abaixo (uma tabela como essa é chamada de tabela de Cayley ):
∗ 1 ABCDE - + ---------------------- 1 | 1 ABCDE A AB 1 DEZ B B 1 AECD C CED 1 BA D DCEA 1 B E EDCBA 1
Nesse grupo, a identidade é 1 . Além disso, A e B são inversos um do outro, enquanto 1 , C , D e E são inversos de si mesmos, respectivamente (o inverso de 1 é 1 , o inverso de C é C , o inverso de D é D e o inverso de E é E ).
Agora, podemos verificar que (H, ∗) onde H = {1, A, B} é um subgrupo de (G, ∗) . Para o fechamento, consulte a tabela abaixo:
∗ 1 AB - + ---------- 1 | 1 AB A AB 1 B B 1 A
onde todos os pares possíveis de elementos em H abaixo de ∗ dão um membro em H .
A associatividade não requer verificação, pois os elementos de H são elementos de G .
A identidade é 1 . Deve ser o mesmo com a identidade do grupo. Além disso, a identidade em um grupo deve ser única. (Você pode provar isso?)
Para o inverso, verificar que o inverso da Uma é B , que é um membro de H . O inverso de B é A , que também é um membro de H . O inverso de 1 ainda é o próprio, o que não requer verificação.
Tarefa
Descrição
Dado um grupo finito (G, ∗) , encontre o número de seus subgrupos.
Entrada
Para um grupo (G, *) , vai receber um conjunto 2D de tamanho n x n , em que n é o número de elementos em L . Suponha que o índice 0
seja o elemento de identidade. A matriz 2D representará a tabela de multiplicação. Por exemplo, para o grupo acima, você receberá a seguinte matriz 2D:
[[0, 1, 2, 3, 4, 5],
[1, 2, 0, 4, 5, 3],
[2, 0, 1, 5, 3, 4],
[3, 5, 4, 0, 2, 1],
[4, 3, 5, 1, 0, 2],
[5, 4, 3, 2, 1, 0]]
Por exemplo, você pode ver que 3 ∗ 1 = 5 porque a[3][1] = 5
, onde a
está a matriz 2D acima.
Notas:
- Você pode usar uma matriz 2D indexada em 1.
- A linha e a coluna da identidade podem ser omitidas.
- Você pode usar outros formatos como achar melhor, mas deve ser consistente. (por exemplo, você pode querer que o último índice seja identidade, etc.)
Resultado
Um número positivo que representa o número de subgrupos no grupo.
Por exemplo, para o grupo acima, (H, ∗) é um subgrupo de (G, ∗) sempre que H =
- {1}
- {1, A, B}
- {1, C}
- {1, D}
- {1, E}
- {1, A, B, C, D, E}
Portanto, existem 6 subgrupos, e sua saída para este exemplo deve ser 6
.
Dicas
Você pode ler os artigos aos quais vinculei. Esses artigos contêm teoremas sobre grupos e subgrupos que podem ser úteis para você.
Pontuação
Isso é código-golfe . Responda com os menores ganhos de contagem de bytes.
fonte
0
o elemento de identidade, é confuso ter o operador descrito como multiplicação ...Respostas:
Mathematica,
6248 bytesFunção pura esperando uma matriz 2D indexada em 1.
Count
é o número deSubsets
daFirst
linha da matriz de entrada que são fechados sob a operação de grupo. Como isso incluirá o conjunto vazio, subtraímos1
. Observe que um subconjunto não vazio de um grupo finito fechado na operação de grupo é de fato um subgrupo (e vice-versa, por definição).Estritamente falando, não verifico se o subconjunto
x
está fechado na operação de grupo, restrinja a tabela de multiplicação ao subconjuntox
e verifique se ele contém precisamente os elementos dex
. Claramente, isso implica quex
está fechado em relação à operação do grupo. Por outro lado, qualquer subgrupox
conterá1
e, portantox
, será um subconjunto dos elementos que aparecem na tabela de multiplicação restrita e, comox
é fechado na operação de grupo, deve ser igualx
.fonte
Haskell , 79 bytes
Basicamente, uma porta do método Mathematica da ngenisis. (Exceto que eu estou usando matrizes indexadas em 0).
c
pega uma lista de listas de seInt
retorna um número inteiro.Experimente online!
Supõe-se que os
Int
s sejam numerados da mesma forma que as linhas (listas externas) e as colunas que mostram sua multiplicação. Assim, como 0 é a identidade, a primeira coluna é igual aos índices das linhas. Isso permite usar as entradas da primeira coluna para construir os subconjuntos.Como funciona
c
é a função principal.g
é a matriz do grupo como uma lista de listas.l
é um subconjunto dos elementos. A lista de subconjuntos é construída da seguinte maneira:foldr(\r->([id,(r!!0:)]<*>))[[]]g
dobra uma função sobre as linhas deg
.r
é uma linha deg
, cujo primeiro (0º) elemento é extraído como um elemento que pode ser incluído ((r!!0:)
) ou não (id
).<*>
combina as opções para esta linha com as seguintes.and[g!!x!!y`elem`l|x<-l,y<-l]
testa para cada par de elementosl
se o seu múltiplo estál
.sum[1|...]-1
conta os subconjuntos que passam no teste, exceto um, o subconjunto vazio.fonte
Geléia ,
1716 bytes1 byte graças a ETHproductions (
LR → J
)Experimente online! (Indexado 1)
fonte
J
em vez deLR
salvar um byte :-)Python 2,
297215 bytesExperimente online
Este programa funciona para o grupo de exemplo sem
==T[x][y]
, mas ainda tenho certeza de que é necessário.Edit: Agora assume que o elemento de identidade de G é sempre o primeiro.
Ungolfed:
TIO sem Golfe
Os elementos negativos do grupo podem ser suportados sem nenhum custo, alterando
-1
para''
.fonte
0
do exemplo, não o índice.