Участник: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>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>N|V| + |G|</math>, где <math>|G|</math> | '''Объём входных данных:''' <math>N|V| + |G|</math>, где <math>|G|</math> - объём данных, представляющих граф <math>G</math>, который в общем случае зависит от выбранного представления. | ||
'''Выходные данные:''' <math>k</math> доменов графа <math>G</math>, задающих его декомпозицию. | '''Выходные данные:''' <math>k</math> доменов графа <math>G</math>, задающих его декомпозицию. | ||
'''Объём выходных данных:''' <math>|V|</math> | '''Объём выходных данных:''' <math>|V|</math> - для каждого домена достаточно хранить соответствующие вершинам из этого домена индексы строк в матрице, представляющей множество вершин. | ||
== Свойства алгоритма == | == Свойства алгоритма == | ||
Версия от 10:20, 15 октября 2016
Авторы: Гордеев Михаил, Колмаков Евгений.
Свойства и структура алгоритмов
Общее описание алгоритма
Математическое описание алгоритма
Вычислительное ядро алгоритма
Макроструктура алгоритма
Как записано в описании ядра алгоритма, основную часть метода составляют множественные (всего [math]\displaystyle{ k-1 }[/math]) сортировки(функция sort).
Схема реализации последовательного алгоритма
Последовательная сложность алгоритма
Обозначим через [math]\displaystyle{ D_k(n) }[/math] сложность алгоритма рекурсивной координатной бисекции для графа с [math]\displaystyle{ n }[/math] вершинами на [math]\displaystyle{ k }[/math] частей.
Введем [math]\displaystyle{ D(n) = D_k(n) }[/math] при [math]\displaystyle{ k = n }[/math]. Для [math]\displaystyle{ D(n) }[/math] верно следующее рекуррентное равенство:
[math]\displaystyle{ \begin{array}{l} D(n) = S(n) + 2D(\frac{n}{2}) \\ D(1) = S(1) = 0 \\ \end{array} }[/math], где [math]\displaystyle{ S(n) }[/math] это сложность алгоритма сортировки массива из [math]\displaystyle{ n }[/math] элементов.
Пусть [math]\displaystyle{ S(n) = O(n\log{n}) }[/math], например для сортировки слиянием, тогда по теореме о рекуррентном неравенстве [math]\displaystyle{ D(n) \lesssim n^{1+\varepsilon} }[/math].
Для [math]\displaystyle{ D(n) }[/math] есть точное значение: [math]\displaystyle{ \sum\limits_{i=0}^{\log_2{n}}2^i S(\frac{n}{2^i}) }[/math].
[math]\displaystyle{ D_k(n) = \sum\limits_{i=0}^{\log_2{k}}2^i S(\frac{n}{2^i}) }[/math]. Если использовать сортировку со сложностью [math]\displaystyle{ S(n) = O(n\log{n}) }[/math], то [math]\displaystyle{ 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}}}) = O(\log{k}\cdot n\log{n}) }[/math].
Информационный граф
Ресурс параллелизма алгоритма
Входные и выходные данные алгоритма
Входные данные: граф [math]\displaystyle{ G = (V, E) }[/math], вложенный в [math]\displaystyle{ \mathbb{R}^N }[/math] (помимо матрицы смежности (или любого другого представления графа) для каждой вершины [math]\displaystyle{ v \in V }[/math] задан набор её координат [math]\displaystyle{ v = (v_1, \dots, v_N) \in \mathbb{R}^N }[/math], то есть [math]\displaystyle{ V }[/math] задаётся матрицей размера [math]\displaystyle{ |V| \times N }[/math]), а также число [math]\displaystyle{ k }[/math] частей (доменов), на которое нужно разбить граф.
Объём входных данных: [math]\displaystyle{ N|V| + |G| }[/math], где [math]\displaystyle{ |G| }[/math] - объём данных, представляющих граф [math]\displaystyle{ G }[/math], который в общем случае зависит от выбранного представления.
Выходные данные: [math]\displaystyle{ k }[/math] доменов графа [math]\displaystyle{ G }[/math], задающих его декомпозицию.
Объём выходных данных: [math]\displaystyle{ |V| }[/math] - для каждого домена достаточно хранить соответствующие вершинам из этого домена индексы строк в матрице, представляющей множество вершин.