Список литературы
1. Манасевич В Синтезаторы частот. (Теория и проектирование): Пер. с англ. / Пол ред. A.C. Галина. - М.: Связь, 1979. - 384 с.
2. Шарапов Ю. И., Крылов Г.М., Пантелеев Ю.П. Преобразование сигнала без комбинационных частот. - М.: ИГТРЖР. 2001. - 288 с.
3. Богатырев Ю. К. Быкадоров А. А.. Логинов В. И. Оптимизация структур СВЧ-преобразователей приемо-передающих систем радиорелейных линий связи / Вестник Верхне-Волжского отделения академии технологических наук Российской федерации. Серия: Высокие технологии в радиоэлектронике. - 1(2)/96. - С. 80-82.
4. Быкадоров A.A., Логинов В.И. Алгоритмы анализа частотного распределения систем нелинейного преобразования частот // Сборник "Технико-экологические вопросы речного судоходства". - Вып. 269. - Н. Новгород: ВГАВТ, 1994. - С. 67-74.
5. Логинов В.И... Маркова С.А. Номограмма комбинационных частот - алгоритмический подход // Радиотехника, 1989. - № 1. - С. 43-46.
1 ФГУП "НПП "Полет"".
603600, Нижний Новгород, пл. Комсомольская, 1
: Волжская государственная академия водного транспорта.
603600, Нижний Новгород, ул. Нестерова, 5. e-mail: Loginov@aqua.sci-nnov.ru
OPTIMIZATION OF FREQUENCY DISTRIBUTION OF CONVERTERS OF FREQUENCIES IN VIEW OF RESTRICTIONS ON PARAMETERS OF STRIP FILTERS
I. V. Sorokin, V. I. Logtnov
The technique and algorithm of search of optimum parities of mixed frequencies of converters is offered in view of form Amplitude Frequency Characteristic of the filter of intermediate frequency. The algorithm concerns to a class no iteration and possesses high speed.
УДК 681.3.015
НОВЫЙ ПОДХОД К ПРЕДСТАВЛЕНИЮ ГИПЕРГРАФОВЫХ
СТРУКТУР
Д. И. Батищев, С. Е. Власов, Н. В. Старостин, А. В. Филимонов
Рассматривается актуальный класс задач декомпозиции гиперграфов. Приведен обзор базовых операций над гиперграфами. Предлагаются новые операции фильтрации. Предлагается многоуровневая схема решения задач декомпозиции гиперграфов, основанная на фильтрации. Обсуждается вопросы программной реализации описанных концепций.
Одним из этапов конструкторского проектирования радиоэлектронных систем и устройств является этап компоновки, который предполагает распределение элементов схемы устройства по группам, где каждая группа элементов технологически исполняется как отдельное устройство, функциональный блок, монтажный шкаф, слой на печатной плате и т.п. в зависимости от постановки задачи. Актуальность задачи компоновки явилась причиной появления множества работ, посвященных ее решению [5, 6].
Качество алгоритмов, предлагаемых в этих работах, в значительной степени зависит от выбранной математической модели исходной схемы устройства. Наиболее общеупотребительной моделью является граф, позволяющий сохранить информацию о схеме и строить формальные алгоритмы, удобные для реализации на вычислительных системах. Однако представление схемы графом затруднительно из-за известной проблемы представления цепей1, которая решается либо заменой цепей полными подграфами, что вводит лишние ребра, либо заменой их произвольными деревьями, что случайным образом влияет на оптимальность общего решения задачи. При этом меняется содержательный смысл схемы, усложняются алгоритмы и возникает задача обратного перехода от графа к схеме из-за неоднозначности модели.
В силу вышеперечисленных сложностей для решения задачи компоновки исследователи обратили внимание на использование гиперграфовых моделей схемы устройств [3, 6]. Гиперграф - это такое обобщение неориентированного графа, когда ребрами могут служить произвольные, а не только двух- и одновершинные подмножества заданного множества вершин. Гиперграф естественно моделирует электрические цепи схемы, устраняя большую часть проблем, имеющих место в случае использования графовых моделей.
Задачи компоновки сводятся к задачам декомпозиции графов [1,2]. Постановки подобных задач могут включать массу ограничений, связанных с числом подграфов, с числом вершин в подграфах, с внутренней связностью и д.р. В допустимых решениях, как правило, требуется минимизировать внешние связи. Порядок разбиваемых гиперграфов в реальных задачах может достигать сотен тысяч. Все это подводит исследователей к необходимости использования эвристических алгоритмов, учитывающих специфику задачи и сверхбольшой порядок разбиваемого гиперграфа, так как ставшие уже традиционным быстрые конструктивные и улучшающие алгоритмы [2], как правило, не способны находить «удовлетворительные решения».
Особенно популярным в последнее время стал прием редукции графов, основанный на уменьшение количества узлов графа, что позволяет заметно увеличить размерности разбиваемых графов. Механизм редукции графов нашел применение во многих разнообразных гибридных методиках разбиения графов. Примером тому могут служить многоуровневые алгоритмы [8,9], отличительной чертой которых является наличие трех основных процедур: загрубение (coarsening), в которой граф подвергается редукции; разбиение (partitioning) редуцированного графа; отображение редуцированного разбиения на исходный граф (uncoarsening). Как показывает практика, в реальных задачах на сверхбольших графах [7], которые требуют быстрого получения допустимого решения, применение механизма редукции подчас оказывается единственно возможным средством, позволяющим резко сократить время работы алгоритма и при этом получить удовлетворительные решения.
При построении алгоритма, основанного на редукции гиперграфа, особо остро встает вопрос нахождения такого представления гиперграфовых структур (в памяти вычислительной системы), которая позволит организовать эффективное управление гиперграфом в процессе работы алгоритма. В настоящей работе предлагается механизм управления гиперграфом - фильтрация, который позволяет по-новому взглянуть на процесс редукции и открывает дополнительные возможности в построении алгоритмов над гиперграфами.
' Эта проблема еще известна под названием «проблема узлов»
Основные определения
Прежде чем перейти непосредственно к описанию механизма фильтрации приведем ряд важных определений.
Пусть У - конечное непустое множество, Е - некоторое семейство непустых (необязательно различных) подмножеств множества У. Пара (У,Е) называется гиперграфом с множеством вершин У и множеством гиперребер Е. Число \УН\ вершин гиперграфа Н называется его порядком и обозначается через |//|. Если \Н]=п, \ЕН\=т, то Н называется (п, т) - гиперграфом.
Если вершина уе V принадлежит ребру ееЕ, то будем говорить, что они инцидентны. Каждой вершине уе V гиперграфа Н сопоставим множество £(у) всех инцидентных ей гиперребер. Число |£(у)| называется степенью вершины V, а \е\ - степенью гиперребра е. Поскольку ребрами гиперграфа могут быть лишь непустые подмножества вершин, то степень любого ребра не меньше единицы, т.е. |е|>1. Вершина гиперграфа, не инцидентная никакому ребру, называется изолированной.
Две вершины V1 и у" гиперграфа Н={У,Е) назовем смежными, если существует ребро ееЕ, которое содержит обе эти вершины. Два гиперребра е' и е" гиперграфа Н назовем смежными, если е'пе"*0. Для вершины у0 гиперграфа Н=(У,Е) множество всех смежных вершин £'(у0) = [^е называется окружением вершины у0.
ее£(у0)
Иногда удобно представлять гиперграф в виде графа Кёнинга - это двудольный граф К(Н) с множеством вершин У*иЕ и множеством ребер {(у,е): (у,е)е УхЕ, уее}.
Подгиперграфом, порожденным множеством вершин У, называется гиперграф Н'={У,ЕГ), где Ус У, Е' = {е': е'=епУ#0, ееЕ}. Таким образом, в подгиперграфе гиперребра образованы исключительно на вершинах из множества вершин данного гиперграфа2.
Частью гиперграфа3 Н=(У,Е), называется гиперграф Н' ^(У\ЕГ), где 0*УсУ, Е'сЕ. В части гиперграфа Н'=(У\ЕГ) все множество гиперребер Е' делится на две группы: внешние и внутренние гиперребра. Внешним гиперебром для части графа Н' называется такое гиперребро ееЕ', что 3 уее, уеУ. Внутренним гиперебром для части графа Н' называется такое гиперребро ееЕ', что для V гее, у в К'.
Алгоритмы в процессе работы могут осуществлять разнообразные операции над гиперграфовой структурой. Введем базовые операции над гиперграфом.
Введение гиперребра. Введением ребра е0€Е (е0сУ) гиперграфа Н назовем операцию перехода к гиперграфу Н'=(У,ЕГ), где £'=£Ъ{е0}.
Удаление гиперребра. Удалением ребра е0еЕ гиперграфа Н назовем операцию перехода к гиперграфу Н-(У,Е'), где £-£\{е0}.
Стягивание гиперребра. Стягиванием ребра4 е0еЕ гиперграфа Н назовем операцию перехода к гиперграфу Я-(К',£"), где К,=(К\е0)и{у0}, у0 - новая вершина (у0г У), Е-Е^Ег, £|={е': е-(е\е0)^{у0}, ее£\{<?0}, епеоф0}, Е2={е: епео=0, ееЕ\{е0}}.
1 Это определение будем называть сильным определением подгиперграфа. Оно восходит к К.Бержу (дается определение подграфа) и распространено в большей части русскоязычной литературы. Имеется и другое
определение гиперграфа.
' Это определение будем называть слабым определением подгиперграфа или частью подграфа Это определение распространено в части русскоязычной и практически во всей англоязычной литературе.
4 Операция стягивания гиперребра означает отождествление инцидентных вершин к стягиваемому гипер-
ребру.
Введение изолированной вершины. Введением вершины у0й У гиперграфа Я назовем операцию перехода к гиперграфу Н'={У',Е), где Г=Ии{у0}.
Введение вершины в ребро. Введением ребра v0e У в ребро е0 гиперграфа Я назовем операцию перехода от Я к гиперграфу Н'=={У',ЕГ), где К'=Ки{у0}, ЕЧ^Е*о)и{е*}, е*=е0и{у0}.
Удаление вершины. Обозначим через £(у0)={е: у0ее, ееЕ} совокупность ребер гиперграфа Я, содержащих вершину у0. Пусть существует такал вершина у0е V. Тогда удалением вершины у0 назовем переход от гиперграфа Я к Н'={У',ЕГ), где Н'=(Л{у0}, Е-Е\Е(у0)иЕ*, Е*={е*: е*=е\{у„}#0, ее£(у0)}.
Удаление подгиперграфа (части гиперграфа). Пусть существует подгиперграф гиперфафа Н=(У,Е). Тогда удалением подгиперграфа Я' из гиперграфа Я
назовем переход от гиперграфа Я к Н"=(У",Е"), где У"=У\У, \
Я"=(Г,£"), где Г=ПГи{у0}, у0- новая вершина (у0еК), £"=
и Е *, £*={<?*: е*=е\У'*0, епУ'*0, ееЕ}.
хеГ
Стягивание множества вершин (отождествление, слияние). Пусть У'аУ. Тогда стягиванием множества У из подграфа* Н=(У,Е) назовем переход от гиперграфа Я к
Л
и Е*.
»«к-
Е*={е*: е*=(е\К')и{Уо}, е\У'*0, ег\У'*0, ееЕ}. Вершину, образующуюся при стягивании некоторого множества вершин, будем называть гипервершиной (псевдовершиной).
Возможны бинарные операции над гиперграфами. Примером бинарных операций могут служить операции объединения, пересечения гиперграфов.
Объединение (наложение) гиперграфов. Гиперграф Я, называется объединением (или наложением) гиперграфов Я2 и Я3, если КЯ|=КЯ2иКЯ3 и £Я|=£Я2и£Я3. В этой ситуации пишут Я|=Я2иЯ3.
Пересечение гиперграфов. Гиперграф Н\ называется пересечением гиперграфов Я2 и Я3, если КЯ,=КЯ2пКЯ3 и ЕНх=ЕН2слЕНъ. В этой ситуации пишут Я,=Я2гчЯ3.
Вычитание гиперграфов. Гиперграф Н\ называется вычитанием гиперграфов Я2 и Я3, если КЯ,=КЯ2/КЯ3 и £Я,=£Я2/£Я3. В этой ситуации пишут Я,=Я2/Я3.
Операции фильтрации и фильтры.
В реальных задачах в гиперграфовые модели схем приходится добавлять разнообразную дополнительную информацию (длина соединений, электрические и физические характеристики элементов и т.п.). В силу этого в действительности исследователям приходится работать с помеченными гиперграфами. Задавая на вершинах и гиперребрах гиперграфа Н=(У,Е) отображение ан:У^Е—*М, где М- некоторое семейство непустых (необязательно различных) подмножеств множества А, получим помеченный (взвешенный) гиперграф (Я,а). Элементы множества А называются метками или атрибутами.
Таким образом, а отображает вершину уе У в набор атрибутов а//(у)сЛ, приписанных этой вершине, и гиперребро сеЕ в набор атрибутов а«(е)о4, приписанных этому гиперребру.
5 Операция стягивания подгиперграфа и части гиперграфа определяется точно также как и операция стяги вания множества вершин.
Для гиперграфа Н введем отображение (Он:(УиЕ)хА-*Я, которое каждой паре значений: элемент графа и его атрибут возвращает значение атрибута. Здесь 91- это множество всевозможных значений атрибутов. Допустим, каждый элемент схемы характеризуется собственными габаритами: ширина и высота. В гиперграфовой модели этой схемы каждой вершине ve У будет приписан набор a^v), состоящий из двух атрибутов «ширина» и «высота», а отображение co„<v,a,), где a,ea//(v), возвратит численное значение габарита.
Будем говорить, что элемент с гиперграфа Я имеет атрибут а, со значением р;, если a,ea/y(c) и p;=cüw(c)aí). Набор атрибутов а ¡¿с) и отображение (Иц{с)\А-*91 будем называть атрибутивной информацией элемента се Я. Введем операции над атрибутами элементов гиперграфа.
Добавление атрибута. Пусть имеется помеченный гиперграф Н=(У,Е,а,ш). Добавление атрибута а0е А со значением (30е iff к элементу ce Kj£ предполагает переход к новому помеченному гиперграфу Н={У,Е,а\а'), где a'/Xc^/XcWao}, ca'/Xc,a0)=p0-
Изменение атрибута. Пусть имеется помеченный гиперграф Н=(У£,а,а>). Изменение значения атрибута otoeA на значение р0е#для элемента ceFU£ предполагает переход к новому помеченному гиперграфу Н={У,Е,а,а'), где ш'н(с,ао)=Ро-
Под фильтром понимается оператор Ф, на вход которого подается гиперграф Я, а на выходе получается новый гиперграф ФЯ. Кроме исходного гиперграфа Я фильтр на вход получает условие фильтрации, которое можно представить в виде отображения <p:/4xí7?—»{0,I}. Отображение ср каждой паре («атрибут», «значение») ставит в соответствие либо 0, либо 1. Значение 1 подразумевает, что элемент исходного гиперграфа, имеющий данный атрибут с данным значением, будет профильтрован - т.е. подвержен работе оператора фильтрации. Таким образом, отображение (р:Ах9?—»{0,1} для гиперграфа Я однозначно определяет множество элементов гиперграфа фЯ, для которых будет выполняться условие фильтрации:
фЯ= {сеН: 3 a,ea/у(с): ф(а„ с%(с,а,))=1}.
Будем обозначать через фНУ - множество вершин гиперграфа Я, для которых выполняется условие фильтрации ф, фНЕ - множество гиперребер гиперграфа Я, для которых выполняется условие фильтрации ф. Таким образом, фЯ = фЯКифЯЕ.
Элементы, для которых выполняется условие фильтрации, переходят в новый гиперграф ФЯ, причем набор атрибутов элемента и их значений в гиперграфе ФЯ будет таким же, как и в исходном гиперграфе Я:
а/Хс)=аФН(с) и cow(c)a/)=to®H(c,a,) для Va,ea«(с), где сеЯ/фЯ.
Предлагается два типа фильтров: скрывающие фильтры и объединяющие фильтры.
В общем случае скрывающий фильтр на входе принимает гиперграф Я, а на выходе получает новый гиперграф ФЯ = Я/фЯ. Таким образом, результатом работы скрывающего фильтра есть исходный гиперграф без элементов, удовлетворяющих условию фильтрации. Предлагаются три частных случая скрывающих фильтра:
- фильтр, скрывающий только гиперребра, получает гиперграф ФЯ методом удаления только ребер фНЕ, которые удовлетворяют условию фильтрации;
- фильтр, скрывающий только вершины, получает гиперграф ФЯ методом удаления только вершин фЯК, которые удовлетворяют условию фильтрации.
- фильтр, скрывающий подграфы, получает гиперграф ФЯ методом удаления подгиперграфа, образованного множеством вершин фНУ, которые удовлетворяют условию фильтрации.
Основная идея объединяющих фильтров заключается в применении операций стягивания элементов исходного гиперграфа Я, удовлетворяющих условию фильтрации ср. Предлагаются три варианта объединяющего фильтра:
- фильтр, объединяющий гиперребра, получает гиперграф ФЯ методом стягивания гиперребер <рНЕ, которые удовлетворяют условию фильтрации, в одно новое гиперребро е0. При этом гиперребро е0 будет иметь некоторый атрибут а, со значением р, только том случае, если атрибут a¡ со значением (3¡ имеют все гиперребра из <рНЕ\
- фильтр, объединяющий вершины, получает гиперграф ФН методом стягивания вершин фНУ, которые удовлетворяют условию фильтрации, в одну новую гипервершину v0. При этом гипервершина v0 будет иметь некоторый атрибут a¡ со значением Р; только том случае, если атрибут ос, со значением р; имеют все вершины из фНУ;
- фильтр, объединяющий гиперребра по значению атрибутов. Фильтр сначала разбивает все множество гиперребер фЯ£ на классы эквивалентности по признаку равенства значений заданного атрибута а0 - дополнительный параметр фильтра. Т.е. каждое значение атрибута oto определяет класс эквивалентности. Затем гиперребра каждого класса стягиваются в новое гиперребро. При этом каждое гиперребро v будет иметь некоторый атрибут а, со значением р, только том случае, если атрибут а, со значением Р7 имеют все гиперребра класса.
- фильтр, объединяющий вершины по значению атрибутов. Фильтр сначала разбивает все множество вершин фНУ на классы эквивалентности по признаку равенства значений заданного атрибута а0 - дополнительный параметр фильтра. Т.е. каждое значение атрибута а0 определяет класс эквивалентности. Затем вершины каждого класса стягиваются в новую гипервершину. При этом каждая гипервершина v будет иметь некоторый атрибут a¡ со значением Ру только том случае, если атрибут а, со значением Р¡ имеют все вершины класса.
Пусть имеется помеченный гиперграф Н=(У,Е,а,со), задано условие фильтрации ф для некоторого фильтра Ф. Представим работу фильтров на уровне отдельных элементов. Очевидно, что после работы фильтра Ф для любого элемента с гиперграфа ФН можно указать непустое множество элементов Ф"'(с) исходного гиперграфа Н, которые оказали влияние на формирование атрибутивной информации сс/Хс) и
Результат работы фильтра ФЯ=(ФК,Ф£,Оф,й)ф) назовем видом гиперграфа Н, если любая операция по изменению атрибутивной информации для любого элемента из ФН приводит к изменению атрибутивной информации соответствующих элементов из Н по следующему правилу: добавление (изменение) атрибута а0еА со значением р0е W для элемента сеФН приводит к добавлению (изменение) атрибута а0еА со значением р0€ #?для всех элементов Ф''(е)сЯ.
Очевидно утверждение: Если ФН - вид гиперграфа Н, а ФФН - вид гиперграфа ФН, то ФФЯ - является видом гнперграфа Н.
Суперпозиция фильтров Ф к графу Н есть вид графа Н. Число суперпозиций фильтров Ф назовем порядком вида гиперграфа. Таким образом, Н - это вид нулевого порядка гиперграфа Н, ФН - вид первого порядка гиперграфа Н, ФФН - вид второго порядка гиперграфа Я.
Приложение фильтров для решения задачи декомпозиции гиперграфа
Для решения задач над гиперграфами больших порядков предлагается многоуровневая схема. Переход от уровня к уровню строится на механизмах фильтрации и предполагает генерацию гиперграфа меньшей размерности. Общее число уровней в схеме может задаваться как параметр алгоритма или вычисляться исходя из размерности исходного гиперграфа. Итогом применения многоуровневой системы фильтрации является переход к виду гиперграфа приемлемого порядка.
Таким образом, процесс многоуровневой «свертки» организован следующим образом:
Стадия 1. Редукция графа большого порядка.
1.1. Имеется исходный гиперграф Я0.
1.2. ¿=0
1.3. В гиперграфе Я, при помощи любой схемы редукции [9], распределяем вершины по группам и каждой вершине приписываем атрибут, описывающий принадлежность вершины к своей группе.
1.4. От исходного гиперграфа Н0 переходим к виду гиперграфа Н\=ФН, где Ф - один из объединяющих фильтров.
УН
1.5. Если порядок гиперграфа УН \ < 0'/, , где к - коэффициент редукции, то переход на стадию 2.
1.6.1 = 1+1
1.7. Переход к п.1.2.
Таким образом, стадию 1 можно отобразить в виде схемы перехода от вида гипер-фафа меньшего порядка к виду гиперграфа большего порядка.
Но Н \ —* Н 2 •••—* Ип-1-* Н п
Стадия 2. Решение задачи декомпозиции редуцированного гиперграфа. В качестве решающего алгоритма предлагается эволюционно-генетический алгоритм [1,2]. Результатом решения задачи разбиения - есть допустимое разбиение Х„. Стадия 3. Восстановление редуцированного разбиения на исходный граф. Процесс восстановления редуцированного разбиения в исходный граф заключается в приписывании атрибутов вершинам, значения которых указывают номер класса разбиения, в который попала вершина редуцированного гиперграфа. Так как редуцированный гиперграф является видом исходного гиперграфа, то атрибутивная информация о принадлежности подграфам разбиения распространится на вершины всех видов исходного гиперграфа больших порядков, в том числе и исходного гиперграфа Я0. Таким образом, схему восстановления решения задачи можно представить в виде
Х„ —»Ао—► АУо
Для повышения качества получаемого решения предлагается улучшающий алгоритм [1], основанный на парных вершинных обменах. Подобную адаптацию целесообразно применять как локальную оптимизацию на каждом уровне многоуровневой схемы. Таким образом, процесс восстановления решения также предлагается организовать по принципу многоуровневой схемы: по решению Ху задачи на виде гиперграфа Н„ восстанавливаем решение Х„Л на графе Н„.ь применяем улучшающий алгоритм и получаем решение X по решению А^ц восстанавливаем решение Хк.2 и так далее, пока не будет восстановлено улучшенное решение Х*0. Таким образом, схему восстановления решения задачи можно представить в виде
Xk —» Хк.\ —+)?k.\ —* Хк.2 —»Хук.г—>... —► А"| —»—♦ Ао—» A"v0
Аспекты программной реализации гиперграфа
Для того, чтобы правильно организовать реализацию необходимо выделить программные сущности, абстрагирующие объекты предметной области. На первый взгляд для построения программной реализации гиперграфовых моделей необходимо всего три таких сущности - вершина, гиперребро и гиперграф. Однако, более детальный анализ обязанностей, которые несут программные компоненты, позволил выделить еще одну сущность, которая обеспечивает общую для всех абстракций функциональность - как семантически важную (например, поддержка атрибутов), так и чисто технического характера.
С учетом вышесказанного программные компоненты должны быть организованы как показано на Рис. 1 Класс, искусственно выделенный после анализа обязанностей абстракций, отмечен черным цветом, и называется HyperObject. Важно, что он содержит реализацию механизма атрибутов. Таким образом, любой класс, унаследованный от HyperObject, автоматически наследует и возможность управлять атрибутами. Такая техника позволяет избежать дублирования кода и сделать систему более наглядной и гибкой. Из диаграммы видно, что фактически от HyperObject наследуются три класса - Vertex, HyperEdge и HyperGraph, которые абстрагируют соответственно вершину, гиперребро и гиперграф. Однако, стоит отметить, что наследование HyperGraf от HyperObject не прямое, а косвенное - через Vertex. Это очень удобно, поскольку позволит включать в гиперграфы в качестве вершин другие гиперграфы и организовывать таким образом сложные иерархические структуры.
В качестве инструмента выбран язык С#, разработанный фирмой Microsoft, поскольку он содержит все возможности, необходимые для реализации изложенных выше идей. Кроме того, для этого языка существует ряд компиляторов и сред выполнения, которые позволяют построить описываемую программную систему для целого ряд операционных сред и аппаратных конфигураций.
Рис. 1. Диаграмма классов гиперграфа
Язык программирования С# предоставляет возможность организации передачи сообщений между объектами программной системы. Эта полезная возможность используется для уведомления одних компонент программной системы об изменении состояния других. На данном этапе передача сообщений используется в двух случаях:
- для организации атрибутивной связи между видом гиперграфа и гиперграфом.
- для поддержания кэшей в актуальном состоянии.
В первом случае фильтр, формирующий вид гиперграфа, создает также зависимость между видом гиперграфа и гиперграфом, назначая сообщению, генерируемому элементом вида гиперграфа при изменении атрибута, соответствующий обработчик. Этот обработчик при возникновении такого события просматривает список элементов графа, принимавших участие в формировании элемента вида, который сгенерировал событие, и заставляет их поменять свои атрибуты соответствующим образом. На рис. 2 представлена диаграмма последовательностей для такой ситуации. В этой ситуации в формировании вершины вида (к примеру, в ходе работы объединяющего фильтра для вершин) принимали участие вершины исходного гиперграфа уь у2 и у3.
Ii I Iii
Рис. 2 Диаграмма последовательностей при изменении атрибута вершины вида гиперграфа
Такая организация имеет ряд существенных достоинств: во-первых, она прозрачна для внешнего клиента, т.е. клиенту нет никакой необходимости заботиться об установке связей, они будут установлены без его ведома, во-вторых, использование сообщений позволяет организовывать сложные связи без ощутимого разрастания кода.
Об использовании модели сообщений для поддержания актуального состояния кэшей будет рассказано ниже.
Система классов, реализующих фильтры, построена в соответствии с классификацией фильтров, введенной ранее (см. рис. 3).
Кроме описанных ранее фильтров в системе присутствует также ряд вспомогательных, например, фильтр, убирающий ребра - дубликаты. Помимо этого, фильтр, объединяющий вершины, и фильтр, объединяющий вершины по значению атрибутов, упакованы в единую сущность - НуреЮгаПошУеЛехЕМег. То же справедливо и для фильтров, оперирующих гиперребрами.
В обязанность всех фильтров входит две операции - создание гиперграфа, являющегося видом, и организация связей между гиперграфом и его видом путем назначения нужным сообщениям, генерируемым элементами вида, нужных обработчиков.
Существует ряд операций (таких как получить список элементов гиперграфа, обладающих заданным значением атрибута или получить список ребер, инцидентных заданной вершине и т. д.), которые часто используются, и в то же время очень ресурсоемки, поскольку требуют просмотра всего гиперграфа, что для гнперграфов, размерность которых исчисляется сотнями тысяч, занимает значительное время. Для ускорения вы-
полнения таких операций был предложен механизм кэширования. Объект, реализующий принцип кэширования, запоминает для каждого набора входных параметров возвращаемое значение. Например, клиент попросил составить список гиперребер, инцидентных заданной вершине. Если такой запрос поступил впервые, то будут просмотрены все ребра гиперграфа и построен такой список; после этого список будет запомнен механизмом кэширования. При поступлении следующего такого же запроса запомненный результат будет выдан немедленно без прохождения гиперграфа.
| Нур«|Сп|(рачгеНури(5<»|Н||)>р|Не1 | [ Нур»>Ои1р||»иНур«Ви<.)01ПрЩ«| ] | НурчСга1ГН1«га.Нур«гСи1У»|1«110ирк»цЯ.тоу«р|1Ч1
НуреЛЗ(а(РЛ»га Нур«гвгз№|Ки
Нур>Юи<Р<|»г»Н)гр«гСга1Ни1ае<)деР|Ц»| | | Нур«гС|^РДИпНур«6гаМк<«У«гчхР|1|>г
Рис. 3 Иерархия классов фильтров
На сегодняшний день реализованы механизмы кэширования для следующих операций:
- получить список вершин, обладающих заданным атрибутом;
- получить список гиперребер, обладающих заданным атрибутом;
- получить список гиперребер инцидентных заданной вершине;
- получить список вершин, смежных с заданной.
Поскольку гиперграф может быть изменен после кэширования информации, то встает вопрос о поддержании кэшей в актуальном состоянии. Например, если состав вершин или гиперребер был изменен, то велика вероятность того, что состояния кэшей, созданных для поддержки последних двух операций окажутся неверными. Поддержка соответствия содержимого кэшей и содержимого гиперграфа основывается на сообщениях. Каждый механизм кэширования при создании подписывает себя на сообщения об интересующих его событиях, а в последствии изменяет содержимое кэша соответствующим образом. Например, кэширующий объект для операции "получить список вершин, обладающих заданным атрибутом" подписывает себя на сообщения
об изменении атрибутов всех вершин гиперграфа, которого он обслуживает. При изменении атрибута какой-либо вершины кэширующий механизм реагирует изменением состояния кэша.
Кэширование может быть включено пользователем по своему усмотрению. Каждый клиент должен оценить насколько часто он использует операции, поддерживаемые кэшами, и стоит ли ускорение, полученное в результате включения кэширования затрат памяти, необходимых для этой операции.
Таблица 1
Время работы редукционного алгоритма с включенными и выключенными КЭШами
Параметры алгоритма Время работы алгоритма Пиковое потребление памяти
Кэш выключен 21.5 сек. 41.7 МБ
Кэш включен 2.3 сек. 42.7 МБ
В заключение параграфа можно привести цифры, характеризующие ускорение алгоритма редукции графа после включения кэшей (см. Табл. 1). В примере использован исходный гиперграф размерности 3000, количество ребер - 45000, коэффициент редукции - 10. Эксперимент проводился на персональном компьютере с процессором Athlon ХРш 2800 и 256МБ оперативной памяти DDR333.
Список литературы
1. Батищев Д. И., Старостин Н.В. k-разбиение графов // Вестник ННГУ «Математическое моделирование и оптимальное управление». - Н. Новгород: 2000. - С. 25-37.
2. Батищев Д.И., Старостин Н.В. Гибридный подход к решению экстремальных задач на графовых структурах // Известия СПбГЭТУ «ЛЭТИ». Серия «Информатика управление и компьютерные технологии». - 2002. - Вып. 3. - С. 10—17
3. Зыков A.A. Гиперграфы // Успехи математических наук. - 1974. -№ 6(180). - С. 89-154.
4. Емеличев В.А., Мельников О.И., Сарванов В.И., Тышкевич Р.И. и др. Лекции по теории графов. - М.: Наука, 1990.
5. Меликов A.M., Бернштейн Л.С., Курейчик В.М. Применение графов для проектирования дискретных устройств. - М: Наука, 1974. - 304 С.
6. Меликов A.M., Бернштейн Л.С., Селянкин В В., М.И. Хиль. Применение гиперграфов для компоновки схем в ячейки // Техническая кибернетика. - 1974. - № 3. - С. 202-207.
7. Попков В.К. О решении некоторых задач на сверхбольших графах // Моделирование на вычислительных системах. - Новосибирск: ВЦ СО АН СССР, 1982. - С. 93-106
8. Hendrickson В., Leland R. A multilevel algorithm for partitioning graphs // In Proc. Supercom-puting'95. 1995
9. George Karypis. Multilevel hypergraph partitioning // University of Minnesota. Department of Computer Science. Minneapolis. MN 55455
Нижегородский государственный университет им. H.И. Лобачевского.
603950, Нижний Новгород, пр. Гагарина, 23, ВМК.
e-mail: dibat@iani.unn.ru . nvstar@iani.unn.ru . sermus@niehtmail.ru
NEW APPROACH TO HYPERGRAPH REPRESENTATION
PROBLEM
D. I. Batishchev, S. E. Vlasov, N. V. Starostin, A. V. Filimonov
Relevant class of graph decomposition problems is under consideration. Base hypergraph operations are reviewed. New filtering operations are proposed. There is multilevel filter-based scheme suggested for hypergraph decomposition problem. Perspective of software implementation of described ideas is discussed.