Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
УДК 510.25:004.422.63.05
В. И. ШИНКАРЕНКО1*, Г. В. ЗАБУЛА2*
1 Каф. «Компьютерные информационные технологии», Днепропетровский национальный университет железнодорожного транспорта имени академика В. Лазаряна, ул. Лазаряна, 2, Днепропетровск, Украина, 49010, тел. +38 (056) 373 15 35, эл. почта shinkrenko_vi@ua.fm, ОЯСГО 0000-0001-8738-7225 2*Каф. «Компьютерные информационные технологии», Днепропетровский национальный университет железнодорожного транспорта имени академика В. Лазаряна, ул. Лазаряна, 2, Днепропетровск, Украина, 49010, тел. +38 (056) 373 15 35, эл. почта zabulus12@gmail.com, ОЯСГО 0000-0002-8607-5729
КОНСТРУКТИВНАЯ МОДЕЛЬ АДАПТАЦИИ СТРУКТУР ДАННЫХ В ОПЕРАТИВНОЙ ПАМЯТИ: ЧАСТЬ I. КОНСТРУИРОВАНИЕ ТЕКСТОВ ПРОГРАММ
Цель. Стремительно растущие объемы обрабатываемых данных информационных систем существенно снижают временную эффективность алгоритмов их обработки. Одним из направлений решения данной проблемы является эффективное размещение данных в оперативной памяти (ОП). Необходимо разработать модели, позволяющие автоматизировано решать задачи рационального размещения данных в ОП. Методика. Для моделирования процессов адаптации структур данных (СД) в ОП применена методология математико-алгоритмического конструктивизма. Данный подход предусматривает разработку конструктивно-продукционных структур (КПС) с преобразованиями специализации, интерпретации, конкретизации и реализации. Разработка КПС предусматривает определение расширяемого носителя, сигнатуры отношений, операций и конструктивной аксиоматики. Наиболее сложной и существенной частью аксиоматики является множество формируемых правил подстановки, определяющих процесс вывода соответствующих конструкций. Результаты. Авторами разработана система КПС, состоящая из конструктора логической структуры данных, преобразователей логической структуры в программный интерфейс и имплементацию на языке программирования, конструкторов сценариев и процессов адаптации. Результатом реализации конструктора процесса адаптации являются генерации программного текста библиотеки классов, реализующей заданную логическую структуру данных с соответствующими операциями их обработки, и ее компиляция в бинарный код. Научная новизна. Впервые предложена конструктивная модель процессов разработки и адаптации структур данных к различным программно-аппаратным средам. При этом адаптируется размещение данных в ОП и алгоритмы их обработки. Применение конструктивизма в моделировании позволило в рамках единого подхода и применяемых средств связать модели данных и алгоритмы их обработки с критериями эффективности. Усовершенствована методика формирования системы КПС, механизмы, связи между взаимодополняющими друг друга КПС. Модификация конструктора и преобразователей позволяет коренным образом изменять и исследовать процесс адаптации. Практическая значимость. Разработанная модель позволяет автоматизировать процессы рационального размещения данных в ОП, что, в свою очередь, повышает временную эффективность программ со значительной долей обработки больших и очень больших объемов данных.
Ключевые слова: структура данных; конструктивно-продукционная структура; адаптация; конструктор; преобразователь
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЩИШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
Введение
Существует несколько подходов формализации структур данных (СД). В большинстве из них модели данных не связаны с алгоритмами обработки. Такая связь прослеживается в работах [1, 2, 5], в которых заложены основы алгебраического аппарата, где в описание управляющих структур алгоритмов органично «встроены» данные. В [1] реализован комплексный подход на основе трехосновной алгебраической системы. При описании композиционных схем алгоритмы согласуются с управляющими структурами и СД. Описание СД в виде схем данных позволяет их детализовать, обеспечивая спецификацию данных на входе и выходе производных Д-операторов. СД могут быть реконфигурированы в соответствии с изменением алгоритма решаемой задачи.
Однако, в этом и других подходах отсутствует связь между логическим представлением данных и представлением данных в оперативной памяти в процессе выполнения обработки данных, что не позволяет решать задачи оптимизации и адаптации размещения СД в оперативной памяти (ОП) на основании критериев временной эффективности.
Проблемы формализации СД на логическом, физическом и промежуточных уровнях органично решаются средствами КПС [12].
Цель
Стремительно растущие объемы обрабатываемых данных информационных систем существенно снижают временную эффективность алгоритмов их обработки. Одним из направлений решения данной проблемы является эффективное размещение данных в оперативной памяти (ОП).
Инструментальные средства оптимизации программ не предусматривают изменений в размещении и соответствующей обработке данных в ОП. Некоторые приемы их эффективного проектирования [8-11, 14] требуют высокого уровня профессиональной подготовки специалистов и являются либо универсальными (не учитывающими особенностей программно-аппаратной среды их использования), либо узко специализированными.
Необходимы модели, позволяющие автоматизировано решать задачи рационального раз-
мещения данных в ОП с учетом программно-аппаратной среды их эксплуатации. При этом должны выполняться лишь допустимые преобразования [6] структур данных.
Методика
Обобщенной конструктивно-продукционной структурой (ОКПС) называется тройка [12]:
Сс =< М, Е, Л> ,
где М - неоднородный носитель структуры; Е - сигнатура, состоящая из множеств операций связывания, подстановки и вывода, операций над атрибутами и отношения подстановки; Л -конструктивная аксиоматика. Аксиоматика Л полностью представлена в [12].
Назначение конструкционно-продукционной структуры (КПС) состоит в формировании множеств конструкций с помощью операций связывания, подстановки, вывода и др. операций, задаваемых правилами аксиоматики.
В данной работе под конструкциями понимаются формируемые конструкции логических структур данных (ЛСД), тексты программ в описательной и исполнительной форме, сценарии обработки данных, конструктивные процессы адаптации.
Для формирования конструкций необходимо выполнять ряд уточняющих преобразований ОКПС [4, 12]:
— специализация определяет предметную область: семантическую природу носителя, конечное множество операций и их семантику, атрибутику операций, порядок их выполнения и ограничения на правила подстановки;
— интерпретация заключается в связывании операций сигнатуры с алгоритмами выполнения некоторой алгоритмической структуры [13]. При интерпретации выполняется связывание информационной модели способа построения конструкций и модели исполнителя;
— конкретизация КПС заключается в расширении аксиоматики множеством правил продукций, задании конкретных множеств нетерминальных и терминальных символов с их атрибутами и, при необходимости, значений атрибутов;
— реализация КПС заключается в формировании конструкции из элементов носителя КПС путем выполнения алгоритмов, связанных
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету з^зничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЩИШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
с операциями сигнатуры. Реализация возможна только для предварительно специализированной, интерпретированной и конкретизированной КПС [12].
Согласно аксиоматике ОКПС формой „I с атрибутом „ называется набор терминалов и нетерминалов, объединяемых операциями связывания. Конструкцией называется форма, содержащая только терминалы [12].
Правила подстановки имеют вид уг : (, gr} е ¥ , где sr - отношения подстановки; gr - набор операций над атрибутами. Отношение подстановки - двуместное отношение с атрибутами w^ wjl] [12]. Для формы = w0 ©( w1 ^ w2 l2,■■■, „Л — щ1к ) и доступного отношения подстановки
„Л ^ такOгO, что „Л < К111 ( „Л является частью 11), результатом трехместной
операции подстановки „р ^ ( „Л, 1д, ) будет ф°рма 1* = „0 ©( „ l1, „2 l2,■■■, — „Д )
[12], где © - любая операция связывания из Е . Операция частичного вывода
тахп,д,ш1 * = (¥, тахп,д,т1)) заключается в:
— выборе одного из доступных правил подстановки -уг: (sr, gr} е ¥ , с отношениями подстановки sr и выполнении на его основе операций
подстановки, где й - вектор доступности правил. Доступность правила - у г определяется значением вектора доступности: если йг = 1 правило доступно, если йг = 0 - правило недоступно;
— выполнении операций над атрибутами gr. Порядок применения операции над атрибутами в процессе выполнения операции частичного вывода задается атрибутом т j, где т ^ е I,
I = {т0, т1} , I с МКАС , т0 - операция над атрибутом выполняется перед операцией подстановки, т1 - после операции подстановки.
Операция полного вывода (или просто вывода) заключается в последовательном выполнении операции частичного вывода, начиная с начального нетерминала и заканчивая конструкцией, удовлетворяющей условию окончания вывода.
Условием окончания вывода является отсутствие нетерминалов в форме.
Результаты
В первой части работы представлены вспомогательные конструкторы, позволяющие конструировать множество различных вариантов размещения данных в ОП и порождающие соответствующие им программы обработки данных, таких как добавление, поиск и т.д.
Конструктор логической структуры данных. Формальной структурой для проектирования СД на логическом уровне назовем КПС C •
LD ■
C =< M, Е, Л > 5 ^ Cld =< Mld , eld , Лld > ,(2)
где S ^ - операция специализации формальных структур (операция выполняется внешним исполнителем),
ELD =< SLD , ® LD , ФLD , > , SLD = {'> ©, ,
Л LD =Л1 U Л2 . Л LD =Л1 U Л2 .
Л, = {Mld ^ (T U N),T = {^ x.},N = {,, аг}},
где {x.} - множество простейших элементов данных с атрибутами: типом type, определяющим множество допустимых значений Jx., множеством допустимых операций Op = {о.}, семантикой ф.; {а.} - множеством нетерминалов.
Множество допустимых операций Op включает операции поиска, удаления, добавления и операции, построенные на их основе. Например, поиск по ключу, удаление нескольких элементов.
Частичная аксиоматика Л2 включает следующие аксиомы и инструктивные дополнения.
Операция связывания терминалов xi • х ■ обладает свойством симметричности:
V ^ xi • st х1 & si Ф SJ ^ xi • xi = xi • X .
Операция предназначена для связывания неоднородных элементов.
Операция связывания терминалов xi О x-
обладает свойством антисимметричности:
Наука та прогрес транспорту. Вкник Дншропетровського нащонального ушверситету з&шзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
vst X О ^ х}. & st _ s}. ^ x О x}. Ф x} О x .
Операция предназначена для связывания однородных элементов в примитивную конструкцию.
Значение трехместной операция условного A4 I выбора -^(с, a,b) является a , если с = true и b в противном случае.
Операции связывания имеют идентифицирующий атрибут pi еР = {pj,р2,...,pn}, где n -
связывания неоднородных элементов
, l- , е F*;
H.'j
связывания однородных
n l. „
l. , e F *;
4 Ч- I-
h.'j
— выполнения
операции
элементов
подстановки
, f, f e F, lh, l, e S;
выполнения операции частичного и пол-
общее количество групп операции связывания ного вывода A6 |f^ , A7 |f\ f, f} e F ;
— выполнения операции условного выбора
в конкретизированной грамматике. Атрибут р_ применяется для идентификации операции связывания в различных частях ЛСД.
Для интерпретации СЬВ построим модель исполнителя в виде базовой алгоритмической рации над атрибутами у .
Л
г •
Ic,a,b '
множество алгоритмов, реализующих опе-
структуры (БАС) [13]:
Интерпретация формальной структуры проектирования СД на логическом уровне:
< cld =< MLD,
^LD' ЛLD >
CA,LD =< MA,LD , ^ A,LD ,AA,LD >>
СА,ЬВ =< МА,ЬВ , УА,ЬВ , Е А,ЬВ ,ЛА, ЬВ > ,
где МА ЬВ - неоднородный носитель, УА ЬВ -
множество образующих алгоритмов базовых (элементарных) для некоторого исполнителя, ЕА ЬВ - сигнатура и ЛАЬВ - аксиоматика. Носитель МЛ ЬВ з Т и N и П(СА ЬВ) и Ж, где где I ^ - операция интерпретации; Щ(СА ЬВ) все сформированные алгоритмами
алгоритмической структуры конструкции; Ж -множество допустимых значений атрибутов.
I ^ I CLD =< MI ,LD , ^I ,LD ,ЛI ,LD > :
лi, ld =^ld и л3; a3 = {(j •);
Множество
базовых
V4
,{Ao л■ aj
,{A1 A., —
40 \:At
2 Z, , Z 2, At
.0 |lt •lJ ,0 lt O;j ,
A3\ , A4\ } и сконструиро-
lt , lj lt , lj
fj
fj
ванных {A5 f , f, , fr ^6 If <Q.(CALD ) алгоритмов:
4 lfj 7 \ft
} u V
W
(40 ;;j J о); (A5if!wt(
(A7 |f^ J |Ю; J-н); V О. еФ : 3
(ДД JV"), A.X eQ(CA,LD)}. Рассмотрим одну из конкретизации ICLD на
выполнения операции композиции алго- примере логической структуры BMP файла [7]
■ 0 А 'А; , . У
ритмов А1 \А. ^ (А \х - алгоритм над данными
из входного множества X со значениями из множества У, А0 - образующий алгоритм), А, А; е 0(СА ш), А • А; - последовательное выполнение алгоритма А}- после алгоритма А ;
I CLD =< MI ,LD , ,LD ,AI ,LD >
K ^ CL =< ML , Er , AL
K LBMP LBMP LBMP LBMP
где K ^ - операция конкретизации;
M
условного
выполнения алгоритма А2 \г1' г2 А., который заключается в выполнении алгоритма А. при условии Z1 з Z2;
»?ld U^ld ^ n;
= ,LD U ^BMP ;
l - ? - ? ^ ^ • i-*"/?
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЩИШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
л 1вир = А1,ш ^ л4 ^ л5- л4 =< тш = {а, Ь, с,
е, f, o, q, z, x, V}, NLD = {а,р,5,п, Ф, 6} > .
Частичная аксиоматика л5 включает в себя следующие правила подстановки.
S7 =< фП d7
z • x • v > *
tУPe.ф Рз tУPe.ф Рз tУPe.ф '
т^т g^ :=< := ггае > .
Значения атрибутов семантики приведены в табл. 1. Идентификаторы, указанные в табл. 1,
Отношение s определяет общую структуру используются для именования полей СД в пре-
файла
=<фа 4 ^фРр1 • ф5> ;
т^т gl :=< := ^ > .
Сокращенный информационный заголовок ВМР-файла представлен s2. Заголовок состоит из высоты, ширины, количества бит на пиксель
type,<^аР2 ' tУPe,ф Ь Р2 ' tУPe,ф С > '
S2 =< фß d2
t0jt g 2 •=< d2 • = true > .
Следующее отношение определяет данные изображения в виде последовательности цветов в RGB-модели.
S3 =<ф,8 d3 ^ урефe P5 ° фП> ;
t0jt g3 :=< d3 := zJa > 256,true,false) >.
Далее представляется изображение в виде модели Index Color
s4 =<Ф28 d4^ фф P3 • ф6>;
ToJT g4 :=< d4 := +(zJa < 256,true,false) > .
Отношение s5 определяет структуру палитры. Палитра представлена в виде последовательности цветов в RGB-модели
S5 =< фФ d5
type,ф f Р6 ° фП> *
t0jt &6 :=< d6:= true > .
Данные изображения в виде индексов, указывающих на элементы палитры, определены в следующем отношении
s6 =< ф0 d ^ р P О q > ;
6 ф d6 type.^ р7 type,ci J
t0jt &6 :=< d6:= true > .
Отношение s7 определяет цвет в модели RGB
образователях, приведенных далее.
Таблица 1 Table 1
Атрибут Значение Идентификатор
фиа BMP файл без файлового заголовка BMPFile
Ф^Р Информационный заголовок BMP InfoHeader
ф,и8 Данные изображения в модели RGB ImageDataRGB
фиа Количество битов на пиксель BitsPerPixel
фиь Ширина изображения Width
фис Высота изображения Height
ф^ Массив палитры цвета RGB Palette
фие Цвета RGB RGBMatrix
ф2 J5 Данные изображения в модели индексированного цвета ImageDataIndex
фи8 Данные изображения ImageData
фиР Матрица индексов цвета пикселей IndexMatrix
фид Индекс цвета пикселей Index
фип Цвет RGB RGB
фJz Компонента R R
t_ < Компонента B B
В результате реализации могут быть сформированы конструкции ЛСД, соответствующие BMP файлу, с моделью цвета: - Index Color
(type^ a P2 type^b P2 type^ c) Pi (( type^ f P6 ^
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЩИШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
V)) Р4>ре,ф p р7 О q);
(1уре,фZ рз* type^Х рз* typ^^ Р4
- True Color
( (уре,фa р2 * £урв,фЬ р2 * £урв,фc) р
( e О ( z *
V tvpe& V tvveA р^
Iуре,фе Р5 ^ ( ^уре,фz рз ¿уре,ф Х ръ £уре,ф
Преобразователь логической структуры данных в программный интерфейс на языке программирования. После проектирования на абстрактном и логическом уровнях следует этап проектирования СД на уровне представления (языке программирования) [7, 15].
Специализированной формальной структурой для преобразования логической СД в представление на языке программирования, Сры будет:
С =< и, Е, л> ^ Сри =
ф V)).
—< M g pli , E s pLj, A s. pu >,
где
-1S, PLI —< "PLI, ® PLI, ФPLI, > :
Spli — {*> 0}uS1;
Ф PLI — !
Л g, PLI —Л6
CA,LD —< MA,LD , EA,LD ,Л A,LD > :
< CS, PLI —< MS, PLI, ES, PLI,ЛS, PLI >,
CA,LD —< MA,LD , EA,LD ,ЛA,LD >>
I ^ ICPLI —< MI ,PLI, EI, PLI,ЛI, PLI >
ГДе Л!,PLI — ЛPLI ^ЛА,LD ;
Конкретизируем структуру следующими правилами подстановки
ICPLI —< MI ,PLI, EI ,PLI, ЛI ,PLI >
где
K ^ Cpli —< MPLI , EPLI ,ЛPLI > ,
M pli ^ ?pli ^ npli ;
E —E •
PLI ^I ,PLI '
ЛPLI — Л1,PLI ^Л8 ^Л9-
л 6 = [МрЬ1 3 (Т, и N.
,PL1 >'
Т8ри = {С#}, ^,ри = {!а!},
где {С#} - ключевые слова, знаки операций и разделители языка программирования С#, Н1 - включает единственную операцию конкатенации лексем языка программирования, знак операции везде опускается, !аг.! - нетерминалы правил подстановки.
Частичная аксиоматика л7 определяет состав правил подстановки: у. : (si} е ^, si =<1, si2 >, где 1 - правило подстановки логической структуры данных, si 2 - соответствующее правило подстановки для формирования текста программы.
Интерпретацию Сри1 выполним, используя ранее определенную алгоритмическую структуру
Л8 =< TPLI = TLD u TSpLI u { IBMPFile, Ilnfo-
Header, IImageData, BitsPerPixel, Width, Height, IMatrixRGB, IRGB, IImageDataIndex, IPalette, IIndexMatrix, IMatrixIndex, R, G, B} , NPLI =
Nld u { ! BMPFILEDECL!,
! INFOHEADERDECL!, ! IMAGEDATADECL!, ! INFOHEADERTYPE!, ! IMAGEDATATYPE!, ! INFOHEADEREDECL!, ! IMAGEDATATYPE!, !IMAGEDATADECL!, !RGBDECL!, !RGBTYPE! } >.
Частичная аксиоматика Л9 включает следующие правила подстановки.
Интерфейс файла BMP, состоит из информационного заголовка и данных. Оба поля имеют соответствующий тип, декларация которого представлено следующими правилами.
—<Фаа p V0 ^фЛ* Ф85> •
S1,2 —<
¡BMPFILEDECL! ->
!INFOHEADERDECL! !IMAGEDATADECL! interface IBMPFile {
Наука та прогрес транспорту. Вкник Дншропетровського нащонального ушверситету зашзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
.ИтОНЕАБЕШУРЕ! ЫоНеааег (ве^й;} ИМАОЕВАТАТУРЕ! 1шавеБа1а (Бе^е!;}} >,
Интерфейс информационного заголовка состоит из трех полей.
Su =<ффФ ^ v^f оп> ;
S2,1 =< фрР ^ t„$amaaPi
ЬPi * tcфстс C > ;
IINFOHEADERTYPEI -> IlnfoHeader
!INFOHEADEREDECL ->
interface IlnfoHeader {
int BitsPerPixel {get;set;}
int Width {get;set;}
int Height {get;set;} } >,
Структура данных изображения в виде модели True Color. Используется встроенный в .NET Framework интерфейс IList.
S3 =< S3,1, S3,2 > ;
S3,1 =^,8S
e О п>;
S3,2 =<
!PALETTETYPE! -> IPalette !PALETTEDECL! -> !RGBDECL!
interface IPalette : IList<!RGBTYPE!> { } > .
Интерфейс матрицы индексированных цветов.
S7,1 =<Фе6 ^ ° ^ > ;
S7,2 =<
!INDEXMATRIXTYPE! -> Matrixindex !INDEXTYPE! -> byte !INDEXMATRIXDECL! ->
interface IMatrixIndex : IList< IList< !INDEXTYPE! > > {} >,
S8 =< S8,1, S8,2 > ;
!IMAGEDATATYPE! -> IMatixRGB !IMAGEDATADECL! -> !RGBDECL!
interface IMatrixRGB : IList< IList< !RGBTYPE!
> > { } > .
Структура данных изображения в виде модели Index Color состоит из полей палитры и матрицы индексов
s4,1 =<ф2,80 ^ Фффр2 • Фе0> ;
S8,1 =< фпП
* ФxVxX * ФvVvV > ;
S8,2 =<
!IMAGEDATATYPE! -> IlmageDataIndex !IMAGEDATADECL! -> !INDEXMATRIXDECL! !PALETTEDECL! interface IImageDataIndex { PALETTETYPE! Palette {get;set;}
!INDEXMATRIXTYPE! IndexMatrix {get;set;} } >.
Интерфейс палитры на основе IList интерфейсы
!RGBTYPE! -> IRGB !RGBDECL! -> inteface IRGB { int R{get;set;} int G{get;set;} int B{get;set;} } > .
В результате реализации преобразователя формируется интерфейс классов обработки структуры данных на языке программирования C#. Одна из таких реализаций приведена ниже. interface IInfoHeader { int BitsPerPixel { get; set; } int Width { get; set; } int Height { get; set; } } interface IRGB { int R { get; set; } int G { get; set; } int B { get; set; } }
interface IMatrixRGB : IList<IList<IRGB>> { } interface IBMPFile { IInfoHeader InfoHeader { get; set; } IMatrixRGB ImageData {get;set;} }
S6,2 =<
S2.2 =<
S 4,2 =<
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
Преобразователь абстрактной логической структуры данных в представление импле-ментации на языке программирования. Специализированной формальной структурой для преобразования ЛСД в представление языка программирования назовем КПС Сри :
С =< и, ^ л> ,^ С,,ри =< и,,ри, Е,,ри, л,,ри >,
где , ^ -операция специализации формальных структур (операция выполняется внешним исполнителем),
,ри =<2ри , ® ри, фри > , ^рь ={•, О),
л,, ри =л10 ^л11 ^л12.
лю = {М ри з (Т
, ри
и N.
Т,ри = {С# }, NSрPL = {!а.!},}.
Частичная аксиоматика л11 содержит следующие конструктивные дополнения.
Правила подстановки преобразователя имеют вид: уг : , gr) sr =< slл, srЛ > .Где
- правило вывода логической структуры данных, sr2 - соответствующее правило вывода текста программы, gr - атрибуты преобразования правил вывода ЛСД.
Частичная аксиоматика л12 содержит следующие конструктивные дополнения.
Конструкция преобразователя имеет вид пары: < ^ , Я >, где ^ - реализация преобразователя - текст программы имплементации операций обработки СД; Я =<г1,г2,...,^ > г. -количество допустимых программных шаблонов для . -ой составляющей СД; к -количество примитивных конструкций в ЛСД.
Нетерминалы содержат атрибут
2 =< q1,q2,...,qk > , где qi - номер конкретного программного шаблона для генерации текста программ, 0 < qi < г .
Интерпретацию Сри выполним, используя ранее определенную алгоритмическую структУРУ CA,LD =< UA,LD , ЕA,LD , лA,LD > .
Преобразователь логической структуры данных представляет собой модель программного интерфейса. Он является интерпретацией формальной структуры Сри алгоритмической
структурой СА,ри :
< CS,PL =< MS,PL , ES,PL ,ЛS,PL >,
CA,LD =< MA,LD , EA,LD ,ЛA,LD >>
1 ^ 1СЯС =< и1 , Е1,,С, л1 >
Программным шаблоном будем называть код на языке С#, который реализует примитивную конструкцию тем или иным способом (например, используя физическое представление данных в виде массива, списка, и т.п.).
Конкретизируем структуру следующими правилами подстановки
1Сри =< и1,ри , Е1,ри , л1,ри >
где
^ ^ Cpl =< Mpl , E PL , A PL > ,
MPL ^ NPL u TPL ;
E =E *
¿'PL ~ ^I ,PL '
Л PLZ = Л1, PL иЛ13 ^Л14.
Л13 = { TPL = TPLI u { BMPFile, InfoHeader, ImageData, MatrixRGB, RGB, ImageDataIndex, Palette, IndexMatrix, MatrixIndex },
N = N
PL PLI'
Я =< 1,2,1,1,0,1,1,2 > }.
Частичная аксиоматика л14 включается в себя следующие правила подстановки.
s 1 =< Q ф а ^ Q ф ßp ' - ф 5 >; u Q .фа 6,фЛр0 6,ф5
!BMPFILEDECL! ->
!INFOHEADERDECL! !IMAGEDATADECL! class BMPFile {
!INFOHEADERTYPE! InfoHeader {get;set;} !IMAGEDATATYPE! ImageData {get;set;} } BMPFile root = new BMPFile(); >,
S1,2 =<
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЩИШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
g1 =< d1 = q1 = 0,true,false) > ;
S2 =< S2,1, S2,2 > ;
s4,i =< qAö ^ О qфП>;
Фе^^ Q Ж
s2,1 =< Q,, ß ^ t^„m„ a
'афата" Pi ' ^фЬтЬЬ Pi * tcфстсС > ;
!INFOHEADERTYPE! -> InfoHeader
!INFOHEADEREDECL! ->
class InfoHeader {
int BitsPerPixel {get;set;}
int Width {get;set;}
int Height {get;set;}} >,
g2 =< d2 = ^(q2 = 0,true,false) >
!IMAGEDATA TYPE! -> MatixRGB !IMAGEDATADECL! -> !RGBDECL! class MatrixRGB : List<List<!RGBTYPE!>> { } >,
g4 =< d4 = ^(q3 = 0,true,false) >;
S5 =< S5,1, S5,2 > ;
S5,1 =< Q,2,85 ^ Q^P2 * О?,Ф0 6 > ;
S3 =< S2,1, S3,2 > ;
!INFOHEADEREDECL!-> class InfoHeader {
LinkedList<int> internal = new LinkedList <int>();
LinkedListNode<int> GetNthNode(int index) { var first = internal.First; int i = 0;
while(i < index) { first = first.Next;
++I; }
return first; }
public InfoHeader() { internal.AddLast(o); // BPP internal.AddLast (0); // W
internal.AddLast(O); // H
}
int BitsPerPixel {
get { return internal.Skip(0).First(); }
set { this.GetNthNode(0).Value = value; } }
int Width
get { return internal.Skip(1).First(); }
set { this.GetNthNode(1).Value = value; } }
int Height {
get { return internal.Skip(2).First(); }
set { this.GetNthNode(2).Value = value; } } } >,
g3 =< d3 = +(q2 = 1,true,false) > ;
S4 =< S4,1, S4,2 > ;
!IMAGEDATA TYPE! -> ImageDataIndex !IMAGEDATADECL! -> !INDEXMATRIXDECL! !PALETTEDECL! class ImageDataIndex { !PALETTETYPE! Palette {get;set;}
!INDEXMATRIXTYPE! IndexMatrix {get;set;} }
>,
g5 =< d5 = +(q4 = 0,true,false) >;
S6,1 =< Q,Ффф^ v,Ф^ О QQ,ФпП> ;
S6,2 =<
!PALETTETYPE! -> Palette !PALETTEDECL! -> !RGBDECL!
class Palette : Vector<!RGBTYPE!> { } >, g6 =< de = -fe = 0,true,false) >;
s7,i =< ^,ф66 ^ v„фpP о >;
'e PYP 9Y9
S7,2 =<
!INDEXMATRIXTYPE! -> MatrixIndex !INDEXTYPE! -> int !INDEXMATRIXDECL! ->
class MatrixIndex : Matrix<! INDEXTYPE !> { }
>,
s4,2 =<
S2,2 =<
S5,2 =<
s3,2 =<
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
g7 =< d7 = +(q7 = 0,true,false) > ; LinkedList<int> internalList = new
LinkedList<int>();
S8 =< S8,1, S8,2 > ; LinkedListNode<int> GetNthNode(int index) {
var first = internalList.First;
s8,1 =< Q,фп П ^ у2ф2 z * ухфх X * у„ф„ V > ; int i = 0;
while (i < index) {
S8,2 =< first = first.Next;
!RGBTYPE! -> RGB ++i;
!RGBDECL! -> }
class RGB { return first;
int R{get;set;} }
int G{get;set;} public InfoHeader() {
int B{get;set;} } internalList.AddLast(0); // BPP
g8 =< d8 = = 0,true,false) >; internalList.AddLast(0); // W
internalList.AddLast(0); // H }
S9 =< S8,1' S9,2 > ; int BitsPerPixel {
get { return internalList.Skip(0).First(); }
S9,2 =< set { this.GetNthNode(0).Value = value; } }
!LISTIMPL_DECLARE_INT_LIST! -> List<int> int Width {
internalList = new List<int>(); get { return internalList.Skip(1).First(); }
!LISTIMPL FIELD BEG! -> public int set { this.GetNthNode(1).Value = value; } }
!LISTIMPL_FIELD_MI1! -> { }
get{return internalList [ int Height {
!LISTIMPL_FIELD_MI2! -> ];} get { return internalList.Skip(2).First(); }
set { internalList [ set { this.GetNthNode(2).Value = value; } } }
!LISTIMPL FIELD END! -> ] = value; }} class RGB {
IRGBDECLI -> List<int> internalList = new List<int>();
class RGB public RGB() {
{ internalList.Capacity = 3;
!LISTIMPL DECLARE INT LIST! }
public RGB() { } int R {
!LISTIMPL FIELD BEG! R get { return internalList[0]; }
!LISTIMPL FIELD MI1! 0 set { internalList[0] = value; } }
!LISTIMPL FIELD MI2! 0 int G {
!LISTIMPL FIELD END! get { return internalList[1]; }
!LISTIMPL_FIELD_BEG! G set { internalList[1] = value; } }
!LISTIMPL FIELD MI1! 1 int B {
!LISTIMPL FIELD MI2! 1 get { return internalList[1]; }
!LISTIMPL FIELD END! set { internalList[1] = value; } } }
!LISTIMPL_FIELD_BEG! B class MatrixRGB : List<List<RGB>> { }
!LISTIMPL FIELD MI1! 2 class BMPFile {
!LISTIMPL FIELD MI2! 2 InfoHeader InfoHeader { get; set; }
!LISTIMPL_FIELD_END! MatrixRGB ImageData {get;set;} }
g9 =< d9 = +(q8 = 1,true,false) > .
Выводы
Пусть внешним исполнителем задан вектор Представленные конструктор логической
-
Q =< 1,2,1,1,0,1,1,2 >, тогда при реализации бу- структуры данных, преобразователи логиче-
дет сформирована следующая имплементация ской структуры в программный интерфейс
программного кода на языке C#: и имплементация на языке программирования —
class InfoHeader { являются неотъемлемой частью системы КПС.
Основная часть системы в виде конструкторов
doi 10.15802/stp2016/61003 © В. И. Шинкаренко, Г. В. Забула, 2016
118
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
сценариев и процессов адаптации представлена во второй части статьи.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Акуловский, В. Г. Алгебра для описания данных в композиционных схемах алгоритмов /
B. Г. Акуловский // Проблеми програмування. - 2012 - № 2-3. - С. 234-240.
2. Акуловский, В. Г. Основы алгебры алгоритмов, базирующейся на данных / В. Г. Акуловский // Проблеми програмування. - 2010. -№ 2-3. - С. 89-96.
3. Алгоритмы: построение и анализ / Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. - Санкт-Петербург : ООО «И. Д. Вильямс», 2011. -1296 с.
4. Босов, А. А. Структурная сложность систем / А. А. Босов, В. М. Ильман, Н. В. Халипова // Вюн. Дшпропетр. нац. ун-ту залiзн. трансп iм. акад. В. Лазаряна. - Дншропетровськ, 2012. -Вип. 40. - С. 173-179.
5. Дорошенко, А. Е. Алгебра алгоритмов с данными и прогнозирование вычислительного процесса / А. Е. Дорошенко, В. Г. Акуловский // Проблеми програмування. - 2011. - № 3. -
C. 3-10.
6. Дрожжин, В. В. Преобразование структур данных в поле структур данных / В. В. Дрожжин,
A. М. Володин // Изв. Пензен. гос. пед. ун-та им. В. Г. Белинского. - Пенза, 2011. - № 26. -С. 380-385.
7. Шинкаренко, В. И. Конструкционно-продукционная модель структур данных на логическом уровне / В. И. Шинкаренко,
B. М. Ильман, Г. В. Забула // Проблеми програмування. - 2014. - № 2-3. - С. 10-16.
В. I. ШИНКАРЕНКО1*, Г. В. ЗАБУЛА2*
8. Array Based HV/VH Tree: an Effective Data Structure for Layout Representation / J. Ren, W. Pan, Y. Zheng [et al.] // J. of Zhejiang University-SCIENCE C (Computers & Electronics). -2012. - Vol. 13. - Iss. 3. - P. 232-237. doi: 10.1631/jzus.c1100193.
9. Attali, D. Efficient Data Structure for Representing and Simplifying Simplicial Complexes in High Dimensions / D. Attali, A. Lieutier, D. Salinas // Intern. J. of Computational Geometry & Applications.
- 2012. - Vol. 22. - Iss. 4. - P. 279-303. doi: 10.1142/S0218195912600060.
10. Bentley, J. L. Writing Efficient Programs / J. L. Bentley. - New Jersey : Prentice-Hall in Eng-lewood Cliffs, 1982. - 170 p.
11. Drepper, U. What Every Programmer Should Know About Memory / U. Drepper. - Raleigh : RedHat, Inc., 2007. - 114 p.
12. Shynkarenko, V. I. Constructive-Synthesizing Structures and Their Grammatical Interpretations. I. Generalized Formal Constructive-Synthesizing Structure / V. I. Shynkarenko, V. M. Ilman // Cybernetics and Systems Analysis. - 2014. - Vol. 50.
- Iss. 5. - P. 655-662. doi: 10.1007/s10559-014-9655-z.
13. Shynkarenko, V. I. Structural Models of Algorithms in Problems of Applied Programming. I. Formal Algorithmic Structures / V. I. Shynkarenko, V. M. Ilman, V. V. Skalozub // Cybernetics and Systems Analysis. - 2009. - Vol. 45. -Iss. 3. - P. 329-339. doi: 10.1007/s10559-009-9118-0.
14. Weiss, M. A. Data Structures and Algorithm Analysis in C++ / M. A. Weiss. - New Jersey : Pearson Education Inc., Addison-Wesley, 2014. - 656 p.
15. Ziegler, C. A. Programming System methodologies / C. A. Ziegler. - New Jersey : Prentice-Hall, Englewood Cliffs, 1983. - 260 p.
1 Каф. «Компьютерш шформацшш технологи», Дшпропетровський нащональный ушверситет з^зничного транспорту iменi академжа В. Лазаряна, вул. Лазаряна, 2, Дншропетровськ, Украша, 49010, тел. +38 (056) 373 15 35, ел. пошта shinkrenko_vi@ua.fm, ОЯСГО 0000-0001-8738-7225
2*Каф. «Компьютерш шформацшш технологи», Дншропетровський нащональный уншерситет залiзничного транспорту iменi академжа В. Лазаряна, вул. Лазаряна, 2, Дншропетровськ, Украша, 49010, тел. +38 (056) 373 15 35, ел. пошта zabulus12@gmail.com, ОЯСГО 0000-0002-8607-5729
КОНСТРУКТИВНА МОДЕЛЬ АДАПТАЦП СТРУКТУР ДАНИХ В ОПЕРАТИВН1Й ПАМ'ЯТ1: ЧАСТИНА I. КОНСТРУЮВАННЯ ТЕКСТ1В ПРОГРАМ
Мета. CrpÎMKO зростаючi обсяги оброблюваних даних шформацшних систем ютотно знижують часову ефектившсть алгорштшв ïx обробки. Одним i3 напрямшв виршення дано1 проблеми е ефективне розмщення даних в оперативнш пам'яп (ОП). Необхвдно розробити модел^ що дозволяють автоматизовано виршувати
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету залiзничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
завдання рацiонального розмщення даних в ОП. Методика. Для моделювання процеав адаптаци структур даних (СД) в ОП застосована методология математико-алгоршмчного конструкгив1зму. Даний гадай передбачае розробку конструктивно-продукцiйних структур (КПС) 1з перетвореннями спецiалiзацil, 1нтерпретаци, конкретизацп та реал1заци. Розробка КПС передбачае визначення розширюваного носiя, сигнатури вщносин та операцiй i конструктивно! аксюматики. Найбiльш складною та ютотною частиною аксiоматики е безлiч формованих правил постановки, що визначають процес виводу вщповщних конструкцш. Результата. Авторами розроблено систему КПС, що складаеться з конструктора логично! структури даних, перетворювачiв логично! структури в програмний iнгерфейс й 1мплементац1ю на мовi програмування, конструктор1в сценарив та процес1в адаптаци. Результатом реалiзацil конструктора процесу адаптаци е генерацп програмного тексту бiблiотеки клас1в, що реалiзуе задану лопчну структуру даних iз вщповщними операц1ями 1х обробки, та li комп1ляц1я в бiнарний код. Наукова новизна. Вперше запропонована конструктивна модель процеав розробки та адаптацЦ структур даних до рiзних програмно-апаратних середовищ. При цьому адаптуеться розмщення даних в ОП та алгоритми !х обробки. Застосування конструктивiзму в моделюванга дозволило в рамках единого гадходу та застосовуваних засоб1в зв'язати моделi даних i алгоритми 1х обробки з критер1ями ефективностг Удосконалено методику формування системи КПС, механiзми, зв'язки м1ж взаемодоповнюючими один одного КПС. Модифшащя конструктора та перетворювачiв дозволяе докоршно змшювати i дослвджувати процес адаптаци. Практична значимкть. Розроблена модель дозволяе автоматизувати процеси рац1онального розмщення даних в ОП, що, у свою чергу, гадвищуе часову ефектившсть програм зi значною часткою обробки великих i дуже великих обсяпв даних.
Ключовi слова: структура даних; конструктивно-продукцшна структура; адаптац1я; конструктор; пере-творювач
V. I. SHYNKARENKO1*, H. V. ZABULA2*
1 Dep. «Computer and Information Technologies», Dnipropetrovsk National University of Railway Transport named after Academician V. Lazaryan, Lazaryana St., 2, Dnipropetrovsk, Ukraine, 49010, tel. +38 (056) 373 15 35, e-mail shinkrenko_vi@ua.fm, ORCID 0000-0001-8738-7225
2*Dep. «Computer and Information Technologies», Dnipropetrovsk National University of Railway Transport named after Academician V. Lazaryan, Lazaryana St., 2, Dnipropetrovsk, Ukraine, 49010, tel. +38 (056) 373 15 35, e-mail zabulus12@gmail.com, ORCID 0000-0002-8607-5729
CONSTRUCTIVE MODEL OF DATA STRUCTURES ADAPTATION IN RAM: PART I. PROGRAM TEXT CONSTRUCTING
Purpose. Rapidly growing volumes of information systems data being manipulated significantly reduce the temporary algorithms effeciency of their processing . Effective data layout in RAM is one of the directions of solving this problem. It is necessary to develop the model to solve problems of efficient automated data layout in RAM. Methodology. For processes simulation of data structures (DS) adaptation in RAM, the methodology of mathematical and algorithmic constructivism was applied. This approach involves the development of constructive and productive structures (CPS) with transformations of specialization, interpretation, specification and implementation. CPS development provides definition of expandable vector, signature of relations, transactions and constructive axioms. The most complex and essential part of the set of axioms is generated substitution rules that determine the output process of respective structures. Findings. CPS system was developed by the authors, consisting of the logical structure constructor of data, converters of logical structure in to a software interface and implementation in a programming language, constructors of scenarios and adaptation processes. The result of the adaptation process constructor is software text generations of the class library that implements the specified logical data structure with appropriate processing operations and its compilation in binary code. Originality. Structural model of development processes and data structures adaptation to different software and hardware environments was first proposed. It adapts date layout in the RAM and data processing algorithms. Application of constructivism in simulation allowed within a single approach and applied tools linking the data models and algorithms of their processing with performance criteria. Formation methodology of CPS system, mechanisms, and links between complementary CPS were improved. Modification of the constructor and converters allows changing and exploring the process of adaptation. Practical value. The developed model allows automating the data layout in RAM, which in turn increases the time efficiency of programs with significant processing of large and very large volumes of data.
Keywords: data structure; constructive and productive structure; adaptation; constructor; converter
Наука та прогрес транспорту. Вкник Дншропетровського нацюнального ушверситету зал1зничного транспорту, 2016, № 1 (61)
ШФОРМАЦШНО-КОМУШКАЦШШ ТЕХНОЛОГИ ТА МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ
REFERENCES
1. Akulovskiy V.G. Algebra dlya opisaniya dannykh v kompozitsionnykh skhemakh algoritmov [Algebra for describing the data in the compositional schemes of algorithms]. Problemy prohramuvannia - Problems in Programming, 2012, no. 2-3, pp. 234-240.
2. Akulovskiy V.G. Osnovy algebry algoritmov, baziruyushcheysya na dannykh [Basic algebra algorithms based on data]. Problemy prohramuvannia - Problems in Programming, 2010, no. 2-3, pp. 89-96.
3. Kormen T., Leyzerson Ch., Rivest R., Shtayn K. Algoritmy: postroeniye i analiz [Algorithms: construction and analysis]. Saint-Petersburg, OOO «I. D. Vilyams» Publ., 2011. 1296 p.
4. Bosov A.A., Ilman V.M., Khalipova N.V. Strukturnaya slozhnost sistem [Structural complexity of systems]. Visnyk Dnipropetrovskoho natsionalnoho universytetu zaliznychnoho transportu imeni akademika V. Lazariana [Bulletin of Dnipropetrovsk National University of Railway Transport named after Academician V. Lazaryan], 2012, issue 40, pp. 173-179.
5. Doroshenko A.Ye., Akulovskiy V.G. Algebra algoritmov s dannymi i prognozirovaniye vychislitelnogo prot-sessa [Algebra of algorithms with data and prediction computational process]. Problemy prohramuvannia -Problems in Programming, 2011, no. 3, pp. 3-10.
6. Drozhzhin V.V., Volodin A.M. Preobrazovaniye struktur dannykh v pole struktur dannykh [Convert data structures in the field of data structures]. Izvestiya penzenskogo gosudarstvennogo pedagogicheskogo Univer-siteta im. V.G. Belinskogo [News of Penza State Pedagogical University named after V. G. Belinsky], 2011, no. 26, pp. 380-385.
7. Shinkarenko V.I., Ilman V.M., Zabula G.V. Konstruktsionno-produktsionnaya model struktur dannykh na logicheskom urovne [Construction-production model of the data structures at the logical level]. Problemy prohramuvannia - Problems in Programming, 2014, no. 2-3, pp. 10-16.
8. Ren J., Pan W., Zheng Y., Shi Z., Yan X. Array Based HV/VH Tree: an Effective Da-ta Structure for Layout Representation. Journal of Zhejiang University-SCIENCE C (Computers & Electronics), 2012, vol. 13, issue 3, pp. 232-237. doi: 10.1631/jzus.c1100193.
9. Attali D., Lieutier A., Salinas D. Efficient Data Structure for Repre-senting and Simplifying Simplicial Complexes in High Dimensions. Intern. Journal of Computational Geometry & Applications, 2012, vol. 22, issue 4, pp. 279-303. doi: 10.1142/S0218195912600060.
10. Bentley J.L. Writing Efficient Programs. New Jersey, Prentice-Hall in Englewood Cliffs Publ., 1982. 170 p.
11. Drepper U. What Every Programmer Should Know About Memory. Raleigh, RedHat, Inc. Publ., 2007. 114 p.
12. Shynkarenko V.I., Ilman V.M. Constructive-Synthesizing Structures and Their Grammatical Interpretations. I. Generalized Formal Constructive-Synthesizing Structure. Cybernetics and Systems Analysis, 2014, vol. 50, issue 5, pp. 655-662. doi: 10.1007/s10559-014-9655-z.
13. Shynkarenko V.I., Ilman V.M., Skalozub V.V. Structural Models of Algorithms in Problems of Applied Programming. I. Formal Algorithmic Structures. Cybernetics and Systems Analysis, 2009, vol. 45, issue 3, pp. 329-339. doi: 10.1007/s10559-009-9118-0.
14. Weiss M.A. Data Structures and Algorithm Analysis in C++. New Jersey, Pearson Education Inc., Addison-Wesley Publ., 2014. 656 p.
15. Ziegler C.A. Programming System methodologies. New Jersey, Prentice-Hall, Englewood Cliffs Publ., 1983. 260 p.
Статья рекомендована к публикации д.т.н., проф. В. В. Скалозубом (Украина); д.физ.-мат.н.,
проф. В. Е. Билозёровым (Украина)
Поступила в редколлегию: 14.12.2015
Принята к печати: 15.02.2016