🗊 Презентация Лекція 13. Хеш таблиці

Нажмите для полного просмотра!
Лекція 13. Хеш таблиці, слайд №1 Лекція 13. Хеш таблиці, слайд №2 Лекція 13. Хеш таблиці, слайд №3 Лекція 13. Хеш таблиці, слайд №4 Лекція 13. Хеш таблиці, слайд №5 Лекція 13. Хеш таблиці, слайд №6 Лекція 13. Хеш таблиці, слайд №7 Лекція 13. Хеш таблиці, слайд №8 Лекція 13. Хеш таблиці, слайд №9 Лекція 13. Хеш таблиці, слайд №10 Лекція 13. Хеш таблиці, слайд №11 Лекція 13. Хеш таблиці, слайд №12 Лекція 13. Хеш таблиці, слайд №13 Лекція 13. Хеш таблиці, слайд №14 Лекція 13. Хеш таблиці, слайд №15 Лекція 13. Хеш таблиці, слайд №16 Лекція 13. Хеш таблиці, слайд №17 Лекція 13. Хеш таблиці, слайд №18 Лекція 13. Хеш таблиці, слайд №19 Лекція 13. Хеш таблиці, слайд №20 Лекція 13. Хеш таблиці, слайд №21 Лекція 13. Хеш таблиці, слайд №22 Лекція 13. Хеш таблиці, слайд №23 Лекція 13. Хеш таблиці, слайд №24 Лекція 13. Хеш таблиці, слайд №25 Лекція 13. Хеш таблиці, слайд №26 Лекція 13. Хеш таблиці, слайд №27 Лекція 13. Хеш таблиці, слайд №28 Лекція 13. Хеш таблиці, слайд №29 Лекція 13. Хеш таблиці, слайд №30 Лекція 13. Хеш таблиці, слайд №31 Лекція 13. Хеш таблиці, слайд №32 Лекція 13. Хеш таблиці, слайд №33

Содержание

Вы можете ознакомиться и скачать презентацию на тему Лекція 13. Хеш таблиці. Доклад-сообщение содержит 33 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Хеш-таблиці Сидоренко М.О.
Описание слайда:
Хеш-таблиці Сидоренко М.О.

Слайд 2


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

Слайд 3


Таблиці з прямою адресацією Припустимо, що застосуванню потрібна динамічна множина, кожний елемент якої має ключ з множини U = {0, 1, …, m – 1}, де m...
Описание слайда:
Таблиці з прямою адресацією Припустимо, що застосуванню потрібна динамічна множина, кожний елемент якої має ключ з множини U = {0, 1, …, m – 1}, де m не дуже велике. Крім того, припускається, що жодні два елементи не мають однакових ключів. Для представлення динамічної множини використовується масив, або таблиця з прямою адресацією, який позначається як T[0… m – 1], кожна позиція, або комірка, якого відповідає ключу з простору ключів U.

Слайд 4


Таблиці з прямою адресацією Комірка k вказує на елемент множини з ключем k. Якщо множина не містить елементу з таким ключем, то T[k] = NIL. На...
Описание слайда:
Таблиці з прямою адресацією Комірка k вказує на елемент множини з ключем k. Якщо множина не містить елементу з таким ключем, то T[k] = NIL. На рисунку кожний ключ простору U = {0, 1, …, 9} відповідає індексу таблиці. Множина реальних ключів K = {2, 3, 5, 8} визначає комірки таблиці, які містять покажчики на елементи. Решта комірок містять значення NIL.

Слайд 5


Динамічна множина із використанням таблиці з прямою адресацією
Описание слайда:
Динамічна множина із використанням таблиці з прямою адресацією

Слайд 6


Процедури, які реалізують операції роботи з масивами. DirectAddressSearch(T, k) return T[k] DirectAddressInsert(T, x) T[key[x]] ← x...
Описание слайда:
Процедури, які реалізують операції роботи з масивами. DirectAddressSearch(T, k) return T[k] DirectAddressInsert(T, x) T[key[x]] ← x DirectAddressDelete(T, x) T[key[x]] ← NIL

Слайд 7


Хеш-таблиці У випадку прямої адресації елемент з ключем k зберігається у комірці k. При хешуванні цей елемент зберігається в комірці h(k), тобто тут...
Описание слайда:
Хеш-таблиці У випадку прямої адресації елемент з ключем k зберігається у комірці k. При хешуванні цей елемент зберігається в комірці h(k), тобто тут використовується хеш-функція h для обчислення комірки для даного ключа k. Функція h відображає простір ключів U на комірки хеш-таблиці T[0…m – 1]: h: U → {0, 1, …, m – 1}. Ми говоримо, що елементи з ключем k хешується в комірку h(k); величина h(k) називається хеш-значенням ключа k. Мета хеш-функції полягає в тому, щоб зменшити робочий діапазон індексів масиву.

Слайд 8


