Изменения
Нет описания правки
{{Определение|definition== Многопоточная сортировка слиянием ==Благодаря тому, что сортировка слиянием построена на принципе "Разделяй Пусть дан фиксированный граф <tex>G</tex> и властвуй", выполнение данного алгоритма можно весьма эффективно распараллелитьфиксированное число красок <tex>x</tex>. При оценке асимптотики допускается, что возможен запуск неограниченного количества независимых процессов, тКоличество способов правильной <tex>x</tex> — [[Раскраска графа|раскраски графа]] <tex>G</tex> называется '''хроматическим многочленом''' (англ.е''chromatic polynomial''). процессов с вычислительными ресурсамиОбозначение: <tex>P(G, не зависящими от других процессов, что на практике не достижимо. Более того, при реализации имеет смысл ограничить количество параллельных потоковx)</tex>.===Сортировка с однопоточным слиянием===Внесем в алгоритм сортировки слиянием следующую модификацию: будем сортировать левую и правую части массива параллельно.}}
===Сортировка с многопоточным слияниемХроматический многочлен простой цепи ===Приведем псевдокод алгоритмаПусть <tex>T_n</tex> — простая цепь, использующего слияние состоящая из <tex>n</tex> вершин. Рассмотрим процесс раскраски простой цепи: первую вершину можно покрасить в один из предыдущего раздела, сортирующего элементы <tex>A[leftA \dots rightA]x</tex> цветов, вторую и помещающего отсортированный массив последующие в один из <tex>x - 1</tex> цветов (т.е. так, чтобы цвет не совпадал с предыдущей вершиной). Тогда <tex>B[leftB \dots leftB + rightA P(T_n, x) = x(x - 1) ^ {n - leftA]1}</tex>.
{{Теорема|about=2|statement=Старший коэффициент хроматического многочлена равен <tex>1</tex>.|proof=РеализацияВоспользуемся рекуррентной формулой:<br/><tex>P(G,x) ===ОчевидноP(G_{1},x) + P(G_{2}, что при отсутствии возможности запуска неограниченного количества независимых потоковx)</tex>, вычислительная сложность многопоточного алгоритма зависит от максимально возможного количества независимых потоков. Обозначим такое количество как <br/>где <tex>N_G_{ind1}</tex>. Допустим— граф, полученный из <tex>nG</tex> добавлением отсутствующего в <tex>G</tex> ребра <tex>uv</tex> много больше , а <tex>N_G_{ind2}</tex>— граф, что полученный из <tex>G</tex> слиянием вершин <tex>u</tex> и <tex>v</tex> в общем случае верно для ПК одну и достаточно больших объемов данныхудалением возникших при этом кратных ребер. на которых Оценим приведенные выше алгоритмы с учетом наложенных ограничений и допущенийПрименяя рекуррентную формулу повторно, хроматический полином можно представить в виде суммы хроматических полиномов полных графов, то есть:<br/>::'''Сортировка с однопоточным слиянием''' будет иметь асимптотику <tex>\ThetaP(G,x) = {P(\fracK_{n},x) + a_{N_{ind}1}\logP(\fracK_{n-1},x) + a_{N_2}P(K_{ind}n-2},x) + n) \ldots = x^{\Theta(\fracunderline{n}} + a_{1}x^{N_\underline{indn-1}}+a_{2}x^{\log(\fracunderline{n-2}}+\ldots}</tex><br/>Из этой формулы видно, что хроматический многочлен имеет старший коэффициент, равный <tex>1</tex>.}} {N_{ind}}Теорема|about=3|statement=Коэффициенты хроматического многочлена составляют знакопеременную последовательность.|proof=Индукция по количеству вершин.<br/>'''База индукции:'''<br/>Теорема верна для графа <tex>G</tex> из одной вершины, потому что <tex>P(G,x)=x</tex>.<br/>'''Индукционный переход''' (<tex>n \to n+1)</tex>:<br/>::::Предположим, что теорема верна для всех графов на <tex>n</tex> вершинах. Рассмотрим графы на <tex>n+1</tex> вершине.Индукционный переход будем доказывать индукцией по количеству ребер графа <tex>G</tex>. Если <tex>G</tex> не содержит ребер, то есть <tex>G</tex> является <tex>O_{n+1}</tex>, то его хроматический многочлен <tex>\ThetaP(\fracG,x)=x^{n+1}</tex> обладает доказываемым свойством. Теперь предположим, что для всех <tex>(n+1,m)</tex>-графов теорема верна. Возьмем <tex>(n+1,m+1)</tex>-граф <tex>G_{N_1}</tex> и его ребро <tex>uv</tex>. Обозначим за <tex>G</tex> граф, полученный из <tex>G_{ind1}}\log</tex> удалением ребра <tex>uv</tex> (\frac<tex>G=G_{n1}-uv</tex>), а за <tex>G_{N_2}</tex> — граф, полученный из <tex>G_{ind1}}))</tex> операций нужно на последовательную сортировку массива длиной слиянием вершин <tex>u</tex> и <tex>v</tex>. Тогда из рекуррентной формулы следует:<br/><tex>\fracP(G_{n1},x)=P(G,x)-P(G_{N_{ind}2},x)</tex>.::::Так как <tex>G</tex> — <tex>\Theta(n+1,m)</tex> необходимо на последовательное слияние.-граф, а в <tex>G_{2}</tex> — <tex>n</tex> вершин, то для <tex>G</tex> и <tex>G_{2}</tex> теорема верна:<br/>::'''Многопоточное слияние''' будет работать за <tex>\Theta{P((\fracG,x)=x^{n+1}-a_{N_1}x^{indn}+a_{2})x^{(\log_{\frac{4n-1}-a_{3}}x^{n-2)} + \log(n) \cdot minldots}</tex> ,<br/><tex>{P(N_G_{ind2}, \log(n)x)=\Theta((\fracx^{n}-b_{N_1}x^{indn-1}+b_{2})x^{(n-2}+\log_ldots}</tex> ,<br/>где <tex>a_{\frac1}</tex>, <tex>a_{42}</tex> … <tex>a_{3n+1}</tex>, <tex>b_{1}2)})</tex>:::::Прежде чем достигнуть ограничения на создание нового потока, алгоритм углубится на <tex>min(N_b_{ind2}, \log(n))</tex> уровней вглубь дерева рекурсии, где на каждом уровне выполняется бинпоиск за … <tex>\Theta(\log(b_{n))}</tex>— некоторые неотрицательные целые числа. Из этих равенств получаем::::Асимптотика многопоточного слияния при работе в одном потоке по основной теореме рекуррентных соотношений равна <br/>::::<tex>T_P(G_{merge1}'(n,x) = 2T_x^{mergen+1}'-(\frac a_{31}+1)x^{4n}n) + \Theta(\log(n)a_{2}+b_{1}) = \Theta(nx^{(n-1}+\log_ldots</tex>.Видно, что в этом полученном полиноме коэффициенты составляют знакопеременную последовательность.}} {\frac{Теорема|about=4}{|statement=Второй коэффициент хроматического многочлена равен по модулю количеству ребер графа.|proof=Из доказательства '''Теоремы (3}}2)})''' видно, что при увеличении количества ребер графа на <tex>1</tex>, второй коэффициент также увеличивается на <tex>1</tex>. Так как для пустого графа второй коэффициент равен <tex>0</tex>, то утверждение верно для любого графа.}} ===Литература=Источники информации ==Cormen T* Асанов М. О., Баранский В.HА., Leiserson CРасин В.EВ.- Дискретная математика: Графы, матроиды, Rivest Rалгоритмы: Учебное пособие.L2-е изд., Stein Cиспр. и доп. - СПб.: Издательство "Лань", 2010. - 368 с.: ил. - (Учебники для вузов. Специальная литература). ISBN 978-5-8114-1068-2* Харари Ф. — Теория графов: Изд. 4-е. - М.: Книжный дом "ЛИБРОКОМ", 2009. - 296 с. ISBN 978-5-397-00622-4* [[wikipedia:en:Chromatic_polynomial| Wikipedia {{---}} Chromatic_polynomial]]* [[wikipedia:ru:Хроматическое_число#.D0.A5.D1.80.D0.BE. D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_.D0.BC.D0.BD.D0.BE.D0.B3.D0.BE.D1.87.D0.BB.D0.B5.D0.BD| Wikipedia {{---}} Introduction to Algorithms, Third EditionХроматический многочлен]] [[Категория: Алгоритмы и структуры данных]][[Категория: Раскраски графов]]