Участник:Obirvalger/Метод рекурсивной координатной бисекции: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 39: Строка 39:
 
== Входные и выходные данные алгоритма ==
 
== Входные и выходные данные алгоритма ==
  
'''Входные данные:''' граф <math>G = (V, E) </math>, вложенный в <math>\mathbb{R}^N</math> (помимо матрицы смежности (или любого другого представления графа) для каждой вершины <math>v \in V</math> задан набор её координат <math>v = (v_1, \dots, v_N) \in \mathbb{R}^N</math>, то есть <math>V</math> задаётся матрицей размера <math>|V| \times N</math>), а также число <math>k</math> частей (доменов), на которое нужно разбить граф.
+
'''Входные данные:''' граф <math>G = (V, E) </math>, вложенный в <math>\mathbb{R}^N</math>, и число <math>k</math> частей (доменов), на которое нужно разбить граф. Таким образом, помимо матрицы смежности (или любого другого представления графа) для каждой вершины <math>v \in V</math> задан набор её координат <math>v = (v_1, \dots, v_N) \in \mathbb{R}^N</math>, поэтому <math>V</math> задаётся массивом <math>N</math>-мерных векторов или матрицей размера <math>|V| \times N</math>.
  
 
'''Объём входных данных:''' <math>N|V| + |G|</math>, где <math>|G|</math> - объём данных, представляющих граф <math>G</math>, который в общем случае зависит от выбранного представления.
 
'''Объём входных данных:''' <math>N|V| + |G|</math>, где <math>|G|</math> - объём данных, представляющих граф <math>G</math>, который в общем случае зависит от выбранного представления.

Версия 13:25, 15 октября 2016

Авторы: Гордеев Михаил, Колмаков Евгений.

1 Свойства и структура алгоритмов

1.1 Общее описание алгоритма

1.2 Математическое описание алгоритма

1.3 Вычислительное ядро алгоритма

1.4 Макроструктура алгоритма

Как записано в описании ядра алгоритма, основную часть метода составляют множественные (всего [math]k-1[/math]) сортировки(функция sort).

1.5 Схема реализации последовательного алгоритма

1.6 Последовательная сложность алгоритма

Обозначим через [math]D_k(n)[/math] сложность алгоритма рекурсивной координатной бисекции для графа с [math]n[/math] вершинами на [math]k[/math] частей.

Введем [math]D(n) = D_k(n)[/math] при [math]k = n[/math]. Для [math]D(n)[/math] верно следующее рекуррентное равенство:

[math] \begin{array}{l} D(n) = S(n) + 2D(\frac{n}{2}) \\ D(1) = S(1) = 0 \\ \end{array} [/math], где [math]S(n)[/math] это сложность алгоритма сортировки массива из [math]n[/math] элементов.

Пусть [math]S(n) = O(n\log{n})[/math], например для сортировки слиянием, тогда по теореме о рекуррентном неравенстве [math]D(n) \lesssim n^{1+\varepsilon}[/math].

Для [math]D(n)[/math] есть точное значение: [math]\sum\limits_{i=0}^{\log_2{n}}2^i S(\frac{n}{2^i})[/math].

[math]D_k(n) = \sum\limits_{i=0}^{\log_2{k}}2^i S(\frac{n}{2^i})[/math]. Если использовать сортировку со сложностью [math]S(n) = O(n\log{n})[/math], то [math]D_k(n) = O(\sum\limits_{i=0}^{\log_2{k}}2^i \frac{n}{2^i} \log{\frac{n}{2^i}}) = O(n\log(\prod\limits_{i=0}^{\log_2{k}}\frac{n}{2^i})) = O(n\log{\frac{n^{\log_2{k}}}{2^\frac{\log_2{k}(\log_2{k}+1))}{2}}}) =[/math] [math] O(n(\log{n}\log{k} - \frac{\log^2_2{k}}{2})) = O(n\log{n}\log{k})[/math].

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

1.9 Входные и выходные данные алгоритма

Входные данные: граф [math]G = (V, E) [/math], вложенный в [math]\mathbb{R}^N[/math], и число [math]k[/math] частей (доменов), на которое нужно разбить граф. Таким образом, помимо матрицы смежности (или любого другого представления графа) для каждой вершины [math]v \in V[/math] задан набор её координат [math]v = (v_1, \dots, v_N) \in \mathbb{R}^N[/math], поэтому [math]V[/math] задаётся массивом [math]N[/math]-мерных векторов или матрицей размера [math]|V| \times N[/math].

Объём входных данных: [math]N|V| + |G|[/math], где [math]|G|[/math] - объём данных, представляющих граф [math]G[/math], который в общем случае зависит от выбранного представления.

Выходные данные: [math]k[/math] доменов графа [math]G[/math], задающих его декомпозицию.

Объём выходных данных: [math]|V|[/math] - для каждого домена достаточно хранить соответствующие вершинам из этого домена индексы строк в матрице, представляющей множество вершин.

1.10 Свойства алгоритма

2 Программная реализация алгоритма

2.1 Особенности реализации последовательного алгоритма

2.2 Локальность данных и вычислений

2.3 Возможные способы и особенности параллельной реализации алгоритма

2.4 Масштабируемость алгоритма и его реализации

2.5 Динамические характеристики и эффективность реализации алгоритма

2.6 Выводы для классов архитектур

2.7 Существующие реализации алгоритма

3 Литература