Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/GAP/pkg/hap/www/SideLinks/About/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 19.6.2025 mit Größe 17 kB image not shown  

Quelle  aboutPerformance.html   Sprache: HTML

 
 products/sources/formale Sprachen/GAP/pkg/hap/www/SideLinks/About/aboutPerformance.html


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type"
 content="text/html; charset=ISO-8859-1">
  <title>AboutHap</title>
</head>
<body
 style="color: rgb(0, 0, 153); background-color: rgb(204, 255, 255);"
 alink="#000066" link="#000066" vlink="#000066">
<br>
<table
 style="text-align: left; margin-left: auto; margin-right: auto; color: rgb(0, 0, 102);"
 border="0" cellpadding="20" cellspacing="10">
  <tbody>
    <tr align="center">
      <th style="vertical-align: top;">
      <table style="width: 100%; text-align: left;" cellpadding="2"
 cellspacing="2">
        <tbody>
          <tr>
            <td style="vertical-align: top;"><a
 href="aboutAbelianCategories.html"><small
 style="color: rgb(0, 0, 102);">Previous</small></a><br>
            </td>
            <td
 style="text-align: center; vertical-align: top; color: rgb(0, 0, 102);"><big><span
 style="font-weight: bold;">About HAP: Computational Issues<br>
            </span></big></td>
            <td style="text-align: right; vertical-align: top;"><br>
            </td>
          </tr>
        </tbody>
      </table>
      <big><span style="font-weight: bold;"></span></big><br>
      </th>
    </tr>
    <tr>
      <td
 style="vertical-align: top; background-color: rgb(255, 255, 255); text-align: left;">The
examples in the preceding pages were performed under Debian Linux on
an IBM Thinkpad laptop with a 1.4 GHz Celeron M processor and 256MB of
memory. An uncompiled version of the HAP library was used. Each example
took anything from a few seconds to over two hours to
run. <br>
      <br>
It may well be that the performance of several key
functions is far from optimal, and that the library could benefit
from further work on these.  We discuss this below.<br>
      </td>
    </tr>
    <tr>
      <td
 style="background-color: rgb(255, 255, 255); vertical-align: top;"><span
 style="font-family: helvetica,arial,sans-serif; font-weight: bold;">1. 
ResolutionFiniteGroup(gens,n)<br>
      </span><span
 style="font-family: helvetica,arial,sans-serif; font-weight: bold;"><span
 style="text-decoration: underline;"><br>
      </span></span><span style="font-family: serif;">a) This function
underlies most computations of ZG-resolutions for a finite group G. <br>
      <br>
When n=2 the function just computes a group presentation for G, and the
method is essentially that of John Cannon's algorithm used in the GAP
function <span style="font-family: helvetica,arial,sans-serif;">PresentationViaCosetTable(G).  <span
 style="font-family: serif;"></span> <span style="font-family: serif;">The
timings (in milliseconds)</span><span
 style="text-decoration: underline;"><span style="font-weight: bold;"></span></span></span></span><span
 style="font-family: helvetica,arial,sans-serif; font-weight: bold;"><span
 style="text-decoration: underline;"><br
 style="font-family: helvetica,arial,sans-serif;">
      </span></span><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="text-decoration: underline;"></span><br
 style="font-family: serif;">
      <span style="font-family: serif; color: rgb(0, 0, 0);">gap>
P:=ResolutionFiniteGroup([(1,2),(1,2,3,4,5,6)],2);;time;</span><br
 style="font-family: serif; color: rgb(0, 0, 0);">
      <span style="font-family: serif;"><span
 style="color: rgb(0, 0, 0);">7599</span><br
 style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
P:=PresentationViaCosetTable(Group([(1,2),(1,2,3,4,5,6)]));;time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">21</span><br>
      <br>
suggest that </span></span><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;">the run time of</span> <span
 style="font-family: serif;">the resolution function is not optimal.
Some of the timing discrepancy arises because</span></span> the
resolution function first computes the multiplication for G. This pays
off when n>2. Nevertheless,
there is a large remaining discrepancy between the timings
which needs investigation. <br>
      <br>
