Ta klasyczna obróbka końcowa wykorzystuje kilka nietrywialnych grupowych właściwości teoretycznych grup abelowych. Napisałem dydaktyczne wyjaśnienie, w jaki sposób działa ten klasyczny algorytm [1] ; inne dobre źródła do przeczytania to [ 2 , 3 , 4 ].
H∗H∗G∗O(log|G|)H∗
HH∗
Teoria postaci
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
Równania liniowe nad grupami
XYb∈Yα:X→Y
α(x)=b
A, w taki sposób, że powyższy problem może zostać ponownie wyrażony jako
gdzie przyjmujemy .
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
Ostatnią kluczową obserwacją jest to, że istnieją wydajne klasyczne algorytmy do decydowania, czy systemy te dopuszczają rozwiązania, liczą je i je znajdują (badamy niektóre w [1] ). Zbiór rozwiązań ma zawsze postać , gdzie jest konkretnym rozwiązaniem, a jest jądrem (podgrupy ). Te klasyczne algorytmy mogą znaleźć określone rozwiązanie systemu i obliczyć zestaw generatora . Te klasyczne algorytmy wykorzystują kluczowe formy Smithax0+kerαx0kerααXkerα przepisać system w niemal przekątnej formie (konieczne są inne pośrednie kroki, ale powinno to dać intuicyjny obraz).
Układ równań, które można uzyskać w przypadku koduje ukrytej podgrupy . W szczególności ma postać , dla niektórych homomorfizmów grupowych . Jądro jest właśnie ukrytą podgrupą. Szczególnym rozwiązaniem w tym przypadku jest 0, trywialne.HΩx=0ΩΩ