Y = HT C"1 [Z - M {zJZ i- 1}] +
+H+ M{ZJZ"1}.
Таким образом, модель (15) может быть запи
(20)
сана в виде
л^ =^нтс-1 (г,-м^/г1"1}^н+м{z1/z1"1}Jт). (21)
Матрица коэффициентов P, найденная из условия минимума среднеквадратичного отклонения
\¥ от W, имеет вид
р = [нтс-1к, (с-1 )т н - нтс-1е г1-18т -
-80^г1-1 (с-1 )Тн+]-1 х (22) х[нтС-1К - 80 1,], где 8 = нтС-1-Н+.
I г 1№1 г1№1г I
Положим, как и выше, математические ожидания Zi и Wi равными нулю. Тогда К. будет являться автокорреляционной матрицей векторного процесса Zi; - взаимной корреляционной
матрицей векторных процессов Zi и Wi; 0 1-1 со-
стоит из множества дисперсионных функций векторного процесса Zi относительно Zi-1; 0^ ^ -
из множественных обобщенных дисперсионных функций векторных процессов Zi и Wi относительно Zi-1; 0' - из множественных дисперси-
zlz
онных функций векторных процессов Zi и Zi-1.
Из вышесказанного следует, что, используя методы факторного анализа и рекуррентного фильтра Калмана, можно существенно сократить размерность прогнозирующих моделей без ощутимой потери точности.
Литература
1. Дисперсионная идентификация; [под ред. Н.С. Райб-мана]. М.: Наука, 1981.
2. Дубров А.М., Мхитарян В.С., Трошин Л.И. Многомерные статистические методы. М.: Финансы и статистика, 2000.
3. Казаков И.Е. Статистическая теория систем управления в пространстве состояний. М.: Наука, 1975.
4. Дургарян И.С., Пащенко Ф.Ф. Метод двухступенчатой идентификации в задаче оценки экономической эффективности АСУ // Автоматика и телемеханика. 1977. № 5.
5. Функциональный анализ; [под ред. С.Г. Крейна]. М.: Наука, 1972.
УДК 004.4
ОСНОВНЫЕ ОПЕРАЦИИ НАД СОРИЕНТИРОВАННЫМИ ГИПЕРГРАФАМИ В РЕЛЯЦИОННОЙ БАЗЕ ДАННЫХ
(Работа выполнена в рамках ФЦП «Научные и научно-педагогические кадры инновационной России» на 2009-2013 гг., направление «Информатика», проект НК-421 (2))
В.Г. Мокрозуб, к.т.н.
(Тамбовский государственный технический университет, [email protected], [email protected])
Введено понятие Сориентированного гиперграфа. Описаны операции добавления и удаления вершин и ребер в К-ориентированных гиперграфах, представленных в реляционной базе данных.
Ключевые слова: гиперграф, реляционная база данных, операции добавления и удаления.
Гиперграфы применяются в автоматизированных системах для процедур анализа и синтеза технических объектов. В работе [1] подробно описаны методы декомпозиции гиперграфовых структур, в [2] - операции над ультра- и гиперграфами, представленными в аналитическом виде. Данные публикации описывают операции над гиперграфами, не привязываясь к программным продуктам, в среде которых предполагается реализация автоматизированной системы. Между тем выбранная программная среда оказывает большое влияние на последовательность действий при выполнении операций над гиперграфами.
Целью настоящей работы является представление ^-ориентированных гиперграфов и операций добавления и удаления вершин и ребер в ре-
ляционной БД. Эти операции описываются как с помощью теории множеств, так и непосредственно операторами языка структурированных запросов, в качестве которого выбран Ттатас^ОЬ.
Определение ориентированного гиперграфа
Обозначим ориентированный гиперграф Ggo(X, Ц), где X={xi}, 1 = 1,1 - множество вершин гиперграфа, xi - 1-я вершина; Ц={ит(Х1т)}, т = 1,М - множество ребер гиперграфа, ит(Х1т) - т-е ребро гиперграфа, Х1т - множество вершин, инцидентных т-му ребру Х1тсХ, Х1т = {хк}, V кеКт, Кт с 1,1, 1 - номер верши-
ны в ребре ориентированного гиперграфа, 1 = 1,Ьт, Lm - число вершин в ребре m. При этом будем считать, что наборы вершин {хь x2, x3} и {x2, x1, x3} разные.
Пример ориентированного гиперграфа представлен на рисунке 1.
Запись 41 на рисунке означает, что номер вер-
шины x5 в ребре и4 один. Для пояснения рисунка в таблице приведены наборы вершин, инцидентных ребрам.
Ребро гиперграфа Вершины, инцидентные ребру
Ul X11={x1, x4, x2, x3 }
U2 X12={XS, x1}
U3 X13={x1, xs}
U4 X14={xS, x6}
Определение Сориентированного гиперграфа
По аналогии с ориентированным гиперграфом обозначим ^-ориентированный гиперграф Ggon(X, Ц), где X={xi}, 1 = 1,1 - множество вершин гиперграфа, xi - 1-я вершина; Ц={ит(Х1т)}, т = 1,М -множество ребер гиперграфа, ит(Х1т) - т-е ребро гиперграфа, Х1т - множество вершин, инцидентных т-му ребру Х1тсХ, Х1т = {х^}, V кеКт,
Кт с 1,1; Ь - номер вершины в ребре ориентированного гиперграфа представляет собой вектор, Ь = {1п}, п = 1,^ мощность которого N. В общем
случае номер вершины в ребре необязательно должен иметь значение «номер по порядку» и может отражать определенное свойство вершины, которое принимает конкретное значение при включении вершины в ребро. При этом предполагается, что все вершины в ребрах имеют одинаковый набор свойств.
Для простоты координаты (свойства) вершин обозначим номерами от 1 до N. Значение свойства
п, п е , вершины х1, х1еХ, в ребре ит, итеЦ, обозначим з[п, 1, т]. С учетом сказанного множество вершин, инцидентных т-му ребру Х1тсХ, с множеством значений свойств каждой вершины в ребре обозначим Х1т={хк, 8к}, где VkеKm, К, С 1,1, 8к={«[п, к, т]} - множество значений
свойств к-й вершины в т-м ребре, п = 1,N.
По аналогии со схемой данных ориентированного гиперграфа [3] представим схему данных ^-ориентированного гиперграфа (рис. 2).
X G
1 ID_G
ID_X FKG X да
ID__X
Наименование вершины FK_G_U да
ID U
—
U 1 NPP_1
ID_U NPP_2
Наименование ребра
NPP_N
Рис. 2
Примем, что значения полей первичного ключа ID_U, ID_X, ID_G определяются автоматически (например, свойство IDENTITY в Transact-SQL или счетчик в MS-Access). Будем также считать, что наименования вершины в таблице X и ребра в таблице U уникальны; FK_G_X, FK_G_U -внешние индексы, которые связывают таблицы G и X, G и U.
Поля NPP_1, NPP_2, ... NPP_N таблицы G представляют собой координаты (или свойства) вершины ID_X в ребре ID_U. Число координат определяется прикладной задачей. Максимальное число координат N определяется ограничениями выбранной СУБД. Так, например, для СУБД MS-SQL Server 2005 максимальное число столбцов в таблице - 1024, этого достаточно для решения практических задач по проектированию технологического оборудования и управления предприятиями химического и машиностроительного профилей.
Операции над N-ориентированными гиперграфами
Добавление новой вершины выполняется в два этапа:
1) добавление вершины во множество вершин, X={xi}, i = Ц;
2) добавление вершины во множество инцидентных ей ребер, U1cU, где U1 - множество ребер, которым инцидентна добавляемая вершина.
При добавлении вершины в существующие ребра возможны следующие ситуации:
- координаты вершин, входящих в ребро, изменяются; например, координата «порядковый номер вершины» изменяется у всех существующих вершин (увеличивается на единицу) при добавлении новой вершины с порядковым номером один;
- координаты существующих вершин не изменяются.
Введем следующие обозначения: xt - добавляемая вершина; U1={um1(X1m1)}, V m1eM1, Ml с 1,M - множество ребер гиперграфа, которым инцидентна вершина xt; X1m1={xk, Sk} - множество вершин и свойств вершин ребер, инцидентных добавляемой вершине; Sk={s[n, k, m1]},
n = 1,N, V keKm1, Km1 с 1,1. Вершина xt добавляется в каждое ребро со своим набором координат (свойств), которые обозначим как S1t={s[n, t, m1]}, n = 1N.
Для представления операции добавления новой вершины в среде Transact-SQL введем таблицу свойств добавляемой вершины S1=(ID_S1, ID_U, NPP_1, NPP_2, ..., NPP_N}, где ID_S1 - поле первичного ключа; ID_U - поле первичного ключа ребер, инцидентных добавляемой вершине; NPP_1, NPP_2, ..., NPP_N - значения свойств добавляемой вершины в ребре ID_U. Наименование добавляемой вершины обозначим переменной @Наименование_вершины; значение поля первичного ключа - @ID_X.
С учетом введенных обозначений последовательность действий и реализация этих действий в среде Transact-SQL при добавлении новой вершины в ребро следующие.
1) Если xtgX, то добавление xt в X:
if not exists (select * from X where
Наименование_вершины=@Наименование_верши-...... begin
insert X уа1иеБ(@Наименование_вершины) select @ID_X=@@Identity end
2) Добавление вершины xt в каждое ребро множества ребер U1={um1(X1m1)} со своим набором свойств S1t={s[n, t, m1]}, m1e Ml, Ml с 1,M, n = 1,N, то есть в результате получаем
U={Um(X2m)}, X2m=Xm2u(Xm1nxt), V m2eM\M1, V m1eM1, где m1, m2 - индексы ребер, инцидентных и не инцидентных вершине xt. Insert G (ID_X, ID_U, NPP_1, NPP_2,..., NPP_N)
(select @ID_X, ID_U, NPP_1, NPP_2,..., NPP_N from S1)
3) Корректировка свойств Sk вершин множества ребер U1={um1(Y1m1)} в зависимости от свойств вершины xt. Этот пункт полностью определяется характером решаемой задачи. Для примера обозначим функцию, позволяющую получить новое значение свойства NPP вершины ID_X в ребре ID_U как dbo.F_NPP(NPP, ID_X, ID_U). Тогда корректировку свойств вершин можно записать следующим образом.
Sk={s[n, k, m]=f_npp(n, k, m)},
n = 1,N, keKm1, Km1 e 1,1, VmeM1, M1cM,
где f_npp(n, k, m) - функция, позволяющая найти новое значение свойства n вершины k в ребре m. Update G set NPP_1=dbo.F_NPP('NPP_1', G. ID_X, S1.ID_U), NPP_2=dbo.F_NPP('NPP_2', G. ID_X, S1.ID_U),
NPP_N=dbo.F_NPP('NPP_N', G.ID_X, S1.ID_U) from S1 where G.ID_U=S1.ID_U and G.ID_X< >@ID_X При добавлении нового ребра возможны два основных случая:
- новое ребро содержит только существующие вершины;
- новое ребро содержит новые вершины. Введем обозначения: ut - добавляемое ребро;
S1t={sk, Sk}, Vk e 1,1 и Kn - множество вершин
ребра с их свойствами; Sk={s[n, k, t]}, n = 1,N -множество свойств k-й вершины в ребре ut; Kn -множество индексов новых вершин в добавляемом
ребре Kn n 1,1 = 0.
Для представления операции добавления в Transact-SQL введем таблицу вершин добавляемого ребра X1=(ID_X1, ID_X, Наименование_вер-шины). В таблице X1 поле ID_X имеет значение NULL, если вершина новая (не содержится в таблице Х). Введем таблицу свойств добавляемого ребра U1=(ID_U1, ID_X, NPP_1, NPP_2, ..., NPP_N), где ID_U1 - поле первичного ключа; ID_X - поле первичного ключа вершины, инцидентной добавляемому ребру; NPP_1, NPP_2, ..., NPP_N - значения свойств вершин в добавляемом ребре. Обозначим наименование нового ребра как @Наименование_ребра.
С учетом введенных обозначений последовательность действий и реализация этих действий в среде Transact-SQL при добавлении нового ребра следующие.
1) Добавление во множество X новых вершин, если они есть в добавляемом ребре, результат -множество X2.
Если Kn^0, то X2=Xu{xk}, VkeKn.
Insert X (Наименование_вершины) (select Наименова-ние_вершины
from X1 where not exists(select * from X where
Х.Наименование_вершины=Х1.Наименование_вер-
шины))
2) Формирование множества вершин и свойств вершин добавляемого ребра X1t={xk, Sk}, xkeX2.
Insert U1 (ID_X) (select X.ID_X from X,X1 where
Х.Наименование_вершины=Х1.Наименова-ние_вершины) Exec INPUT_U1_NPP, где INPUT_U1_NPP - процедура, позволяющая ввести значения свойств вершин добавляемого ребра.
3) Добавление ребра ut, результат - множество U2=Uuut.
Insert U values(@Наименование_ребра) set @ID_U=@@Identity Insert G (ID_X,ID_U, NPP_1, NPP_2,..., NPP_N)
(select ID_X, @ID_U, NPP_1, NPP_2,.., NPP_N from U1)
Удаление вершины. В [1] предлагается называть слабым удалением удаление вершины из реб-
ра с сохранением ребер, сильным удалением - удаление вершин вместе с инцидентными ребрами.
Рассмотрим следующие типовые операции удаления вершины:
- из определенного ребра с сохранением ребра - простое удаление вершины;
- из ребра вместе с ребром (равнозначно удалению ребра, инцидентного вершине) - составное удаление;
- из всех ребер с сохранением ребер - слабое удаление;
- из всех ребер вместе с ребрами (равнозначно удалению ребер, инцидентных вершине) -сильное удаление.
При этом возможны как удаление вершины из множества X, так и сохранение ее в этом множестве. Удаление вершины из множества X возможно только при слабом и сильном удалении вершины, в противном случае будет нарушена целостность базы. Кроме того, удаление вершины из ребра, как и в случае с добавлением вершины в ребро, может привести к изменению координат (свойств) других вершин в этом ребре.
Введем обозначения: xt, t е 1,I - удаляемая вершина; uz, z е 1,M - ребро, из которого удаляется вершина; X1j, X1z - множество вершин, инцидентных j-му и z-му ребрам; U2 - множество ребер после удаления; Ggon(X\xt, U2) - получаемый гиперграф при удалении вершины из множества X; Ggon(X, U2) - получаемый гиперграф без удаления вершины из множества X; U2 - множество ребер гиперграфа, получаемое после удаления вершины xt.
Как и в случае с добавлением вершины, корректировка свойств Sz вершин ребра uz(X1z) в зависимости от свойств вершины xt полностью определяется характером решаемой задачи.
Обозначим функцию, позволяющую получить новое значение свойства NPP вершины ID_X в ребре ID_U, как dbo.F_NPP(NPP, ID_X, ID_U); @Наименование_вершины - наименование удаляемой вершины; @Наименование_ребра - наименование ребра, из которого удаляется вершина.
Простое удаление вершины - удаление вершины из определенного ребра с сохранением ребра: U2={Uj(X1j)uUz(X1z\xt)}, VjeKj, Kj = 1M\z.
delete from G where ID_X=(select ID_X from X where Наиме-нование_вершины=@Наименование_вершины) and ID_U= =(select ID_U from U where Наименование_ребра=@Наиме-нование_ребра)
Корректировку свойств вершин можно записать следующим образом: Sk={s[n, k, z]=f_npp(n, k, z)}, n = 1,N, VkeKm1, Km1 e 1,I, где f_npp(n, k, z) - функция, позволяющая найти новое значение свойства n вершины k в ребре z. В нотации Transact-SQL корректировка будет записана как Update G set NPP_1=dbo.F_NPP( 'NPP_1', ID_X , S1.ID_U), NPP_2=dbo.F_NPP( 'NPP_2', ID_X , S1.ID_U),
NPP_N=dbo.F_NPP( 'NPP_N', ID_X, S1.ID_U) from G where G.ID_U= (select top 1 ID_U from U where
Наименование_ребра=@Наименование_ребра)
Составное удаление вершины - удаление вершины из ребра вместе с ребром можно записать как U2={uj(X1j)}, VkeKj, Kj = 1M\z, в нотации Transact-SQL как
delete from G where ID_U=(select ID_U from U where
Наименование_ребра=@Наименование_ребра)
Так как ребро удаляется, корректировку свойств его вершин проводить не надо.
Слабое удаление вершины - удаление вершины из всех ребер с сохранением ребер можно записать как U2={Uj(X1j)uur(X1r\xt)}, V jeKj, V re eKr, K £ 1M, Kr с 1M, где Kr=M\Kj, где Kj -
множество индексов ребер, не инцидентных вершине xt; Kr - множество индексов ребер, инцидентных вершине xt.
В нотации Transact-SQL слабое удаление вершины запишется как
delete from G where ID_X=(select ID_X from X where
Наименование_вершины=@Наименование_вершины)
Удаление вершины из множества X, то есть Ggon(X\xt, U2), можно записать в виде
delete from X where Наименование_вершины = @Наимено-вание_вершины
Если при этом внешний ключ FR_G_X описать как alter table G add constraint FK_G_X foreign key (ID_X) references X(ID_X) on delete cascade, то удаление вершины из всех ребер будет сделано при удалении вершины из множества X.
Корректировку свойств вершин можно записать следующим образом:
Sk={s[n, k, m]=f_npp(n, k, m)}, n = 1,N, VkeKm1, Km1 e 1j, VmeKr, KcM
select @ID_X=ID_X from X where
Наименование_вершины=@Наименование_вершины Update G set NPP_1=dbo.F_NPP( 'NPP_1', ID_X , ID_U),
NPP_2=dbo.F_NPP( 'NPP_2', ID_X , ID_U), ... , NPP_N=dbo.F_NPP( 'NPP_N', ID_X, ID_U) from G where G.ID_U in (select ID_U from G where ID_X=@ID_X) Сильное удаление вершины - удаление вершины из всех ребер вместе с ребрами: U2= ={uj(X1j)}, VjeKj, VreKr, Kj с 1M\Kr,
K С 1,M, где Kj - множество индексов ребер, не
инцидентных вершине xt; Kr - множество индексов ребер, инцидентных вершине xt. select @ID_X=ID_X from X where
Наименование_вершины=@Наименование_вершины delete from G where ID_U in (select ID_U from G where ID_X=@ID_X)
Так как ребра удаляются, корректировку свойств их вершин проводить не надо.
Удаление ребра. По аналогии с удалением вершины будем различать следующие операции удаления ребер:
- простое - удаление ребра из множества
Ggon;
- составное - удаление ребра из множества Ggon и удаление всех вершин удаляемого ребра из других ребер;
- жесткое - удаление ребра из множества Ggon и удаление всех ребер, в которые входят вершины удаляемого ребра.
При этом возможны как сохранение, так и удаление ребра и соответствующих вершин из множеств U и X.
Введем обозначения: ut - удаляемое ребро, t e 1,M; X1t - множество вершин ребра ut; U2, X2, G2gon(X2, U2) - множество ребер, вершин и граф, соответственно, получаемых после удаления ребра ut.
Простое удаление ребра - удаление ребра из множества Ggon: G2gon(X2, U\ut); U2=U\ut - при удалении ut из множества U или U2=U - при сохранении; X2=X - при сохранении вершин удаляемого ребра в множестве X или X2=X\X1t - при удалении вершин ребра ut из множества X.
При удалении вершин удаляемого ребра из множества X для обеспечения целостности БД также необходимо удалить эти вершины из всех ребер, в которые они входят, то есть U2={uj(X1j\X3j)}, где X3j=X1jnX1t, Xj0, Vj e 1,M. В этом случае следует провести корректировку свойств оставшихся вершин. Обозначим через Kt множество индексов вершин удаляемого ребра. Тогда корректировку свойств оставшихся вершин можно записать следующим образом:
Sk={s[n, k, j]=f_npp(n, k, j)}, n = 1,N,
Vk e 1Д \ Kt, Vj e 1,M, Xj0, X3j=X1jnX1t.
Пусть X3=(ID_X3, ID_X, NPP_1, ..., NPP_N)
- таблица, содержащая ID_X вершин и свойства вершин удаляемого ребра; @ID_U - ID_U удаляемого ребра.
select @ID_U=ID_U from U where
Наименование_ребра=@Наименование_ребра /* Запоминание множества вершин удаляемого ребра */
select ID_X, NPP_1, ..., NPP_N into X3 from G where ID_U=@ID_U
/* Удаление ребра */
delete from G whеre ID_U=@ID_U
При удалении вершин удаляемого ребра из множества X для обеспечения целостности БД необходимо удалить эти вершины из всех ребер гиперграфа и, соответственно, произвести корректировку свойств оставшихся в этих ребрах вершин. Причем сначала надо выполнить корректировку вершин, а потом их удаление. В этом случае простое удаление трансформируется в составное.
/* Корректировка свойств вершин */ update G set NPP_1=dbo.F_NPP( 'NPP_1', ID_X , ID_U) ,
NPP_2=dbo.F_NPP( 'NPP_1', ID_X , ID_U) , ... , NPP_N=dbo.F_NPP( 'NPP_N', ID_X, ID_U)
from G, X3 where ID_U= (select ID_U from G where ID_X in (Select ID_X from X3)) and ID_U< >@ID_U delete from X where ID_X in (select ID_X from X3)
Если внешний ключ FR_G_X описать как alter
table G add constraint FK_G_X foreign key (ID_X) references
X(ID_X) on delete cascade, TO удаление вершин ИЗ всех ребер будет сделано при удалении вершины из множества X, в противном случае можно воспользоваться оператором
delete from G where ID_U< >@ID_U and ID_X in (select ID_X from X3)
Составное удаление ребра - удаление ребра и удаление всех вершин удаляемого ребра из других ребер. Составное удаление ребра - это простое удаление с удалением вершин ребра из множества X, которое описано выше.
Жесткое удаление ребра - удаление ребра и удаление всех ребер, в которые входят вершины удаляемого ребра, сводится к получению гиперграфа G2gon(X2, U\U3), где X2=X при сохранении вершин удаляемого ребра в множестве X или X2=X\X1t при удалении вершин ребра ut из множества X; U3 - множество ребер, в которые входят вершины удаляемого ребра, U3={Uj(X1j)}, X1jO nX1t^0, Vje 1,M. Так как ребра, содержащие вершины удаляемого ребра, удаляются, проводить корректировку свойств их вершин не надо.
Пусть X3=(ID_X3, ID_X) - таблица, содержащая ID_X вершин удаляемого ребра; @ID_U -ID_U удаляемого ребра, тогда жесткое удаление ребра можно записать как
select @ID_U=ID_U from U where
Наименование_ребра=@Наименование_ребра select distinct ID_X into X3 from G where ID_U=@ID_U delete from G where ID_U in (select ID_U from G where ID_X in (select ID_X from X3))
На основании изложенного можно сделать следующее заключение. В работе введено понятие ^-ориентированного гиперграфа и описаны основные операции над такими гиперграфами, представленными в реляционной БД. Эти операции имеют как теоретико-множественное описание, так и описание на языке Transact-SQL. Ж-ориенти-рованные гиперграфы и операции над ними использовались для описания структуры технических объектов и создания программных шаблонов, предназначенных для разработки систем автоматизированного управления [4] и проектирования технологического оборудования [5].
Литература
1. Батищев Д.И., Старостин Н.В., Филимонов А.В. Многоуровневая декомпозиция гиперграфовых структур // Приложение к журналу «Информационные технологии». 2008. № 5. 34 с.
2. Овчинников В.А. Операции над ультра- и гиперграфами для реализации процедур анализа и синтеза структур сложных систем // Наука и образование. 2009. № 10. URL: http://te-chnomag.edu.ru/doc/132769.html (дата обращения: 11.02.2010).
3. Мокрозуб В.Г. [и др.]. Применение гиперграфов и реляционной базы данных для описания структуры радиотехнических систем // Успехи современной радиоэлектроники. 2009. № 11. С. 37-41.
4. Мокрозуб В.Г., Егоров С.Я., Немтинов В.А. Процедурные и информационно-логические модели планирования выпуска продукции и ремонтов технологического оборудования многоассортиментных производств // Информационные технологии в проектировании и производстве. 2009. № 2. С. 72-76.
5. Мокрозуб В.Г., Мариковская М.П., Красильников В.Е. Интеллектуальная автоматизированная система проектирова-
ния химического оборудования // Системы управления и информационные технологии. 2007. № 4.2(30). С. 264-267.
УДК 519.179.1+004.021
АЛГОРИТМ ПОСТРОЕНИЯ ДЕРЕВА ДЕКОМПОЗИЦИИ ГИПЕРГРАФА НА ОСНОВЕ АЦИКЛИЧНОСТИ
В.В. Быкова, к.т.н.
(Институт математики Сибирского федерального университета, г. Красноярск,
Задача нахождения оптимального дерева декомпозиции гиперграфа возникает во многих приложениях. Между тем она является №-трудной. В данной работе предлагается новый полиномиальный по времени эвристический алгоритм, основанный на пополнении гиперграфа до ациклического. Алгоритм использует жадную стратегию, направленную на минимизацию ширины конструируемого дерева декомпозиции.
Ключевые слова: алгоритмы на графах, гиперграфы, дерево декомпозиции, древовидная ширина, ацикличность.
Структура многих ЖР-трудных задач комбинаторной оптимизации может быть описана гиперграфом. Такие задачи возникают в системах принятия решений, БД, при анализе информационных и коммуникационных сетей, конструкторском проектировании радиоэлектронной и вычислительной аппаратуры, лингвистической трансляции, при формировании трафика компьютерных сетей и т.д. Дерево декомпозиции гиперграфа дает возможность организовать процесс поиска оптимального решения по принципу «разделяй и властвуй». Если древовидная ширина гиперграфа ограничена сверху некоторой константой, то многие ЖР-трудные задачи комбинаторной оптимизации могут быть решены за полиномиальное время [1]. Древовидная ширина - это числовая характеристика гиперграфа, определяемая через оптимальное дерево декомпозиции. К сожалению, сама задача нахождения оптимального дерева декомпозиции также ЖР-трудная, поэтому в алгоритмической практике востребованы эвристики, позволяющие получать хорошие деревья декомпозиции за разумное время.
В данной работе предлагается эвристический алгоритм CTDA (Computing Tree Decomposition by Acyclicity), основанный на пополнении гиперграфа до М-ациклического. Свойство М-ацикличности (называемое также а-ацикличностью) широко эксплуатируется в различных приложениях теории гиперграфов, так как обеспечивает полиномиальную вычислимость ряда важных характеристик и графических конструкций, связанных с гиперграфами [2-4]. Употребление данного свойства в алгоритме CTDA дает возможность создавать за полиномиальное время дерево декомпозиции гиперграфа с разной степенью приближения к оптимальному дереву декомпозиции.
Гиперграф и дерево декомпозиции. Используем терминологию и обозначения, принятые в
[3-5]. Пусть задан гиперграф Н=(Х, Ц) с конечным множеством вершин X и ребер Ц. В общем случае Ц - конечное семейство произвольных подмножеств множества X. Гиперграф Н=(0, 0) считается пустым. Пусть Ц(х) - множество ребер, инцидентных в Н вершине хеХ; Х(и) - множество всех вершин, инцидентных в Н ребру иеЦ. Число I Ц(х) | определяет степень вершины х, а | Х(и) | -степень ребра и. Элемент гиперграфа степени 0 считают голым, степени 1 - висячим. Два ребра и, уеЦ кратны в Н, если Х(и)=Х(у). Ребро и вложено в ребро V, когда Х(и)сХ(у). Гиперграф называется минимальным, если он не содержит голых элементов, вложенных и кратных ребер. Ранг гиперграфа Н=(Х, Ц) определяется как максимальная степень его ребра: г(Н)=тахиеЦ | Х(и) |.
Существуют различные способы задания гиперграфа. Так, если Х={х19 х2, ..., хп}, п>1, и Ц={и19 и2, ..., ит}, т>1, то (п, т)-гиперграф Н=(Х, Ц) однозначно описывается матрицей инциденций А(Н)={ау}, где а^=1 при х^Х^) и а^=0 при х^Х(и^, 1=1, 2, ..., п, ]=1, 2, ..., т. Универсальным способом задания гиперграфа также является ке-нигово представление. Кенигово представление гиперграфа Н=(Х, Ц) - это обыкновенный двудольный граф К(Н), отражающий отношение инцидентности различных элементов гиперграфа, с множеством вершин ХиЦ и долями Х, Ц. Многие структурные свойства гиперграфа определяются через одноименные свойства кенигова представления. Так, гиперграф Н считается связным, если граф К(Н) связный. Далее в качестве исходных гиперграфов будем рассматривать, не нарушая общности, только непустые, минимальные и связные гиперграфы.
Частично структурные особенности гиперграфа Н=(Х, Ц) описывают ассоциированные с ним обыкновенные графы Ь(2)(Н) и Ь(Н). Граф Ь(2)(Н)