b) The performance of the resolution function for higher n is also very
sensitive to the choice of generators. For certain generating sets the
function produces a significantly "bigger" resolution which can require
excessive memory and run time. This is a feature of the algorithm
rather than the implementation, and might be worth further
investigation. <span
 style="font-family: helvetica,arial,sans-serif; font-weight: bold;"></span>
      </td>
    </tr>
    <tr>
      <td
 style="text-align: left; background-color: rgb(255, 255, 255); vertical-align: top;"><span
 style="font-weight: bold; font-family: helvetica,arial,sans-serif;">2.
ResolutionNormalSeries(N,n) </span><span
 style="font-family: helvetica,arial,sans-serif;"><br>
      <br>
      <span style="font-family: serif;">a) This function finds a
resolution for G by repeatedly applying a perturbation technique to a
sequence of normal subgroups G=N<sub>1</sub>>N<sub>2</sub>>...>N<sub>k</sub>=1.
The resolution for G is got by combining resolutions for the quotients N<sub>i</sub>/N<sub>i+1</sub>.
The ZG-resolution will have a reasonably small number of free
generators in each dimension provided each Z(</span></span><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;">N<sub>i</sub>/N<sub>i+1</sub>)-resolution
has not too many generators. Nevertheless, the boundary of a generator
in the ZG-resolution can sometimes be problematically large, as the
following example shows.<br>
      <br>
      <span style="color: rgb(0, 0, 0);">gap> G:=SmallGroup(64,7);;
N1:=GeneratorsOfGroup(G);;</span><br style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
N2:=GeneratorsOfGroup(NormalSubgroups(G)[6]);; N3:=Identity(G);;</span><br
 style="color: rgb(0, 0, 0);">
      <br>
      <span style="color: rgb(0, 0, 0);">gap>
R:=ResolutionNormalSeries([N1,N2,N3],6);;time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">26250<br>
      <br>
gap> List([1..R!.dimension(6)],
i->Length(R!.boundary(6,i)));<br>
[ 8, 1446, 1077, 4164, 4280, 4700, 1100, 435, 776, 524, 659, 30, 139,
4, 8, 8 ]<br>
      <br>
      <span style="color: rgb(0, 0, 102);">If the resolution</span> <span
 style="color: rgb(0, 0, 102);">R is only required for mod 2 cohomology
calculations then the problem of large boundaries can sometimes be
overcome by setting a fourth parameter equal to 2 as follows.<br>
      <br>
      <span style="color: rgb(0, 0, 0);">gap>
R:=ResolutionNormalSeries([N1,N2,N3],80,false,2);;time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">131960<br>
      <br>
gap> TR:=TensorWithIntegersModP(R,2);;time;<br>
0<br>
      <br>
gap> Homology(TR,79,2);time;<br>
80<br>
950<br>
      </span></span></span><br style="color: rgb(0, 0, 0);">
      </span></span><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;">This shows that for the 7th group G of
order 64 we have H<sub>79</sub>(G,Z<sub>2</sub>) = (Z<sub>2</sub>)<sup>80</sup>.
      <br>
      <br>
For integral cohomology calculations it might be worth investigating if
higher dimensional Tietze simplifications could sometimes be used
to overcome the problem of resolution generators with large
boundaries. <br>
      <br>
b) The computation<br>
      <br>
      <span style="color: rgb(0, 0, 0);">gap> 
L:=LowerCentralSeries(SylowSubgroup(MathieuGroup(24),2));</span><span
 style="color: rgb(0, 0, 0);"></span><br style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap> 
R:=ResolutionNormalSeries(L,7);;</span><br>
      <br>
took just under two hours to produce seven terms of an integral
ZP-resolution for
the Sylow 2-subgroup P (order 1024) of M<sub>24</sub>. The resolution R
has just over 11000 generators in dimension 7. The function <span
 style="font-family: helvetica,arial,sans-serif;">Homology(TR,6) <span
 style="font-family: serif;">naively applies GAP's Smith
