Аноним

Параметризованные алгоритмы графического представления графов: различия между версиями

Материал из WEGA
м
нет описания правки
мНет описания правки
 
(не показано 29 промежуточных версий этого же участника)
Строка 3: Строка 3:


== Нотация ==
== Нотация ==
Граф G описывается множеством его вершин V и ребер E, т.е. G = (V, E), где <math>E \subseteq V \times V \;</math>. Обозначим за <math>N(v) \;</math> (открытую) [[окрестность]] вершины v, включающую все вершины, смежные с v; за <math>N[v] = N(v) \cup \{ v \} \;</math> – закрытую окрестность v; за <math>deg(v) = |N(v)| \;</math> – [[степень вершины]] v. Для множества вершин S, <math>N(S) = \bigcup_{v \in S} N(v) \;</math> и <math>N[S] = N(S) \cup S \;</math>. <math>G[S] \;</math> обозначает граф, порожденный множеством вершин, т.е. <math>G[S] = (S, E \cap (S \times S)) \;</math>. Граф G = (V, E) с множеством вершин V и множеством дуг <math>E \subseteq V \times V \;</math> является [[двудольный граф|двудольным]], если существует разбиение <math>V \;</math> на два множества <math>V_1 \;</math> и <math>V_2 \;</math>, такие, что <math>V = V_1 \cup V_2 \;</math>, <math>V_1 \cap V_2 = \empty \;</math> и <math>E \subseteq V_1 \times V_2 \;</math>. Для наглядности запишем это в следующем виде: <math>G = (V_1, V_2, E) \;</math>.
Граф G описывается множеством его вершин V и ребер E, т.е. G = (V, E), где <math>E \subseteq V \times V \;</math>. Обозначим за <math>N(v) \;</math> (открытую) [[окрестность]] вершины v, включающую все вершины, смежные с v; за <math>N[v] = N(v) \cup \{ v \} \;</math> – закрытую окрестность v; за <math>deg(v) = |N(v)| \;</math> – [[степень вершины]] v. Для множества вершин S, <math>N(S) = \bigcup_{v \in S} N(v) \;</math> и <math>N[S] = N(S) \cup S \;</math>. <math>G[S] \;</math> обозначает граф, порожденный множеством вершин S, т.е. <math>G[S] = (S, E \cap (S \times S)) \;</math>. Граф G = (V, E) с множеством вершин V и множеством дуг <math>E \subseteq V \times V \;</math> является [[двудольный граф|двудольным]], если существует разбиение <math>V \;</math> на два множества <math>V_1 \;</math> и <math>V_2 \;</math>, такие, что <math>V = V_1 \cup V_2 \;</math>, <math>V_1 \cap V_2 = \empty \;</math> и <math>E \subseteq V_1 \times V_2 \;</math>. Для наглядности запишем это в следующем виде: <math>G = (V_1, V_2, E) \;</math>.




