ИНФОРМАТИКА И СИСТЕМЫ УПРАВЛЕНИЯ
УДК 519.72
Д.В. Поляков, А.И. Попов
ГЕНЕРАТОР МОНОТОННЫХ ХЕШ-ФУНКЦИЙ ДЛЯ АССОЦИАТИВНОГО МАССИВА
ФГБОУ ВПО «Тамбовский государственный технический университет»
Цель: Получение генератора хеш-функций с хорошими значениями асимптотических характеристик алгоритмов решения основных поисковых задач.
Подход: Методика исследований основана на теории множеств и теории информационного поиска. Результаты: Представлен подход к генерации хеш-функций. Предложен метод получения хеш-функции на основе рассматриваемого генератора.
Ограничения исследований: Предложена и обоснована гипотеза о высоких характеристиках алгоритмов для решения основных поисковых задач при использовании хеш-функций, полученных с помощью предложенного метода. Ожидается, что дальнейшие исследования подтвердят гипотезу и позволят детально определить характеристики этих алгоритмов.
Оригинальность / значение: Предлагаемый генератор задаёт семейство хеш-функций для новых эффективных ассоциативных массивов, основанных на хеш-таблицах.
Ключевые слова: хеш-функция, хеш-таблица, ассоциативный массив, минимальная хеш-функция, монотонная хеш-функция, совершенная хеш-функция, генерация хеш-функций, поиск идентичного значения, задача о близости, интервальный поиск.
Введение
В наше время информационные технологии играют в обществе одну из ключевых ролей. И их непрерывное развитие сопровождается ростом количества данных, которые необходимо обрабатывать. К примеру, осуществление мониторинга в различных отраслях человеческой деятельности приводит к накоплению огромных объёмов данных, нуждающихся в статистической, а иногда и интеллектуальной обработке. Решение задач мониторинга, составление планов и расписаний, автоматизация производства и процесса оказания услуг - всё это и многое другое предполагают хранение и обработку большого количества данных. В итоге, практически каждая современная информационная система содержит в себе базу данных.
Для работы с данными, порядок расположения которых не важен, используются так называемые ассоциативные массивы - абстрактные типы данных для хранения коллекций элементов, поддерживающие, как минимум, три операции: поиск элемента, добавление элемента и удаление элемента [1].
Способы организации ассоциативного массива разделяются на две основные группы: хеш-таблицы и бинарные деревья [1-2]. Основные показатели эффективности конкретного способа организации ассоциативного массива - это время, затрачиваемое на операции поиска, добавления и удаления элемента, а также расход памяти [1, 3].
Данные показатели зачастую[1-3] оцениваются не в абсолютных величинах, а с помощью, так называемой О-нотации, то есть асимптотической сложности относительно числа хранимых элементов. Асимптотическая сложность представляет собой оценку роста времени работы алгоритма при росте объёма входных данных. Эта мера хорошо себя зарекомендовала и стала классической для оценки сложности алгоритмов [1].
© Поляков Д.В., Попов А.И., 2015.
Вместе с тем, если рассматриваемые показатели носят случайный характер, то их целесообразно задавать двумя численными характеристиками: средним значением и значением в худшем случае.
Современные реалии требуют оценивать сложность решения не одной, а, как минимум, трёх поисковых задач: поиск идентичных объектов, решение задачи о близости и интервальный поиск [3].
Поиск элемента - тривиальная и очевидная задача, состоящая в поиске в ассоциативном массиве объекта, идентичного объекту-запросу. Решение задачи о близости - поиск ближайшего элемента к объекту-запросу. Обычно задача о близости появляется в связи с тем, что заданный объект в массиве не найден и возникает необходимость найти ближайший к нему объект. Интервальный поиск - это поиск набора хранимых элементов в интервале, который собственно и задаётся поисковым запросом. Такая задача распространена в теории баз данных, статистике [4] и автоматизации проектирования [5].
Основные определения и обозначения
В данной работе исследуются способы организации ассоциативного массива на основе хеш-функций. Такие массивы называются хеш-таблицами [1-3].
Хеш-таблицы представляют собой в некотором роде обобщение индексных массивов с их прямой адресацией к элементам [1]. Обращение к i-му элементу индексного массива (a;) происходит за константное время благодаря тому, что вычисляется адрес данного элемента по формуле
&ai = a + iw, (1)
где a - адрес первого байта выделенной под массив области памяти, w - размер в байтах ячейки массива, а &ai - адрес i-того элемента, то есть адрес ai. Представленная формула становится очевидной, если вспомнить, что байт - минимальная адресуемая ячейка памяти, а все байты индексного массива по определению расположены по порядку. Таким образом, если элементы массива содержатся в RAM (памяти, позволяющей получить доступ к любой ячейке по её адресу, за одинаковое время), то вычисление адреса позволяет обратиться к соответствующему элементу за константное, то есть не зависящее от числа элементов в индексном массиве время. Такое время на языке О-нотации записывается как 0(1), что означает независимость времени обращения к элементу массива от его номера п.
Основная идея подхода к организации хеш-таблиц в том, чтобы выбрать некоторую функцию (хеш-функцию), которая будет вычислять адрес ячейки для хранения некоторого элемент х на основе самого х. Строго говоря, хеш-функция вычисляет не адрес элемента, а его индекс (i) в некотором индексном массиве, после чего адрес уже вычисляется по формуле (1).
Определим строго понятие хеш-функции для ассоциативного массива.
Пусть U - это множество элементов, для хранения которых предназначен ассоциативный массив. В самом общем случае U задаётся типом данных элементов, для хранения которых предназначена хеш-таблица. Вместе с тем, при решении конкретных задач U удобно ограничить. Например, для ассоциативного массива хранящего элементы четырёхбайтного целочисленного типа U = { u е N—231 < u < 231 — 1}, однако, если по условию поставленной задачи данный массив используется для хранения возраста людей, целесообразно ограничить U, задав его следующим образом: U = { u е N,0 < u < 150 }.
Определим хеш-функцию как отображение hm. U i е N,i = 0,m — 1, m е N }.Создадим индексный массив из m элементов и обозначим его Am. Будем считать, что индексы элементов данного массива - целые числа от 0 до m-1. Элемент массива Am с индексом i = 0, m — 1 будем обозначать Am[i]. Вычисление адреса Am[i] будем осуществлять по формуле (1). Тогда хеш-таблицу для хранения элементов множества Uзададим как < hm, Am>.
Очевидно, что добавление произвольного элемента u eU в хеш-таблицу на практике
реализуется присваиванием значения U элементу массива Am [hm (u)], а поиск элемента u gU в хеш-таблице путём его сравнения с элементом, хранящимся в Am [hm (u)]. Так как если элемент u gU содержится в хеш-таблице, то он содержится в ячейке Am [hm (u)], операция
его удаления очевидно. Сложность таких операций определяется сложностью вычисления хеш-функции, а она асимптотически оценивается как 0(1), так как вычисление хеш-функции не зависит от числа элементов в массиве.
Таким образом, операции поиска, добавления и удаления элементов из хеш-таблицы оказываются гораздо быстрее, чем аналогичные в ассоциативных массивах, реализованных на основе бинарных деревьев и имеющих зачастую логарифмическую сложность. Вместе с тем, на практике при работе с заранее неизвестным набором объектов невозможно выбрать функцию hm так, чтобы она не отображала никакие два элемента из U в один и тот же индекс. Такая ситуация называется коллизией. Существует множество методов разрешения коллизий, например, методы линейного зондирования, цепочек переполнения, универсальное хеширование и др. [1-2].
Другой неприятной ситуацией является, как правило, имеющаяся в Am избыточная память. Впрочем, если таковая отсутствует, то любая операция вставки приведёт к коллизии.
Таким образом, избыточная память для хеш-таблицы является своеобразным краеугольным камнем. С одной стороны, если выделить много памяти, то это будет крайне расточительным, а с другой, если избыточной памяти мало, то число коллизий возрастёт, что пагубно скажется на скорости работы и в конечном итоге быстро приведёт к переполнению и как результату - рехешированию [1, 6] - процессу перераспределения памяти. Этот процесс обладает огромной трудоёмкостью по сравнению с алгоритмами поиска элементов, вставки, избегания коллизий. В контексте асимптотической сложности он оценивается как O(n), где n - количество элементов в хеш-функции.
Вместе с тем константа при n крайне велика. То есть данный алгоритм при равных характеристиках вычислительных машин будет работать гораздо медленнее, чем многие другие с такой же асимптотической сложностью. Необходимость рехеширования возникает в рамках алгоритма добавления элемента и является вероятностным событием. Она неизбежно наступает для любых хеш-таблиц. Множество работ посвящено снижению этой вероятности [1-3, 6].
Для хеш-таблиц скорость поиска элемента при удачном выборе хеш-функции, равномерно рассеивающий поступающие объекты хранения, в среднем будет высока. Вместе с тем, большинство хеш-таблиц не способны эффективно решить задачи о близости и интервального поиска. Наконец, при хорошем математическом ожидании эффективности поиска худшие случаи поиска обладают сложностью выше сложности поиска полным перебором, так как приходится перебирать пустые ячейки [6]. Очевидно, что хеш-таблицы имеют огромный потенциал. И на сегодняшний день крайне важно развивать данное направление исследований. Необходимо ослаблять и устранять вышеозначенные недостатки, а также формировать общую теорию хеш-таблиц.
Рассмотрим некоторые понятия, связанные с хеш-функцией. Пусть X - множество элементов, хранимых в < hm, Am>. Очевидно, что X с U .
Хеш-функция называется совершенной [7-8], если она инъективна [9] на X. То есть при хранении элементов X не возникло коллизий.
Хеш-функция называется минимальной [10-11], если она сюръективна [9] на X. То есть, нет элементов массива Am, которые бы пустовали, а значит, нет и избыточной памяти.
Понятия совершенной и минимальной хеш-функций, а также алгоритмы их построения подробно обсуждаются во многих научных работах [7, 8, 10, 11] и учебной литературе [1-2].
Минимальная совершенная хеш-функция обладает свойствами инъективности и
сюръективности, а значит [9] является биекцией X на 0, m — 1. Такая функция позволяет осуществлять поиск и удаление за одну итерацию, а также не требует избыточной памяти, вместе с тем, операция добавления элементов будет всегда вызывать коллизию и некоторые ме-
ханизмы разрешения коллизий, например, линейное зондирование, будут неприменимы. Минимальные совершенные хеш-функции удобны, когда набор хранимых элементов известен заранее [11] и операций добавления и удаления не предусматривается.
Важным свойством некоторых хеш-функций является их монотонность [10-12]. Она позволяет относительно быстро решать задачу о близости и осуществлять интервальный поиск, что являлось крайне асимптотически сложной задачей для немонотонных хеш-функций. Действительно, если функция монотонна, то либо найденное, либо ближайшее ненулевое слева или справа в Ат значение являются решением задачи о близости. А проверка на близость трёх элементов производится за константное время. Таким образом, для монотонных хеш-функций сложность решения задачи о близости асимптотически совпадает с решением поисковой задачи и является 0(1).
Задача интервального поиска для монотонных хеш-функций решается нахождением двух ближайших значений к границам запроса-интервала и перечислением всех ненулевых значений Ат между ними. При использовании немонотонной хеш-функции такие задачи привели бы к обходу всего массива Ат, число элементов которого может быть существенно и даже асимптотически больше числа хранимых элементов.
Отметим также, что если монотонная хеш-функция является ещё и совершенной, то сложность интервального поиска равна его минимальной границе [3] - сложности перечисления всех найденных элементов.
Метод генерации монотонных хеш-функций
Далее, без ограничения общности, будем рассматривать и, как множество числовой природы. Более подробно данное допущение пояснено в литературе [1, 6]. Здесь же просто примем это как условие поставленной задачи хранения и поиска объектов.
Пусть Х={х1, х2, х3, ... хп }, X с [хх,хп] с и, х1 < х2,... < хп . Строгость неравенства
объясняется тем, что хранение одинаковых элементов реализуется на основе хранения одного из них и учёта их количества. Построим совершенную монотонную хеш-функцию для множества X.
Рассмотрим множество Е{ / \ / - непрерывная, строго возрастающая биекция на и и / [х1, хп]—> [0, 1] }. Назовём Е образующим множеством. Выберем некоторую функцию / £ ^, назовём её образующей и рассмотрим образы элементов X. Из биективности и возрастания /на и следует, что:
о = Дх1) < /(Х2>... < Дхп) = 1. (2)
Введём в рассмотрение показатель 8шах, вычисляемый по следующей формуле:
5тах = тт (/(х ) - /(х _1)). (3)
г=2,п
Для построения хеш-таблицы возьмём произвольное число 8 < 6тах и вычислим т -размер индексного массива Ат хеш-таблицы:
' 1
т ■
8
+1 (4)
где _ J - округление в меньшую сторону.
Рассмотрим множество полуинтервалов у = [/-8; (/ +1)-8), / = 0, т-1. Заметим, что:
и у = [о ; 8-т]з[о 1
(5)
/=0,т—1
Действительно, для V/ = 0, т — 2 правая выколотая граница полуинтервала у^ совпадает с левой включённой границей полуинтервала у^+]. Таким образом, объединение всех полу-
интервалов приведёт к образованию одного полуинтервала с левой включённой границей у0 и правой выколотой ут-1, то есть к [о ;8- т). Осталось показать, что 8- т > 1. Для этого проведём следующие равносильные преобразования на основе (4):
1 8
= т —1,
т —1 <1 < т 8
Помножим обе части неравенства на 8 :
8 - (т -1) < 1 < 8 - т.
Что и требовалось доказать.
Зададим хеш-функцию следующим образом:
К (х) = ^ (6)
_ 8 _
Индексный массив Ат определяется числом его элементов, которое было вычислено в (3). Покажем, что кт - монотонная хеш-функция на отрезке [х1, хи ] и совершенная монотонная на множестве X. Для этого докажем следующие леммы.
Лемма 1. Пусть х е [х1,хп]. Тогда для того, чтобы/(х)е у,I = 0,т — 1, необходимо и достаточно Нт (х) = I.
Доказательство. Покажем необходимость. Возьмём и зафиксируем произвольное I = 0, т — 1 и произвольный х е [х1, хи ]. Пусть /(х) е у, это означает, что
I-8 < / (х)< (I +1)-8. (7)
Разделим все части неравенства (7) на 8 :
I < < (I +1) - (8)
Из (8) следует, что
8
/ (х)'
8
= 1 или, согласно (6) Нт (х) = I. Необходимость доказана.
Покажем достаточность. Для этого предположим противное, то есть 31 = 0, т — 1 и х е [х1, хи ], такие что Ит (х) = I и /(х)^ у . Так как х е [х, хи ] и в силу (5) /(х) е [0,1] е ^у, .
7=0, т—1
Следовательно 3/ = 0, т — 1, такое, что /(х)е у .. Тогда в силу доказанной ранее необходимости Нт (х) = /, но по нашему предположению Нт (х) = I, то есть г = у, а значит /(х) е у . Получили противоречие. Наше предположение неверно, а достаточность доказана. Лемма 2. {у =1 п) {кт (х) * Ит (х/))
Доказательство. Предположим противное, то есть (з!, / = 1, п) (х ) = Ьт (х-)). Пусть Нт (х ) = Ьт (х ■) = к, к = 0, т — 1, тогда в силу леммы 1 /(хг )е ук и /(х] )е у . Положим для определённости, что /(хг )< /(х;)(строгость знака сравнения обусловлена (2)).Отсюда получаем
к-8 </(х)</(х,)<(к +1)-8. (9)
Из (9) и выбора 8 < 8тах следует, что /(х,)— /(xI)< 8 < 8тах. С другой стороны из (2) и (3) следует, что /(х, )—/(х1)> /(xI+1)—/(xI)>8тах >8. Наше предположение неверно. Лемма доказана.
Утверждение 1. Функция Ит, заданная выражениями (2)-(6), является монотонной на [х, хи ] и совершенной на Xхеш-функцией, задающей хеш-таблицу из т элементов.
Доказательство. Согласно выбору функции / и выражению (5) (V* е [х, х„ ])(/(х) е у, к = 0, т — 1), что по лемме 1 равносильно кт (х) = к, к = 0, т — 1. Таким образом, показано, что кт является хеш-функцией на [ х1, хп ], задающей хеш-таблицу из т элементов.
Возьмём и зафиксируем произвольные ~,х е[хг,хи ], ~ < х . В силу (5) (зк = 0, т _ 1)/ (~ )е у ), тогда по лемме 1 кт (~) = к, а в силу строго возрастания / её значение в х будет строго больше того её значения в ~ . Из этого делаем вывод, что /(х) принадлежит либо полуинтервалу у , либо любому другому полуинтервалу, расположенному на числовой оси правее у. То есть, /(х)е у, к < 5 . Тогда по лемме 1 к < кт (х) или кт (~)< кт (х). Таким образом для произвольных ~,х е[хг,хи ], ~ < х показано, что кт (~)< кт (х). Монотонность кт на [х1, хп ] доказана.
Таким образом показано, что функция кт является монотонной хеш-функцией на [х1, хп ], а, следовательно, она монотонная хеш-функция и на подмножестве [ х1, хп ] - X. Совершенство кт на Xследует из определения, так как инъективность кт на Xдоказана леммой 2.
Утверждение доказано.
Отметим, что предложенный подход к генерации хеш-функций предполагает наличие уже некоторого объёма хранимых данных - множества X. И поэтому он удобен лишь при ре-хешировании, так как в начале работы с хеш-таблицей X равен пустому множеству.
Процесс получения хеш-функции начинается с построения Е - образующего множества функций, которое строится на основе X. Далее происходит выбор образующей функции / е ¥. Он произволен и от него зависят свойства хеш-функции. После этого по формуле (3) находим 8max. Выбор же 8 из полуинтервала ^^,0) произволен, и от него также зависят свойства хеш-функции. Таким образом, некоторую хеш-функцию, сгенерированную на основе предложенного подхода, удобно задать в виде
/х), 8 >, (10)
а соответствующую ей хеш-таблицу
/х), 8 , Ат, I, Я>, (11)
где Ь и Я - ячейки, отвечающие соответственно за поиск и добавление элементов, находящихся в полуинтервалах [тГ и; ). и (хп ^^и ]. Таким образом, становятся возможны поиск и добавление в хеш-таблицу (11) произвольного элемента множества и. Естественно, при проведении операции добавления элемента могут возникать коллизии. В данной статье не рассматриваются алгоритмы разрешения коллизий. Единственное требование, которое к ним предъявляется - это сохранение упорядоченности элементов. Так, например, разрешение коллизий методом цепочек[1-3] удовлетворяет предъявленным требованиям, а большинство механизмов разрешения коллизий основанных на открытой адресации[1-2] могут нарушить упорядоченность данных, располагающихся в хеш-таблицах.
Отметим, что в самом общем случае 8 может быть больше 8тах. Действительно, неравенство 8 < 8тах используется только в доказательстве леммы 2, которая в свою очередь используется только для того, чтобы показать совершенство (10) на X. Таким образом, если в (10) не соблюдено неравенство 8 <8тах, то утверждение 1 верно за исключением совершенства хеш-функции на X.
Может показаться, что ограничения, наложенные на множество образующих функций, довольно строгие. Подробное обоснование выбора именно такого множества представлено в [13]. Способ построения хеш-функции (3) - (6) назовём генератором хеш-функций.
предложен алгоритм вида px, >. Все алгоритмы, базирующиеся на хеш-функциях,
Исследование свойств генерируемых хеш-функций
Для исследования свойств сгенерированных с помощью (3) - (6) хеш-функций введём некоторые обозначения.
МножествоXV = |х еи| / = 1,п,тГи = х1 <х2,... <хИ = supU].
Функция Px - функция распределения случайной величины X. Здесь предполагается, что в хеш-таблицу записываются случайные величины, подчинённые некоторому закону распределения. Этому закону подчиняется как множество X, так и новые элементы, записываемые в хеш-таблицу. Плотность вероятности случайной величины Xобозначим р(х) .
Введём функционал О (/), * = 2, п, / е ¥, такой что О, (/) = /(х,)—/(х_ 1). Назовём функцию /орг оптимальной, если
Ъ = ал{ ^ тпО(/ ^ (12)
Частные случаи хеш-функций вида (10) рассматривались в литературе. Например, хеш-функция < X, х, 8тх > представлена в работах Э.Э. Гасанова и Л.П. Луговской [3, 14]. В них показано [14], что операция поиска производится за 6 элементарных операций, а т в среднем при равномерном законе распределения X равно п . Вместе с тем, в данных работах не было исследовано никакого механизма разрешения коллизий.
В «Теории хранения и поиска информации» Э.Э. Гасанова и В.Б. Кудрявцева (теорема 13, примеры 1 и 2) [3] представлены в качестве элементов предложенных алгоритмов
хеш-функции <x,-—, — >, где к - некоторое число и подробно исследованы, а в [15]
хп _ х1 к
1 к
предложенных в вышеупомянутых работах [3, 14-15], имеют высокую оценку математического ожидания скорости поиска (1 -2 итерации) и нижнюю логарифмическую асимптотическую оценку в худшем случае.
Рассмотрим некоторые хеш-функции. Но для начала предложим критерии их оценки. Хеш-функции не являются хеш-таблицами, они не предусматривают алгоритмов разрешения коллизий, и потому по ним, в отрыве от конкретной реализации ассоциативного массива невозможно оценить время решения поисковых задач, а также добавления и удаления элементов. В качестве критерия оценки хеш-функции предлагается «равномерность рассеивания» [3] «равномерность распределения записей в массиве» [2] или «равномерность хеширования» [1]. Все эти термины означают одно и тоже, а именно то, что для каждого добавляемого объекта хранения, его попадание в тот или иной элемент Ат приближённо равновероятен. Будем называть этот показатель хеш-функции - равномерность хеширования.
Рассмотрим хеш-функцию
^и, Px, 8 >. (13)
Во-первых, отметим, что заданная хеш-функция корректна, а именно Рх е ¥. Действительно, Px непрерывная, строго возрастающая, и в х1 = х она равна 0, хп = 8ири -единице. Вместе с тем, рассматриваемая хеш-функция удовлетворяет утверждению 1. Какова же её равномерность хеширования? Для ответа на этот вопрос возьмём и зафиксируем произвольный индекс * = 0,т _1 и рассмотрим х еи \ кт (х) = *. Согласно лемме 1 это равносильно тому, что Рх(х) е '8; +1)'8) .Тогда, в силу того, что любая биективная функция обратима, имеет место неравенство:
Р_1(/-8)<х < Р—1 ((* +1)-8). (14)
То есть все х, значение хеш-функции (13) которых равно г, удовлетворяют неравен-
ству (14). А вероятность pi - того что произвольный элемент множества U попадёт в полуинтервал, заданный неравенством (14) вычисляется согласно расчёту геометрической вероятности следующим образом:
pt = PX(p-1^ + 1)-S))— Px (p—l(i - 5))= (i +l)- 5 —i - 5 = i ■ 5 + 5 -i -5 = 5
или
Рг =5 . (15)
То есть для хеш-функции (13) получение любого значения равновероятно, она обладает максимальной равномерностью хеширования. Однако на практике возникает ряд проблем. ЗачастуЮ неизвестны ни Px, ни inf U, ни supU. Более того, из-за необходимости разбивать на маленькие отрезки образ U появляется потребность в больших дополнительных объёмах памяти.
В работе «Оптимизационная задача построения отображения на адресное пространство для модели хранения данных с константным временем поиска» [13] исследовались хеш-функции вида:
<X fopb Smax>. (16)
Для таких функций было доказано, что они являются минимальными, монотонными и совершенными на X. В случае если базирующаяся на (16) хеш-таблица предполагает операции
добавления, достаточно взять любое 5 < 5max. Оно не изменит совершенности и монотонности хеш-функции, но добавит достаточное количество пустых элементов. Также очевидно, что изменение 5 в полуинтервале (0 max ] фактически представляет собой управление размером дополнительной памяти. Поэтому перейдём к рассмотрению следующей хеш-функции:
<X fopu 5 >, 0 < 5 — 5 max. (17)
Исследуем свойства хеш-функции (17) подробнее.
я _ 1
Лемма 3. Для хеш-функции вида (17) 5max =-7.
n — 1
х 1
Доказательство. Предположим, что 5max > п_^ . Тогда, согласно (3):
(Vi = 2, п) f (X ) — f (X—1) > 5max >-ТРЕ f (X ) — f (X—1) > Е—T
'v n — 1J n — 1
или
n — 1
f (X) — f (xi) >-7 или 1 > 1.
n — 1
Получили противоречие, следовательно, предположение неверно, значит 5max для
любой хеш-функции не превосходит .
n — 1
Согласно построению (12) fopt таково, что 5max - максимально для всех fopt. Таким образом, для доказательства леммы достаточно показать существование f G F, такой, что mm l
mm(f *( X ) — f *(X—)) = .
i=2," n — 1
=2,n n — 1
f*
В качестве j выберем любую функцию из F, удовлетворяющую системе:
V • (x )=Ц l(vi = 2,n).
n — 1J
(18)
Действительно, для таких функций f (X) — f (xi—1) = ~—1— _—1 =-- .для (vi = 2,n),
n — 1 n — 1 n — 1
значит и min (f *( xt) — f *( x—j)) = —Ц- .
i=2,n ' n —1
а
Пусть Fopt - множество оптимальных функций на Xn. Следствие 1. Для (f е F0J(v/ = 2, и)| fopt(Xj) - fopt(xi_i) = J.
е _ 1
Доказательство. Предположим противное. Учтём, что согласно лемме 3: 8т&х Л . То есть: (У/^ е ^ )(У/ = 2)—ЛрХх—1). Тогда отрицание условия будет иметь вид:
2,п/ (х,)—/ор, (х^)»^). (19)
Возьмём и зафиксируем^ из (19).Тогда для него верно, что
п п 2
Е /оРкхг )— /ор/(х,-—1) > - ^ 1 > 1 .
1=2 ,=1 П 1
Получили противоречие. Следовательно, наше предположение неверно и следствие доказано.
Следствие 2.
F0pt = {f е F | [ f' (x,) = i-!j(vi = in)}. (20)
Доказательство. В лемме 3 было показано, что произвольная функция из Fopt является оптимальной. Теперь покажем обратное, то есть любая оптимальная функция удовлетворяет (18). Возьмём и зафиксируем произвольное 1 = 2,n . Рассмотрим сумму (S):
i
S = 2 fopt(xk )- fopt(xk-1) . k=2
С одной стороны, S = fopt(x )- fopt(xi) = fopt(x ), а согласно следствию 1
S = .Таким образом, для произвольного 1 = 2,n получаем fopt(x, ) = - _, . Что и требовалось доказать.
Под Xn будем понимать множество X, состоящее из n элементов и меняющееся путём добавления новых элементов, распределённых на U согласно закону Px. Для простоты дальнейшей работы и корректности записей обозначим х=k
Лемма 4. При n ^ w xn ^ xu .
Доказательство. Условие Леммы аналогично следующим двум условиям:
lim xn = inf U,
lim xn„ = supU. (21)
Возьмём и зафиксируем произвольное s > 0. Рассмотрим полуинтервалы [inf U ,inf U + s) и (supU -s,supU ]. Вероятности попадания элемента в эти полуинтервалы: Рх(inf U + s) и Px(supU) — Px(supU — s) являются ненулевыми, а потому с неограниченным возрастанием n, найдутся такие n1 и n2, что xi1 е [inf U,inf U + s), а xH e(supU — s,supU]. Начиная с этого момента с возрастанием n xi не увеличится, а xn не уменьшится. То есть (vn > Hi)(xi — inf U < s) и (vn > n2 )(xn — sup U < s). То есть (21) верно, по определению предела.
Утверждение 2. При n ^ w fopt ^ рх .
Доказательство. Согласно (20) и в силу строгого возрастания fopt
(Vx е (x,—i,x,]f е Fopt2 < ^(x) * ^ (22)
Рассмотрим множество Zm = \z-,k = °m I z- = Px( — |f. Вероятность того что слУ
чайная величина х попадёт в отрезок \zk 1з ], равна: PX
f
I m
Pv
(
- P
X
P
-if k -1
Л
x
m
k k -1 1
= —, Vk = 1, m.
х т т т
Пусть Wk - число точек множества X, попавших в 1,% ]. Тогда, согласно статистическому определению вероятности [16]
lim w = —, Vk = 1, m. n m
(23)
Возьмём и зафиксируем некоторое число к ~1т-. Рассмотрим такие целые числа M и
N, что (XM < Zk-1 < zk < XN )Л (XM+1 > Zk-1 )л (XN-1 < zk ) .
Тогда, согласно нашим обозначениям
k-1
M = 2 wl, N = M = 2 wl.
/=1
i=1
Из (24) и (22) легко видеть, что
( k-1
(Vx e\z—-1, Zk Jf e Fopt
2 W - 2
2 w-1
i=1
n -1
< fopt (X) <
l=1
n -1
(24)
или
(VX e \zk-l, Zk ])(VfOpt e Fopt \2-W-,< fopt (x) < 2Д ^
V i=1 n 1 n 1 /=1n 1 n 1
n — да
(25)
Возьмём пределы от каждого члена неравенства в (25) при n — . Получим
(Vx e \zk„ZkJf e Fopt)limfg-^^-< lim(fpt(x))< limfg^-J-p p V-/=1 n -1 n -1 j 1=1 n - 1 n -1
или
/ t 1 /"
n-1
(Vx e \zk„ Zk Jf e Fopt(2 limfW 1 < ЛДx) < 2 li
p p V 1=1 n -1 j p 7=1n-
"k—1> opt ^ A opt)
Тогда в силу (23) получаем:
(Vx Zk])(vfopt e Из чего в силу построения множества Zm делаем вывод
^ e lZk—1, Zk ]Л v opt e F opt,
Согласно построению множества
fopt(x) <g limi-^^T
n -1 у j
k -1 * , \ k Л
-< fopt(x) < -I.
m m j
(Vx e \z--1 , z- jf e Fopt^ (z-_1 ) < x) < Px (z- )).
/ -
(26)
, z- = Px
m
,Vk - °,m . Тогда (26) перепишем в
виде:
(Vx e \z--1, z-])(Vfopt e Foptji^ ^^ - ^
P 1 1 X
V V m jj
< fopt(x) < Px
С f k^
P- | —
P X
v V m jjj
или
(Vx e \z-_1, z- Jf e Fop
k -1
-k-1 ? k J/\ J opt opt A ~ J opt\
1 m m
< foPt(x) < - I .
(27)
k
С другой стороны:
хz-<х < Px (z- _1 )< Px (x)< Px (zk )«.
1Г k л
PX1 Г kT U< Px (х)< PX Г P
m
k -1 „ / \ k
-< PX (x)< -
m m
В силу (27) и (28) получаем:
(Vx g [Zk-1, Zk jf G Fopjfopt(x\ Px (x)
G
k -1 k
m m
(28)
(29)
Выбор т произволен. Это позволяет нам неограниченно увеличивать т, сохраняя при этом условие т<<п, так как п устремлён к бесконечности. В случае неограниченного увели-к — 1 к
неограниченно уменьшается, что приводит в силу (29) к неогра-
чения т, отрезок
г т т _
ниченному сближению /оркх), Рх (х) . Что и требовалось доказать. Следствие. При п . (17) ^(13).
Доказательство. Действительно при
n ^ да
в силу леммы
4 fopt ^ PX
x , а в силу
утверждения
2 fopt ^ px . Это и
означает
<Х, fopuS > ^ <Хи, px,S > или (17) ^ (13).
Заключение
Следствие к утверждению 2 приводит к гипотезе о том, что на больших значениях п хеш-функция вида (17) обладает высокой равномерностью хеширования. Однако возможно, что высокая равномерность достигается только на очень больших п. И использование (17) для построения хеш-таблиц на практике может быть неоправданно. Для подтверждения или опровержения гипотезы необходимо провести вычислительные эксперименты. При постановке данных экспериментов целесообразно в качестве /орг использовать соответствующий линейный сплайн [17]. Сплайн не обеспечивает высокой скорости поиска, так как его вычисление имеет логарифмическую асимптотическую оценку. Однако он представляет собой /орЬ а целью экспериментов является исследования поведения /орг при росте п. Также с помощью сплайнов удобно задать верхние и нижние ограничения для /ор1. Проведение этих исследований позволит определить области применения и дальнейшие пути развития, предложенного в данной работе генератора хеш-функций.
Библиографический список
1. Кормен, Т. Алгоритмы: построение и анализ / Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. - 2-е изд. - М.: Вильямс, 2011. - 1290 с.
2. Кузнецов, С.Д. Методы сортировки и поиска / С.Д. Кузнецов. - ИСП РАН, Центр Информационных Технологий Режим доступа: http: //citforum.ru/programming/theory/sorting/sorting2.shtml.
3. Гасанов, Э.Э. Теория хранения и поиска информации / Э.Э. Гасанов, В.Б. Кудрявцев. - М.: ФИЗМАТЛИТ, 2002. - 288 с.
4. Loftsgaarden, D. A nonparametric density function / D.O. Loftsgaarden C.P. Queensberry. - Ann. Math. Stat. 36, 1965. С. 1049-1051.
5. Lauter, U. 4-dimensional binary search trees as a means to speed up associative searches in design verification of integrated circuits // Journal of Design Automation and Fault Tolerant Computing, 2. 1978. №3. С. 241-247.
6. Кнут, Д. Искусство программирования для ЭВМ Т. 3. Сортировка и поиск / Д. Кнут. - М.: Мир, 1978.
7. Zbigniew, J.C. An optimal algorithm for generating minimal perfect hash functions / J.C. Zbigniew, G Havas, B.S. Majewski. - Informational processing letters. 1992. №43(5). С. 257-264.
8. Pescio, C. Minimal perfect hashing. - Dr. Dobb's Journal. 1996. № 249.
9. Верещагин, Н.К. Лекции по математической логике и теории алгоритмов. Ч. 1. Начала теории множеств. - 2-е изд., испр. / Н.К. Верещагин, А. Шень. - М.: МЦНМО, 2002. - 128 с.
10. Belazzougui, D. Monotone Minimal Perfect Hashing: Searching a Sorted Table with O(1) Accesses / D. Belazzougui, P. Boldi, R. Pagh, S. Vigna. -Proceedings of the 20th Annual ACM-SIAM Symposium On Discrete Mathematics (SODA), New York, 2009. ACM Press.
11. Belazzougui, D. Theory and Practise of Monotone Minimal Perfect Hashing / D. Belazzougui, P. Boldi, R. Pagh, S. Vigna. - In Proceedings of the 11th Workshop on Algorithm Engineering and Experiments, ALENEX '09. Society for Industrial and Applied Mathematics, 2009.
12. Математическая энциклопедия / под ред. И. М. Виноградова. - М.: Советская энциклопедия, 1977-1985.
13. Яковлев, А.В. Оптимизационная задача построения отображения на адресное пространство для модели хранения данных с константным временем поиска / А.В. Яковлев [и др.]. -Воронеж: Приборы и системы. Управление, контроль, диагностика. 2013. №12. С. 36-41.
14. Гасанов, Э.Э. Константный в худшем случае алгоритм поиска идентичных объектов / Э.Э. Гасанов, Ю.П. Луговская // Дискретная математика, 1999. Т.11. №4. С. 139-144.
15. Поляков, Д.В. Алгоритм поиска идентичных объектов на непрерывном множестве // Методы управления потоками в транспортных системах. МАДИ. 2009. С. 114-121.
16. Лаговский, А.Ф. Теория вероятности: учеб. пособие / А.Ф. Лаговский. - Калининград: Изд-во Калининградского университета, 1997. - 103 с.
17. Алберг, Дж. Теория сплайнов и её приложения / Дж. Алберг, Э. Нильсон, Дж. Уолш. - М.: Мир, 1972. - 320 с.
Дата поступления в редакцию 16.04.2015
D.V. Polyakov, A.I. Popov
GENERATOR OF THE MONOTONE HASH FUNCTION FOR AN ASSOCIATIVE ARRAY
Tambov state technical university
Purpose: Generator of hash functions with a good value of asymptotic characteristics of algorithms solving of basic search problems is offered.
Approach: The methodology is based on the set theory and theory of information retrieval.
Findings: The approach to the generation of hash functions is presented. Offered the method for obtaining a hash function based on the considered generator.
Research limitations: Proposed and substantiated the hypothesis of high characteristics of the algorithms for solving basic search problems by hash functions obtained with the proposed method. Expected that the further researches will confirm the hypothesis and will specify it's characteristics.
Originality/value: Proposed generator defined the family of hash functions for new effective associative arrays based on hash table.
Key words: hash function, hash table, an associative array, minimal hashing, monotone hashing, perfect hashing, generation of hash functions, search of an identical object, the problem of proximity, interval search.