Pull to refresh

Comments 7

пытался максимально сократить читабельность кода насколько это физически возможно

Код все еще достаточно читаемый, еще есть потенциал.

А если серьезно, что за свойства у дерева, какая основная фича?

Основная фича — быстрый поиск по префиксу, например в случае IP адресов (т.е. битовых строк) — найти все адреса входящие в подсетку.


Операции с префиксными деревьями имеют сложность O(k) (где k — длина ключа), в отличие от O(log n) (где n — количество элементов) в случае с "обычными" деревьями.

Ужасное описание, честно говоря. Пришлось загуглить, чтобы понять, о чём идёт речь... Зато несколько фраз из википедии сделали идею такого дерева абсолютно понятной.

Уточните, что именно было неясно, я старался по максимуму с:

... переход между вершинами происходит по сравнению соответствующего бита.

Это из начала описания. Соответствующего чему? Бита чего?

У вас много текста – деталей реализации и т.п., путающие картинки (не представляю, как можно их понять, не разобравшись в теме до чтения статьи, а уж картинки с графами с циклами в статье про дерево – за гранью добра и зла), плюс вы пошли по битам, представляя ключи в виде символов, что дополнительно запутывает.

Ну и основы упомянуты мельком. Одного слова trie недостаточно: лучше было бы сказать, какие недостатки у префиксного дерева – и тогда идея, как можно с ними справиться, будет почти очевидна [только идея оставить дерево бинарным неочевидна – но она imho вообще связана с применением такого дерева для хранения хэшей, храни в нём слова – было б незачем], структура нового дерева проста и понятна, а уж алгоритмы поиска/добавления/удаления расписать (и посчитать их сложность) – ненапряжное упражнение для читателя.

Иначе говоря, последовательность "берём префиксное дерево и сплющиваем куски, где у родителя только один потомок... ах да, дерево двоичное!" проста и понятна, TL;DR – нет.

Но всё равно спасибо, благодаря вам я узнал про эту структуру и почитал дополнительную литературу в сети. Ощущение "вроде что-то простое, почему непонятно?" – прекрасный стимул :-)

пытался максимально сократить читабельность кода

то есть буквально обфусцировали код?

Sign up to leave a comment.

Articles