Використання хеш-функції для відображення ключів у комірки хеш-таблиці
Описание слайда:
Використання хеш-функції для відображення ключів у комірки хеш-таблиці

Слайд 9


Розв’язання колізій за допомогою ланцюгів Два ключа можуть мати одне й те саме хеш-значення. Так ситуація називається колізією. За допомогою методу...
Описание слайда:
Розв’язання колізій за допомогою ланцюгів Два ключа можуть мати одне й те саме хеш-значення. Так ситуація називається колізією. За допомогою методу ланцюгів всі елементи, які хешуються в одну й ту саму комірку об’єднуються у зв’язаний список. Комірка j містить покажчик на заголовок списку всіх елементів, хеш-значення ключа яких дорівнює j; якщо таких елементів немає, комірка містить значення NIL.

Слайд 10


Розв’язання колізій за допомогою ланцюгів
Описание слайда:
Розв’язання колізій за допомогою ланцюгів

Слайд 11


Словарні операції в хеш-таблиці із використанням ланцюгів ChainedHashInsert(T, x) Вставити x в заголовок списку T[h(key[x])] ChainedHashSearch(T, k)...
Описание слайда:
Словарні операції в хеш-таблиці із використанням ланцюгів ChainedHashInsert(T, x) Вставити x в заголовок списку T[h(key[x])] ChainedHashSearch(T, k) Пошук елементу з ключем k в списку T[h(k)] ChainedHashDelete(T, x) Видалення x зі списку T[h(key[x])]

Слайд 12


T- хеш-таблиця з m комірками, в яких зберігаються n елементів. Коефіцієнт заповнення таблиці T як α = n/m, тобто як середню кількість елементів, які...
Описание слайда:
T- хеш-таблиця з m комірками, в яких зберігаються n елементів. Коефіцієнт заповнення таблиці T як α = n/m, тобто як середню кількість елементів, які зберігаються в одному ланцюгу. Припустимо, що всі елементи хешуються по комірках рівномірно та незалежно, і назвемо це припущення «простим рівномірним хешуванням».

Слайд 13


Лекція 13. Хеш таблиці, слайд №13
Описание слайда:

Слайд 14


Хеш-функції
Описание слайда:
Хеш-функції

Слайд 15


Хеш-функції Розглянемо наступні два методи побудови хеш-функцій: метод ділення та метод множення. Побудова хеш-функції методом ділення полягає у...
Описание слайда:
Хеш-функції Розглянемо наступні два методи побудови хеш-функцій: метод ділення та метод множення. Побудова хеш-функції методом ділення полягає у відображені ключа k в одну з комірок шляхом отримання остачі від ділення k на m, тобто хеш-функція має вигляді: h(k) = k mod m. При використанні даного методу зазвичай намагаються уникнути деяких значень m. Наприклад, m не повинно бути степенем 2. Часто добрі результати можна отримати, якщо обирати в якості значення m просте число, достатньо далеке від степеня двійки.

Слайд 16


Хеш-функції
Описание слайда:
Хеш-функції

Слайд 17


Відкрита адресація При використанні методу відкритої адресації всі елементи зберігаються безпосередньо в хеш-таблиці, тобто кожний запис таблиці...
Описание слайда:
Відкрита адресація При використанні методу відкритої адресації всі елементи зберігаються безпосередньо в хеш-таблиці, тобто кожний запис таблиці містить або елемент динамічної множини, або значення NIL. Для виконання вставки при відкритій адресації ми послідовно перевіряємо комірки хеш-таблиці до тих пір, доки не знайдемо порожню комірку, в яку розміщується новий ключ. Замість фіксованого порядку дослідження комірок 0, 1, …, m – 1 (для чого потрібний час Θ(n)), послідовність досліджуваних комірок залежить від ключа, який вставляється у таблицю.

Слайд 18


Приклад
Описание слайда:
Приклад

Слайд 19


Приклад колізії
Описание слайда:
Приклад колізії

Слайд 20


Приклад колізії
Описание слайда:
Приклад колізії

Слайд 21


вирішення колізії за допомогою ланцюгів
Описание слайда:
вирішення колізії за допомогою ланцюгів

Слайд 22


