Page 30 - 4761
P. 30

Рисунок 2.7 – Заповнення таблиці ідентифікаторів методом ланцюжків

                         Метод ланцюжків є дуже ефективним засобом організації таблиць ідентифікаторів.
                  Середній час на розміщення одного елементу  і на пошук елементу в таблиці  для нього
                  залежить тільки від середнього числа колізій, виникаючих при вирахуванні хеш-функції.
                  Накладні витрати пам’яті, зв’язані з необхідністю мати одно додаткове поле покажчик в
                  таблиці  ідентифікаторів  на  кожний  її  елемент,  можна  признати  достатньо  оправданим.
                  Цей  метод  позволяє  більш  економно використовувати  пам'ять,  але  потребує  організації
                  роботи з динамічними масивами даних.
                         Використовуються    комбіновані  методи.  В  цьому  випадку,  як  і  для  методу
                  ланцюжків, в таблиці ідентифікаторів організовуються спеціальне додаткове поле ссилки.
                  Але на відміну від методу ланцюжків воно має інакше значення. При відсутності колізій
                  для вибірки інформації з таблиці використовується хеш-функція, поле ссилки залишається
                  порожнім. Якщо ж виникає колізія, то за допомогою поля ссилки організовується пошук
                  ідентифікаторів,  для  яких  значення  хеш-функції  співпадають,  по  одному  з  розглянутих
                  вище методів: неупорядкований список , упорядкований список або ж бінарне дерево. При
                  добре  побудованій  хеш-функції  колізії  будуть  виникати  рідко,  тому  кількість
                  ідентифікаторів, для яких значення хеш-функції співпали, буде  не дуже велике. Тоді і час
                  пошуку одного з них буде незначним (в принципі, при високій якості хеш-функції підійде
                  навіть перебір по неупорядкованому списку).
                         Такий підхід має перевагу в порівнянні с методом ланцюжків, так як не потребує
                  використання проміжної хеш-таблиці. Недоліком методу являється необхідність роботи з
                  динамічними розподілюваними областями пам’яті. Ефективність такого методу, очевидно,
                  в  першу  чергу  залежить  від  якості  хеш-функції  яка  використовується,  а  в  другу  –  від
                  методу організації  додаткових сховищ даних.
                         Хеш-адресація – це метод, який використовується не тільки для організації таблиць
                  ідентифікаторів в компіляторах. Даний метод знайшов своє використання і в операційних
                  системах управління базами даних.


                                                                28
   25   26   27   28   29   30   31   32   33   34   35