
Семинар №4
Доработайте основные пункты алгоритма последовательного разрезания гиперграфа, используя полученные вами выражения.
:= - Определение.
∀ - Квантор всеобщности.
Kl- число внешних выводовl-ой части схемы, т.е. ограничение на число выводов.
nl- число элементовl-ой части схемы, т.е. требуемое число элементов.
Алгоритм последовательного разрезания гиперграфа:
Xl:={Xq}, где S(Xq)=max(Si, Si∈S) //Выбор начальной вершины с max числом ребер, попадающих в разрез.
U’:= Г(Xl) // множество U' ребер, содержащих вершины множества Xl
X’:= Г(U’) // множество X' вершин, инцидентных ребрам множества U'
X’’:=X’\Xl // множество Х'' вершин-кандидатов на включение в Xl
∀xi∈X’’: Si:= |Г(XlXi)⋂Г(X\{XlXi})| //Построение множества чисел ребер, попадающих в разрез.
Xt ⇔St:=min(Si,Si∈S) //Выбор вершины сminчислом ребер, попадающих в разрез.
St>Kl ⇒ п.9 //Случай нарушения ограничения на число выводов.
Xl:=XlXt//Добавляем новую вершину к множествуXl.
| Xl|<nl⇒ п.2 //Случай неполного набора требуемого числа элементов.
Xl – сформировано. ⇒ п.11
Формирование множества невозможно.
Конец работы алгоритма.
Оценка вычислительной сложности:
| Xl| = |X\Xl|=n/2;
|Гxi|=;
В
процессе получения U’
его мощность увеличивается на |Гxj|=.
Так как
| Xl| = |X\Xl|=n/2, то для Г(Xl):
K==
=
Для всех Г(Xl) и Г(X\Xl):
K=
Среднее
число ребер оценим из
:
mср=
Для определения U1 ⋂U2требуется:
Сложность на i-том шаге:
F=,
так что:
F=O(n2)
Подсчет Sидетn-1 раз, так что:
F=O(n2)O(n)=O(n3)
Семинар №5
«...» проанализируйте возможные состояния ребер, инцидентных вершине xt , сформулируйте условия, выполнение которых определяет ребра, уходящие из разреза и появляющиеся в нем после включения вXlвершиныxt.
Ребра приходящие в разрез:
Ut∈ГXt
ГUt ⋂Xl=∅ ⇒ ΔSt+:= ΔSt++1
Ребра уходящие из разреза:
∀Ut ∈ГXt:
Xt= ГUt
Xt \ (Xt ⊂Xl)⇒ ΔSt-:= ΔSt-+1
ΔSt:= ΔSt+-ΔSt-
Доработайте описанный выше алгоритм таким образом, чтобы после включения вершины xtв подмножествоXlмножестваU' илиX'' не определялось заново, а корректировались с использованием сформулированных Вами условий. Предложите рекуррентную формулу для подсчета показателяS(Xlxi), используя сформулированные Вами условия. Оцените вычислительную сложность ее реализации. Выберите структуры исходных данных и промежуточных результатов.
⊆ - «является подмножеством».
Определим вершины-кандидаты, на включение в Xl на первом шаге:
Xk=F1xq
Далее, новые вершины:
X’k=F1xt\xl
Показатель ΔSi имеет смысл пересчитывать только для вершин, смежных с Xt:
ΔSi:= ΔSi+-ΔSi-; Si:= Si-1+ΔSi
Для ΔSi выберем следующую структуру данных:
INT– таблица прямого доступа к векторуR.
Удаление заменим замещением последним элементом вектора R.
Семинар №6
Улучшенный алгоритм последовательного разрезания гиперграфа:
Xl:={Xq} //Выбор начальной вершины.
S:= |ГXq| //Число ребер инцидентныхXq, т.е. изначально находящихся в разрезе.
Xk:=F1Xq//Множество смежных вершин-кандидатов.
∀xi∈Xk:
ΔSi+:=ΔSi-:=0 //Обнуляем счетчики.
Ui:=ГXi //Ребра, инцидентныеXi.
∀Uj∈Ui:
Xj:=ГUj//Вершины, смежныеUj.
Xj\Xi⊆Xl⇒ ΔSt-:= ΔSt-+1//Если остальные вершины этого ребра входят вXl– ребро уйдет из разреза.
Xj ⋂Xl=∅⇒ ΔSt+:= ΔSt++1 //Если ни одна из вершин Xj не находится в Xl – ребро попадает в разрез.
ΔSi:= ΔSi+-ΔSi-//Конечное число ребер,попадающих в разрез.
Xt ⇔ΔSt:=min(ΔSi∈S) //Выберем вершину, которая влечет за собой наименьшее число ребер, попадающих в разрез.
S:=S+ ΔSt//Изменим число разрезаемых ребер.
S>Kl ⇒ п.14 //Случай нарушения ограничения на число выводов.
Xl:=XlXt//Добавляем новую вершину к множествуXl.
| Xl|=nl⇒ п.15 //Случай полного набора требуемого числа элементов.
Xk:=Xk\Xt//Удаляем добавленную вершину из множества кандидатов.
S:=S\ ΔSt
Xk:=F1Xt\Xl//Определяем новое множество кандидатов из смежныхXt, не входящих вXl
⇒ п.4
Ограничение по числу внешних выводов. ⇒ п.16
Xl – сформировано.
Конец работы алгоритма.
Оценка вычислительной сложности:
|xk|=;
|Ui
|=|Гxi|=;
|Xj|=|ГUj|=;
| Xl| = I, I=1..nl;
Xj\Xi⊆Xl– двойной цикл –AI;
По закону Рента:
|R|=A;
Xk:=F1Xt\Xl
- A;
Nf
=
=O(
);
Если для Xlсделать характеристический вектор, то:
Nf’
=
=O(
);
Если
вектор Rпредставить в
виде двоичной кучи и использовать
алгоритм сортировки с вычислительной
сложностьюO(n),
то вычислительная сложность будетO(n
).