Initial commit
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Страница 6</title>
|
||||
</head>
|
||||
<body>
|
||||
<p style="text-align: center">
|
||||
<i><b>Страница 6</b></i>
|
||||
</p>
|
||||
<hr />
|
||||
<h1 style="text-align: center">Решение проблем коллизий</h1>
|
||||
<h2 style="text-align: center">Метод цепочек или прямое связывание [5, c. 170-171]</h2>
|
||||
<p style="text-align: justify">
|
||||
В хеш таблице с прямым связыванием (рис 6.1) значения ключей (бункеры)
|
||||
хранятся в специальных наборах записей, называемых <i>блоками.</i> Каждый
|
||||
из них является вершиной связного списка, в котором находятся привязанные
|
||||
к блоку элементы.
|
||||
</p>
|
||||
<div style="text-align: center">
|
||||
<img src="6.1.png" height="350" />
|
||||
<p style="text-align: center">Рисунок 6.1 - хеш-таблица с прямым связыванием</p>
|
||||
</div>
|
||||
<p style="text-align: justify">
|
||||
Поиск элементов в хеш-таблице пройдёт быстрее, если связанные списки будут
|
||||
содержать ключи в отсортированном порядке. В этом случае алгоритм сделает
|
||||
вывод, что ключа нет, если дойдёт до значения больше ключевого и не станет
|
||||
просматривать список до конца. Теоретически время его работы составит
|
||||
<i>O(N/B)</i>, но на практике оно будет немного меньше.
|
||||
</p>
|
||||
<p style="text-align: justify">
|
||||
Чтобы найти нужный элемент, программе необходимо хешировать ключ и
|
||||
определить, в каком из блоков он может содержаться, а затем двигаться по
|
||||
связному списку до тех пор, пока не будет достигнут его конец или не
|
||||
обнаружится искомое. Если вы доберётесь до конца списка, значит,
|
||||
запрашиваемого элемента в хеш-таблице нет. Как и в случае с добавлением
|
||||
элемента, предстоит выполнить <i>O(N/B)</i> шагов.
|
||||
</p>
|
||||
<p style="text-align: justify">
|
||||
Хеш-таблица с прямым связыванием может расширяться и сжиматься<sup>1</sup>
|
||||
по мере необходимости, поэтому вам не нужно специально изменять её размер.
|
||||
Однако если связные списки станут слишком длинными, поиск и удаление
|
||||
элементов займут много времени. В этом случае вам понадобится увеличить
|
||||
таблицу, чтобы создать больше блоков. Поскольку при рехешировании таблицы
|
||||
не надо проводить поиск дубликатов до конца связного списка в каждом
|
||||
блоке, полностью справиться с операцией можно за время <i>O(N)</i>.
|
||||
</p>
|
||||
<hr />
|
||||
<p>
|
||||
<sup>1</sup>Удаление элементов в данном методическом материале
|
||||
рассматриваться не будет
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user