Вступ до функції хешування в С
У цій статті є коротка примітка щодо хешування (хеш-таблиця та хеш-функція). Найважливішим поняттям є «пошук», який визначає складність часу. Для зменшення трудомісткості часу, ніж будь-яка інша концепція хешування структури даних, введено концепцію хешування O (1) в середньому випадку, а в гіршому випадку - O (n).
Хешинг - це техніка з більш швидким доступом до елементів, яка відображає дані за допомогою меншої клавіші для порівняння. Загалом у цій техніці ключі відстежуються за допомогою хеш-функції в таблиці, відомій як хеш-таблиця.
Що таке функція хешу?
Хеш-функція - це функція, яка використовує операцію постійного часу для зберігання та отримання значення з хеш-таблиці, яка застосовується на клавішах як цілі числа, і це використовується як адреса значень у хеш-таблиці.
Види функції хешу
Нижче описані типи хеш-функцій:
1. Метод поділу
У цьому методі хеш-функція залежить від залишку поділу.
Приклад: елементів, які слід розмістити в хеш-таблиці, є 42, 78, 89, 64, а розмір таблиці візьмемо як 10.
Хеш (ключ) = Елементи% розміру таблиці;
2 = 42% 10;
8 = 78% 10;
9 = 89% 10;
4 = 64% 10;
Представлення таблиці можна побачити як нижче:
2. Метод середньої площі
У цьому способі середню частину елемента квадрата приймають за індекс.
Елементом для розміщення в хеш-таблиці є 210, 350, 99, 890, а розмір таблиці - 100.
210 * 210 = 44100, індекс = 1, оскільки середня частина результату (44100) дорівнює 1.
350 * 350 = 122500, індекс = 25, оскільки середня частина результату (122500) дорівнює 25.
99 * 99 = 9801, індекс = 80, оскільки середня частина результату (9801) дорівнює 80.
890 * 890 = 792100, індекс = 21, оскільки середня частина результату (792100) дорівнює 21.
3. Метод складання цифр
У цьому способі елемент, який слід помістити в таблицю uh, це співати хеш-ключ, який отримують шляхом поділу елементів на різні частини, а потім об'єднання частин, виконавши кілька простих математичних операцій.
Елемент для розміщення - 23576623, 34687734.
- хеш (ключ) = 235 + 766 + 23 = 1024
- хеш-ключ) = 34 + 68 + 77 + 34 = 213
Припустимо, у цих типах хешування є числа від 1 до 100 і розмір хеш-таблиці = 10. Елементи = 23, 12, 32
Хеш (ключ) = 23% 10 = 3;
Хеш (ключ) = 12% 10 = 2;
Хеш (ключ) = 32% 10 = 2;
З вищенаведеного прикладу зауважте, що обидва елементи 12 і 32 вказують на 2-е місце в таблиці, де неможливо записати обидва в одному місці, така проблема відома як зіткнення. Щоб уникнути подібних проблем, існують деякі методи хеш-функцій, які можна використовувати.
Типи методів вирішення колізій
Давайте обговоримо види методи вирішення зіткнень:
1. Прикування
У цьому способі, як випливає з назви, він забезпечує ланцюжок коробок для запису в таблиці, що містить два записи елементів. Отже, коли виникають подібні зіткнення, поля будуть виконувати роль пов'язаного списку.
Приклад: 23, 12, 32 з розміром таблиці 10.
Хеш (ключ) = 23% 10 = 3;
Хеш (ключ) = 12% 10 = 2;
Хеш (ключ) = 32% 10 = 2;
2. Відкрити адресацію
- Лінійне зондування
Це ще один метод вирішення проблем зіткнення. Як випливає з назви, кожного разу, коли відбувається зіткнення, два елементи повинні бути розміщені в одному записі таблиці, але за цим методом ми можемо шукати наступне порожнє місце або запис у таблиці та розміщувати другий елемент. Це знову може призвести до іншої проблеми; якщо ми не знайдемо порожнього запису в таблиці, то це призводить до кластеризації. Таким чином, це відомо як проблема кластеризації, яку можна вирішити наступним методом.
Приклад: 23, 12, 32 з розміром таблиці 10
Хеш (ключ) = 23% 10 = 3;
Хеш (ключ) = 12% 10 = 2;
Хеш (ключ) = 32% 10 = 2;
На цій діаграмі 12 і 32 можуть бути розміщені в одному записі з індексом 2, але за цим методом вони розміщуються лінійно.
- Квадратне зондування
Цей метод є вирішенням проблеми кластеризації під час лінійного зондування. У цьому методі хеш-функція з хеш-ключем обчислюється як хеш (ключ) = (хеш (ключ) + х * х)% розміру таблиці (де х = 0, 1, 2…).
Приклад: 23, 12, 32 з розміром таблиці 10
Хеш (ключ) = 23% 10 = 3;
Хеш (ключ) = 12% 10 = 2;
Хеш (ключ) = 32% 10 = 2;
У цьому ми бачимо, що 23 і 12 можна легко розмістити, але 32 не можуть знову, оскільки 12 і 32 поділяють той самий запис з тим самим індексом у таблиці, як за цим методом хеш (ключ) = (32 + 1 * 1) % 10 = 3. Але в цьому випадку запис таблиці з індексом 3 розміщується з 23, тому ми повинні збільшити значення x на 1. Хеш (ключ) = (32 + 2 * 2)% 10 = 6. Тож тепер ми можемо розмістити 32 у записі з індексом 6 таблиці.
- Подвійне хешування
Цим методом ми повинні обчислити 2 хеш-функції для вирішення проблеми зіткнення. Перший розраховується за допомогою простого методу поділу. Друге має задовольняти двом правилам; вона не повинна дорівнювати 0, а записи повинні бути перевірені.
- 1 (ключ) = ключ% розмір таблиці.
- 2 (ключ) = p - (клавіша mod p), де p - прості числа <розмір таблиці.
Приклад: 23, 12, 32 з розміром таблиці 10
Хеш (ключ) = 23% 10 = 3;
Хеш (ключ) = 12% 10 = 2;
Хеш (ключ) = 32% 10 = 2;
У цьому повторі елемент 32 можна розмістити за допомогою хеш2 (ключ) = 5 - (32% 5) = 3. Отже, 32 можна розмістити в індексі 5 таблиці, яка порожня, оскільки нам потрібно перейти 3 записи, щоб розмістити її.
Висновок-Хешинг функція в С
Хешинг - одна з важливих методик пошуку даних, забезпечених дуже ефективними та швидкими методами за допомогою хеш-функцій та хеш-таблиць. Кожен елемент можна шукати та розміщувати за допомогою різних методів хешування. Ця методика є дуже швидкою, ніж будь-яка інша структура даних за часовим коефіцієнтом.
Рекомендовані статті
Це посібник щодо функції Хешинга в C. Тут ми обговорюємо введення функції Хешинга в C, що таке хеш-функція, типи хеш-функції тощо. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -
- Хешинг в СУБД
- Процес шифрування
- Як встановити CakePHP?
- Як працює блокчейн
- Функція хешування на Java
- Функція хешування в PHP | Як працювати?