Содержание
- 2. Хэширование–это преобразование входного массива данных определенного типа и произвольной длины в выходную битовую строку фиксированной длины.
- 3. Хеширование применяется для сравнения данных: если у двух массивов хеш-коды разные, массивы гарантированно различаются; если одинаковые
- 4. Существует множество массивов, дающих одинаковые хеш-коды — так называемые коллизии. Вероятность возникновения коллизий играет немаловажную роль
- 5. Идея хеширования впервые была высказана Г.П. Ланом при создании внутреннего меморандума IBM в январе 1953 г.
- 6. В открытой печати хеширование впервые было описано Арнольдом Думи (1956 год), указавшим, что в качестве хеш-адреса
- 7. Хэш-таблица – это структура данных, реализующая интерфейс ассоциативного массива, то есть она позволяет хранить пары вида
- 8. С точки зрения практического применения, хорошей является такая хэш-функция, которая удовлетворяет следующим условиям: функция должна быть
- 9. Если бы все данные были случайными, то хэш-функции были бы очень простые (например, несколько битов ключа).
- 10. При возникновении коллизий (разным ключам соответствует одно значение хэш-функции) необходимо найти новое место для хранения ключей,
- 11. Хэш-таблицы должны соответствовать следующим свойствам: Выполнение операции в хэш-таблице начинается с вычисления хэш-функции от ключа. Получающееся
- 12. Хэширование полезно, когда широкий диапазон возможных значений должен быть сохранен в малом объеме памяти, и нужен
- 13. Методы разрешения коллизий Коллизии, когда разным ключам соответствует одно значение хэш-функции, осложняют использование хэш-таблиц, т.к. нарушают
- 14. Метод цепочек Технология сцепления элементов состоит в том, что элементы множества, которым соответствует одно и то
- 15. Пример реализации метода цепочек при разрешении коллизий: ? на ключ 002 претендуют два значения, которые организуются
- 16. Операции поиска или удаления данных требуют просмотра всех элементов соответствующей ему цепочки, чтобы найти в ней
- 17. При предположении, что каждый элемент может попасть в любую позицию таблицы с равной вероятностью и независимо
- 18. Метод открытой адресации В отличие от хэширования с цепочками, при открытой адресации никаких списков нет, а
- 19. При любом методе разрешения коллизий необходимо ограничить длину поиска элемента!!!!!!!!. Если для поиска элемента необходимо более
- 20. Алгоритмы хэширования Существует несколько типов функций хеширования, каждая из которых имеет свои преимущества и недостатки и
- 21. Таблица прямого доступа Простейшей организацией таблицы, обеспечивающей идеально быстрый поиск, является таблица прямого доступа. В такой
- 22. Пространство ключей - множество всех теоретически возможных значений ключей записи. Пространство записей - множество тех ячеек
- 23. В большинстве реальных задач размер пространства записей много меньше, чем пространства ключей. Например, если в качестве
- 24. В целях экономии памяти можно назначать размер пространства записей равным размеру фактического множества записей или превосходящим
- 25. Метод остатков от деления Простейшей хэш-функцией является деление по модулю числового значения ключа Key на размер
- 26. Если ключей меньше, чем элементов массива, то в качестве хэш-функции можно использовать деление по модулю, то
- 27. //функция создания хеш-таблицы: //метод деления по модулю (самый //распространённый) int Hash(int Key,int HashTableSize) { return Key
- 28. Функция середины квадрата преобразует значение ключа в число, возводит это число в квадрат, из числа выбирает
- 29. Цифровое представление ключа разбивается на части, каждая из которых имеет длину, равную длине требуемого адреса. Над
- 30. Ключ, записанный как число в некоторой системе счисления P, интерпретируется как число в системе счисления Q>P.
- 31. Открытое хэширование Основная идея базовой структуры при открытом (внешнем) хэшировании заключается в том, что ✵ потенциальное
- 32. Часто классы называют сегментами, поэтому будем говорить, что элемент х принадлежит сегменту h(x). Массив, называемый таблицей
- 33. //Пример 1. Программная реализация открытого хэширования. #include #include using namespace std; typedef int T; // тип
- 34. //функция поиска местоположения и вставки вершины в таблицу Node *insertNode(T data) { Node *p, *p0; hashTableIndex
- 35. //функция удаления вершины из таблицы void deleteNode(T data) { Node *p0, *p; hashTableIndex bucket; p0 =
- 36. //функция поиска вершины со значением Node *findNode (T data) { Node *p; p = hashTable[myhash(data)]; while
- 37. int main() { int i, *a, maxnum; cout cin >> maxnum; cout cin >> hashTableSize; a
- 38. // вывод эдементов массива в файл List.txt ofstream out("List.txt"); for (i = 0; i { out
- 39. //очистка хэш-таблицы for (i = maxnum-1; i >= 0; i--) deleteNode(a[i]); return 0; } 50 элементов
- 40. Закрытое хеширование При закрытом (внутреннем) хэшировании в хэш-таблице хранятся непосредственно сами элементы, а не заголовки списков
- 41. При поиске элемента х необходимо просмотреть все местоположения h(x),h1(х),h2(х),..., пока не будет найден х или пока
- 42. Если в хэш-таблице допускается удаление элементов, то при достижении пустого сегмента, не найдя элемента х, нельзя
- 43. Важно различать константы DEL и NULL – последняя находится в сегментах, которые никогда не содержали элементов.
- 44. Линейное опробование Это последовательный перебор сегментов таблицы с некоторым фиксированным шагом: адрес=h(x)+ci, где i – номер
- 45. Квадратичное опробование отличается от линейного тем, что шаг перебора сегментов нелинейно зависит от номера попытки найти
- 46. Двойное хэширование Основана на нелинейной адресации, достигаемой за счет суммирования значений основной и дополнительной хэш-функций: адрес=h(x)+ih2(x).
- 47. В случае многократного превышения адресного пространства и, соответственно, многократного циклического перехода к началу будет происходить просмотр
- 48. Например, методика линейного опробования для разрешения коллизий – не самый лучший выбор: Как только несколько последовательных
- 49. //Пример 2. Программная реализация закрытого хеширования. #include #include using namespace std; typedef int T; // тип
- 50. int _tmain(int argc, _TCHAR* argv[]) { int i, *a, maxnum; cout cin >> maxnum; cout cin
- 51. //выделить память used = new bool[hashTableSize]; //выделить память для флажков //заполнение нулями for (i = 0;
- 52. // очистка хеш-таблицы for (i = maxnum-1; i >= 0; i--) { deleteData(a[i]); } system("pause"); return
- 53. // функция поиска величины, равной data bool findData (T data) { hashTableIndex bucket; bucket = myhash(data);
- 54. bucket = (bucket + 1) % hashTableSize; else if(dist(myhash(hashTable[bucket]),bucket) bucket = (bucket + 1) % hashTableSize;
- 55. 25 элементов и размер таблицы тоже 25 10 элементов и размер таблицы тоже 10
- 56. До сих пор рассматривались способы поиска в таблице по ключам, позволяющим однозначно идентифицировать запись. Такие ключи
- 57. Ключевые термины: Вторичные ключи – это ключи, не позволяющие однозначно идентифицировать запись в таблице. Закрытое хэширование
- 58. Пространство записей – это множество тех ячеек памяти, которые выделяются для хранения таблицы. Пространство ключей –
- 59. Контрольные вопросы Каков принцип построения хеш-таблиц? Существуют ли универсальные методы построения хеш-таблиц? Почему возможно возникновение коллизий?
- 61. Скачать презентацию





































![//очистка хэш-таблицы for (i = maxnum-1; i >= 0; i--) deleteNode(a[i]); return](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/420329/slide-38.jpg)










![int _tmain(int argc, _TCHAR* argv[]) { int i, *a, maxnum; cout cin](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/420329/slide-49.jpg)
![//выделить память used = new bool[hashTableSize]; //выделить память для флажков //заполнение нулями](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/420329/slide-50.jpg)


![bucket = (bucket + 1) % hashTableSize; else if(dist(myhash(hashTable[bucket]),bucket) bucket = (bucket](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/420329/slide-53.jpg)





Литературный ринг по произведениям В. П. Астафьева
Презентация на тему Антивоенный пафос стихотворения М.Лермонтова «Валерик»
Аркадий Петрович Гайдар
Театральные маски
Moscow State University
Что и как изучает история Средних веков?
О курсовой политикеБанка России Октябрь,2007
Мир творчества. 4 класс
Демократия. Принципы демократии
Молодежный Совет при Собрании депутатов Администрации семикаракорского городского поселения
ПрезентацияПрограммы индивидуального развитияученицы 11 «Б» классаПечниковой Ольги.
Порівняльний аналіз мови та граматики американської, канадської та австралійської англійської мов Ткачова Марина
Внешний вид фотографа
Сложноподчиненные предложения с несколькими придаточными
Антропогенное воздействие на окружающую среду села Криводановка Автор: учитель географии -Кипоренко Н.Г. с. Кривод
Организация и проведение ВПР осенью 2020 года
Правки на банерах
Жизнь и творчество Михаила Юрьевича Лермонтова
Компьютерная графика. Графический редактор Paint
Моё любимое животное.
Модуль 11
Алоэ. Зелёный доктор на вашем окне
Тестирование программных средств
Профилактика эмоционального «выгорания» педагога
11-2
Польща. Чехословаччина
Расчет административно- бытовых, подсобных и технических помещений
Лингвистические аспекты в образовании будущих логопедов