УДК 629.735.015:681.3
АЛГОРИТМЫ МАНИПУЛИРОВАНИЯ АЭРОНАВИГАЦИОННЫМИ ДАННЫМИ НА КОМПЬЮТЕРНЫХ ИНФОРМАЦИОННЫХ ОБРАЗАХ
И.Ю. АГАФОНОВА, Л.Е. РУДЕЛЬСОН
Рассмотрены алгоритмы построения предиката поиска в системе управления аэронавигационной информацией. Сформулировано понятие компьютерного информационного образа как совокупности характеристик (свойств) объекта поиска, объединяющей в своем составе все его ключевые параметры, оцениваемые или кодируемые количественно. Рассмотрена алгоритмическая схема ввода, вызова и корректировки данных на основе обсуждаемого подхода. Приведен пример использования.
Ключевые слова: аэронавигационная информация, информационный образ, записи базы данных.
Введение
Известно [1], что основными задачами управления БД являются ввод, индивидуальный или групповой вывод, внесение изменений и удаление записей. При сортировке на основе компьютерных информационных образов (ИО) [2] в качестве индексов поиска используются числовые оси, содержащие начальные элементы ассоциативных частичных цепей с порядковыми номерами записей-синонимов, имеющих равновеликие атрибуты. Дискреты числовых осей каждого атрибута (т.е. поля индексов поиска) своими значениями (начальными звеньями) порождают частичные цепи (ассоциации), которые объединяются с помощью переноса в конечное звено каждой частичной цепи начального звена последующей частичной цепи. В процессе формирования единой ассоциативной цепи сначала строятся частичные цепи. Затем в конечные звенья частичных цепей, сохраняющие нулевое содержимое, переносится с числовой оси, из ближайшего в направлении просмотра значащего дискрета, начальное звено последующей частичной цепи.
1. Постановка задачи
Отправным пунктом методики построения ИО полетной информации становится содержательная постановка задачи, для решения которой развертываются автоматизированные системы (АС) управления воздушным движением (УВД): обеспечение необходимого уровня безопасности полетов при ограничениях на их экономичность и регулярность [3]. Целевой критерий безопасности, как правило, представляется аддитивно-мультипликативным выражением, связывающим вероятности потери целостности наземного, самолетного и спутникового сегментов системы. Его величина устанавливается из рекомендаций международной организации гражданской авиации как допустимый уровень вероятности летного происшествия. Ограничения по регулярности и экономичности учитываются на этапах планирования использования воздушного пространства (ИВП) с учетом метеорологических прогнозов. В соответствии с назначением АС УВД, для программной поддержки технологии работы диспетчера УВД необходимо не только создать ИО полетной информации как композицию гистограмм распределения почасовой загрузки элементов ВП, но и обеспечить оперативный доступ к описаниям в базе данных (БД) каждого участника движения - воздушного судна (ВС). Это означает, что столбцы каждой гистограммы должны заполняться не просто «меткой» очередного ВС, затрагивающего данный элемент ВП, а меткой-указателем адреса хра-
нения информации о выполняемом рейсе. В результате ИО, помимо общего представления загрузки ВП, становится предикатом доступа к записям БД. Устанавливается обратная связь между характеристиками распределения загрузки ВП и подробным описанием каждого ВС. Основания гистограмм разделены на часовые интервалы в пределах суток, и нетрудно найти столбцы, соответствующие времени пролета любого элемента ВП. Несколько сложнее определить место метки ВС внутри столбца, упорядочивая хронологическую последовательность меток внутри выбранного часа.
Допустим для наглядности, что среди N сортируемых меток нет ни одной, принадлежащих одному часу суток в гистограмме любого элемента ВП. В дальнейшем это ограничение снимается. Тогда для установления обратной связи между ИО полетной информации и адресом хранения записи о ВС достаточно упаковывать в основания гистограмм порядковые номера записей в БД. По окончании ввода N описаний ВС будут сформированы совокупности ненулевых значений осей гистограмм тех элементов ВП, которые были затронуты рейсами N анализируемых ВС. Значащие часовые интервалы, соответствующие наличию ВС, перемежаются нулевыми, соответствующими тем часам суток, в которые данный элемент ВП не затрагивался ни одним рейсом. Полученный результат позволяет по каждому элементу ВП -аэродромам, пунктам обязательных донесений (ПОД), секторам, районам, затрагиваемым рейсами, построить список порядковых номеров (меток ВС), сортированный по монотонному изменению значений времени пролета. Совокупность списков по всем элементам ВП образует мультисписок поиска записей в БД, который становится упорядоченным отображением этих записей и может использоваться в качестве составного индекса поиска любой записи (или группы записей) по значениям времени пролета и по именам элементов ВП.
Список порядковых номеров исходных записей формируется как линейная последовательность (например, как сцепление), все элементы (звенья) которого обладают двумя необходимыми свойствами. Во-первых, своими значениями они указывают на адрес записи в БД о том ВС, которое затрагивает данный элемент ВП в данном часе суток. Во-вторых, и это главное для формирования сцепленной структуры списка, своими значениями они одновременно указывают адрес следующего звена цепи в порядке монотонного изменения времени. Последний эффект достигается за счет вынесения начального элемента цепи (столбца гистограммы) непосредственно в разряды основания (оси гистограммы).
2. Алгоритмическая схема формирования информационного образа
Упрощенная блок-схема формирования ИО представлена на рис. 1. Для пояснений воспользуемся условным примером ввода диспетчером в систему информации по докладу пилота о пролете ПОД. На входе процедуры (блок «начало» на схеме) программное обеспечение (ПО) получает информацию о позывном номере борта, а также о наименовании, координатах, моменте времени и высоте пролета пункта. Позывной преобразуется в номер записи о ВС в БД. На рис. 1 не отражены предварительные операции, такие как пересчет плана полета, корректировка полей радиолокационного формуляра и списка бортов, оснащенных аппаратурой автоматического зависимого наблюдения. Эти действия вызывают удаление устаревшей информации об обслуживаемом ВС из ИО, после которого результаты диспетчерской корректировки фиксируются (возвращаются) в него как новые данные.
Первый шаг алгоритма состоит в адресации к гистограмме распределения моментов пролета того ПОД, по которому исполняется диспетчерский ввод. Поиск осуществляется по известному наименованию этого элемента ВП. Следующий шаг состоит в выборе столбца гистограммы, к которому нужно обратиться для присоединения к частичной цепи номеров
записей нового звена - номера записи ВС. Столбцы пронумерованы от нуля до двадцати трех в соответствии с часами суток. Необходимая информация извлекается ПО из поля «время» введенной в систему диспетчерской команды. Производится обращение к соответствующему по номеру разряду оси гистограммы. Анализируется, был ли ранее в процессе работы системы образован столбец гистограммы, или обслуживаемый рейс является первым внутри данного часа. Если столбца не существует, то система создает его, занося в выбранный разряд оси известный номер записи о ВС. В противном случае выполняется поиск места вводимого номера (звена) в частичной цепи номеров записей, порожденной найденным разрядом оси. Позиция каждого звена определяется моментом времени внутри часа, т.е. минутами. Нужно пройти по сцепленным номерам ВС и «вклиниться» между ВС, пролетевшими данный ПОД раньше, и ВС, которые пролетят его позже вводимого.
Процедура поиска места нового звена в частичной цепи управляется сравнением моментов времени пролета пункта. Если вводимое значение больше, чем у сравниваемого звена, то поиск продолжается. Выясняется, не просмотрена ли на данном этапе поиска вся цепь. Если сопоставляемое звено оказывается последним, то вводимое звено присоединяется к окончанию элементарной цепи, т.е. замыкает ее. В противном случае (цепь не окончена) алгоритм адресуется к следующему звену.
Рис. 1. Упрощенная блок- схема алгоритма
В случае если вводимое значение меньше величины, зафиксированной в основании столбца гистограммы (начального звена цепи), алгоритм «вытесняет» ранее введенное значение из оси в продолжение цепи, а на «освободившееся» место записывает новый номер ВС. Механизм такой переадресации прост, потому что каждое звено указывает своим значением одновременно и номер записи о ВС, и место следующего (в порядке неубывания значений момента времени пролета ПОД) звена цепи. Рассматриваемый случай замены лидирующего звена наиболее нагляден. В разряде оси гистограммы фиксируется вводимый номер, а в теле файла единой цепи, по адресу, равному тому же вводимому номеру, фиксируется «вытесненное» из основания столбца прежнее начальное звено. Каждый номер п = (1, ы) уникален, что гарантирует неповторяемость адресных ссылок (здесь N - допустимое по замыслу системы число одновременно сопровождаемых АС УВД объектов). Присоединение вводимого номера к цепи внутри нее состоит в переадресации звена на месте вставки («вклинивания»). Последнее из «более ранних» звеньев содержит номер (адрес) первого из «более поздних» звеньев. Этот номер переносится в поле указателя вводимого рейса, фиксируя его место относительно продолжения цепи. В освободившийся указатель более «раннего» звена записывается новый номер, адресуя к нему начальную часть ассоциативной цепи.
3. Управление базой полетных данных
3.1. Ввод новых полетных данных.
Процедура ввода новой записи принципиально не отличается от алгоритма сортировки потока записей. Допустим для определенности, что цепи формируются в порядке неубывания атрибутов. Исходная запись заносится на свободное место в таблицу БД. Это означает, что в таблице появляется новая строка с принадлежащими ей атрибутами; в частности, со значением атрибута высоты, равным, например, 3. По каждому вводимому атрибуту рассматривается соответствующая ему ранее сформированная числовая ось - входной индекс поиска. Адресация к выбираемому полю индекса производится, как и при сортировке потока записей, величиной вводимого атрибута. В анализируемом примере (рис. 2) рассматривается столбец таблицы, номер которого равен по величине трем - сортируемому атрибуту вводимой записи. Допустим, что выбранное поле входного индекса уже заполнено, т.е. среди множества записей, сопровождаемых БД, уже встречалась хотя бы одна, содержащая атрибут, равный по величине вводимому. Тогда, в соответствии с логикой метода, обнаруженный в анализируемом дискрете (поле индекса) начальный элемент частичной цепи становится последующим за вводимым звеном цепи. Для данного примера начальным звеном частичной цепи атрибутов, равных трем, являлся к моменту ввода двадцать шестой записи номер 25. Этот номер становится следующим за вводимым двадцать шестым номером. Из выбранного дискрета оси в поле указателя атрибута высоты двадцать шестой записи переписывается номер 25. В «освободившееся» место заносится номер 26 вводимой записи. Кроме того, вытесненный из индекса номер (25) фиксируется алгоритмом для организации поиска предшествовавшей частичной цепи номеров.
В противном случае, если в выбранном дискрете оси обнаружен нуль (т.е. запись с вводимым значением атрибута встречается впервые) поиск следующего звена производится иначе. Организуется просмотр полей индекса от выбранного дискрета вправо по возрастанию адресов до первого ненулевого значения, которое и становится последующим звеном единой цепи. Если значащих элементов справа на числовой оси нет, то номер вводимой записи становится последним, и в поле указателя соответствующего атрибута сохраняется нуль. Пример допускает в качестве иллюстрации единственную возможность - ввод в БД записи с атрибутом высоты, равным нулю (взлет). В нулевом дискрете числовой оси фиксируется номер 26 этой записи. В поле указателя атрибута высоты заносится номер последующего звена, т.е. содержимое ближайшего справа по оси ненулевого дискрета. Таким дискретом является первое поле индекса поиска, которое соседствует с нулевым. В нем содержится номер 4 записи, имеющей атрибут с ближайшим к вводимому нулю (по возрастанию величины) единичным значением.
Для поиска предшествующей частичной цепи номеров записей в общем случае должен быть организован просмотр полей индекса поиска от выбранного дискрета налево по уменьшению адресов до первого ненулевого содержимого. Найденный значащий дискрет, если он существует, интерпретируется как начальное звено предшествующей частичной цепи. Она связывает номера записей, содержащих атрибуты с ближайшими по убыванию значениями относительно
Рис. 2. Реорганизация списка при вводе
вводимого. Если на оси нет значащих дискретов слева, как это иллюстрируется примером, то номер вводимой записи становится начальным звеном единой ассоциативной цепи. Это означает, что данный номер должен быть зафиксирован в нулевой записи-заголовке БД, указывая начало просмотра в порядке неубывания величины анализируемого атрибута.
В противном случае, если значащий элемент слева от частичной цепи атрибута вводимой записи обнаружен, он рассматривается как начальное звено предшествующей элементарной цепи. Такая ситуация соответствует рассмотренному выше примеру с вводом в БД двадцать шестой записи с величиной атрибута высоты, равной 3. Алгоритм ввода записи пробегает эту цепь до совпадения нового номера с зафиксированным ранее номером последующего звена цепи, которое вынесено из поля индекса поиска в поле указателя вводимой записи. В примере фиксировался алгоритмом и вытеснялся из поля индекса номер двадцать пятой записи. До ввода двадцать шестой записи вытесненный номер замыкал элементарные цепи номеров записей, содержащих атрибуты, равные по величине 2 и 3. Он был зафиксирован, кроме третьего поля индекса поиска, в поле указателя конечного звена элементарной цепи записей, имеющих атрибут высоты, равный 2. После ввода двадцать шестой записи в БД, ее номер вытеснил из третьего поля индекса поиска номер двадцать пятой записи. Следовательно, для замыкания второй и третьей частичных цепей, теперь становится необходимым адресовать конечное звено второй цепи к двадцать шестому номеру, т.е. заместить в поле указателя соответствующей записи номер 25 номером 26.
Перечисленные операции применяются ко всем атрибутам вводимой записи, а само их количество N увеличивается на единицу. Время поиска предшествующего звена можно сократить, если наряду с осью начальных элементов хранить в БД ось «конечных» звеньев частичных цепей, содержащую номера записей, значения атрибутов которых вводились в систему первыми среди равновеликих, либо пользоваться двунаправленными цепями.
3.2. Вывод полетных данных. Процедура вывода информации в заданном диапазоне изменения атрибута (группового вывода) просматривает поля индекса поиска от минимального значения до максимального (заданных в запросе границ) адресов полей. Запросим номера бортов, пролетающих ПОД в пределах от четырех до семи тысяч метров (рис. 3). Если все дискреты в указанном диапазоне содержат нули, то, следовательно, в БД не сопровождается ни один объект со значением атрибута, лежащим в указанном диапазоне. В противном случае считается, что первый встреченный при просмотре индекса значащий дискрет является начальным звеном искомого фрагмента единой цепи номеров записей. Для обнаружения конечного элемента целесообразно обратиться к начальному элементу частичной цепи, лежащей справа от выделенного запросом диапазона. Поиск записей, содержащих атрибуты высоты, равные от четырех до семи тысяч метров, управляется выделенными на рис. 2 дискретами числовой оси. Начало просмотра - 24-я запись, окончание - 19-я запись (исключая содержимое последней). С этой целью производится просмотр индекса поиска от заданной максимальной границы в порядке возрастания адресов его дискретов до первого ненулевого поля, содержимое которого фиксируется. Если такого элемента нет, значит, запрошенный диапазон включает в себя все конечные элементы единой цепи. В против-
Рис. 3. Вывод записей, имеющих максимальные, минимальные и лежащие в заданном диапазоне значения атрибутов
ном случае выдача информации происходит по номерам найденного фрагмента цепи указателей до совпадения порядкового номера очередной записи с зафиксированным последующим звеном справа от максимальной границы заданного диапазона.
В приведенном выше примере (рис. 3) находим на четвертом поле индекса, соответствующем минимальной границе диапазона (значение высоты равно 4), начальное звено искомого фрагмента единой цепи, содержащее номер двадцать четвертой записи. Справа от максимальной границы диапазона, следом за седьмым полем индекса (высота 7000), в первом же значащем дискрете индекса поиска (восьмом) указано последующее (за конечным) звено искомого фрагмента единой цепи, содержащее номер девятнадцатой записи БД. Передвигаясь по выделенному фрагменту цепи, удается считывать позывные бортов в записях с номерами: 24—20—3—11—9—5—23—21 —>8—>14. Следующий девятнадцатый номер зафиксирован как лежащий вне заданного диапазона. Соответствующие величины высоты: 4—4—4—5—5—5—6—6—6—7 и запрошенные значения выводятся из исходных записей.
Нахождение записи с минимальным (максимальным) значением атрибута производится простым обращением по номеру, хранящемуся в первом (последнем) значащем дискрете индекса поиска. Если запрашиваются все записи с минимальным (максимальным) значением атрибута, то выводу подлежит информация всех записей, номера которых входят в частичную цепь, порожденную первым (последним) значащим дискретом числовой оси. Для примера (рис. 3), элементарная цепь минимально значащего атрибута содержит два следующих звена: 4—2, а цепь максимально значащего атрибута - звенья 15—3—6. Окончание первой цепи фиксируется последующим за ней начальным элементом частичной цепи атрибутов, равных двум (второй значащий дискрет индекса поиска, содержащий номер двадцать второй записи). Окончание элементарной цепи максимально значащего атрибута фиксируется нулевым содержимым поля указателя. Согласно примеру, четвертая и вторая записи содержат атрибуты высоты, равные единице; пятнадцатая, тринадцатая и шестая - атрибуты, равные девяти.
Пусть по условиям задания необходимо вывести по запросу значения времени пролета пункта обязательных донесений для которых находится в интервале от 9:30 до 11:45, и высота пролета которых не превышает четырех тысяч метров. Первому условию удовлетворяют записи с номерами (рис. 3): 11 — 12—13—14—15, второму: 4—2—22—17—7—25—18—16—10—1 —24—20—3. Сопоставление показывает, что заданным ограничениям не удовлетворяет ни одна из сопровождаемых БД записей. На числовой оси не образовано ни одной двухзвенной цепи, следовательно, необходимо расширить заданный диапазон запроса.
Пусть при прочих равных условиях отрезок времени расширяется: от начального времени 08:00 до 15:00. Фрагмент единой цепи атрибутов высоты остается неизменным. Фрагмент цепи атрибутов бортовых номеров расширяется до участка натурального ряда от 7 до 20. При наложении обоих фрагментов числовая ось образует двухзвенные цепи в дискретах с номерами: 7—10—16—17—18—20, адресующими к записям с атрибутами высоты, равными 2000, и атрибутами бортового номера, равными 8ЛБ124, 85777, ОВ:^Х, 64026, 76738, 85604 соответственно. Если задан поиск более чем по двум ключам, то после ввода всех найденных фрагментов необходимо отобрать в качестве результата только те частичные цепи, количество звеньев в которых равно количеству к заданных ключей поиска. При этом можно определить и область близких (субоптимальных) решений. К ней относятся записи, номера которых образовали на числовой оси многозвенные элементарные цепи с меньшим, чем к, количеством звеньев. После ввода всех фрагментов на числовой оси образуется «рельеф правдоподобия», указывающий, насколько близко удовлетворяют заданным ограничениям все записи БД, т.е. какие из них согласуются с искомым решением по всем, по большинству, по меньшинству или ни по одному из ключей поиска.
3.3. Корректировка полетных данных. Процедура внесения изменений в запись сводится к последовательной корректировке одного или нескольких атрибутов. В общем случае должны изменяться и положения звеньев соответствующих цепей. Технологически простейшим спосо-
бом корректировки является удаление скорректированного звена с первоначальной позиции и его последующее присоединение к цепи указателей адресов записей. С этой целью прежней величиной изменяемого атрибута производится адресация к соответствующему полю входного индекса поиска. Далее, передвигаясь по звеньям частичной цепи от начала к концу, удается отыскать номер корректируемой записи. Этот номер замещается в цепи значением, зафиксированным в поле указателя модифицируемого атрибута, т.е. последний исключается из цепи (рис. 4). На следующем шаге удаленный элемент присоединяется к единой цепи с помощью адресации к полю индекса поиска новым значением изменяемого атрибута.
Запись 14 отображена в сцепленном списке (рис. 4) однозвенной частичной цепью и служит универсальным примером для демонстрации операций над списком, при удалении записей: вычеркивание из дискрета входного индекса, а также поиск и корректировка указателя адреса в предшествовавшем звене.
Для наглядности вновь обратимся к примеру дополнения списка двадцать шестой строкой, содержащей атрибут высоты, равный трем. Допустим, что значение атрибута следует скорректировать до величины, равной четырем. В соответствии с изложенной схемой корректировки записей производится обращение к третьему полю входного индекса поиска, где в данном примере зафиксирован номер корректируемой двадцать шестой записи. На первом шаге исполнения процедура замещает содержимое поля индекса как начальное звено элементарной цепи атрибутов, равных трем, на следующее звено цепи, т.е. на содержимое поля указателя корректируемой записи. Собственно поле указателя обнуляется. В случае если частичная цепь анализируемого атрибута - однозвенная, поле индекса поиска также подлежит обнулению. Наконец, если указатель номера корректируемой записи не является начальным звеном соответствующей элементарной цепи, производится ее просмотр до совпадения содержимого очередного поля указателя с искомым. При обнаружении этого звена содержимое найденного указателя замещается содержимым поля указателя изменяемого атрибута, причем последнее обнуляется.
При корректировке записей, составляющих однозвенную цепь, или описываемых начальными элементами многозвенных цепей, возникает необходимость поиска конечного звена предшествующей цепи для изменения в поле ее указателя адреса замыкания в единую цепь. Проверка осуществляется путем просмотра всей предшествующей частичной цепи. Ее начальный элемент отыскивается в первом слева значащем поле индекса поиска, а конечный обнаруживается содержимым поля указателя, равным номеру изменяемой записи. Как и в случае исключения из многозвенной цепи, обнаруженное содержимое замещается содержимым поля указателя корректируемой записи. Ввод в запись нового значения атрибута и сопутствующая корректировка соответствующей ему единой цепи.
Процедура удаления п-й (п = 1, N ) записи БД состоит в последовательном исключении соответствующих ей звеньев единых цепей указателей номеров и, в случае наличия п-го номера в поле какого-либо индекса поиска, - из этих полей. Заманчиво заменить процедуру удаления записи последовательной корректировкой каждого атрибута, составляющего удаляемую информацию, заменяя их величины на величины соответствующих атрибутов ^й, последней в
Рис. 4. Корректировка сцепленного списка
порядке размещения записи, после чего удалить из БД 17-ю запись и уменьшить значение N на единицу.
Метод сортировки и поиска непосредственной расстановкой связан с обнаружением места каждого числа в результирующей последовательности, что позволяет минимизировать время исполнения обоих процессов, сводя их к прямой адресации на числовой оси. Благодаря слиянию их механизмов в единую технологию, удается упростить и процедуры управления БД, сортированных непосредственной расстановкой. Упрощение достигается за счет возрастания необходимых для реализации метода объемов памяти относительно других способов организации данных. Увеличение потребностей в памяти с лихвой перекрывается сокращением необходимых ресурсов за счет вынесения целой части величин атрибутов в порождающие дискреты входного индекса.
Заключение
Рассмотрены алгоритмы построения предиката поиска в системе управления аэронавигационной информацией. Сформулировано понятие компьютерного информационного образа как совокупности характеристик (свойств) объекта поиска, объединяющей в своем составе все его ключевые параметры, оцениваемые или кодируемые количественно. Рассмотрена алгоритмическая схема ввода, вызова и корректировки данных на основе обсуждаемого подхода. Приведен пример использования.
ЛИТЕРАТУРА
1. Фуфаев Э.В., Фуфаев Д.Э. Базы данных. - М.: Академия, 2007.
2. Платонова Е.С., Рудельсон Л.Е., Степанова А.И. Метод ускорения поиска данных в системе управления аэронавигационной информацией // В настоящем Вестнике.
3. ФАП. Организация воздушного движения в Российской Федерации: Федеральные авиационные правила: утв. приказом Минтранса России от 25.11.2011 г. № 293. [Электронный ресурс]. URL: http:// dvmtu-favt.ru/about/documents/18/200.
ALGORITHMS FOR AERONAUTICAL DATA MANIPULATION BASED ON IMAGES OF COMPUTER INFORMATION
Agafonova I.Y., Rudelson L.E.
Algorithms of constructing a search predicate in the management of aeronautical information are discussed. The notion «image of computer information» is defined as a set of characteristics (properties) of the object of search, which contains together all of its key parameters that are measured quantitatively or encoded. The algorithmic scheme for input, challenge and correction the data on the basis of this intervention is considered. An example of using is showed.
Key words: aeronautical information, image information, a database record.
Сведения об авторах
Агафонова Инна Юрьевна, окончила Ульяновское высшее авиационное училище (2004), аспирантка МГТУ ГА, область научных интересов - компьютерная поддержка планирования полетов и организации доступа к аэронавигационной информации.
Рудельсон Лев Ефимович, 1944 г.р., окончил МЭИ (1968), доктор технических наук, профессор МГТУ ГА, автор более 170 научных работ, область научных интересов - программное обеспечение автоматизированных систем организации воздушного движения.