В настоящее время лучшим известным конструктором Suffix-Array является LibDivSufSort, автор Yuta Mori: http://code.google.com/p/libdivsufsort/
Он использует методологию индуцированной сортировки (в основном, после сортировки всех строк, начинающихся с "A *", вы можете вызватьсортировка строк «BA *», «CA *», «DA *» и т.Он также самый быстрый и использует оптимальный объем памяти (5N).Лицензия ненавязчива, поэтому этот алгоритм интегрирован в несколько других программ, таких как, например, библиотека сжатия libbsc, от Ильи Гребнова.http://libbsc.com/default.aspx
Для сравнения вы найдете эталонные тесты сжатия суффикса массива, связанные на этой странице: http://code.google.com/p/libdivsufsort/wiki/SACA_Benchmarks и на этой странице http://homepage3.nifty.com/wpage/benchmark/index.html
В тесте также перечислены многие другиедостойная реализация SACA.Тем не менее, по причинам, связанным с лицензией и эффективностью, я бы порекомендовал среди них libdivsufsort.
Редактировать: По-видимому, MSufsort скоро перейдет к версии 4 и должен стать довольно быстрым, чем Divsufsort.Если это так, он станет новым чемпионом SACA.Но, тем не менее, у нас еще нет даты релиза, и это будет альфа.Так что если вам нужна проверенная реализация сейчас, libdivsufsort остается лучшим выбором.
Обратите также внимание, что эти «лучшие реализации SACA» не используют «один алгоритм построения», но объединяют несколько приемов оптимизации, что затрудняет ихобобщать.