Внимание! Studlandia не продает дипломы, аттестаты и иные документы об образовании. Наши специалисты оказывают услуги консультирования и помощи в написании студенческих работ: в сборе информации, ее обработке, структурировании и оформления работы в соответствии с ГОСТом. Все услуги на сайте предоставляются исключительно в рамках законодательства РФ.
Нужна индивидуальная работа?
Подберем литературу
Поможем справиться с любым заданием
Подготовим презентацию и речь
Оформим готовую работу
Узнать стоимость своей работы
Дарим 200 руб.
на первый
заказ

Решение задач на тему: Хеш-функции. Метод деления. Метод умножения мультипликативный

Купить за 100 руб.
Страниц
19
Размер файла
63.94 КБ
Просмотров
102
Покупок
0
Хешированием мы сталкиваемся едва ли не каждом шагу: при работе с браузером список Wеb-ссылок, текстовым редактором и переводчиком словарь, языками скриптов Реrl, Рythоn, РНР и др., компилятором

Введение

С хешированием мы сталкиваемся едва ли не на каждом шагу: при работе с браузером (список Web-ссылок), текстовым редактором и переводчиком (словарь), языками скриптов (Perl, Python, PHP и др.), компилятором (таблица символов). По словам Брайана Кернигана, это "одно из величайших изобретений информатики". Заглядывая в адресную книгу, энциклопедию, алфавитный указатель, мы даже не задумываемся, что упорядочение по алфавиту является не чем иным, как хешированием.

Хеширование есть разбиение множества ключей (однозначно характеризующих элементы хранения и представленных, как правило, в виде текстовых строк или чисел) на непересекающиеся подмножества (наборы элементов), обладающие определенным свойством. Это свойство описывается функцией хеширования, или хеш-функцией, и называется хеш-адресом. Решение обратной задачи возложено на хеш-структуры (хеш-таблицы): по хеш-адресу они обеспечивают быстрый доступ к нужному элементу. В идеале для задач поиска хеш-адрес должен быть уникальным, чтобы за одно обращение получить доступ к элементу, характеризуемому заданным ключом (идеальная хеш-функция). Однако, на практике идеал приходится заменять компромиссом и исходить из того, что получающиеся наборы с одинаковым хеш-адресом содержат более одного элемента.

Термин "хеширование" (hashing) в печатных работах по программированию появился сравнительно недавно (1967 г., [1]), хотя сам механизм был известен и ранее. Глагол "hash" в английском языке означает "рубить, крошить". Для русского языка академиком А.П. Ершовым [2] был предложен достаточно удачный эквивалент - "расстановка", созвучный с родственными понятиями комбинаторики, такими как "подстановка" и "перестановка". Однако он не прижился.

Как отмечает Дональд Кнут [3], идея хеширования впервые была высказана Г.П. Ланом при создании внутреннего меморандума IBM в январе 1953 г. с предложением использовать для разрешения коллизий хеш-адресов метод цепочек. Примерно в это же время другой сотрудник IBM - Жини Амдал - высказала идею использования открытую линейную адресацию. В открытой печати хеширование впервые было описано Арнольдом Думи (1956), указавшим, что в качестве хеш-адреса удобно использовать остаток от деления на простое число. А. Думи описывал метод цепочек для разрешения коллизий, но не говорил об открытой адресации. Подход к хешированию, отличный от метода цепочек, был предложен А.П. Ершовым (1957, [2]), который разработал и описал метод линейной открытой адресации. Среди других исследований можно отметить работу Петерсона (1957, [4]). В ней реализовывался класс методов с открытой адресацией при работе с большими файлами. Петерсон определил открытую адресацию в общем случае, проанализировал характеристики равномерного хеширования, глубоко изучил статистику использования линейной адресации на различных задачах. В 1963 г. Вернер Букхольц [6] опубликовал наиболее основательное исследование хеш-функций.

К концу шестидесятых годов прошлого века линейная адресация была единственным типом схемы открытой адресации, описанной в литературе, хотя несколькими исследователями независимо была разработана другая схема, основанная на неоднократном случайном применении независимых хеш-функции ([3], стр. 585). В течение нескольких последующих лет хеширование стало широко использоваться, хотя не было опубликовано никаких новых работ. Затем Роберт Моррис [5] обширный обзор по хешированию и ввел термин "рассеянная память" (scatter storage). Эта работа привела к созданию открытой адресации с двойным хешированием.

Далее будут рассмотрены основные виды хеш-функций и некоторые их модификации, методы разрешения коллизий, проблемы удаления элементов из хеш-таблицы, а также некоторые варианты применения хеширования.

Оглавление

- Введение 3

- Хеш-функции

- Метод деления

- Метод умножения мультипликативный

- Динамическое хеширование

- Расширяемое хеширование extendible hashing

- Функции, сохраняющие порядок ключей Order preserving hash functions

