Преимущества и недостатки линейного зондирования
Преимущества и недостатки линейного зондирования
В общем случае, если в хеш-таблице занято небольшое количество ячеек, можно надеяться, что для реализации большинства поисков, успешных или безрезультатных, придется выполнить всего одну-две операции зондирования. Однако когда таблица существенно заполнена элементами, количество пустых ячеек будет невелико, и в этом случае следует ожидать, что для выполнения безрезультатного поиска потребуется очень много операций зондирования (вплоть до n-1 зондирования при наличии только одной пустой ячейки). На практике, при использовании схемы с открытой адресацией, подобной линейному зондированию, имеет смысл обеспечить невозможность перегрузки хеш-таблицы. В противном случае последовательности зондирования окажутся невероятно длинными.
Все сказанное не слишком сложно. Однако по поводу линейного зондирования стоит привести несколько соображений. Прежде всего, если хеш-таблица содержит n элементов, в нее можно вставить только n элементов (фактически, это справедливо по отношению к любой схеме с открытой адресацией). Способы расширения хеш-таблицы, в которой используется открытая адресация, мы рассмотрим чуть позже. Такие динамические хеш-таблицы позволили бы избежать длинных последовательностей зондирования, которые значительно снижают эффективность.
Второй момент - проблема кластеризации. При использовании линейного зондирования выясняется, что элементы имеют тенденцию к образованию непрерывных групп, или кластеров, занятых ячеек. Добавление новых элементов приводит к увеличению размеров групп, в результате чего конфликт вставленных элементов с элементом в кластере становится все более вероятным. И, конечно, с увеличением вероятности конфликта размеры кластеров также увеличиваются.
Это можно подтвердить математически, используя идеальную функцию хеширования, которая выполняет рандомизацию входных данных. Вставим элемент в пустую хеш-таблицу. Предположим, что в результате генерируется индекс x. Вставим еще один элемент. Поскольку результат действия функции хеширования по существу является случайным, вероятность попадания нового элемента в любую данную ячейку равна 1/n. В частности, вероятность его конфликта с индексом x и вставки в ячейку x + 1 равна 1/n. Кроме того, новый элемент может попасть непосредственно в ячейку x -1 или x + 1. Вероятность обеих этих ситуаций также равна 1/n, и, следовательно, вероятность того, что второй элемент образует кластер из двух ячеек, равна 3/n.
После вставки второго элемента возможны три ситуации: два элемента образуют кластер, два элемента разделены одной пустой ячейкой или два элемента разделены более чем одной пустой ячейкой. Вероятности этих трех ситуаций соответственно равны 3/n, 2/n и (n - 5)/n.
Вставим третий элемент. В первом случае это может привести к увеличению размера кластера с вероятность 4/n. Во втором случае это может привести к образованию кластера с вероятностью 5/n. В третьем случае это может привести к образованию кластера с вероятностью 6/n. Продолжая такие логические рассуждения, мы приходим к выводу, что вероятность образования кластера после вставки трех элементов равна 6/n - 8/n(^2^), что приблизительно в два раза больше предыдущего значения вероятности. Можно было бы продолжить вычисление вероятностей для все большего количества элементов, но это лишено особого смысла. Вместо этого обратите внимание, что при вставке элемента и при наличии кластера из двух элементов вероятность увеличения этого кластера равна 4/n. При наличии кластера с тремя элементами вероятность его увеличения возрастает до 5/n и т.д.
Как видите, после образования кластеров вероятность их увеличения все время возрастает.
Кластеры влияют на среднее количество зондирований, требуемых как для обнаружения существующего элемента (попадания), так и для выяснения того, что элемент в хеш-таблице отсутствует (промаха). Кнут показал, что среднее количество зондирований для обнаружения попадания приблизительно равно 1/2(1 + 1/(1 -x)), где x - количество элементов в хеш-таблице, деленное на размер хеш-таблицы (эту величину называют коэффициентом загрузки (load factor)), а среднее количество зондирований для обнаружения промаха приблизительно равно 1/2(1 + 1/(1 -x)(^2^)) [13]. Несмотря на простоту этих выражений, математические выкладки, приводящие к их получению, весьма сложны.
Используя приведенные формулы, можно показать, что если хеш-таблица заполнена примерно наполовину, для обнаружения попадания требуется в среднем приблизительно 1.5 зондирования, а для обнаружения промаха - 2.5 зондирования. Если же таблица заполнена на 90%, для обнаружения попадания требуется в среднем 5.5 зондирований, а для обнаружения промаха - 55.5 зондирований. Как видите, при использовании хеш-таблицы, в которой в качестве схемы разрешения конфликтов применяется линейное зондирование, таблица должна быть заполнена не более чем на две трети, чтобы эффективность оставалась приемлемой. Если это удастся, мы снизим влияние, которое кластеризация оказывает на эффективность хеш-таблицы.
------
Описанная особенность очень важна для хеш-таблиц, в которых в качестве метода разрешения конфликтов применяется линейное зондирование. Нельзя допускать, чтобы хеш-таблица заполнялась в значительной степени. В противном случае длина последовательности зондирований становится чрезмерно большой. На протяжении многих лет я использую "две трети" в качестве предела заполнения хеш-таблиц, и этот критерий работает весьма успешно. Советую не допускать превышения указанного значения, но в любом случае стоит поэкспериментировать с меньшими значениями, например, с заполнением таблицы наполовину.
------
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Преимущества и недостатки data:URI
Преимущества и недостатки data:URI Вместе с техникой CSS Sprites (или как ее альтернатива) data:URI может существенно уменьшить число HTTP-запросов. Краткий список плюсов данного метода:Экономят HTTP-запросы, предотвращают издержки, связанные с большим числом объектов.Экономят число
Недостатки
А если по-другому? Ниже приведено сравнение других методов для снятия блокировки с загрузки скриптов, но все они также обладают своими недостатками. Метод Недостатки Используем атрибут defer тега scriptРаботает только в IEИспользуем document.write() для подключения тега
Недостатки и ограничения
Недостатки и ограничения Файловая систем s5fs привлекательна благодаря своей простоте. Однако обратной стороной медали является низкая надежность и производительность.С точки зрения надежности слабым местом этой файловой системы является суперблок. Суперблок несет
Достоинства и недостатки
Достоинства и недостатки Несомненным достоинством каталогов является наглядность и простота поиска. Вам не нужно выдумывать какие-либо запросы, а затем выискивать что-то полезное из всего того многообразия ссылок, которые нашла поисковая система, – вы точно знаете,
Преимущества и недостатки различных технологий удаленной регистрации
Преимущества и недостатки различных технологий удаленной регистрации В табл. 14.1 приведены наиболее важные характеристики различных технологий удаленной регистрации, рассмотренных в данной главе. Заметьте, что конкретные оценки могут различаться в зависимости от
Преимущества и недостатки проводной сети
Преимущества и недостатки проводной сети Рассмотрев достаточно много сетевых стандартов, которые находят применение в случае использования той или иной сетевой топологии, можно составить список основных преимуществ и недостатков проводной сети. Данная информация
Преимущества и недостатки беспроводной сети
Преимущества и недостатки беспроводной сети В любом деле есть свои преимущества и недостатки, однозначно определяющие выбор той или иной технологии в конкретных условиях. Это правило касается и беспроводных сетей.Рассмотрим основные преимущества беспроводной
12.20 Недостатки DNS
12.20 Недостатки DNS Domain Name System — очень важная система. Некорректные элементы базы данных могут сделать невозможным доступ к прикладным хостам. Поскольку многие администраторы используют распределенную базу данных с ручным вводом информации, весьма вероятно возникновение
3.1.2. Недостатки
3.1.2. Недостатки А теперь ложка дегтя – о недостатках I2P. Нет ничего идеального, и I2P – тоже не идеальна. Начнем с самой концепции I2P. Анонимизация и шифрование трафика происходит лишь внутри этой сети. Работая с I2P, вы можете обратиться только к I2P-ресурсам (к I2P-сайтам, почте,
Объемное расширение ассортимента вместо линейного
Объемное расширение ассортимента вместо линейного За счет различных наборов вы можете существенно расширить ассортимент интернет-магазина в объеме – за счет большого количества комбинаций товаров Когда человек будет выбирать определенный продукт, предложите ему
Процесс зондирования
Процесс зондирования Среда выполнения .NET выясняет место размещения приватного компоновочного блока с помощью технологий зондирования, которые на самом деле оказываются намного менее агрессивными, чем кажется из названия. Зондирование представляет собой процесс
2.3.5. Преимущества и недостатки библиотек
2.3.5. Преимущества и недостатки библиотек Познакомившись со статическими архивами и совместно используемыми библиотеками. читатели, очевидно, задумались: какие же из них лучше использовать? Есть несколько важных моментов, о которых следует помнить.Большим преимуществом
Разрешение конфликтов посредством линейного зондирования
Разрешение конфликтов посредством линейного зондирования Если количество элементов, которые, скорее всего, должна содержать хеш-таблица, известно, можно выделить место для хеш-таблицы, содержащей это количество элементов и небольшое число свободных ячеек "на всякий
Преимущества и недостатки связывания
Преимущества и недостатки связывания Преимущества связывания достаточно очевидны. Во-первых, в таблице, использующей связывание, никогда не возникнет ситуация нехватки места. Мы сколько угодно можем продолжать добавлять элементы в хеш-таблицу, и при этом будет
2.1. Преимущества и недостатки стационарного ПК и ноутбука
2.1. Преимущества и недостатки стационарного ПК и ноутбука Преимущества стационарного компьютера следующие:Удобная клавиатура — что ни говори, а самая простенькая клавиатура стационарного компьютера удобнее клавиатуры любого ноутбука.Монитор с крупным экраном —
14.2.2. Преимущества и недостатки DVD
14.2.2. Преимущества и недостатки DVD У всего есть свои преимущества и недостатки. Есть они и у DVD. Начнем с преимуществ.? Большая емкость диска — лишнего места не бывает! Но, с другой стороны, 4,7 Гбайт хорошо для записи фильма в цифровом качестве (или коллекции фильмов в MPEG-4). Для