  This paper generalizes the definition of a Heegaard splitting to unify
Scharlemann and Thomspon's concept of thin position for 3-manifolds, Gabai's
thin position for knots, and Rubinstein's almost normal surface theory. This
gives generalizations of theorems of Scharlemann, Thompson, Rubinstein, and
Stocking. In the final section, we use this machinery to produce an algorithm
to determine the bridge number of a knot, provided thin position for the knot
coincides with bridge position. We also present several finiteness and
algorithmic results about Dehn fillings with "small" Heegaard genus.
