Cтраница 3
Чтобы реализовать схему блочного хеширования в Delphi, вы можете использовать массив указателей на блоки, которые представляют собой массивы изменяемого размера. [31]
Используемый метод называют хешированием или рандомизацией, он ставит в соответствие идентификатору указатель, адресующий элемент в таблице идентификаторов. Таким образом, хеширование выполняет функцию отображения; она достаточно просто выполняется и обеспечивает однозначное соответствие ( во всяком случае, это желательно) идентификатора его позиции в таблице. Например, если применяются 6-байтовые идентификаторы, то простой хеш-функцией может быть сложение по модулю 2 всех 6 байт. Полученное значение используется для обращения в таблицу идентификаторов, аналогично тому, как индекс служит для обращения к массивам. [32]
Метод доступа с хешированием основан на алгоритмическом определении адресов физической записи по значениям ключей. Метод в отличие от прямого доступа допускает отображение многих ключей в один адрес. Алгоритм преобразования ключа в адрес называют алгоритмом хеширования или рандомизации. Одинаковые ключи преобразуются в одинаковые адреса. При использовании алгоритмов хеширования необходимо учитывать несоответствие порядка хранения физических записей порядку исходных ключей. Ниже показан пример метода доступа с помощью хеширования. [33]
Такие функции бесполезны для хеширования, если только ключи не распределены по диапазону равномерно, поскольку хеш-значение определяется только ведущими цифрами ключа. [34]
Существует много других методов хеширования, которые находят применение в особых ситуациям Хотя мы не можем остана & н ться на этом подробно, все же кратко рассмотрим три примерз, иллюстрируюшие сущность специальных методов хешировании. [35]
Существует много других методов хеширования, которые находят применение в особых ситуациях. Хотя мы не можем останавливаться на этом подробно, все же кратко рассмотрим три примера, иллюстрирующие сущность специальных методов хеширования. [36]
При помощи функции алгоритм хеширования определяет положение элемента в таблице на основе значения искомого элемента. [37]
Попе в таблице расишряемагп хеширования заключается нс го лишь в использовании ведущих разрядов ключа для индексирования внутри каталога и аи пол пен ни ча указанной странице последовательного гюнскэ элемента, ключ которого ранен искомому, Единственное выдвигаемое при этом требование - каждая запись каталога должна сылятьря на страницу. & тирая гарантированно содержит ВСЕ элементы тэбпицьа символов, начннакициепч п указанных разрядов. [38]
Рассмотрим кратко суть методов хеширования. Пусть число возможных значений ключа не превышает некоторого числа N. Это число называют сверткой ключа, и оно принимается за ключ базы данных рассматриваемой записи. [39]
Удаление при использовании методов хеширования, вообще говоря, не является процедурой, обратной вставке, поскольку при удалении нарушается связь между синонимами. Чтобы этого не произошло, можно вместо ключа, ставшего ненужным, не производя удаления записи, вписать специальный код, который во время опробования пропускается, но разрешает использовать эту позицию для вставки нового ключа. [40]
![]() |
Распределение вычисляемых записей по страницам. [41] |
БД известен другой алгоритм хеширования, обеспечивающий более равномерное распределение записей по страницам. [42]
![]() |
Хешированный файл. [43] |
Это - неудачная функция хеширования для названий, длина которых имеет тенденцию скапливаться вблизи 11 - 13 литер, поэтому не будет обеспечиваться равномерное заполнение участков. [44]
Типичная ошибка в реализациях хеширования заключается в том, что хеш-функция всегда возвращает одно и то же значение, возможно потому, что требуемое преобразование типов выполняется неправильно. Однострочные реализации этих функций очень легко тестировать, поэтому мы настоятельно рекомендуем проверять, насколь успешно они работают для типов ключей, которые могут встретиться в любой конкретной реализации таблицы символов. [45]