Изменения
Нет описания правки
{{Определение|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>G_{1}</tex> — граф, что при отсутствии возможности запуска неограниченного количества независимых потоковполученный из <tex>G</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(K_{n/N_},x) + a_{ind1}\logP(K_{n/N_-1},x) + a_{2}P(K_{indn-2},x) + \ldots = x^{\underline{n}} + a_{1}x^{\underline{n-1}}+a_{2}x^{\underline{n)-2}}+\ldots}</tex><br/>Из этой формулы видно, что хроматический многочлен имеет старший коэффициент, равный <tex>1</tex>.}} {{Теорема|about=3|statement=Коэффициенты хроматического многочлена составляют знакопеременную последовательность.|proof=Индукция по количеству вершин.<br/>'''База индукции:'''<br/>::::Теорема верна для графа <tex>G</tex> из одной вершины, потому что <tex>P(G,x)=x</tex>\Theta.<br/>'''Индукционный переход''' (<tex>n/N_{ind}\log(to n+1)</tex>:<br/N_{ind}))>Предположим, что теорема верна для всех графов на <tex>n</tex> операций нужно вершинах. Рассмотрим графы на последовательную сортировку массива длиной <tex>n+1</tex> вершине.Индукционный переход будем доказывать индукцией по количеству ребер графа <tex>G</tex>. Если <tex>G</tex> не содержит ребер, то есть <tex>G</tex> является <tex>O_{n+1}</N_tex>, то его хроматический многочлен <tex>P(G,x)=x^{indn+1}</tex>обладает доказываемым свойством.::::Теперь предположим, что для всех <tex>\Theta(n+1,m)</tex> необходимо на последовательное слияние-графов теорема верна.::Соответветственно, асимптотика может быть как Возьмем <tex>\Theta(n+1,m+1)</tex>-граф <tex>G_{1}</tex> и его ребро <tex>uv</N_tex>. Обозначим за <tex>G</tex> граф, полученный из <tex>G_{ind1}\log</tex> удалением ребра <tex>uv</tex> (n<tex>G=G_{1}-uv</tex>), а за <tex>G_{2}</tex> — граф, полученный из <tex>G_{1}</tex> слиянием вершин <tex>u</tex> и <tex>v</tex>. Тогда из рекуррентной формулы следует:<br/N_><tex>P(G_{ind1},x)=P(G,x)-P(G_{2},x)</tex>.Так как <tex>G</tex>, так и — <tex>\Theta(n+1,m)</tex> -граф, а в зависимости от <tex>N_G_{ind2}</tex> — <tex>n</tex> вершин, то для <tex>G</tex> и <tex>nG_{2}</tex> теорема верна:<br/>::'''Многопоточное слияние''' будет работать за <tex>\Theta{P((\fracG,x)=x^{n+1}-a_{1}x^{n}+a_{N_2}x^{indn-1}-a_{3})x^{n-2}+\ldots}</tex> ,<br/><tex>{P(\log_G_{2},x)=x^{\fracn}-b_{41}x^{3n-1}+b_{2}x^{n-2)} + \log(n) \cdot min(N_ldots}</tex> ,<br/>где <tex>a_{ind1}</tex>, \log(<tex>a_{2}</tex> … <tex>a_{n))+1}</tex>::::Прежде чем достигнуть ограничения на создание нового потока, алгоритм углубится на <tex>min(N_b_{ind1}</tex>, \log(n))<tex>b_{2}</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(na_{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* Асанов М. О., Баранский В. А., Расин В. В. - Дискретная математика: Графы, матроиды, алгоритмы: Учебное пособие.H2-е изд., Leiserson Cиспр. и доп.E- СПб.: Издательство "Лань", Rivest R2010. - 368 с.: ил. - (Учебники для вузов. Специальная литература).LISBN 978-5-8114-1068-2* Харари Ф. — Теория графов: Изд. 4-е. - М.: Книжный дом "ЛИБРОКОМ", Stein C2009. - 296 с. ISBN 978-5-397-00622-4* [[wikipedia:en:Chromatic_polynomial| Wikipedia {{---}} Introduction to Algorithms, Third EditionChromatic_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 {{---}} Хроматический многочлен]] [[Категория: Алгоритмы и структуры данных]][[Категория: Раскраски графов]]