Экзаменационный билет №27

1. Таблицы с вычислимым входом. Метод цепочек для разрешения коллизий.

Таблица с вычисляемым входом (хеш-таблица) – это таблица, элементы которой располагаются в соответствии с некоторой функцией расстановки (хеш-функцией)

Функция расстановки f (ключ) вычисляет для каждого элемента таблицы по его ключу номер (позицию) элемента в массиве.

Пример

Организация прямого доступа в рассмотренном виде приводит к неэффективному использованию памяти - требуется больше памяти (М >> 1) - количество используемых ключей, как правило, существенно меньше теоретически возможного набора

Размер памяти для представления таблицы значительно меньше возможного количества имен (M << N), и, как результат, получаемые по ключам числовые значения необходимо преобразовывать к диапазону номеров (адресов) строк памяти

Функция (хеширования, перемешивания, рассеивания) расстановки (hash - мешанина, путаница) - функция преобразования значения ключа к номеру (адресу) строки памяти для хранения записи H : K -> L (L = (0, ..., M - 1))

Таблицы с вычислимыми адресами (хеш-таблицы, перемешиваемые таблицы) - таблицы, представление которых организуется при использовании функции расстановки

Метод цепочек

Замечания к открытому перемешиванию как способу размешения коллизий:

Широко используемый подход для разрешения коллизий - метод цепочек, когда все записи, для которых функция хеширования определяет одно и тоже значение,представляются в виде линейного списка.

Открытое перемешивание еще называют закрытым хэшированием, метод цепочек - открытое хэширование.

Википедия

Каждая ячейка массива является указателем на связный список (цепочку) пар ключ-значение, соответствующих одному и тому же хеш-значению ключа. Коллизии просто приводят к тому, что появляются цепочки длиной более одного элемента. Операции поиска или удаления элемента требуют просмотра всех элементов соответствующей ему цепочки, чтобы найти в ней элемент с заданным ключом. Для добавления элемента нужно добавить элемент в конец или начало соответствующего списка, и, в случае, если коэффициент заполнения станет слишком велик, увеличить размер массива и перестроить таблицу.

2. Плекс, как представление арифметического выражения.

Плекс может рассматриваться как структура представления для выражений самого общего вида (линия – операция, точки - операнды).

Пример: Арифметическое выражение (a * b + c) * (d - e / f):