Мне нужно вычислить LZ-сложность двоичной строки.LZ-сложность - это количество подстрок разности, встречающихся при просмотре потока от начала до конца.В качестве примера:
s = 1001111011000010
Маркировка в разных подстроках сложности последовательности c (s) = 6: s = 1/0/01/1110/1100/0010 /
Может ли кто-нибудь помочь мне найти простое решение для этого?Я уверен, что для этой хорошо известной проблемы должно быть несколько очень простых реализаций, но мне трудно их найти.Можно ли это сделать просто с помощью построения дерева суффиксов или чего-то подобного.Если да, то как именно?и что я должен делать?
кто-нибудь знает какой-либо исходный код на c / c ++ для выполнения задачи?
Заранее спасибо.
, чтобы уточнить конструкцию дерева, предложенного в ответах.Дерево выглядит так?
o
/ \
o o
/ \ / \
o o o o
/ /
o o