Page 25 - 4761
P. 25

організації таблиці ідентифікаторів. Другий недолік – необхідність роботи з динамічним
                  виділенням пам’яті при побудові дерева.
                         Середній час на заповнення – Т З = N*O(log 2(N)), на пошук Т П = O(log 2(N)).
                         В цілому, метод бінарного дерева є досить успішним механізмом для організації ТІ.
                  Він  знайшов  своє  використання  в  ряді  компіляторів.  Деколи  компілятори  будують
                  декілька різних дерев для ідентифікаторів різних типів і різної довжини.

                  Хеш-функції та хеш-адресація

                         Логарифмічна залежність часу пошуку і часу заповнення ТІ – це самий хороший
                  результат, якого можна досягти за рахунок застосування різних методів побудови таблиць.
                         Кращих  результатів  можна  досягти,  якщо  застосовувати  методи,  пов’язані  з
                  використанням хеш-функцій та хеш-адресації.
                         Хеш-функцією F називають деяке відображення множини вхідних елементів R на
                  множину цілих невід’ємних чисел Z : F(r) = n, r   R, n   Z. (термін – від англійського
                  (hash function) – (hash – змішувати) мішати).
                         Множина допустимих вхідних елементів R називається областю визначення хеш-
                  функції. Множиною значень хеш-функції F називається підмножина М   з множини цілих
                  невід’ємних чисел Z : M   Z, містить всі можливі значення, які повертає функція F :
                                            r  R: F(r)  M    m  M:  r  R : F(r) = m
                         Процес  відображення  області  визначення  хеш-функції  на  множину  значень
                  називається «хешуванням».
                         При роботі з ТІ хеш-функція має виконувати відображення імен ідентифікаторів на
                  множину  цілих  чисел.  Областю  визначення  хеш-функції  буде  множина  всіх  можливих
                  імен ідентифікаторів.
                         Хеш-адресація заключається  у використанні значення, яке хеш-функція повертає,
                  як  адресу  комірки  з  деякого  масиву  даних.  Тоді  розмір  масиву  даних  має  відповідати
                  області  значень    хеш-функції,  яка  використовується.  В  реальному  компіляторі  область
                  значень хеш-функції не повинна перевищувати розмір  допустимого адресного простору
                  компілятора.































                                   Рисунок 2.5 – Організація ТІ з використанням хеш-адресації

                         Метод організації ТІ, який базується на використанні хеш-адресації, заключається в
                  розміщенні  кожного  елемента  таблиці  в  комірці,  адресу  якої  повертає  хеш-функція,

                                                                23
   20   21   22   23   24   25   26   27   28   29   30