Schreier-Sims algoritme | |
---|---|
| |
Opkaldt efter | Charles Sims og Otto Schreyer |
Forfatter | Charles Sims |
formål | Bestemmelse af rækkefølgen af en permutationsgruppe |
Datastruktur | Permutationer |
værste tid |
Schreier-Sims- algoritmen er en algoritme fra området for beregningsgruppeteori, der tillader, efter en enkelt udførelse i lineær tid, at finde rækkefølgen af en gruppe genereret af permutationer, kontrollere om et element tilhører en sådan gruppe og opregne dets elementer . Algoritmen blev foreslået af Charles Sims i 1970 for at finde primitive permutationsgrupper [1] og er baseret på Schreiers undergruppegenerationslemma [2] . Repræsentationen af permutationsgruppen, som algoritmen finder, er analog med trinformen af matricen for densstrengmellemrum [3] . Metoderne udviklet af Sims danner grundlag for de fleste moderne algoritmer til at arbejde med permutationsgrupper [4] , modifikationer af algoritmen bruges også i moderne computeralgebrasystemer som GAP og Magma [5] . En af de mest oplagte anvendelser af algoritmen er, at den kan bruges til at løse Rubik's Cube [6] .
Et af hovedproblemerne i teorien om permutationsgrupper er søgningen efter permutationsgrupper af en given grad (det vil sige det mindste antal elementer i et sæt, hvis permutationsgruppe indeholder en given permutationsgruppe). I 1970 var alle permutationsgrupper blevet fundet for potenserne 2 til 11, for potenserne 12 til 15 var alle transitive grupper (det vil sige undergrupper, der virker transitivt på et generatorsæt ) fundet, og for potenserne 16 til 20 kun primitive grupper var blevet fundet permutationer . For at søge efter primitive grupper af højere grad udviklede Charles Sims et program, der finder orden og en vis struktur i en permutationsgruppe givet af dens generatorsæt [1] .
Det originale program nævnt i Sims' papir blev skrevet til IBM 7040 på Rutgers University og støttede enhver gruppe, hvis grad var mindre end 50 [7] . Et nøjagtigt estimat af køretiden for en algoritme blev først udført af Furst, Hopcroft og Lax i 1980 [8] . Løbetiden blev forbedret af Jerrum i 1982 [9] og af Donald Knuth i 1981 [10] . I 1980 blev der udviklet en effektiv probabilistisk version af algoritmen [11] . Forskellige variationer af algoritmen, inklusive dem, der bruger Schreier-vektoren i stedet for kredsløbstræet, blev demonteret af Sheresh i 2003 [12] [13] .
I beregningsgruppeteori er algoritmer over permutationsgrupper et af de mest udviklede områder, og selv i dag er de fleste af disse algoritmer baseret på metoderne udviklet af Sims [4] .
Effektiviteten af beregninger med en permutationsgruppe afhænger i det væsentlige af, hvordan den er specificeret i programmet [2] . En effektiv måde at gøre dette på er at isolere et antal af dens undergrupper og vælge unikke cosets for hver undergruppe i den serie i forhold til dens forgænger. Algoritmen foreslået af Charles Sims finder et antal undergrupper, hvor hver næste gruppe er stabilisatoren af den forrige. Rækkefølgen af punkter, som stabilisatorer er konstrueret til, kaldes basen , og sættet, der indeholder de genererende elementer for hver gruppe i serien , kaldes det stærke generatorsæt [2] .
Algoritmen konstruerer en base og et stærkt generatorsæt for permutationsundergruppen givet af dens generatorsæt , ved at bruge Schreiers lemma til at finde generatorsættene. Størrelsen af de mængder, der opnås ved mellemliggende trin, vokser eksponentielt, derfor er der udviklet variationer af algoritmen, der reducerer antallet af overvejede genererende elementer [2] .
Den ovenfor beskrevne repræsentation opdeler en gruppe i et produkt af delmængder indlejret i den, svarende til hvordan trinrepræsentationen opdeler et vektorrum i en direkte sum af underrum indlejret i det [3] .
En symmetrisk gruppe er en gruppe, hvis elementer er permutationer af elementer i et sæt . Normalt tages . som sådan et sæt . I en sådan notation kan elementerne i en gruppe ses som afbildninger , der tager et sæt ind i sig selv, det vil sige dets automorfismer . Gruppeoperationen i sådan notation er sammensætningen af permutationer, for permutationer og defineret som , hvor for . I overensstemmelse hermed vil enhedspermutationen være en permutation sådan, at , og den omvendte permutation kan gives som [14] .
Lade være sæt af permutationer af længde . En genereret undergruppe af et sæt er den mindste ved inklusion undergruppe , der indeholder som en undergruppe eller tilsvarende en undergruppe af alle elementer , der kan repræsenteres som et endeligt produkt af elementer og deres invers. Rækkefølgen af en permutationsgruppe er antallet af elementer i den , og dens grad er kardinaliteten af det sæt , som den virker på. I en sådan notation bør algoritmen være i stand til at [7] :
Algoritmeændringer er implementeret i de to mest populære computeralgebrasystemer, der er specialiseret i beregningsgruppeteori - GAP og Magma [5] . Værktøjer til at arbejde med permutationsgrupper, herunder coset-optællingsalgoritmer og Schreier-Sims-algoritmen, er også tilgængelige i de mere generelle populære systemer Maple og Mathematica [15] . Oprindeligt blev algoritmen udviklet til at søge efter primitive permutationsgrupper af en given grad [1] , men efterfølgende er omfanget af dens anvendelse vokset mange gange - for eksempel ved hjælp af denne algoritme kan du finde løsninger på en given Rubiks terningkonfiguration , da dens rotationer danner en gruppe [6] . Algoritmen viste sig også godt, når man arbejdede med matrixgrupper [16] .
Lade være en undergruppe af nogle endelige gruppe , betegnes ved tværgående af familien af venstre cosets . Ethvert element kan være unikt repræsenteret som , hvor og . Ved successivt at anvende dette resultat til og dets undergrupper, kan det generaliseres i følgende form [3] [17] :
Lad være en række undergrupper . Så kan ethvert element være unikt repræsenteret som , hvor . |
Visningen beskrevet ovenfor har følgende egenskaber:
For også at kunne kontrollere elementer for at tilhøre en genereret undergruppe, er det nødvendigt at overveje serier af undergrupper af en speciel form, nemlig dem, der er sammensat af stabilisatorer [7] .
Lad handle på settet . Vi vælger et sæt af elementer og konstruerer et antal undergrupper, så hvor er elementets stabilisator . Med andre ord er en undergruppe af elementer , der oversætter hvert af elementerne til sig selv [7] . Med denne tilgang vil den del af sættet , som den næste undergruppe ikke-trivielt virker på, ved hvert næste trin falde med et element, og rækkefølgen af den undergruppe, som arbejdet udføres med, vil være mindst to gange . Det følger af dette, at iterationer af algoritmen vil være nødvendige, før den ønskede partition findes [18] .
For at konstruere cosets skal du bruge det faktum, at der er en en-til-en overensstemmelse (bijection) mellem elementerne i kredsløbet og de venstre cosets af stabilisatoren [19] .
BevisVed sætningen om baner og stabilisatorer er sættet af cosets og kredsløbet ækvivalente i kraft. Knyt hvert element til et element i kredsløbet .
Lad , så sæt og falde sammen. Men heraf følger, at det også er sammenfaldende og :
t en ω = t en ( G ω ω ) = ( t en G ω ) ω = ( t 2 G ω ) ω = t 2 ( G ω ω ) = t 2 ω {\displaystyle t_{1}\omega =t_{1}(G_{\omega }\omega )=(t_{1}G_{\omega })\omega =(t_{2}G_{\omega })\ omega =t_{2}(G_{\omega }\omega )=t_{2}\omega }Hvert coset blev tildelt nøjagtigt ét element i kredsløbet. Fordi cosets dækker hele gruppen , er alle matchede elementer forskellige. Så det er i sandhed en bijektion. ■
Det følger af beviset, at man som repræsentanter for cosets kan tage elementer, der realiserer forskellige punkter i kredsløbet [19] .
Betegn med et sådant element , at . Opdeling i en række stabilisatorer giver dig mulighed for at kontrollere elementet for at tilhøre gruppen [7] :
Disse egenskaber giver dig mulighed for at lave en overgang fra til , hvilket i sidste ende vil føre til, at det aktuelle element skal ligge i . Hvis dette virkelig er tilfældet, så , hvorfra er det muligt at udtrykke [7] .
Lad gruppen have et generatorsæt . Banen for ethvert element under påvirkning af en gruppe kan organiseres i et træ med følgende form [17] :
Det beskrevne træ kan bygges ved en dybde -første traversering, for dette er det nødvendigt at sortere gennem elementet ved hvert toppunkt , indtil det viser sig, at der endnu ikke er allokeret et toppunkt for [17] . Implementeringseksempel i Python :
# Opbygger et kredsløbstræ givet element w og genereringssæt S def build_schreier_tree ( w , S , kredsløb ): for g i S : hvis g [ w ] ikke er i kredsløb : kredsløb [ g [ w ]] = gælder ( g , kredsløb [ w ]) build_schreier_tree ( g [ w ], S , orbit )Her returnerer funktionen resultatet af at anvende gruppeoperationen på elementerne og som første og andet argument, og elementet gemmes i .
Det følger af Schreier-lemmaet, at stabilisatoren genereres af sættet af Schreier-generatorer: . Dette resultat giver os mulighed for at konstruere et generatorsæt for ud fra generatorsættet for og elementets kredsløb . Mulig implementering af en funktion, der returnerer et nyt generatorsæt [20] :
# Tager et generatorsæt for G_{w-1} og en kredsløb på w # Returnerer et generatorsæt for G_w def make_gen ( S , orbit ): n = len ( næste ( iter ( S ))) newS = sæt () for s i S : for u i kredsløb : newS . tilføje ( reducere ( anvende , [ omvendt ( kredsløb [ s [ u ] ] ), s , kredsløb [ u ]])) returnere newSAlgoritmen er ikke udtømt af dette, da selv om størrelsen af det nye generatorsæt polynomielt afhænger af størrelsen af kredsløbet og det gamle generatorsæt for et enkelt opkald, er størrelsen af den genererende funktion samlet for alle kald til denne funktion. mængde vokser eksponentielt [2] .
For at undgå ukontrolleret vækst af generatorsæt skal der anvendes en sigteprocedure . Dette ville kræve følgende erklæring [3] [20] :
Lad . Så er det muligt at konstruere et sæt af højst elementer sådan, at . |
Lad os først bevise følgende lemma:
Lad . Så ændres følgende transformationer ikke :
|
Lad, efter at have anvendt en af disse operationer, vi får et sæt . Det er indlysende . På den anden side kan disse konverteringer vendes ved konverteringer af samme type, så . Så . ■
Ved hjælp af sådanne transformationer kan vi reducere sættet til en sådan form, at der for ethvert par i sættet højst er ét element, således at:
s ( ω en ) = ω en , s ( ω 2 ) = ω 2 , … , s ( ω jeg − en ) = ω jeg − en , s ( ω jeg ) = ω j ≠ ω jeg {\displaystyle s(\omega _{1})=\omega _{1},\ s(\omega _{2})=\omega _{2},\dots ,\ s(\omega _{i- 1})=\omega _{i-1},\ s(\omega _{i})=\omega _{j}\neq \omega _{i}} Dette kan opnås ved at tilføje elementer til det nye sæt et ad gangen og fortsætte på samme måde som Gauss-metoden :Denne algoritme bruger derfor kun de elementære operationer angivet ovenfor . Bemærk, at hvis , så , så overgangen til fra i algoritmen er korrekt, og hvert par svarer faktisk ikke til mere end én permutation. Under hensyntagen til, at der højst er sådanne par , opnår vi den nødvendige påstand.
■Proceduren beskrevet i beviset kaldes Sims-filteret og fungerer i [21] . Dens implementering kan se sådan ud:
# Tager et overordnet sæt S # Returnerer et fortyndet overordnet sæt S' def normalisere ( S ): n = len ( næste ( iter ( S ))) newS = sæt () base = [{} for i i området ( n )] for s i S : for x i området ( 0 , n ): hvis s [ x ] != x : hvis s [ x ] i base [ x ] : s = gælder ( omvendt ( s ), base [ x ][ s ] [ x ]]) andet : base [ x ][ s [ x ]] = s newS . tilføje ( r ) bryde returnere nySUd over Sims -filteret kan Jerrum-filteret [22] bruges til at søge efter et lille sæt . I modsætning til Sims-filteret, som finder et sæt af højst elementer, finder Jerrum-filteret et sæt af højst elementer. Samtidig virker Jerrum-filteret for , så i tilfælde af Schreier-Sims-algoritmen er det at foretrække at bruge Sims-filteret [21] .
Alt ovenstående giver tilsammen en algoritme, der kortfattet kan implementeres som følger [20] :
# Tager et generatorsæt S = s1, ..., sk # Returnerer coset transversals U1, ..., Uk def schreier_sims ( S ): n = len ( næste ( iter ( S ))) ans = [] w = 0 mens S : kredsløb = {} kredsløb [ w ] = tupel ( område ( n )) build_schreier_tree ( w , S , kredsløb ) og += [[ kredsløb [ i ] for i i kredsløb ]] S = normalisere ( make_gen ( S , kredsløb )) w += 1 retur ansTrin for trin har dens handlinger følgende betydning:
Ved udgangen vil algoritmen returnere en liste, hvis elementer er tværgående af cosets .
I alt kræver algoritmen ikke flere iterationer. Hver iteration består af:
Værdien i det tilfælde, hvor sættet er givet , ændres ikke gennem hele algoritmen og er lig med . Størrelsen af generatorsættet er initialt lig med , og overstiger ved hvert efterfølgende trin ikke . Således kan den samlede køretid for algoritmen i ovenstående implementering estimeres til [8] [12] [13] .
Tidligere har det vist sig, at algoritmen kræver iterationer. I det generelle tilfælde kan størrelsen af gruppen være af størrelsesordenen , og i dette tilfælde ifølge Stirling-formlen , som naturligvis er større . Men i nogle tilfælde er rækkefølgen af gruppen lille, og derfor er det mere rentabelt at have en algoritme, der afhænger af , og ikke - for eksempel, når det drejer sig om en kendt gruppe, der er angivet som en permutationsgruppe [12] .
Ved Cayleys sætning er enhver endelig gruppe isomorf til en eller anden permutationsgruppe . Graden af en sådan gruppe kan være stor, men for mange grupper er deres rækkefølge sådan, at . For eksempel er den dihedrale gruppe isomorf til permutationsgruppen genereret af cyklisk skift og refleksion . Det vil sige, at graden af denne gruppe er , og rækkefølgen er , og . For sådanne grupper kan man overveje algoritmer med køretid , som kaldes pseudo-lineære [12] .
I et forsøg på at bringe algoritmen tættere på en pseudo-lineær og reducere graden , inkluderet i dens køretid, kom Sheresh til versioner af algoritmen, der kræver [18] :
Den første fungerende probabilistiske version af algoritmen blev udviklet af Jeffrey Leon i 1980 [11] . Normalt er det det, de mener, når de taler om den probabilistiske Schreyer-Sims-metode. Ved udtynding af Schreier-generatorer blev denne procedure afsluttet for tidligt, hvis 20 generatorer i træk viste sig at være faktoriseret. Sheresh viste, at denne procedure sammen med nogle optimeringer giver følgende erklæring [5] :
For enhver konstant er der en Monte Carlo-type algoritme , der med en fejlsandsynlighed på højst vil konstruere et stærkt generatorsæt for permutationsgruppen ved hjælp af tid og hukommelse. |
I moderne computeralgebrasystemer bruges modifikationer af denne version af algoritmen med forskellige heuristika normalt til at fremskynde programmet [5] .
Gruppeteori | |
---|---|
Basale koncepter | |
Algebraiske egenskaber | |
begrænsede grupper |
|
Topologiske grupper |
|
Algoritmer på grupper |