hankcs/AhoCorasickDoubleArrayTrie

some confusion about about the double array

MountainHolder opened this issue · 1 comments

As I know the double array can be simplified as follows:
base[r] + c = s
check[s] = r
but in you code it is implement like this:
base[r] + c = s
check[s] = base[r]
the corespondding code is check[begin + sibling.getKey()] = begin;
is it right?

It's a variant. As long as you use the same formula in both building and searching phases, it is right.

https://github.com/hankcs/pyhanlp/blob/49202d2210d97b075e35c90aa20b9cbe3b31f413/tests/book/ch02/dat.py#L32