Let's suppose we have a group $G$ of finite order $n$. We want to algorithmically compute all subgroups, and there are some ways to do that.
First one:
- Compute all subsets.
- Verify for each of them if they're closed. Then we're done.
It's not precisely an efficient algorithm. For $n=24$ we already have 16 millions of subsets to check.
A second one would be to compute all the generated subgroups:
- Get a prime decomposition $n=p_1^{e_1}\cdots p_{r}^{e_r}$.
- Compute $$b=\sum_{i=1}^r (e_i+1).$$
- Compute all subsets with at most $b$ elements
- Compute the generated subgroups of such subsets. We're done.
In this case we need an upper bound on the number of generators a subgroup can have. I chose $b$ because it's a slightly worse bound than the one found here, but that doesn't depend on the structure of the group or its subgroups (since it's information we're not given).
I'd like to know. Is there a better way? And... is there a better bound for the second method?
I mean manually we can use a lot of the structure of the group so most of the time computing all the subgroups is way easier, but if we want a computer to do it I think it may be hard to implement something like that.
Edit: There are some ideas in the comments.
- Using Sylow (How?)
- Computing only the subsets which order divides the order of the group. The number of subsets you need to compute is $$\sum_{d\mid n} \binom{n}{d}$$ while the one in my second method is $$\sum_{i=1}^b \binom{n}{i}.$$ At least in the case of $n=24$ that method is not as good in the sense that you have to compute 3587174 subsets instead of 190050 with my method.
Edit 2: Because the approach to the problem is different, I don't think this and this questions contain the answer to mine. My questions are 1. If there is a better method (this one is answered), and 2. How to improve the bound for my method (this one has not been answered).
Edit 3: For a way to slightly improve the bound I used while still not depending on the structure of each group we just need to see that it always holds that $f_i\geq 1$ (Because of First Sylow theorem and that every $p$-group has a cyclic subgroup of order $p$). So we can use $$b=\sum_{i=1}^r e_i$$ as a better bound. This is a huge improvement for the case of $n=24$, since in this case $b=4$ and we only need to compute 12950 subsets.