Двухуровневое графическое представление двудольного графа G = <math>(V_1, V_2, E) \;</math> может быть описано при помощи двух отношений линейного порядка: <math><_1 \;</math> на <math>V_1 \;</math> и <math><_2 \;</math> на <math>V_2 \;</math>. Это представление можно реализовать следующим образом: вершины из подмножества <math>V_1 \;</math> располагаются на линии <math>L_1 \;</math> (также называемой уровнем) в порядке, порождаемом отношением <math><_1 \;</math>, а вершины из <math>V_2 \;</math> располагаются на втором уровне <math>L_2 \;</math>, параллельном первому, в порядке, порождаемом отношением <math><_2 \;</math>; затем следует изобразить прямолинейный отрезок для каждого ребра <math>e = (u_1, u_2) \;</math> из E, соединяющего точки, представляющие <math>u_1 \;</math> и <math>u_2 \;</math>, соответственно. ''Пересечение'' представляет собой пару ребер <math>e = (u_1, u_2) \;</math> и <math>f = (v_1, v_2) \;</math>, имеющих общую точку в реализации двухуровневого графического представления <math>(G, <_1, <_2) \;</math>. Хорошо известно, что два ребра пересекаются в том и только том случае, если <math>u_1 <_1 v_1 \;</math> и <math>v_2 <_2 u_2</math>; иными словами, это понятие несет чисто комбинаторный смысл, не зависящий от конкретной реализации двухуровневого графического представления. Обозначим за <math>cr(G, <_1, <_2) \;</math> количество пересечений в описываемом двухуровневом представлении. В контексте представления графов, разумеется, очень желательно получить минимальное число пересечений. В самой простой (и, вероятно, самой важной) форме это выглядит следующим образом: порядок вершин на одном уровне фиксируется, задача заключается в минимизации количества пересечений путем выбора порядка на втором уровне. Более формально:
'''Двухуровневое графическое представление''' двудольного графа G = <math>(V_1, V_2, E) \;</math> может быть описано при помощи двух отношений линейного порядка: <math><_1 \;</math> на <math>V_1 \;</math> и <math><_2 \;</math> на <math>V_2 \;</math>. Это представление можно реализовать следующим образом: вершины из подмножества <math>V_1 \;</math> располагаются на линии <math>L_1 \;</math> (также называемой уровнем) в порядке, порождаемом отношением <math><_1 \;</math>, а вершины из <math>V_2 \;</math> располагаются на втором уровне <math>L_2 \;</math>, параллельном первому, в порядке, порождаемом отношением <math><_2 \;</math>; затем следует изобразить прямолинейный отрезок для каждого ребра <math>e = (u_1, u_2) \;</math> из E, соединяющий точки, представляющие <math>u_1 \;</math> и <math>u_2 \;</math>, соответственно. '''Пересечение''' представляет собой пару ребер <math>e = (u_1, u_2) \;</math> и <math>f = (v_1, v_2) \;</math>, имеющих общую точку в реализации двухуровневого графического представления <math>(G, <_1, <_2) \;</math>. Хорошо известно, что два ребра пересекаются в том и только том случае, если <math>u_1 <_1 v_1 \;</math> и <math>v_2 <_2 u_2 \; </math>; иными словами, это понятие несет чисто комбинаторный смысл, не зависящий от конкретной реализации двухуровневого графического представления. Обозначим за <math>cr(G, <_1, <_2) \;</math> количество пересечений в описываемом двухуровневом представлении. В контексте представления графов, разумеется, очень желательно получить минимальное число пересечений. В самой простой (и, вероятно, самой важной) форме это выглядит следующим образом: порядок вершин на одном уровне фиксируется, задача заключается в минимизации количества пересечений путем выбора порядка на втором уровне. Более формально:




Строка 34: Строка 34:




Вычислим ''матрицу количества пересечений'' (<math>c_uv \;</math>) для этого графа.
Вычислим ''матрицу количества пересечений'' (<math>c_{uv} \;</math>) для этого графа.


[[Файл:PADG_table.png]]
[[Файл:PADG_table.png]]
Строка 43: Строка 43:


== Основные результаты ==
== Основные результаты ==
Для задач, для которых не предполагается существования полиномиальных алгоритмов, очень желательно найти точные алгоритмы с экспоненциальным временем исполнения.
Для задач, для которых не предполагается существования полиномиальных алгоритмов, очень желательно найти точные алгоритмы с экспоненциальным временем выполнения.




Строка 59: Строка 59:
   
   


'''Лемма 3'''. <math>\sum_{u, v \in V_2, u <_2 c_{uv} } C_{uv} = cr(G, <_1, <_2) \;</math>.
'''Лемма 3'''. <math>\sum_{u, v \in V_2, u <_2 v} c_{uv} = cr(G, <_1, <_2) \;</math>.




'''Теорема 4 ([9]). Если k – минимальное количество пересечений ребер в экземпляре задачи OSCM (<math>G = (V_1, V2_, E), <_1 \;</math>), то <math>\sum_{u, v \in V_2, u \ne v} min \{ c_{uv}, v_{vu} \} \le k < 1,4664 \sum_{u, v \in V_2, u \ne v} min \{ c_{uv}, v_{vu} \} \;</math>'''.
'''Теорема 4 ([9]). Если k – минимальное количество пересечений ребер в экземпляре задачи OSCM <math>(G = (V_1, V_2, E), <_1 )\;</math>, то <math>\sum_{u, v \in V_2, u \ne v} min \{ c_{uv}, v_{vu} \} \le k < 1,4664 \sum_{u, v \in V_2, u \ne v} min \{ c_{uv}, v_{vu} \} \;</math>'''.




Нагамочи предложил алгоритм аппроксимации с коэффициентом меньше 1,4664.
Нагамочи предложил аппроксимационный алгоритм с коэффициентом меньше 1,4664.


