У меня нет ответа на этот вопрос,
Но я чувствую, что этот алгоритм точно такой же, как алгоритм, используемый алгоритмами сжатия для создания сжатых файлов с использованием словарного подхода.
Если я не ошибаюсь, при таком подходе словарь используется следующим образом:
данные:
abccccabaccabcaaaaabcaaabbbbbccccaaabcbbbbabbabab
парс 1:
ключ: *
значение: abc
новые данные:
*cccabacc*aaaa*aaabbbbbccccaa*bbbbabbabab
Просто обоснованное предположение, я думаю (не уверен здесь), что стандартный файл "zip" использует этот подход,
поэтому я предлагаю вам взглянуть на эти алгоритмы