621.391.15:004.65
В.В. Кручинин, Б.А. Люкшин
Метод кодирования информационных объектов на основе деревьев И/ИЛИ
Рассматриваются вопросы применения метода построения алгоритмов комбинаторной генерации, основанного на деревьях И/ИЛИ для кодирования информационных объектов. Предлагается метод кодирования, основанный на представлении всего множества информационных объектов в виде дерева И/ИЛИ.
Ключевые слова: кодирование, информационный объект, методы генерации комбинаторных множеств, дерево И/ИЛИ.
Кодирование является одним из способов повышения информационной безопасности в системах хранения и передачи информации [1]. Зачастую информационные объекты в таких системах носят иерархическую или рекурсивную природу описания. В таком случае древовидная структура является естественной формой представления информационного объекта. Однако современные базы данных имеют реляционную модель хранения данных. Это приводит к коллизии между естественной структурой информационного объекта и табличной формой представления информации.
Для решения указанной проблемы предлагается использовать подход, основанный на применении алгоритмов комбинаторной генерации Generate и Rank. Обобщенная схема работы этих алгоритмов представлена на рис. 1.
В общем случае для получения процедур генерации Generate и нумерации Rank комбинаторного множества задается биективное отображение:
Generate: Nn ^ An,
где
N -n
Рис. 1. Основная схема алгоритмов Generate и Rank
конечное подмножество натуральных чисел; комбинаторное множество. Тогда обратное отобра-
.-1
жение Rank = Gen задает процедуру нумерации:
Rank: An ^ Nn
Алгоритм Generate на основании числа num е Nn и некоторого описания комбинаторного множества D создает элемент a е An. Алгоритм Rank производит обратное действие на основании a е An и некоторого описания D, формирует номер num е Nn .
Рассмотрим методы построения алгоритмов генерации и нумерации комбинаторных объектов, основанные на представлении описания D в виде дерева И/ИЛИ [2]. Введем определения:
1) деревом И/ИЛИ называется дерево, которое содержит узлы двух типов: И-узел и ИЛИ-узел;
2) вариантом дерева И/ИЛИ назовем дерево, которое получается из данного путем отсечения всех дуг, кроме одной, у всех ИЛИ-узлов. На рис. 2 показан пример дерева И/ИЛИ и всех его вариантов.
Число вариантов для узла z дерева И/ИЛИ вычисляется по формуле
®z =
для листа,
1,
k
^ , для ИЛИ-узла,
i=1 k
, для И-узла,
i=1
где щ - число вариантов для узлов, являющихся сыновьями узла г.
n
В.В. Кручинин, БА. Люкшин. Метод кодирования информационных объектов
171
Рис. 2. Дерево И/ИЛИ и все его варианты
Зная число вариантов wi для всех узлов дерева И/ИЛИ, строятся алгоритмы генерации и нумерации вариантов.
Алгоритм генерации варианта следующий:
1. В стек помещается пара (num, root) номер варианта и корень дерева.
2. Из стека вынимается очередная пара (lz, z).
3. Если z - это И-узел, то вычисляются ¡i для всех сыновей si узла z, используя wi и схему Горнера lz = ¡1 + w(s1)(¡2 + «(s2)(...«(sn-1)(¡n)...)).
Все пары (¡i, s¿) заносятся в стек, переход на шаг 2.
4. Если z - это ИЛИ-узел, то определяется пара (lk, sk) из условия:
если w(si) < lz < w(si) + w(s2), то выбирается второй сын и ¡2 := lz - w(si);
k k+1 k
если ^ w(s¿) < ¡z < ^ w(s¿), то выбирается k+1 сын и ¡k+i := ¡z - ^w(si). i=1 i=1 i=1
Найденная пара (¡k, sk) заносится в стек, переход на шаг 2.
5. Если z - лист, то переход на шаг 2.
6. Если стек пуст, то останов.
Представленный алгоритм задает биективное отображение Generate: Nn ^ W , где Nn - подмножество натуральных чисел; W - множество вариантов. Из этого следует, что для любого варианта дерева И/ИЛИ можно найти единственный номер i. Таким образом, можно однозначно задать алгоритм нумерации варианта Rank. Временная сложность алгоритмов генерации и нумерации вариантов в среднем зависит от структуры дерева И/ИЛИ и пропорциональна среднему числу узлов в варианте.
Рассмотрим представление информационного объекта в виде дерева И/ИЛИ. Пусть все множество информационных объектов из некоторой предметной области можно представить пятеркой (O, S, T, P, Он), где O - множество объектов, имеющих некоторую структуру; Он - обозначение множества объектов, S - множество структур объектов; T - множество элементарных объектов; P - множество правил перехода вида:
1) Oi^Tü|T2i |...|Tni.
2) Oi^Süfei |—| Ski.
3) S^ Oi1Oi2—Oim.
Правила типа (1) гласит, что объект имеет одну из возможных элементарных реализаций. Правила типа (2) означает, что объект имеет одну из возможных структур, и правила типа (3), что структура Sij содержит некоторое подмножество объектов. Такое представление информационного объекта позволяет построить для него дерево И/ИЛИ:
1) для правил типа (1) записывается ИЛИ - узел Oi, у которого будут сыновья T1i, T2i ,—, Tni - листья;
2) для правил типа (2) записывается ИЛИ - узел Oi, у которого будут сыновья S1i, S2i , —, Ski - И-узлы;
3) для правил типа (3) записывается И - узел Sj, у которого будут сыновья OiiOiO— Oim - ИЛИ-узлы.
В качестве примера рассмотрим информационный объект, имеющий атрибуты стандарта сертификата x.509 (stdat). Перечислим их: C (страна); L (размещение); ST (штат или провинция); O (организация); OU (подразделение); CN (фамилия, имя, отчество); STREET (адрес); E (электронный адрес). На основе данного стандарта каждый удостоверяющий центр формирует свои собственные атрибуты полей. Например, в поле CN могут быть занесены паспортные данные, номер свидетельства ИНН, номер пенсионного свидетельства и т.д. Тогда атрибуты stadat можно представить деревом И/ИЛИ (рис. 3).
Рис. 3. Дерево И/ИЛИ для атрибутов сертификата
Далее строятся деревья И/ИЛИ для конкретных атрибутов. Например, атрибут «адрес».
Если для множества информационных объектов получено дерево И/ИЛИ, то алгоритм Rank по описанию конкретного информационного объекта получает уникальный номер, а алгоритм Generate по номеру получает описание этого объекта.
Такой метод кодирования информационных объектов позволяет:
1. Повысить информационную безопасность системы хранения данных, поскольку внутри системы информационные объекты явно не хранятся, а хранятся их номера и дерево И/ИЛИ.
2. Обеспечить быстрый поиск информационных объектов, поскольку в базе данных хранятся только номера.
3. Сократить объем базы данных.
Литература
1. Белов Е.Б. Основы информационной безопасности / Е.Б. Белов, В.П. Лось, Р.В. Мещеряков, А.А. Шелупанов. - М.: Горячая линия - Телеком, 2006. - 544 с.
2. Кручинин В.В. Методы построения алгоритмов генерации и нумерации комбинаторных объектов на основе деревьев И/ИЛИ. - Томск: В-Спектр, 2007. - 200 с.
Кручинин Владимир Викторович
Канд. техн. наук, зам. директора института инноватики ТУСУРа Тел.: (+7 382-2) 41-50-00 Эл. адрес: kru@tdec.ru
Люкшин Борис Александрович
Доктор техн. наук, профессор, зав. каф. механики, графики и управления качеством ТУСУРа Тел.: (+7 382-2) 51-05-30 Эл. адрес: lba2008@yandex.ru
V.V. Kruchinin, B.A. Lukschin
Method of Coding of Information Objects on the Basis of Trees And-Or
Questions of application of a method of construction of algorithms of the combinatory generation, based on trees And-Or for coding of information objects are considered. The method of coding based on representation of all set of information objects in the form of a tree And-Or is offered. Keywords: coding, information object, methods of generation of combinatory sets, a tree And-Or.