Tautomer Enumeration Algorithm 1
The enumeration algorithm is based upon a constrained depth first search.
At each level, the lowest unassigned donor or acceptor atom is selected.
First it is protonated (if there are any remaining hydrogens to be placed), the effects propagated to the rest of the molecule, and the search continued.
After backtracking, it is then deprotonated, the effects propagated and the search continued recursively.