Представлення структури hash-table на мові С typedef struct _list_t_ { char *str; struct _list_t_ *next; } list_t; typedef struct _hash_table_t_ {...
Описание слайда:
Представлення структури hash-table на мові С typedef struct _list_t_ { char *str; struct _list_t_ *next; } list_t; typedef struct _hash_table_t_ { int size; /* the size of the table */ list_t **table; /* the table elements */ } hash_table_t;

Слайд 23


ініціалізація Хеш-таблиці hash_table_t *create_hash_table(int size) { hash_table_t *new_table; if (sizetable = malloc(sizeof(list_t *) * size)) ==...
Описание слайда:
ініціалізація Хеш-таблиці hash_table_t *create_hash_table(int size) { hash_table_t *new_table; if (sizetable = malloc(sizeof(list_t *) * size)) == NULL) { return NULL; } /* Initialize the elements of the table */ for(int i=0; itable[i] = NULL; /* Set the table's size */ new_table->size = size; return new_table; }

Слайд 24


Відкрита адресація В результаті хеш-функція стає наступною: h :U × {0,1,.. m −1 }-> {0,1,0..,m −1 } , У методі відкритої адресації потрібно, що для...
Описание слайда:
Відкрита адресація В результаті хеш-функція стає наступною: h :U × {0,1,.. m −1 }-> {0,1,0..,m −1 } , У методі відкритої адресації потрібно, що для кожного ключа k послідовність досліджень H( k ,0), h (k ,1),( h (k, m − 1)) представляла собою перестановку множини {0, 1, …, m – 1}, щоб в кінцевому випадку можна було переглянути всі комірки хеш-таблиці. У наведеному нижче псевдокоді припускається, що елементи в таблиці T представляють собою ключі без додаткової інформації; ключ k тотожній елементу, який містить ключ k. Кожна комірка містить або ключ, або значення NIL

Слайд 25


Процедура додавання елементу до відкритої адресації HashInsert(T, k) 1 i ← 0 2 repeat j ← h(k, i) 3 if T[j] = NIL 4 then T[j] ← k 5 return j 6 else i...
Описание слайда:
Процедура додавання елементу до відкритої адресації HashInsert(T, k) 1 i ← 0 2 repeat j ← h(k, i) 3 if T[j] = NIL 4 then T[j] ← k 5 return j 6 else i ← i + 1 7 until i = m 8 error “Хеш-таблиця переповнена”

Слайд 26


Процедура пошуку ключа у відкритій адресації HashSearch(T, k) 1 i ← 0 2 repeat j ← h(k, i) 3 if T[j] = k 4 then return j 5 i ← i + 1 6 until T[j]
Описание слайда:
Процедура пошуку ключа у відкритій адресації HashSearch(T, k) 1 i ← 0 2 repeat j ← h(k, i) 3 if T[j] = k 4 then return j 5 i ← i + 1 6 until T[j]

Слайд 27


Рівномірне хешування Ми будемо виходити із припущення рівномірного хешування, тобто ми припускаємо, що для кожного ключа в якості послідовності...
Описание слайда:
Рівномірне хешування Ми будемо виходити із припущення рівномірного хешування, тобто ми припускаємо, що для кожного ключа в якості послідовності досліджень рівноймовірні всі m! перестановок множини {0, 1, …, m – 1}. Рівномірне хешування представляє собою узагальнення визначеного раніше простого рівномірного хешування, яка полягає в тому, що тепер хеш-функція дає не одне значення, а цілу послідовність досліджень

Слайд 28


Рівномірне хешування Для обчислення послідовності досліджень для відкритої адресації зазвичай використовуються три методи: лінійне дослідження,...
Описание слайда:
Рівномірне хешування Для обчислення послідовності досліджень для відкритої адресації зазвичай використовуються три методи: лінійне дослідження, квадратичне дослідження та подвійне хешування.

Слайд 29


Лінійне хешування Нехай задана звичайна хеш-функція h′: U → {0, 1, …, m – 1}, яку будемо надалі йменувати допоміжною хеш-функцією. Метод лінійного...
Описание слайда:
Лінійне хешування Нехай задана звичайна хеш-функція h′: U → {0, 1, …, m – 1}, яку будемо надалі йменувати допоміжною хеш-функцією. Метод лінійного дослідження для обчислення послідовності досліджень використовує хеш-функцію h(k,i)=(h’(k)+i)mod m, де i приймає значення від 0 до m – 1. Для заданого ключа k першою досліджуваною коміркою є T[h′(k)], тобто комірка, яку дає допоміжна хеш-функція. Далі досліджуються комірки T[h′(k) + 1], T[h′(k) + 2], …, T[m – 1], а потім переходять до T[0], T[1], і далі до T[h′(k) – 1]. Оскільки початкова досліджувана комірка однозначно визначає всю послідовність досліджень в цілому, всього є m різних послідовностей.

Слайд 30


Квадратичне дослідження
Описание слайда:
Квадратичне дослідження

Слайд 31


Подвійне хешування
Описание слайда:
Подвійне хешування

Слайд 32


Для того щоб послідовність досліджень могла охопити всю таблицю, значення h2(k) повинно бути взаємно простим із розміром хеш-таблиці m Наприклад,...
Описание слайда:
Для того щоб послідовність досліджень могла охопити всю таблицю, значення h2(k) повинно бути взаємно простим із розміром хеш-таблиці m Наприклад, можна обрати просте число в якості m, а хеш-функції такими: h1(k) = k mod m , h2(k)=(1+k mod m′) , де m′ повинно бути трохи менше m (наприклад, m – 1).

Слайд 33


Дякую за увагу.
Описание слайда:
Дякую за увагу.



Похожие презентации
Mypresentation.ru
Загрузить презентацию