Изменения
Нет описания правки
{{Определение|definition== Многопоточная сортировка слиянием ==Пусть дан фиксированный граф <tex>G</tex> и фиксированное число красок <tex>x</tex>. Количество способов правильной <tex>x</tex> — [[Раскраска графа|раскраски графа]] <tex>G</tex> называется '''хроматическим многочленом''' (англ. ''chromatic polynomial''). Обозначение: <tex>P(G,x)</tex>.}}
===Многопоточное слияниеХроматический многочлен простой цепи ===Как видно из оценки первого алгоритма, слияние выполняется слишком долго при том, что существует возможность его ускорить. Рассмотрим алгоритм рекурсивного слияния массивов Пусть <mathtex>T[left_{1} \dots right_{1}]T_n</mathtex> и — простая цепь, состоящая из <mathtex>T[left_{2} \dots right_{2}]n</mathtex> вершин. Рассмотрим процесс раскраски простой цепи: первую вершину можно покрасить в массив один из <mathtex>A[left_{3} \dots right_{3}]x</mathtex>:# Убедимсяцветов, что размер <math>T[left_{1} \dots right_{1}]</math> больше либо равен размеру <math>T[left_{2} \dots right_{2}]</math># Вычислим вторую и последующие в один из <mathtex>x = T[mid_{- 1}]</mathtex> - середину первого массива цветов (<math>x</math> также является и медианой этого массиват.е. так, чтобы цвет не совпадал с предыдущей вершиной)# При помощи бинарного поиска найдем . Тогда <mathtex>mid_{2}</math> такоеP(T_n, что <math>\forall y \in T[left_{2} \dots mid_{2} - 1]: y < x</math># <math>mid_{3} ) = left_{3} + x(mid_{1} x - left_{1}) + (mid_{2} - left_{2})</math># <math>A[mid_{3}] = x</math># Сольем <math>T[right_{1} \dots mid_^ {1} n - 1]</math> и <math>T[right_{2} \dots mid_{2}]</mathtex> в <math>A[right_{3} \dots mid_{3} - 1]</math># Сольем <math>T[mid_{1} + 1 \dots right_{1}]</math> и <math>T[mid_{2} \dots right_{2}]</math> в <math>A[mid_{3} + 1 \dots right_{3}]</math>Рассмотрим псевдокод данного алгоритма:.
{{Теорема|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>, сортирующего элементы A[leftA \dots rightA] а <tex>G_{2}</tex> — граф, полученный из <tex>G</tex> слиянием вершин <tex>u</tex> и <tex>v</tex> в одну и помещающего отсортированный массив удалением возникших при этом кратных ребер.Применяя рекуррентную формулу повторно, хроматический полином можно представить в B[leftB виде суммы хроматических полиномов полных графов, то есть:<br/><tex>P(G,x) = {P(K_{n},x) + a_{1}P(K_{n-1},x) + a_{2}P(K_{n-2},x) + \ldots = x^{\underline{n}} + a_{1}x^{\dots leftB underline{n-1}}+ rightA a_{2}x^{\underline{n- leftA]2}}+\ldots}</tex><br/>Из этой формулы видно, что хроматический многочлен имеет старший коэффициент, равный <tex>1</tex>.}}