Normal Form algorithm to the chain complex TR = R(×)<sub>ZP</sub>Z</span></span>
and, in view of the number of generators in dimension 7, would probably
take for ever to complete. However, the matrices for the boundary maps
in TR are in upper triangular block form, and so GAP's SNF algorithm
could be applied in a divide-and-conquer fashion to calculate the 6th
homology of P. A function for this divide-and-conquer approach needs to
be written.<br>
      </span></span> </td>
    </tr>
    <tr>
      <td
 style="vertical-align: top; background-color: rgb(255, 255, 255);"><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-weight: bold;">3.
PrimePartDerivedFunctor(G,R,n)</span><br style="font-weight: bold;">
      <br>
      <span style="font-family: serif;">The second integral homology
of, say, the Sylow 2-subgroup of S<sub>14</sub> can be calculated using
a standard GAP function<br>
      <br>
      <span style="color: rgb(0, 0, 0);">gap>
G:=SylowSubgroup(SymmetricGroup(14),2);;<br>
      <br>
      </span> <span style="color: rgb(0, 0, 0);">gap>
AbelianInvariantsMultiplier(G);time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[ 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2 ]</span><br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">974539<br>
      <br>
      <span style="color: rgb(0, 0, 102);">which takes about 16 minutes
to complete. The following HAP functions are significantly quicker at
this calculation.<br>
      <br>
      <span style="color: rgb(0, 0, 0);">gap>
L:=PCentralSeries(SylowSubgroup(SymmetricGroup(14),2));;</span><span
 style="color: rgb(0, 0, 0);"></span><br style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
R:=ResolutionNormalSeries(L,3);;time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">2241<br>
      <br>
gap> TR:=TensorWithIntegers(R);; time;<br>
0<br style="color: rgb(0, 0, 0);">
      </span> <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap> Homology(TR,2);time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[ 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2 ]</span><br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">614</span><br>
      <br>
In versions of GAP prior to version 4.4.6 the standard function <span
 style="font-family: helvetica,arial,sans-serif;">AbelianInvariantsMultiplier()
      <span style="font-family: serif;">ran very much faster but
sometimes gave the wrong answer. Despite its unreliability, this older
function was certainly based on a sound algorithm and it is probably
more realistic to compare HAP's timings against the older function. For
example, the GAP version 4.4.4 commands</span></span><br>
      <br>
      <span style="color: rgb(0, 0, 0);">gap>
AbelianInvariantsMultiplier(MathieuGroup(23));time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[ 2 ]</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">5650</span><br>
      <br>
take under 6 seconds to calculate the second integral homology of the
Mathieu group M<sub>23</sub>. (The calculation is not correct
since in fact H<sub>2</sub>(M<sub>23</sub>,Z) = 0.)<br>
      <br>
The Sylow p-subgroups of </span></span></span></span><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;"><span style="color: rgb(0, 0, 0);"><span
 style="color: rgb(0, 0, 102);">M<sub>23</sub> are non-cyclic for p=2,3
only. So HAP's function PrimePartOfIntegralHomology() can be used to
calculate </span></span></span></span><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;"><span style="color: rgb(0, 0, 0);"><span
 style="color: rgb(0, 0, 102);">H<sub>2</sub>(M<sub>23</sub>,Z)=0 as
follows. Note however that this approach is a good bit slower than GAP
version 4.4.4's standard function.

      <br>
      <span style="color: rgb(0, 0, 0);">gap> G:=MathieuGroup(23);;
P2:=SylowSubgroup(G,2);; P3:=SylowSubgroup(G,3);;</span><span
 style="color: rgb(0, 0, 0);"></span><br style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
gensP2:=GeneratorsOfGroup(P2);; gensP3:=GeneratorsOfGroup(P3);;</span><br
 style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
R:=ResolutionFiniteGroup(gensP2,3);;time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">690</span><br
 style="color: rgb(0, 0, 0);">
      </span></span></span></span><br>
      <span style="color: rgb(0, 0, 0);">gap>
