This PR includes a number of related functional changes:
The functionality of _Alphabet has been merged into _NgramTrie with the result being named _AlphabetTrie
The trie structure in _AlphabetTrie is constructed piecemeal in response to demand
_AlphabetTrie is used more aggressively in the diffing algorithm to reduce path proliferation.
This is sufficiently effective that the black box tests no longer exercise the path culling logic on their own
Common worst-case inputs improve significantly in both algorithmic efficiency as well as diff quality. Most tests improve modestly, and regressing tests cases are very minor (and still represent a dramatic improvement over Myers')
This PR includes a number of related functional changes:
_Alphabet
has been merged into_NgramTrie
with the result being named_AlphabetTrie
_AlphabetTrie
is constructed piecemeal in response to demand_AlphabetTrie
is used more aggressively in the diffing algorithm to reduce path proliferation.Common worst-case inputs improve significantly in both algorithmic efficiency as well as diff quality. Most tests improve modestly, and regressing tests cases are very minor (and still represent a dramatic improvement over Myers')