  The Heegaard genus is a fundamental invariant of 3-manifolds. However,
computing the Heegaard genus of a triangulated 3-manifold is NP-hard, and while
algorithms exist, little work has been done in making such an algorithm
efficient and practical for implementation. Current algorithms use almost
normal surfaces, which are an extension of the algorithm-friendly normal
surface theory but which add considerable complexity for both running time and
implementation.
  Here we take a different approach: instead of working with almost normal
surfaces, we give a general method of modifying the input triangulation that
allows us to avoid almost normal surfaces entirely. The cost is just four new
tetrahedra, and the benefit is that important surfaces that were once almost
normal can be moved to the simpler setting of normal surfaces in the new
triangulation. We apply this technique to the computation of Heegaard genus,
where we develop algorithms and heuristics that prove successful in practice
when applied to a data set of 3,000 closed hyperbolic 3-manifolds; we precisely
determine the genus for at least 2,705 of these.
