Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  equivlist.gi   Sprache: unbekannt

 
Spracherkennung für: .gi vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#############################################################################
##
#W  equivlist.gi             DifSets Package                     Dylan Peifer
##
##  Functions take in a list of difference sets/sums and return a list with
##  equivalent sets/sums removed.
##

#############################################################################
##
#F  EquivalentFreeListOfDifferenceSets( <G>, <difsets> )
##
InstallGlobalFunction( EquivalentFreeListOfDifferenceSets, function (G, difsets)
    local v, prod, auts, newdifsets, D, aut, i, d;

    # make difsets a set of immutable elements so we can use binary search
    # each difset must be a set so that permutations don't matter
    Apply(difsets, x->Immutable(Set(x)));
    difsets := Set(difsets);

    # handle special case of trivial input
    if Length(difsets) <= 1 then return difsets; fi;

    v := Size(G);
    prod := ProductTable(G);
    auts := AutomorphismsTable(G);
    newdifsets := []; # will store inequivalent difsets
 
    while Length(difsets) > 0 do

        # remove a difset and add to the equivalent-free list
        D := Remove(difsets);
        Add(newdifsets, D);

        # remove anything equivalent to D from difsets
        for aut in auts do
        for i in [1..v] do
            d := Set(D, x->prod[i][aut[x]]);
            RemoveSet(difsets, d);
        od;
        od;

    od;

    return newdifsets;
end );

#############################################################################
##
#F  TranslateFreeListOfDifferenceSets( <G>, <difsets> )
##
InstallGlobalFunction( TranslateFreeListOfDifferenceSets, function (G, difsets)
    local v, prod, newdifsets, D, i, d;

    # make difsets a set of immutable elements so we can use binary search
    # each difset must be a set so that permutations don't matter
    Apply(difsets, x->Immutable(Set(x)));
    difsets := Set(difsets);

    # handle special case of trivial input
    if Length(difsets) <= 1 then return difsets; fi;

    v := Size(G);
    prod := ProductTable(G);
    newdifsets := []; # will store inequivalent difsets
 
    while Length(difsets) > 0 do

        # remove a difset and add to the equivalent-free list
        D := Remove(difsets);
        Add(newdifsets, D);

        # remove anything translationally equivalent to D from difsets
        for i in [1..v] do
            d := Set(D, x->prod[i][x]);
            RemoveSet(difsets, d);
        od;

    od;

    return newdifsets;
end );

#############################################################################
##
#F  EquivalentFreeListOfDifferenceSums( <G>, <N>, <difsums> )
##
InstallGlobalFunction( EquivalentFreeListOfDifferenceSums, function (G, N, difsums)
    local v, w,prod, auts, newdifsums, S, aut, i, s, j;

    # make difsums a set of immutable elements so we can use binary search
    Apply(difsums, x->Immutable(x));
    difsums := Set(difsums);

    # handle special case of trivial input
    if Length(difsums) <= 1 then return difsums; fi;

    v := Size(G);
    w := Size(N);
    prod := ProductTable(G/N);
    auts := InducedAutomorphismsTable(G, N);
    newdifsums := []; # will store inequivalent difsums

    while Length(difsums) > 0 do

        # remove a difsum and add it to the equivalent-free list
        S := Remove(difsums);
        Add(newdifsums, S);

        # remove anything equivalent to S from difsums
        for aut in auts do
        for i in [1..v/w] do
            s := EmptyPlist(v/w);
            for j in [1..v/w] do
                s[prod[i][aut[j]]] := S[j];
            od;
            RemoveSet(difsums, s);
        od;
        od;

    od;

    return newdifsums;
end );

#############################################################################
##
#F  TranslateFreeListOfDifferenceSums( <G>, <N>, <difsums> )
##
InstallGlobalFunction( TranslateFreeListOfDifferenceSums, function (G, N, difsums)
    local v, w, prod, newdifsums, S, i, s, j;

    # make difsums a set of immutable elements so we can use binary search
    Apply(difsums, x->Immutable(x));
    difsums := Set(difsums);

    # handle special case of trivial input
    if Length(difsums) <= 1 then return difsums; fi;

    v := Size(G);
    w := Size(N);
    prod := ProductTable(G/N);
    newdifsums := []; # will store inequivalent difsums

    while Length(difsums) > 0 do

        # remove a difsum and add it to the equivalent-free list
        S := Remove(difsums);
        Add(newdifsums, S);

        # remove anything equivalent to S from difsums
        for i in [1..v/w] do
            s := EmptyPlist(v/w);
            for j in [1..v/w] do
                s[prod[i][j]] := S[j];
            od;
            RemoveSet(difsums, s);
        od;

    od;

    return newdifsums;
end );


#############################################################################
##
#E


[ Dauer der Verarbeitung: 0.46 Sekunden  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge