Изменения

Перейти к: навигация, поиск

Бор

1317 байт добавлено, 20:21, 6 апреля 2016
Использование бора в качестве ассоциативного массива
==Использование бора в качестве ассоциативного массива==
Мы можем ввести для каждой вершины поле <tex>\mathtt{value} \</tex>Существует множество реализаций ассоциативного массива, начиная от обычного массива (храним массив в отсортированном состоянии, при добавлении элемента, все элементы с большим значением сдвигаются) и заканчивая хеш-таблицами и деревьями поиска. Ещё одну реализацию можно сделать используя бор или сжатый бор. НапримерНачнём с очевидных минусов:# Бор хранит строки или символы, а это значит, что у значения ключа будет ограничение на тип (строки, мы имеем <tex>\mathtt{map}</tex><tex><</tex><tex>\mathtt{string}\ символы, либо числа, \mathtt{type}\ </tex><tex>></tex>представленные как строки). Будем искать ключ# Если реализовывать ассоциативный массив на обычном боре, спускаясь по бору. Соответственноа ключами будут являться строки, если на какой-то вершине нет пометкибудет использоваться слишком много памяти, что вершина является концом словаа так же будет большая константа# Если у нас все строки будут являться префиксами друг друга, то объекта в поиск и добавление могут занимать <tex>\mathtt{map}O(n)</tex> нет. Если хотим добавить его, то ставим действий в вершину флаг конца худшем случае (например хранятся слова и заносим значение.Работать такой алгоритм будет за <tex>O(k)"a", "aa", "aaa", "aaaa", ...</tex>), где <tex>kn</tex> {{-количество словПлюсы:# Достаточно простая реализация.# Операции добавления имеют меньшую константу (из--}} максимальная длина словаза отсутствия всевозможных операций балансировки), чем у двоичных деревьев поиска, поэтому в среднем данная реализация может работать быстрее.# Сортировка элементов гарантируется уже самим построением бора.
==См. также==
313
правок

Навигация