Программирование на языке С++



Download 0,98 Mb.
bet2/7
Sana22.02.2022
Hajmi0,98 Mb.
#91766
1   2   3   4   5   6   7
Bog'liq
Хеширование

Функции хеширования

  • Процедура преобразования ключа в адрес обычно выполняется в три этапа.
  • 1. Если ключ не цифровой, он преобразуется в соответствующее цифровое представление таким образом, чтобы исключить потерю информации, содержащейся в ключе. Например, буквы могут переводится в цифровой код, либо символы представляются в виде строки битов.
  • 2. Ключи в цифровом или битовом представлении затем преобразуются (функцией хеширования) в совокупность произвольно распределенных чисел, значения которых имеют тот же порядок, что и значения адресов основной области памяти. Желательно, чтобы набор ключей был распределен как можно равномернее в диапазоне допустимых адресов.
  • 3. Полученные числа умножаются на константу, что позволяет разместить их строго в диапазоне значений адресов основной области памяти. Например, пусть в результате выполнения этапа 2 получаются четырехзначные числа (т.е. число от 0 до 9999), а в области памяти выделено 7000 адресов. Тогда числа следует умножать на 0.7, что позволит получать адреса в интервале от 0 до 6999.


Хеш-функции

  • При выборе хеш-функции следует учитывать сложность ее вычисления, а также равномерность распределения значений, которая позволяет не только сократить число коллизий, но и не допустить скучивания значений в отдельных частях таблицы.
  • Для каждого конкретного множества возможных ключей можно изобрести (подобрать, найти) свою, возможно наилучшую, хеш-функцию распределения ключей по таблице. Но существуют и универсальные хеш-функции, дающие хорошие результаты в большинстве случаев. Рассмотрим некоторые из них.


Хеш-функции Метод деления

  • Рассмотрим три основные хеш-функции, используемые на этапе 2 для преобразования ключа в адрес: метод деления, метод середины квадратов и метод свертывания ключа. Наиболее распространенная функция хеширования основывается на методе деления и определяется в виде
  • H(K) = (K mod m) + 1,
  • где K - ключ, mod - операция, вычисляющая остаток от деления, m - делитель.
  • Равномерность распределения получаемых адресов во многом зависит от выбранного делителя m. Следует избегать четных делителей, так как при этом четные и нечетные ключи отображаются соответственно в четные и нечетные адреса. Если множество ключей состоит в основном из четных или в основном из нечетных ключей, будут возникать многочисленные коллизии.
  • Как показывают исследования, если m является большим простым числом, то количество коллизий невелико. Также неплохие результаты дает выбор в качестве делителя m числа, которое не является простым и не содержит простых сомножителей, меньших 20.



Download 0,98 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish