Заполнение таблиц идентификаторов с использованием алгоритма хэш-адресации

Один из наиболее эффективных способов реализации таблиц идентификаторов - использование хэш-функции. Построение хэш-функции методом деления. Реализация в программном коде хэш-функции и рехэширования. Организация таблицы идентификаторов в виде массива.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 18.03.2019
Размер файла 211,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Тюменский индустриальный университет

Заполнение таблиц идентификаторов с использованием алгоритма хэш-адресации

Верхотуров И.А.

Основное содержание исследования

Согласно проведенным исследованиям, во время работы компилятора на этапе лексического анализа происходит распознавание лексических конструкций языка. Элементы, информация о которых будет использоваться в процессе компиляции хранятся в виде организованных наборов данных - таблиц идентификаторов. На различных фазах компиляции компилятор вынужден многократно обращаться к таблице для поиска информации и записи новых данных. В процессе заполнения таблиц каждый элемент однозначно идентифицируется своим именем в результате чего поиск осуществляется по имени элемента в таблице. Использование идентификаторов осуществляется чаще чем занесении информации о них в таблицы, поэтому можно сделать вывод о том, что таблицы идентификаторов должны быть организованы таким образом, чтобы компилятор имел возможность максимально быстрого поиска нужного ему элемента. [1-2]

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

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

Поскольку для вычисления хэш-функции требуется только одна операция деления, хэширование методом деления достаточно быстрое. Хэш-функция имеет вид: h (k) = k mod m.

При заполнении таблиц может возникнуть коллизия - ситуация, когда два ключа могут быть хэшированы в одну ячейку. [3-4]

В представленной работе проблема коллизий решается методом "рехэширования".

Рехэширование имеет вид: h (k) = h (k) +1.

Реализация в программном коде хэш-функции и рехэширования:

void HashFunc (String a, String *

A) { int n=0; int j=1; int res=0;

for (int i = 1; i <=a. Length (); i++)

{ n=a [i];

res=res+ n; }

if (A [res%40] =="")

{ A [res%40] =a; }

while (A [res%40]! = a && A [res%40]! = "")

{ res=res+1;

A [res%40] =a; }

}

В представленной работе таблица идентификаторов организована в виде массива. На вход функции HashFunc подаётся элемент и массив, в который этот элемент нужно разместить. Поскольку размер каждого массива - 40 элементов, Хэш-функция имеет вид: h (res) = res mod 40. Параметр res вычисляется как сумма ASCII-кодов литер, входящих в состав названия идентификатора. Так как метод деления подразумевает использование остатка от деления - переполнение массива исключено.

Графическое представление таблиц идентификаторов реализовано с использованием библиотеки визуальных компонентов программного средства - RAD Studio XE8, поддерживающего технологию объектно-ориентированного программирования [5]. Графическая реализация представлена на рисунке 1.

алгоритм таблица идентификатор рехэширование

Рис.1. Графическая реализация таблиц идентификаторов

Алгоритм заполнения таблиц идентификаторов, реализованный с помощью графического языка UML представлен на рисунке 2 [6].

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

Рис.2. Алгоритм заполнения таблиц идентификаторов

Литература

1. Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. - СПб.: Питер, 2001. - 736 с.

2. Жаков В.И., Корсакова Н.В., Никитин А.В., Фильчаков В.В. Структуры данных: Учебное пособие. - Л.: ЛИАП, 1989. - 76 с.

3. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ, 2-е издание. - М.: Издательский дом "Вильямс", 2012. - 1296c

4. Клочко В.И. Теория вычислительных процессов и структур: Учебное пособие. - Краснодар: Изд-во КубГТУ, 1999. - 118 с.

5. Архангельский А.Я. Программирование в С++ Builder.7-е изд. - М.: ООО "Бином-Пресс", 2010. - 1230 с.: ил.

6. Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя.2-е издание. - М.: ДМК Пресс, 2006. - 496 с.: ил.

Размещено на Allbest.ru

...

Подобные документы

  • Назначение, принципы и методы построения таблиц идентификаторов. Метод простого рехэширования с помощью произведения. Назначение лексического анализатора. Таблица лексем и содержащаяся в ней информация. Построение лексических анализаторов (сканеров).

    курсовая работа [703,1 K], добавлен 08.02.2011

  • Сравнение методов деления отрезка пополам, хорд, касательных и итераций, поочередно используя их для решения одного и того же уравнения. Построение диаграммы и графика изменения числа. Исследование алгоритма работы программы, перечня идентификаторов.

    курсовая работа [1,3 M], добавлен 06.08.2013

  • Вычисление значения функции с помощью программирования. Рабочий набор исходных данных. Таблица идентификаторов, текст программы, контрольный расчет. Подключение модуля, объявление константы и переменных вещественного типа. Шаг изменения аргумента.

    контрольная работа [118,4 K], добавлен 28.09.2012

  • Организация таблицы идентификаторов, ее содержание и назначение. Метод бинарного дерева и цепочек. Проектирование лексического анализатора и схема распознавателя. Построение дерева вывода, синтаксический анализатор. Анализ результатов работы программы.

    курсовая работа [1,0 M], добавлен 25.12.2014

  • Создание базы данных "Компьютерные игры": разработка и дизайн интерфейса, наполнение таблиц информацией, формирование идентификаторов. Использование системы управления базами данных Microsoft Access для составления стандартных запросов, форм и отчетов.

    курсовая работа [715,7 K], добавлен 29.01.2011

  • Разработка граф-схемы алгоритма раскраски на языке Object Pascal. Формат файла для хранения графов. Выбор удобочитаемых идентификаторов. Переменные, константы, типы, компоненты, процедуры и функции модулей uMain, uInputk, uFiling, uColoring, uHelp.

    курсовая работа [1,3 M], добавлен 22.11.2013

  • Построение графика функции. Поиск корней уравнения методом половинного деления. Определение минимума функции методом перебора и значения аргумента. Вычисление определенного интеграла на заданном отрезке с использованием метода правых прямоугольников.

    контрольная работа [316,1 K], добавлен 13.11.2014

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

    курсовая работа [1,4 M], добавлен 14.07.2012

  • Общая характеристика языка программирования Турбо Паскаль: операторы, циклы, файлы. Процедуры и функции модуля Crt. Структурная и функциональная схема программы учета учащихся, таблица идентификаторов. Список и описание использованных подпрограмм.

    курсовая работа [702,9 K], добавлен 29.01.2011

  • Определение нормального усилия, поперечной силы и изгибающего момента. Построение графиков зависимостей в одной системе координат. Математическая модель решения задачи. Схема алгоритма. Таблица идентификаторов. Текст программы и результаты ее работы.

    контрольная работа [706,9 K], добавлен 08.03.2013

  • Общая характеристика и функциональные особенности, основные требования к интерфейсу разрабатываемого программного продукта. Описание алгоритмов, таблица идентификаторов, организация интерфейса пользователя, инструментальные средства реализации проекта.

    курсовая работа [587,7 K], добавлен 12.01.2014

  • Стандартные функции MS SQL-сервера. Состав и структура таблиц базы данных. Диалог пользователя с приложением. Корректировка таблиц-справочников. Построение печатных форм. Использование представлений, хранимых процедур и функций, курсоров, триггеров.

    курсовая работа [609,2 K], добавлен 28.01.2016

  • Создание программы "компьютерная игра "баскетбол", с упрощенным изображением баскетбольного щита и игрока, с возможностью изменять положение игрока, направление броска и его силу. Построение алгоритма, описание процедур и функций, таблица идентификаторов.

    дипломная работа [72,7 K], добавлен 29.11.2011

  • Выполнение заданий на вычисление функции на указанном диапазоне и построение графика функции. Нахождение суммы числового ряда. Нахождение корней уравнения командой "Подбор параметра". Описание технологии работы со списками в электронной таблице Excel.

    контрольная работа [35,3 K], добавлен 15.11.2010

  • Системный анализ предметной области. Нормальные формы таблиц. Физическое проектирование базы данных. Реализация структуры БД в СУБД MySQL. Запросы на создание таблиц, добавление и выборку данных. Реализация триггера и функции. Программный код WEB-страниц.

    курсовая работа [748,9 K], добавлен 01.11.2014

  • Изучение возможностей, достоинств и недостатков программного продукта Microsoft Excel, который является одним из наиболее известных программ обработки электронных таблиц. Алгоритм установки, порядок ввода формул. Имена ячеек для абсолютной адресации.

    курсовая работа [1,5 M], добавлен 16.06.2011

  • Элементы языка программирования. Описание программы по нахождению всех источников орграфа. Таблицы идентификаторов комплекса, глобального и локального контекстов. Постановка проблемных подпрограмм. Инструкция пользователю по работе с программой.

    курсовая работа [601,4 K], добавлен 19.02.2012

  • Основные операции, связанные с созданием и форматированием таблиц. Создание таблицы, внесение в нее текстовой информации и выполнение обрамления таблицы. Задание фиксированных размеров ячеек, слияние ячеек, использование автоматической нумерации.

    лабораторная работа [165,9 K], добавлен 10.03.2007

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

    курсовая работа [6,2 M], добавлен 09.03.2012

  • Обзор встроенных функции табличного процессора Microsoft Excel, особенности их практического использования. Создание таблиц и их заполнение данными, построение графиков. Применение математических формул для выполнения запросов пакетов прикладных программ.

    курсовая работа [3,9 M], добавлен 25.04.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.