Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр+Структуры и алгоритмы с АТД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
463.87 Кб
Скачать

Атд "Итератор"

Данные:

  Параметры:     Ссылка на структуру данных     Значение текущего ключа

Операции:

  Конструктор:     Вход: Ссылка на структуру данных, значение текущего ключа элемента, на который указывает итератор     Предусловия: нет     Процесс: Инициализация ссылки на структуру данных, установка текущего ключа     Постусловия: итератор установлен     Выход: нет

  Оператор присваивания:     Вход: Инициализированный итератор     Предусловия: нет     Процесс: Инициализация ссылки на структуру данных, установка текущего ключа     Постусловия: итератор установлен     Выход: нет

  Переход к следующему элементу списка:     Вход: нет     Предусловия: итератор установлен не на конец таблицы     Процесс: переход на следующий элемент таблицы     Постусловия: итератор установлен на следующий элемент, либо итератор не установлен, если не выполнено предусловие     Выход: нет

  Оператор сравнения итераторов на равенство:     Вход: инициализированный итератор     Предусловия: нет     Процесс: Сравнение текущего ключа данного итератора с ключом переданного итератора     Постусловия: нет     Выход: true, если ключи равны, false, если ключи не равны

  Оператор сравнения итераторов на не равенство:     Вход: нет     Предусловия: нет     Процесс: Сравнение текущего ключа данного итератора с ключом переданного итератора     Постусловия: нет     Выход: false если ключи равны, true если ключи не равны

  Получение значения текущего элемента:     Вход: нет     Предусловия: Итератор установлен     Процесс: Поиск значения элемента по ключу в таблице     Постусловия: нет     Выход: пара текущий ключ - текущее значение, ключ равен -1, если не выполнено предусловие

Описание методики тестирования хеш-функции (определение статистики c2)

Определение критерия c2 требуется для оценки эффективности хеш-функции. Она вычисляется по следующей формуле:

где P - количество ключей, использованных для получения распределения (в нашем случае P=20m),

m - размер хеш-таблицы,

fi - количество ключей с хеш-значением, равным i.

Таким образом, мы должны построить доверительный интервал для экспериментального значения статистики 2. Также определяется вероятность попадания данного экспериментального значения в построенный интервал. При тестировании мы должны обеспечить уникальность ключей.

Описание хеш-функций

В программе использовалась хеш-функция, осуществляющая свёртку ключа комбинированную с выбором определённого количества цифр из ключа. Свёртка производится следующим образом. Для представления ключа в виде 12-ти значного натурального числа используется тип 64 битного целого. При свёртке младшие 31 бит ключа и старшие 33 бита "складываются" логической операцией XOR и получается знаковое 32 битное целое число. Далее над этим значением производится выбор цифр.

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

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