Что вы пытаетесь определить, если существует подгруппа Н G таких, что {г ..., г п} является transversal из классов смежности H. т.е. набор представители разбиения G на смежные классы H.
Во-первых, по Lagrange's теорема, | G | = | G: H | * | G |, где | G: H | = | G |/| H | является индексом подгруппы H группы G. Если {g , ..., g n} действительно трансверсаль, то | G: H | = | {g , ..., g n} |, поэтому первым тестом в вашем алгоритме должно быть n делит | G |.
Кроме того, поскольку г я и г J находятся в одной и той же правой смежного класса, только если г я г J-1 в H, можно затем проверить подгруппы с индексом п, чтобы увидеть если они избегают g i g j-1. Кроме того, обратите внимание, что (г я г J-1) (г J г к-1) = G я г К-1, так что вы можете выбрать любое сопряжение g i s.
Этого должно быть достаточно, если n мало по сравнению с | G |.
Другой подход, чтобы начать с Н является единичная группа и добавить элементы множества H * = {ч в G: ч к = г я г J-1, для всех i, j, k; i! = j} к генераторам H до тех пор, пока вы не сможете больше добавить (т. е. пока это уже не подгруппа). Тогда H является максимальной подгруппой группы G такой, что H является подмножеством H *. Если вы можете получить все такие H (и иметь их достаточно большими), то подгруппа, которую вы ищете, должна быть одной из них.
Этот подход будет работать лучше для больших n.
В любом случае неэкспоненциальный подход не очевиден.
EDIT: Я только что нашел обсуждение этой самой теме здесь: http://en.wikipedia.org/wiki/Wikipedia:Reference_desk/Archives/Mathematics/2009_April_18#Is_a_given_set_of_group_elements_a_set_of_coset_representatives.3F
Это заставляет меня бы я сразу вспоминаю свои классы абстрактной алгебры ... –
к тому, кто голосовал, чтобы закрыть: Jeez, то парень спрашивает об АЛГОРИТМЕ. Последнее, что я проверил, алгоритм был чем-то использован в программировании. –