logo

Хешування в структурі даних

Хешування це фундаментальна структура даних, яка ефективно зберігає та отримує дані таким чином, щоб забезпечити швидкий доступ. Він передбачає зіставлення даних із певним індексом у хеш-таблиці за допомогою a хеш-функція що забезпечує швидкий пошук інформації за її ключем. Цей метод зазвичай використовується в базах даних, в болючі системи та різноманітні програми програмування для оптимізації операцій пошуку та пошуку.

базова смуга проти широкосмугової

Структури даних – хешування



Зміст

Як це працює:



  1. Хеш-функція: Ви надаєте свої елементи даних у хеш-функцію.
  2. Хеш-код: Хеш-функція обробляє дані та дає унікальний хеш-код.
  3. Хеш-таблиця: Потім хеш-код вказує вам на певне місце в хеш-таблиці.

Хеш-функція

The хеш-функція це функція, яка приймає a ключ і повертає an індекс в хеш-таблиця . Мета хеш-функції — рівномірно розподілити ключі по хеш-таблиці, зводячи до мінімуму зіткнення (коли два ключі відображаються на той самий індекс).

Загальні хеш-функції включають:



  • Метод поділу: Ключ % Розмір хеш-таблиці
  • Метод множення: (Ключ * Константа) % розміру хеш-таблиці
  • Універсальне хешування: Сімейство хеш-функцій, призначених для мінімізації колізій

Що таке хеш-колізія?

Хеш-колізія виникає, коли два різні ключі відображаються в одному індексі в хеш-таблиці. Це може статися навіть із хорошою хеш-функцією, особливо якщо хеш-таблиця заповнена або ключі схожі.

Причини хеш-колізій:

  • Погана хеш-функція: Хеш-функція, яка не розподіляє ключі рівномірно по хеш-таблиці, може призвести до більшої кількості колізій.
  • Високий коефіцієнт навантаження: Високий коефіцієнт завантаження (відношення ключів до розміру хеш-таблиці) збільшує ймовірність колізій.
  • Схожі ключі: Ключі, подібні за значенням або структурою, мають більше шансів зіткнутися.

Методи вирішення зіткнень

Існує два типи методів вирішення колізій:

  1. Відкрита адресація:
    • Лінійне зондування: Шукайте порожній слот послідовно
    • Квадратичне зондування: Пошук порожнього слота за допомогою квадратичної функції
  2. Закрита адресація:
    • Зв'язування: Зберігайте зіткнення ключів у зв’язаному списку або бінарному дереві пошуку в кожному індексі
    • Кукушка: Використовуйте кілька хеш-функцій для розподілу ключів

Застосування хешування

Хеш-таблиці використовуються в багатьох програмах, зокрема:

  • Бази даних: Зберігання та отримання даних на основі унікальних ключів
  • Кешування: Зберігання часто використовуваних даних для швидшого пошуку
  • Таблиці символів: Відображення ідентифікаторів на їхні значення в мовах програмування
  • Маршрутизація мережі: Визначення найкращого шляху для пакетів даних

Що таке хешування?
  • Відображення індексу (або тривіальне хешування)
  • Окреме з’єднання для обробки зіткнень
  • Відкрити адресацію для обробки колізій
  • Подвійне хешування
  • Коефіцієнт навантаження та повторне перетворення
  • Легка проблема з хешуванням

    • Дізнайтеся, чи є масив підмножиною іншого масиву
    • Об'єднання та перетин двох пов'язаних списків
    • Дано масив A[] і число x, перевірте наявність пари в A[] із сумою як x
    • Максимальна відстань між двома входженнями одного елемента в масиві
    • Підрахуйте максимальну кількість балів на одній лінії
    • Найчастіший елемент у масиві
    • Знайдіть єдиний повторюваний елемент від 1 до n-1
    • Як перевірити, чи дві дані множини не перетинаються?
    • Неперекриваюча сума двох наборів
    • Перевірте, чи два масиви рівні чи ні
    • Знайти відсутні елементи діапазону
    • Мінімальна кількість підмножин з різними елементами
    • Видаліть мінімальну кількість елементів, щоб не було спільного елемента в обох масивах
    • Знайти пари із заданою сумою так, щоб елементи пари були в різних рядках
    • Полічіть пари із заданою сумою
    • Підрахуйте четвірки з чотирьох відсортованих масивів, сума яких дорівнює заданому значенню x
    • Сортувати елементи за частотою
    • Знайдіть усі пари (a, b) у масиві, щоб a % b = k
    • Згрупуйте слова з однаковим набором символів
    • k-й окремий (або неповторюваний) елемент у масиві.

    Середня проблема з хешуванням

    • Знайдіть Маршрут із поданого списку квитків
    • Знайдіть кількість співробітників під кожним працівником
    • Найдовший підмасив із сумою, що ділиться на k
    • Знайдіть найбільший підмасив із нульовою сумою
    • Найдовша зростаюча послідовна підпослідовність
    • Порахуйте окремі елементи в кожному вікні розміром k
    • Знайти підмасив із заданою сумою | Набір 2 (обробка від’ємних чисел)
    • Реалізація нашої власної хеш-таблиці з окремим ланцюжком у Java
    • Реалізація власної хеш-таблиці з відкритою адресацією лінійного зондування в C++
    • Мінімальна кількість вставок для формування паліндрому з дозволеними перестановками
    • Максимально можлива різниця двох підмножин масиву
    • Сортування за допомогою тривіальної хеш-функції
    • Найменший підмасив з k різних чисел

    Важка проблема хешування

    • Клонуйте бінарне дерево з випадковими покажчиками
    • Найбільший підмасив з рівною кількістю 0 і 1
    • Усі унікальні трійки, сума яких дає задане значення
    • Запити паліндромних підрядків
    • Діапазон запитів на частоти елементів масиву
    • Елементи, які потрібно додати, щоб усі елементи діапазону були присутні в масиві
    • Cuckoo Hashing – Найгірший випадок O(1) Пошук!
    • Підрахувати підмасиви, що мають загальну кількість різних елементів, так само, як і вихідний масив
    • Максимальний масив із двох заданих масивів із збереженням того самого порядку
    • Знайти суму всіх унікальних підмасивів для даного масиву.
    • Послідовність Рекамана
    • Довжина найдовшої суворої бітонічної підпослідовності
    • Знайти всі повторювані піддерева
    • Знайдіть, чи є у двійковій матриці прямокутник із кутами, рівними 1

    Швидкі посилання:

    • «Практичні завдання» з хешування
    • 20 найпопулярніших питань для інтерв’ю на основі техніки хешування
    • «Відео» про хешування

    Рекомендовано:

    програмування struct array c
    • Вивчіть структуру даних і алгоритми | Підручник DSA