Далее, для любого <math>u \in V_2 \;</math> с <math>deg(u) > 0 \;</math> обозначим за <math>l_u \;</math> самого левого соседа u в <math>L_1 \;</math>, а за <math>r_u \;</math> – самого правого. Две вершины <math>u, v \in V_2 \;</math> называются неподходящими, если существует некоторое <math>x \in N(u) \;</math>, такое, что <math>l_v <_1 x <_1 r_v \;</math>, либо существует некоторое <math>x \in N(v) \;</math>, такое, что <math>l_u <_1 x <_1 r_u \;</math>. В противном случае они называются подходящими. Заметим, что для подходящих <math>{u, v} c_{uv} \cdot c_{vu} = 0 \;</math>. Джумович и Уайтсайдз показали:
Далее, для любой вершины <math>u \in V_2 \;</math> с <math>deg(u) > 0 \;</math> обозначим за <math>l_u \;</math> самого левого соседа u в <math>L_1 \;</math>, а за <math>r_u \;</math> – самого правого. Две вершины <math>u, v \in V_2 \;</math> называются неподходящими, если существует некоторое <math>x \in N(u) \;</math>, такое, что <math>l_v <_1 x <_1 r_v \;</math>, либо существует некоторое <math>x \in N(v) \;</math>, такое, что <math>l_u <_1 x <_1 r_u \;</math>. В противном случае они называются подходящими. Заметим, что для подходящих <math>\{ u, v \} \;</math> верно <math>c_{uv} \cdot c_{vu} = 0 \;</math>. Джумович и Уайтсайдз показали:




'''Лемма 5 ([5])'''. При любом оптимальном отношении порядка <math><_2 \;</math> на вершинах <math>V_2 \;</math>, <math>u <_2 v \;</math> найдено, если <math>r_u \le_1 l_v \;</math>.
'''Лемма 5 ([5])'''. При любом оптимальном отношении порядка <math><_2 \;</math> на вершинах <math>V_2 \;</math>, <math>u <_2 v \;</math> найдено, если <math>r_u \le_1 l_v \;</math>.


Это означает, что все подходящие пары встречаются в своем естественном порядке.
Это означает, что все подходящие пары встречаются в своем ''естественном порядке''.




Строка 80: Строка 80:
Лемма 5 позволяет сформулировать следующее правило:
Лемма 5 позволяет сформулировать следующее правило:


Правило RR1: Для каждой пары вершин {u, v} из V2 с cuv = 0 необходимо включить u <2 v. В приведенном примере d будет полностью включено в результате применения правила RR1, поскольку столбец d в матрице пересечений заполнен нулями; следовательно, в последующих действиях d можно игнорировать. Алгоритм 1 представляет собой простой алгоритм поиска по дереву для задачи OSCM, последовательно применяющий правило RR1.
'''Правило RR1''': Для каждой пары вершин {u, v} из <math>V_2 \;</math> с <math>c_{uv} = 0 \;</math> включить <math>u <_2 v \;</math>. В приведенном примере d будет полностью включено в результате применения правила RR1, поскольку столбец d в матрице пересечений заполнен нулями; следовательно, в последующих действиях d можно игнорировать.




Лемма 6. OSCM можно вычислить за время 0*{2k).
Алгоритм 1 представляет собой простой алгоритм поиска по дереву для задачи OSCM, последовательно применяющий правило RR1.


Доказательство. До того, как будет производиться какое-либо ветвление, выполняется редукция экземпляра графа таким образом, чтобы любая невключенная пара вершин {u, v} из V2 удовлетворяла условию minf cuv;cvug > 1. Следовательно, каждое рекурсивное ветвление уменьшает параметр как минимум на 1. □
Этот простой алгоритм поиска по дереву можно улучшить. Во-первых, отметим, что нет необходимости ветвления в {x, y} С V2, если cxy = cyx. Это позволяет внести две модификации в


Алгоритм 1:
'''Лемма 6'''. OSCM можно вычислить за время <math>0^*(2^k) \;</math>.
yx.
• На строке 5 следует исключить cxy = c
• На строке 12 следует произвольным образом включить некоторую пару {x, y} С V2, которая еще не была включена, и рекурсивно повторить действие; только если включены все пары {x, y} С V2, следует вернуть значение ДА.


Доказательство. До того, как будет производиться какое-либо ветвление, выполняется редукция экземпляра графа таким образом, чтобы любая невключенная пара вершин {u, v} из <math>V_2 \;</math> удовлетворяла условию <math>min \{ c_{uv}, c_{vu} \} \ge 1 \;</math>. Следовательно, каждое рекурсивное ветвление уменьшает параметр как минимум на 1.□
Этот простой алгоритм поиска по дереву можно улучшить. Во-первых, отметим, что нет необходимости ветвления в <math>\{ x, y \} \subset V_2 \;</math>, если <math>c_{xy} = c_{yx} \;</math>. Это позволяет внести две модификации в Алгоритм 1:
• На строке 5 следует исключить равенство <math>c_{xy} = c_{yx} \;</math>.
• На строке 12 следует произвольным образом включить некоторую пару <math>\{ x, y \} \subset V_2 \;</math>, которая еще не была включена, и рекурсивно повторять это действие; только если включены все пары <math>\{ x, y \} \subset V_2 \;</math>, следует вернуть значение ДА.


