Эта классическая постобработка использует несколько нетривиальных групповых теоретических свойств абелевых групп. Я написал дидактическое объяснение того, как этот классический алгоритм работает здесь [1] ; другие хорошие источники для чтения [ 2 , 3 , 4 ].
H∗H∗G∗O(log|G|)H∗
HH∗
Теория персонажей
GG
χg(h)=exp(2πi∑i=1mg(i)h(i)di).
gχgGg→χgG∗G
HH∗HH
H∗G
HH∗∗HH≅H∗∗
χg(h)=1, for every g∈H∗
H
Линейные уравнения над группами
XYb∈Yα:X→Y
α(x)=b
Aтаким образом, что вышеуказанная проблема может быть переформулирована как
где мы предполагаем .
Ax=⎛⎝⎜⎜⎜⎜a1(1)a1(2)⋮a1(m)a2(1)a2(2)⋮a2(m)⋯⋯⋯⋯an(1)an(2)⋮an(m)⎞⎠⎟⎟⎟⎟⎛⎝⎜⎜⎜⎜x(1)x(2)⋮x(n)⎞⎠⎟⎟⎟⎟=⎛⎝⎜⎜⎜⎜b(1)b(2)⋮b(m)⎞⎠⎟⎟⎟⎟modd1modd2⋮moddm=b
Y=Zd1×⋯×Zdm
Последнее ключевое наблюдение состоит в том, что существуют эффективные классические алгоритмы, позволяющие решить, допускают ли эти системы решения, подсчитать их и найти их (некоторые из них мы рассмотрели в [1] ). Множество решений всегда имеет вид , где - это конкретное решение, а - ядро (подгруппа ). Эти классические алгоритмы могут найти конкретное решение системы и вычислить порождающий набор . Эти классические алгоритмы решающим образом используют нормальные формы Смита.x0+kerαx0kerααXkerα переписать систему в почти диагональной форме (необходимы некоторые другие промежуточные шаги, но это должно дать вам интуитивную картину).
Система уравнений , что вы получите в вашем случае кодирует скрытую подгруппу . В частности, имеет вид для некоторого группового гомоморфизма . Ядро - это именно скрытая подгруппа. Конкретным решением в этом случае является 0, тривиальное.HΩx=0ΩΩ