Быстрая минимальная триангуляция: различия между версиями

Перейти к навигации Перейти к поиску
Строка 68: Строка 68:




Алгоритм разбиения Partition
'''Алгоритм разбиения Partition'''
Дано:     граф H = (U, D) (подзадача, извлеченная из Q1). Требуется:   найти подмножество A множества U, такое, что либо A = N[K] для некоторого связного H[K], либо A является потенциально максимальной кликой H (и G0).
 
Часть I: определение P
'''Дано:''' граф H = (U, D) (подзадача, извлеченная из <math>Q_1</math>).
Снять отметки со всех вершин H;  k = 1;
 
while существует непомеченная вершина u do
'''Требуется:''' найти подмножество A множества U, такое, что либо A = N[K] для некоторого связного H[K], либо A является потенциально максимальной кликой H (и G').
if Тд(и n NH[U]) < |(H)| then пометить u как s-вершину (стоп-вершину); else
 
'''Часть I: определение P'''
 
Снять отметки со всех вершин H;  k = 1;
 
'''while''' существует непомеченная вершина u '''do'''
 
  '''if''' <math>E_{\bar H}(U \mathcal{n} N_H[u]) < \frac{2}{5} | \bar E (H)|</math> '''then''' пометить u как s-вершину (стоп-вершину);
 
  '''else'''
 
Ck = fug; пометить u как c-вершину (вершину компонента);
Ck = fug; пометить u как c-вершину (вершину компонента);
while существует вершина v 2 NH[ Q ], непомеченная или помеченная как s-вершина do
while существует вершина v 2 NH[ Q ], непомеченная или помеченная как s-вершина do
if Ta(U\NH[CkU{v}]) > f|£(H)| then
if Ta(U \mathcal{n} NH[CkU{v}]) > f|£(H)| then
Ck = C U {v}; пометить v как c-вершину (вершину компонента); else
Ck = C U {v}; пометить v как c-вершину (вершину компонента); else
Пометить v как p-вершину (вершину потенциально максимальной клики); Ассоциировать v с Ck; k = k + 1; P = множество всех p-вершин и s-вершин;
Пометить v как p-вершину (вершину потенциально максимальной клики); Ассоциировать v с Ck; k = k + 1; P = множество всех p-вершин и s-вершин;
Часть II: определение A
Часть II: определение A
if H[U n P] содержит полную компоненту C then A = NH[C];
if H[U \mathcal{n} P] содержит полную компоненту C then A = NH[C];
else if существуют две несмежные вершины u, v, такие, что u является s-вершиной, а v является s-вершиной или p-вершиной then A = NH [ u ];
else if существуют две несмежные вершины u, v, такие, что u является s-вершиной, а v является s-вершиной или p-вершиной then A = NH [ u ];
else if существуют две несмежные p-вершины u и v, где u ассоциирована с C, а v ассоциирована с Cj, u 62 NH(CJ) и V 2 6NH(Ci) then A = NH[Ci[f u g];
else if существуют две несмежные p-вершины u и v, где u ассоциирована с C, а v ассоциирована с Cj, u 62 NH(CJ) и V 2 6NH(Ci) then A = NH[Ci[f u g];
4551

правка

Навигация