В результате модификаций получен алгоритм решения задачи OSCM с параметром <9*(1.6182i). Он составляет ядро алгоритма Джумовича и Уайтсайдза [ ]. В их работе более детально обсуждаются следующие вопросы:
• Как эффективно вычислить все количества пересечений cxy на этапе предварительной обработки?
• Как интегрировать в алгоритм элементы ветвления и обрезки, полезные с практической точки зрения?
• Как обобщить алгоритм для экземпляров, допускающих наличие целочисленных весов у ребер (параллельных ребер)?


В результате модификаций получен алгоритм решения задачи OSCM с параметром <math>O^*(1,6182^k) \;</math>. Он составляет ядро алгоритма Джумовича и Уайтсайдза [5]. В их работе более детально обсуждаются следующие вопросы:


Дальнейшие улучшения возможны в результате более глубокого анализа локальных паттернов {x, y} 2 V2, таких, что cxycyx — 2. Таким образом было показано:
• Как эффективно вычислить все количества пересечений <math>c_{xy} \;</math> на этапе предварительной обработки?


• Как интегрировать в алгоритм элементы ветвления и обрезки, полезные с практической точки зрения?


Теорема 7. Задачу односторонней минимизации пересечений можно решить за время O*(lA656k).
• Как обобщить алгоритм для экземпляров, допускающих наличие целочисленных весов у ребер (параллельных ребер)?
Возможный вариант исполнения улучшенного алгоритма поиска по дереву приведен на рис. 2, а его (оптимальный) результат – на рис. 3.




В различных публикациях рассматривались варианты этой задачи и родственные ей проблемы.
Дальнейшие улучшения возможны в результате более глубокого анализа локальных паттернов <math>\{ x, y \} \in V_2 \;</math>, таких, что <math>c_{xy} c_{yx} \le 2 \;</math>. Таким образом было показано:


1. Изменение цели оптимизации: минимизация количества дуг, участвующих в пересечениях – одноуровневая планаризация. Как было отмечено в [7, 10], из теоремы 2 практически непосредственно следует идея алгоритма решения этой задачи с временем исполнения O*(3k), которое впоследствии было улучшено до O*(2k)m[W].


2. Можно повысить число степеней свободы, рассматривая два или более уровня присваиваний в одно и то же время. Параметризованные алгоритмы для минимизации пересечений и для планаризации были предложены в [3, 7, 10].
'''Теорема 7. Задачу односторонней минимизации пересечений можно решить за время <math>O^*(1,4656^k) \;</math>.'''


3. Можно рассмотреть другие дополнительные ограничения на графическое построение или допустимые отношения порядка; так, в [8] были рассмотрены параметризованные алгоритмы для задачи двухуровневого присваивания, в которой допустимые отношения порядка были ограничены бинарными деревьями.


== Применение ==
Возможный вариант выполнения улучшенного алгоритма поиска по дереву приведен на рис. 2, а его (оптимальный) результат – на рис. 3.
Помимо рассмотрения вопроса графического построения двудольных графов как задачи, интересной самой по себе (т.е., например, для качественного изображения диаграмм отношений), этот вопрос естественным образом возникает при применении так называемого подхода Судзиямы к построению иерархических графов [12]. Этот исключительно популярный подход решает задачу укладки иерархического графа в три этапа: (1) удаление циклов, (2) присваивание вершин уровням, (3) присваивание вершин уровням. Последний этап обычно реализуется посредством алгоритма с заметающей прямой, в процессе работы решающего несколько экземпляров задачи односторонней минимизации пересечений. Третий вариант задачи, упомянутый выше, находит множество важных вариантов применения в вычислительной биологии.  