S:=ResolutionFiniteGroup(gensP3,3);;time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">0<br>
      <br>
gap> T:=TensorWithIntegers;;<br>
      </span> <br>
      <span style="color: rgb(0, 0, 0);">gap>
PrimePartDerivedFunctor(G,R,T,2);time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[  ]</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">7764</span><br
 style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
PrimePartDerivedFunctor(G,S,T,2);time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[  ]</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">419</span><br
 style="color: rgb(0, 0, 0);">
      <br>
      <span style="color: rgb(0, 0, 102);">The discrepancy
between the timings for the two approaches is probably because t<span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;"></span></span></span><span
 style="color: rgb(0, 0, 102);">he
function <span style="font-family: helvetica,arial,sans-serif;">PrimePartOfIntegralHomology()
      </span></span><span style="color: rgb(0, 0, 102);"><span
 style="font-family: helvetica,arial,sans-serif;"><span
 style="font-family: serif;">computes a resolution for a large number
of
double coset representative of P in G. It should be possible to
restrict the computations to a subset of these representatives. <br>
      <br>
Sometimes HAP's functions are a bit faster than even the older 
 style="font-family: helvetica,arial,sans-serif;">
AbelianInvariantsMultiplier()</span> function. Compare for example the
GAP version 4.4.4 commands<br>
      <br>
      <span style="color: rgb(0, 0, 0);"></span><span
 style="color: rgb(0, 0, 0);">gap>
P:=SylowSubgroup(SymmetricGroup(20),2);;</span><br
 style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
AbelianInvariantsMultiplier(P); time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[ 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]</span><br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">672120</span><br>
      <br>
      <span style="color: rgb(0, 0, 102);">versus<span
 style="color: rgb(0, 0, 0);"></span></span></span></span><span
 style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);"></span><span
 style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);"></span><br
 style="color: rgb(0, 0, 0);">
      <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap>
R:=ResolutionNormalSeries(BigStepLCS(P,8),3);; time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">6882<br>
      <br>
gap> TR:=TensorWithIntegers(R);;time;<br>
0<br style="color: rgb(0, 0, 0);">
      </span> <br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">gap> Homology(TR,2);time;</span><br
 style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">[ 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ]</span><br style="color: rgb(0, 0, 0);">
      <span style="color: rgb(0, 0, 0);">2381<br>
      <br>
      <span style="color: rgb(0, 0, 102);">(In GAP version 4.4.6 the
function <span style="font-family: helvetica,arial,sans-serif;">AbelianInvariantsMultiplier(G)
      <span style="font-family: serif;">ran for about 10 minutes</span>
      <span style="font-family: serif;">on G=M</span><sub
 style="font-family: serif;">23</sub><span style="font-family: serif;">
before exceeding the permitted memory.  It failed to complete in
over an hour for G the Sylow 2-subgroup of S<sub>20</sub>.)</span></span></span><br>
      </span> </span> </td>
    </tr>
    <tr>
      <td style="vertical-align: top;">
      <table
 style="margin-left: auto; margin-right: auto; width: 100%; text-align: left;"
 border="0" cellpadding="2" cellspacing="2">
        <tbody>
          <tr>
            <td style="vertical-align: top;"><a
 style="color: rgb(0, 0, 102);" href="aboutAbelianCategories.html">Previous
Page</a><br>
            </td>
            <td style="text-align: center; vertical-align: top;"><a
 href="aboutContents.html"><span style="color: rgb(0, 0, 102);">Contents</span></a><br>
            </td>
            <td style="text-align: right; vertical-align: top;"><a
 href="aboutExtensions.html"><span style="color: rgb(0, 0, 102);"></span><br>
            </a> </td>
          </tr>
        </tbody>
      </table>
      <a href="aboutTopology.html"><br>
      </a> </td>
    </tr>
  </tbody>
</table>
<br>
<br>
</body>
</html>

Messung V0.5
C=96 H=98 G=96

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.