Мне нужно вычислить 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