<Chapter Label="Introduction">
    <Heading>Introduction</Heading>
    <Section>
        <Heading>Introduction</Heading>

Given an arbitrary finite group, the computation of its automorphism group is a
very difficult task. Pioneer work in this area was carried out by Felsch
and Neubueser (1970), whose algorithm used the output of their
subgroup lattice program. A technique developed by Neubueser in
the early 1970s sought to compute the automorphism group viewed as a
permutation group acting on unions of certain conjugacy classes of the
group. A similar method was implemented by Hulpke (1997) in the &GAP; 4
library. Recently, Cannon and Holt (1999) presented a new algorithm which
uses a <E>hybrid group</E> approach.
<P/>

More efficient approaches are available to determine the automorphism
group for groups satisfying certain properties. Following the work of
Shoda (1928), Hulpke in 1997 implemented a practical method for finite
abelian groups in the &GAP; 4 library. Wursthorn (1993) adapted modular
group algebra techniques to compute the automorphism groups of <M>p</M>-groups;
the &GAP; 3 share package <Package>Sisyphos</Package> includes an implementation. Smith
(1994) introduced an algorithm for finite solvable groups which is
available in the <Package>AutAg</Package> share package of &GAP; 3.
<P/>

Moreover, the <M>p</M>-group generation method of Newman (1977) and O'Brien
(1990) can be modified to compute the automorphism group of a finite
<M>p</M>-group as outlined in O'Brien (1995). This algorithm is implemented
in the ANU <C>pq</C> C program.
<P/>

Here we introduce a new function to compute the automorphism group of
a finite <M>p</M>-group. The underlying algorithm is a refinement of the
methods described in O'Brien (1995). In particular, this implementation
is more efficient in both time and space requirements and hence has a
wider range of applications than the ANU <C>pq</C> method. Our package is
written in &GAP; code and it makes use of a number of methods from the
&GAP; library such as the MeatAxe for matrix groups and
permutation group functions.
<P/>

The &GAP; 4 package <Package>ANUPQ</Package>, which is an interface to most of
the functionality of the ANU <C>pq</C> C program, uses the &AUTPGRP; package
to compute automorphism groups of <M>p</M>-groups.
<P/>
We have compared our method to the others available in &GAP;.
Our package usually out-performs all but the method designed
for finite abelian groups. We note that our method uses the
small groups library in certain cases and hence our algorithm
is more effective if the small groups library is installed.
    </Section>
</Chapter>

