Files
2026-07-12 14:22:00 +04:00

103 lines
6.8 KiB
HTML

<!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>Страница 4</title>
</head>
<body>
<p style="text-align: center">
<i><b>Страница 4</b></i>
</p>
<hr />
<h1 style="text-align: center">Хеш-фукнция</h1>
<h2 style="text-align: center">Свойства хеш-функции</h2>
<p style="text-align: justify">
Хеш-функция&nbsp;(англ.&nbsp;hash function&nbsp;от&nbsp;hash&nbsp;&mdash;
&laquo;превращать в фарш&raquo;), или&nbsp;функция свёртки&nbsp;&mdash;
функция, осуществляющая преобразование&nbsp;массива&nbsp;входных данных
произвольной длины в выходную&nbsp;битовую&nbsp;строку установленной
длины, выполняемое&nbsp;определённым алгоритмом. Преобразование,
производимое хеш-функцией, называется&nbsp;хешированием. Исходные данные
называются входным массивом, &laquo;ключом&raquo; или
&laquo;сообщением&raquo;. Результат преобразования называется
&laquo;хешем&raquo;, &laquo;хеш-кодом&raquo;, &laquo;хеш-суммой&raquo;,
&laquo;сводкой&nbsp;сообщения&raquo;.[<a
href="https://ru.wikipedia.org/wiki/Хеш-таблица"
>7</a
>]
</p>
<p style="text-align: justify">Свойства хеш-функции:</p>
<ul>
<li style="text-align: justify">Должна обладать свойствами функции.</li>
<li style="text-align: justify">
Не должна обязательно являться инъективной или сюръективной.
</li>
</ul>
<p style="text-align: justify">Определения :</p>
<ul>
<li style="text-align: justify">
Если известна область определения и можно задать отображение в область
значений, мощность которого будет больше или эквивалентна мощности
области определения, при котором хеш-функция будет являться
<i>инъективной</i>, то такая хеш-функция будет являться<i
>&nbsp;идеальной хеш-функцией</i
>.
</li>
<li style="text-align: justify">
Если область определения неизвестна&nbsp;и можно задать отображение в
область значений, мощность которого будет больше или эквивалентна
мощности области определения, при котором хеш-функция будет
являться&nbsp;<i>инъективной</i>, то такая хеш-функция будет являться<i
>&nbsp;динамической идеальной хеш-функцией</i
>.
</li>
<li style="text-align: justify">
Если известна&nbsp;область определения и можно задать отображение в
область значений, мощность которого будет эквивалентна&nbsp;мощности
области определения, при котором хеш-функция будет
являться&nbsp;<i>биективной</i>, то такая хеш-функция будет являться
<i>минимальной идеальной хеш-функцией</i>.
</li>
<li style="text-align: justify">
Хеш-функция является <i>k-совершенной хеш-функцией</i>,
если&nbsp;область определения неизвестна и можно задать отображение в
область значений, любой элемент которого будет обладать не более чем k
отношениями.
</li>
</ul>
<div style="text-align: justify">
Существует несколько терминов, связанных с хеш-функцией:
</div>
<dl>
<dt style="text-align: justify"><i>Хеш</i></dt>
<dd style="text-align: justify">
элемент области значений, соотнесённый с заранее известным элементом из
области определения.
</dd>
<dt style="text-align: justify"><i>Хеширование</i></dt>
<dd style="text-align: justify">это процесс получения хеша.</dd>
<dt style="text-align: justify"><i>Коллизия</i></dt>
<dd style="text-align: justify">
ситуация, при которой нарушается условие инъективности хеш-функции.
</dd>
</dl>
<p style="text-align: justify">
Производительность хеширования в среднем случае зависит от того, насколько
хорошо хеш-функция приближена к биективной k-совершенной хеш-функции, где
разность количества отношейний любых двух элементов области значений
стремиться к нулю. Другими словами, каждый элемент области значений
обладает минимально возможным количеством отношений. Данное хеширование
автор книги [2, с. 291] Томас Кормен называет
<i>простым равномерным хешированием</i>.
</p>
<div style="text-align: justify">
Существует множество разнообразных хеш-функций, алгоритмы которых
применяются в различных ситуациях, например, когда требуется скорость
вычисления хеш-значения, но с повышенным шансом появления коллизии или
наоборот.
</div>
</body>
</html>