Требуется: двудольный граф G = (V1, V2, E), целое число k, отношение линейного порядка<1 на V1, отношение частичного порядка <2 на V2. Результат: ДА в том и только том случае, если данный экземпляр задачи односторонней минимизации пересечений (OSCM) имеет решение
[[Файл:PADG_code.png]]
repeat
Исчерпывающим образом применить правила редукции, соответственно корректируя <2 и k. Определить вершины, порядок которых был установлен при помощи транзитивности, и соответствующим образом скорректировать <2 и k, до тех пор, пока не останется вариантов изменения <2 и k: if k < 0 or <2 содержит и (x, y), и (y; x) then
return НЕТ.
else if 9fx; у} С V2 : не имеет места ни x <2 y, y <2 x then if OSCM-ST-simple(G,fc- 1;<1;<2 [ f(x, y)g) then
return ДА 10:      else
return OSCM-ST-simple(G ;k - 1; <b <2 [ f(y;x)g) end if else
return ДА 15: end if




Строка 140: Строка 130:


Рис. 3. Оптимальное решение для экземпляра задачи
Рис. 3. Оптимальное решение для экземпляра задачи
'''Варианты этой задачи и родственные ей проблемы''' широко рассматривались в литературе.
1. Изменение цели оптимизации: минимизация количества дуг, участвующих в пересечениях – одноуровневая планаризация. Как было отмечено в [7, 10], из теоремы 2 практически непосредственно следует идея алгоритма решения этой задачи с временем выполнения <math>O^*(3^k) \;</math>, которое впоследствии было улучшено в [10] до <math>O^*(2^k) \;</math>.
2. Можно повысить число степеней свободы, рассматривая два или более уровня присваиваний в одно и то же время. Параметризованные алгоритмы для минимизации пересечений и для планаризации были предложены в [3, 7, 10].
3. Можно рассмотреть другие дополнительные ограничения на графическое построение или допустимые отношения порядка; так, в [8] были рассмотрены параметризованные алгоритмы для задачи двухуровневого присваивания, в которой допустимые отношения порядка были ограничены бинарными деревьями.
== Применение ==
Помимо рассмотрения вопроса графического построения двудольных графов как задачи, интересной самой по себе (например, для качественного изображения диаграмм отношений), этот вопрос естественным образом возникает при применении так называемого подхода Судзиямы к построению иерархических графов [12]. Этот исключительно популярный подход решает задачу укладки иерархического графа в три этапа: (1) удаление циклов, (2) присваивание вершин уровням, (3) присваивание вершин уровням. Последний этап обычно реализуется посредством алгоритма с заметающей прямой, в процессе работы решающего несколько экземпляров задачи односторонней минимизации пересечений. Третий вариант задачи, упомянутый выше, находит множество важных вариантов применения в вычислительной биологии.


== Открытые вопросы ==
== Открытые вопросы ==
Как и для всех алгоритмов с экспоненциальным временем исполнения, оказывается непросто улучшить это время или доказать определенную нижнюю границу времени исполнения при наличии разумных теоретико-сложностных предположений. Заметим, что негласные предположения, лежащие в основе подхода параметризованных алгоритмов, в данном сценарии полностью удовлетворяются: к примеру, графическое представление с большим количеством пересечений будет неприемлемым (если такая ситуация встретится на практике, придется прибегнуть к другому способу представления информации); таким образом, можно обоснованно предполагать, что параметр действительно окажется малым.
Как и для всех алгоритмов с экспоненциальным временем выполнения, оказывается непросто улучшить это время или доказать определенную нижнюю границу времени выполнения при наличии разумных теоретико-сложностных предположений. Заметим, что негласные предположения, лежащие в основе подхода параметризованных алгоритмов, в данном сценарии полностью удовлетворяются: к примеру, графическое представление с большим количеством пересечений будет неприемлемым (если такая ситуация встретится на практике, придется прибегнуть к другому способу представления информации); таким образом, можно обоснованно предполагать, что параметр действительно окажется малым.




Это верно также для других NP-полных подзадач, относящихся к подходу Судзиямы. Однако на наличие простых решений рассчитывать не стоит. Например, для задачи построения множества ориентированных обратных дуг [ ], эквивалентной первой фазе, неизвестно о существовании подходящего параметризованного алгоритма [2].
Это верно также для других NP-полных подзадач, относящихся к подходу Судзиямы. Однако на наличие простых решений рассчитывать не стоит. Например, для задачи построения множества ориентированных обратных дуг [1], эквивалентной первой фазе, неизвестно о существовании подходящего параметризованного алгоритма [2].
 


== Экспериментальные результаты ==
== Экспериментальные результаты ==
Садермен [10] провел эксперименты практически со всеми вариантами данной задачи; в [ ] некоторые из экспериментальных результатов представлены в более наглядной форме.
Садермен [10] провел эксперименты практически со всеми вариантами данной задачи; в [11] некоторые из экспериментальных результатов представлены в более наглядной форме.
 


== Ссылка на код ==
== Ссылка на код ==
Несколько JAVA-апплетов для решения задач, упомянутых в данной статье, приведены Садерменом на http://cgm.cs.mcgill. ca/~msuder/.
Несколько JAVA-апплетов для решения задач, упомянутых в данной статье, приведены Садерменом на http://cgm.cs.mcgill.ca/~msuder/.
 


== См. также ==
== См. также ==
4430

правок