Узлы Radix Tree - PullRequest
       13

Узлы Radix Tree

1 голос
/ 04 июля 2011

Я работал над реализацией радикального дерева (для строк / массивов символов), но у меня возникла некоторая дилемма, выясняющая, как хранить узлы дерева, являющиеся дочерними элементами определенного узла дерева.

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

Теперь мне интересно, будет ли использование другой структуры данных (например, бинарного дерева поиска) лучшим выбором для проектирования?Я думаю, что могу увидеть очень существенное улучшение скорости по сравнению с простым связанным списком (O(log(n)) против O(n)), когда есть данные с большим количеством общих префиксов, но могут ли быть существенные компромиссы с производительностью в другом месте?

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

В качестве альтернативы, есть ли лучший (то есть более быстрый / использует меньше памяти) метод для хранения дочерних узлов?

Ответы [ 2 ]

2 голосов
/ 04 июля 2011

Вы хотите посмотреть на картинг-три. Карт-три использует BST-подобную структуру данных с простым хешем. Вы можете найти описание здесь: http://code.dogmap.org/kart.

1 голос
/ 04 июля 2011

Вы можете использовать три вместо BST или список.Для BST вам придется вычислять хеш, который может быть таким же дорогим, как обход дерева (я имею в виду дерево с массивом указателей на детей, где вы используете символ в качестве индекса).Вы закончите с набором попыток.Лучшим решением может быть создание дерева, а затем сжатие ссылок, которые не разветвляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...