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

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

Купить за 100 руб.
Страниц
19
Размер файла
63.94 КБ
Просмотров
112
Покупок
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 КБ
Просмотров
257
Покупок
0
Хеш-функции. Метод деления. Метод умножения мультипликативный
Купить за 100 руб.
Похожие работы
Сумма к оплате
500 руб.
Купить
Заказать
индивидуальную работу
Гарантия 21 день
Работа 100% по ваши требованиям
от 1 000 руб.
Заказать
Прочие работы по предмету
Сумма к оплате
500 руб.
Купить
Заказать
индивидуальную работу
Гарантия 21 день
Работа 100% по ваши требованиям
от 1 000 руб.
Заказать
103 972 студента обратились
к нам за прошлый год
2030 оценок
среднее 4.9 из 5
Александр Работа выполнена даже раньше срока, все сделано как и заказывал, спасибо автору
Александр Сроки заказа соблюдены, качество материала на высоком уровне. Ответственный исполнитель и спасибо большое за...
Александр спасибо за работу, приняли с первого раза, делает быстро . исправления оперативные
Александр спасибо за работу, приняли с пятого раза, делает быстро . исправления оперативные
Александр спасибо за работу, приняли с первого раза, делает быстро . исправления оперативные
Александр Спасибо большое за работу! Ответственный исполнитель, оперативно вносились корректировки, качество на высоком уровне!
Александр Очень ответственный исполнитель, оперативно был реализован заказ. Корректировки по просьбе тоже во время вносились....
Дмитрий Я довольна работой. Всё выполнено в срок. Спасибо большое
Александр Спасибо большое за работу! Сделано все качественно, быстро и на высшем уровне. Рекомендую!
Александр Спасибо вам большое за проделанную работу! Александр, человек своего дела. Выполнил все поставленные задачи в лучшем...