- •Лекція 1
- •Основні визначення та поняття
- •1.1.Термінологія
- •1.2. Класифікація структур данях
- •1.3. Основні операції над структурами даних
- •Контрольні запитання
- •Лекція 2 алгоритми. Складність алгоритмів
- •1. Зображення алгоритмів
- •2 Складність алгоритмів
- •3. Класи алгоритмів
- •Контрольні запитання
- •Лекція 3 методи сортування
- •Лекція 4 методи сортування (продовження)
- •4. Сортування включенням
- •5. Сортування розподілом
- •6. Сортування злиттям або об’єднанням
- •Лекція 5 Дерева
- •1. Основні визначення та поняття
- •2. Бінарні дерева
- •3. Зображення в пам‘яті комп‘ютера графоподібних структур
- •Контрольні запитання
- •Лекція 6 дерева (продовження)
- •4. Сортування на деревах
- •4.2. Пірамідальне сортування.
- •Контрольні запитання
- •Лекція 7 лінійні структури даних
- •1. Стеки, черги, деки
- •1.1. Стеки
- •1.2. Черги
- •1.3. Деки
- •1.4. Організація стеків, черг і деків
- •Контрольні запитання та вправи
- •3. Множини I кортежі
- •4. Зберігання множин і масивів
- •4.1 Зберігання розріджених матриць
- •Контрольні запитання
- •Лекція 9 Лінійні списки
- •1. Основні визначення та поняття
- •2. Однонаправлені списки
- •3. Двонаправлені списки
- •4. Циклічні списки
- •Контрольні запитання та вправи
- •Лекція 11 нелінійні структури даних
- •1. Таблиці
- •2. Зображення таблиць
- •Контрольні питання
- •Лекція 13 Пошук даних
- •1. Послідовний або лінійний пошук
- •2. Двійковий пошук
- •1. Дерева порівнянь на векторній пам‘яті.
- •3.Пошук у таблиці
- •4. Прямий пошук стрічки
- •5. Алгоритм Кнута, Моріса і Прата пошуку в стрічці.
- •7. Алгоритми з поверненням
- •Лекція 14 Пошук у таблиці
- •1. Пошук у таблицях з обчислюваними адресами
- •2. Пошук у таблицях з прямим доступом
- •3. Пошук у Хеш-таблицях.
- •Контрольні питання
3. Пошук у Хеш-таблицях.
Природним розвитком застосування таблиць з безпосереднім доступом є обчислення адреси не в повному діапазоні 0... n-1, а в деякому обмеженому. Цей метод відомий як метод перемішаних адрес або метод змістовної адресації.
У простій таблиці з безпосереднім доступом з п можливих ключів можна згенерувати унікальну адресу в діапазоні 0... n-1. Але якщо з‘являється тільки l<<n ключів, то втрачається великий обсяг пам‘яті. Отже, доцільно обчислювати адресу в діапазоні l < m<<n, однак це збільшить ймовірність появи колізії.
Розглянемо приклад з табл. 6.1. Для восьми елементів відведемо тільки 10 одиниць пам‘яті, тобто l=8, m =10.
Наприклад для побудови хеш-таблиці будемо обчислювати хеш-адресу від ключа в діапазоні 0...9 таким чином: складемо всі десяткові коди обох символів, що утворюють ключ, а потім візьмемо залишок від ділення цієї суми на 10 (ділення за модулем 10). Значення такої хеш-функцїї наведені в табл. 2 , а в табл. 3 - побудова хеш-таблиці за цією функцією. Для ліквідації ситуації колізії застосовувалося повторне хешування.
Для фіксованих таблиць можна знайти достатньо ефективну функцію адресації. Якщо ж таблиці не фіксовані і всі можливі ключі вибираються з деякої достатньо великої множини потенційно можливих ключів, то ідеальної функції адресації не існує.
Довжина пошуку в хеш-таблицях залежить від коефіцієнта заповнення адресного простору, тобто відношення q=n/m , де п - кількість записів; m - розмірність таблиці, а також методу розв‘язку задачі колізії.
Контрольні питання
-
Що називається функцією хешування?
-
Що називається колізією?
-
Як визначається адреса запису в таблиці з прямим доступом?
-
Як визначається адреса запису в хеш-таблиці?