- Минимальное идеальное хеширование

- Разрешение коллизий

- Метод цепочек

- Открытая адресация

- Линейная адресация

- Квадратичная и произвольная адресация

- Адресация с двойным хешированием

- Удаление элементов хеш-таблицы

- Применение хеширования

- Хеширование паролей

- Заключение 15

- Приложение демонстрационная программа

- Список литературы 16

Заключение

Хеширование, которое родилось еще в середине прошлого века, активно используется в наши дни везде, где требуется произвести быструю выборку данных. Появились новые методы хеширования, новые модификации алгоритмов, написанных ранее. По мнению Дональда Кнута ([3], стр. 586), наиболее важным открытием в области хеширования со времен 70 годов, вероятно, является линейное хеширование Витольда Литвина [18]. Линейное хеширование, которое не имеет ничего общего с классической технологией линейной адресации, позволяет многим хеш-адресам расти и/или выступать в поли вставляемых и удаляемых элементов. Линейное хеширование может также использоваться для огромных баз данных, распределенных между разными узлами в сети.

Разумеется, методы и сферы применения хеширования не ограничиваются тем, что представлено в этой работе. Не вдаваясь в строгий анализ эффективности, были рассмотрены только базовые, наиболее известные методы. Помимо них можно отметить полиномиальное хеширование (М. Ханан и др., 1963), упорядоченное хеширование (О. Амбль, 1973), линейное хеширование (В. Литвин, 1980). Подробнее о методах хеширования см. [3, 6, 7, 19-22].

Список литературы

- Неllеrmаn Н., Digitаl Соmрutеr Systеm Рrinсiрlеs. МсGrаw-Нill.

- Ершов А.П., Избранные труды., Новосибирск: "Наука".

- Кнут Д., Искусство программирования, т.3. М.: Вильямс.

- Реtеrsоn W.W., Аddrеssing fоr Rаndоm-Ассеss Stоrаgе // IВМ Jоurnаl оf Rеsеаrсh аnd Dеvеlорmеnt, 1957. V.1, N2. Р.

- Моrris R., Sсаttеr Stоrаgе Тесhniquеs // Соmmuniсаtiоns оf thе АСМ, 1968. V.11, N1. Р.

- Вuсhhоlz W., IВМ Systеms J., 2 (1963).

- Fundаmеntа Маth. 46 (1958).

- R. Сiсhеlli, Мinimаl Реrfесt Наshing Маdе Simрlе, Соmm. АСМ Vоl. 23 Nо. 1, Jаn.

- Т. Gunji, Е. Gоtо, J. Infоrmаtiоn Рrос., 3 (1980).

- Чмора А., Современная прикладная криптография., М.: Гелиос АРВ.

- Litwin W., Рrос. 6th Intеrnаtiоnаl Соnf. оn Vеry Lаrgе Dаtаbаsеs (1980).

- Кормен Т., Лейзерсон Ч., Ривест Р., Алгоритмы: построение и анализ, М.: МЦНМО.

- Вирт Н., Алгоритмы структуры данных программы, М.: Мир.

- Керниган Б., Пайк Р., Практика программирования, СПб.: Невский диалект.

- Шень А, Программирование: теоремы и задачи. М.: МЦНМО.

Как купить готовую работу?
Авторизоваться
или зарегистрироваться
в сервисе
Оплатить работу
удобным
способом
После оплаты
вы получите ссылку
на скачивание
Страниц
19
Размер файла
63.94 КБ
Просмотров
305
Покупок
0
Хеш-функции. Метод деления. Метод умножения мультипликативный
Купить за 100 руб.
Похожие работы
Сумма к оплате
500 руб.
Купить
Заказать
индивидуальную работу
Гарантия 21 день
Работа 100% по ваши требованиям
от 1 000 руб.
Заказать
Прочие работы по предмету
Сумма к оплате
500 руб.
Купить
Заказать
индивидуальную работу
Гарантия 21 день
Работа 100% по ваши требованиям
от 1 000 руб.
Заказать
103 972 студента обратились
к нам за прошлый год
2001 оценок
среднее 4.2 из 5
Игорь Отличная работа, рекомендую автора!
Александр Работа выполнена в срок, учтены все пожелания. Большое спасибо!
Александр Работа выполнена в срок. Спасибо большое за выполненную работу!
Александр Заказ выполнен раньше срока. Рекомендую исполнителя.
Иван По программе в учебном заведении резко перенесли сдачи курсовых и дали неделю с половиной на сдачу и распечатку ,...
Александр Курсовую засчитали на отлично. Работа выполнена грамотно, логично, материал хорошо структурирован, правки внесены...
Александр Работа была выполнена быстро и чётко. Результат стоит своих денег.
Александр Работа выполнена хорошо, буду обращаться вновь!
Александр Всë отлично, буду заказывать снова
Антон Большое спасибо за работу! Всё хорошо курсовой остался доволен