То есть вы предлагаете группировать слова из словаря по 100 штук в строки, далее эти строки сжимать и раскидывать по дереву поиска? Тогда для поиска нужного слова можно будет найти строку, его содержащую, за O(1), но затем нужно всю эту строку расшифровать, и далее внутри неё искать нужное слово уже последовательным поиском.
Ну ладно, допустим, затраты на расшифровку строки из 100 слов вместо расшифровки одного слова, и затраты на последовательный поиск одного слова из ста не так уж велики по сравнению с поиском нужной строки в дереве, если словарь очень большой. Но возникает ещё другая проблема: если добавляются новые слова, то куда вставлять их в дерево? Отдельным узлом? Или всё таки внутрь строки к другим 100 словам? И то же самое при изменении слов, когда они должны перейти на новое место. В первом случае (если новые слова добавляются отдельными узлами) при частых изменениях скопится больше коротких строк, чем длинных, и эффективность алгоритма сжатия быстро упадёт. А во втором случае (при добавлении новых слов к существующим) при частых изменениях будут скапливаться очень длинные строки, что будет увеличивать время последовательного поиска в них (и время на вставку тоже возрастёт). Можно, конечно, при достижении определённого размера делить строку на две (например, при добавлении 150-го по счёту слова делить строку на две по 75 слов). Но в целом это всё выглядит как более сложное и нагромождённое решение, чем предлагаемое автором статьи, и в любом случае менее эффективное по времени работы. А преимуществ не даёт никаких, кроме «понимания кодировки чем-то, что с ней не знакомо», что в данной задаче про хранение словаря вообще не требуется.
Ну ладно, допустим, затраты на расшифровку строки из 100 слов вместо расшифровки одного слова, и затраты на последовательный поиск одного слова из ста не так уж велики по сравнению с поиском нужной строки в дереве, если словарь очень большой. Но возникает ещё другая проблема: если добавляются новые слова, то куда вставлять их в дерево? Отдельным узлом? Или всё таки внутрь строки к другим 100 словам? И то же самое при изменении слов, когда они должны перейти на новое место. В первом случае (если новые слова добавляются отдельными узлами) при частых изменениях скопится больше коротких строк, чем длинных, и эффективность алгоритма сжатия быстро упадёт. А во втором случае (при добавлении новых слов к существующим) при частых изменениях будут скапливаться очень длинные строки, что будет увеличивать время последовательного поиска в них (и время на вставку тоже возрастёт). Можно, конечно, при достижении определённого размера делить строку на две (например, при добавлении 150-го по счёту слова делить строку на две по 75 слов). Но в целом это всё выглядит как более сложное и нагромождённое решение, чем предлагаемое автором статьи, и в любом случае менее эффективное по времени работы. А преимуществ не даёт никаких, кроме «понимания кодировки чем-то, что с ней не знакомо», что в данной задаче про хранение словаря вообще не требуется.