Инженер Гудков К.С.

Государственный научно-исследовательский институт авиационных систем, Россия

Оценка времени работы одного алгоритма, находящего разность в версиях открытых внешних справочников

В корпоративных информационных системах часто используются таблицы нормативно-справочной информации, полученные на основе внешних справочников открытых баз данных. При этом часто составители внешних справочников предоставляют для скачивания только их финальную версию, не предоставляя информацию о внесённых изменениях. Поэтому актуальной задачей является самостоятельное нахождение различий между сохранённой предыдущей версией справочника и скачанной текущей версией справочника. Формализуем эту задачу. Пусть и предыдущая, и текущая версии открытой базы данных представлены в CSV-формате. Если это не так, то можно осуществить предварительное преобразование исходного формата к CSV-формату. Математическая модель управления обработкой нормативно-справочной информации, в рамках которой используется подобный подход, описана в [1]. Необходимо сравнить текущую и предыдущую версии справочника, получив файл с добавленными кортежами и файл с удалёнными кортежами. Оба выходных файла также должны быть представлены в CSV-формате. Для решения этой задачи в работе [2] был предложен следующий алгоритм:

·       Данные предыдущей версии справочника заносятся в красно-чёрное дерево [3]. Узел дерева – это CSV-строка, соответствующая кортежу справочника.

·       Осуществляется линейный проход по CSV-файлу с текущей версией справочника. Для каждой строки проверяется её наличие в красно-чёрном дереве. Если она там есть, то никакие действия не предпринимаются. Если её там нет, то строка добавляется к CSV-файлу, содержащему добавленные в текущей версии справочника по сравнению с предыдущей версией справочника строки.

·       Данные текущей версии справочника заносятся в красно-чёрное дерево. Узел дерева – это CSV-строка, соответствующая кортежу справочника.

·       Осуществляется линейный проход по CSV-файлу с предыдущей версией справочника. Для каждой строки проверяется её наличие в красно-чёрном дереве. Если она там есть, то никакие действия не предпринимаются. Если её там нет, то строка добавляется к CSV-файлу, содержащему удалённые в текущей версии справочника по сравнению с предыдущей версией справочника строки.

В работе [2] было проведено сравнение с точки зрения скорости работы следующих структур данных: красно-чёрного дерева, AVL-дерева [4], хэш-таблицы, бинарного дерева поиска и линейного списка. Сравнение проводилось с использованием теории сложности и прикладной математической статистики. При этом наихудшие результаты были показаны с использованием бинарного дерева поиска и линейного списка. В данной работе будет проведено независимое сравнение скорости работы алгоритма методом наименьших квадратов для следующих структур данных: красно-чёрного дерева, AVL-дерева, хэш-таблицы. Кроме того, будут получены формулы, позволяющие оценить скорость работы алгоритма для конкретного компьютера, на котором будет использоваться алгоритм.

Гипотеза: при использовании всех трёх структур данных формула зависимости времени работы алгоритма в миллисекундах от числа записей имеет вид , где – суммарное число записи в CSV-файлах,  – вычисляемый методом наименьших квадратов коэффициент, зависящий от используемой структуры данных и используемого компьютера. Так как при отсутствии записей алгоритм сразу же заканчивает работу, то использование дополнительного коэффициента  не требуется. Результаты эксперимента, проведённого средствами компьютерного моделирования, – это времена работы  и соответствующие им . Неизвестный коэффициент  необходимо оценить при помощи метода наименьших квадратов. При помощи  обозначено число экспериментов.

В результате, были получены следующие результаты:

·      

·      

·      

Во всех формулах последняя цифра значащая. То есть наименьшее время работы достигается при использовании красно-чёрного дерева, чуть большее время работы – при использовании AVL-дерева. Худшие результаты показаны при использовании хэш-таблицы. Полученные результаты согласованы с результатами, полученными в [2] методами прикладной математической статистики.

Можно заметить, что в приведённых формулах появилось дополнительное частное . Его появление вызвано тем обстоятельством, что эксперименты проводились на конкретном компьютере со своей производительностью. Числитель  – это коэффициент, характеризующий производительность компьютера, на котором были проведены эксперименты. Знаменатель  – это коэффициент, характеризующий производительность компьютера, на котором будет использоваться алгоритм. И , и  обратно пропорциональны временам работы алгоритма  и . Легко заметить, что частное  равно единице для компьютера, на котором были проведены эксперименты. В качестве примера теста производительности можно привести инкрементирование переменной от 1 до миллиарда. На компьютере, на котором производился эксперимент, с округлением до сотен миллисекунд оно заняло 700 миллисекунд. Если на компьютере, на котором необходимо узнать время работы исходного алгоритма оно займёт 600 миллисекунд, то , так как .

Следует отметить, что для оценки частного  нельзя использовать данные о тактовой частоте процессора. Как показано в [5] различные процессоры могут сильно различаться в производительности при одинаковой тактовой частоте. Следовательно, при оценке производительности компьютера нельзя опираться на этот параметр. В данной работе предложен наиболее простой тест сравнения производительности. Если требуется большая точность, то необходимо использовать один из тестов, рекомендованных в [5].

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

Литература:

1.     Гудков К.С. Математическая модель управления справочниками административно-территориального деления стран СНГ в корпоративных информационных системах // Прикладная информатика – 2010. – №5(29). – С.117-124.

2.     Гудков К.С. Выделение изменений в версиях открытых баз данных при построении автоматизированной системы импорта внешних справочников. // Основни проблеми на съвременната наука – 2010. Том 22 Съвременни технологии на информации Математика Здание и архитектура. – 2010. – С.16-19.

3.     Bayer R. Symmetric binary B-trees: Data Structure and maintenance algorithms. // Acta Informatica. – 1972. – P.290-306.

4.     Адельсон-Вельский Г.М., Ландис Е.М. Один алгоритм организации информации. // Доклады АН СССР. – 1962. – №2(146). – С.263-266.

5.     Мюллер С. Модернизация и ремонт ПК. Полный курс. – Москва: Вильямс, 2004. – 1344 с.