Распределенный алгоритм раскраски вершин: различия между версиями

Перейти к навигации Перейти к поиску
 
(не показаны 2 промежуточные версии 1 участника)
Строка 15: Строка 15:


== Применение ==
== Применение ==
Раскраска вершин является базовым примитивом многих приложений; классическим примером являются ''задачи планирования'' в присутствии множества попарных ограничений на одновременное выполнение заданий. Например, при составлении расписания занятий в университете два курса, которые ведет один и тот же преподаватель, нельзя поставить на один и тот же временной интервал. Аналогичным образом два курса, предназначенные для одной и той же группы студентов, также не должны конфликтовать друг с другом. Задача определения минимального количества требуемых временных интервалов с учетом этих ограничений может рассматриваться как задача раскраски вершин. Еще одним распространенным приложением является распределение регистров. Задача распределения регистров заключается в присвоении переменных ограниченному числу аппаратных регистров в процессе выполнения программы. Доступ к переменным в регистрах осуществляется намного быстрее, чем к переменным, не хранящимся в регистрах. Однако в большинстве случаев регистров намного меньше, чем переменных, так что приходится одному регистру назначать несколько переменных. Переменные конфликтуют друг с другом, если одна из них используется одновременно перед и после второй в течение короткого периода времени (например, при выполнении подпрограммы). Задача заключается в присвоении переменных, не конфликтующих друг с другом, с целью минимизации использования других видов памяти. Простой подход к ее решению состоит в создании графа, вершины которого представляют переменные, а ребра – конфликты между ними. Раскраска в этом случае представляет бесконфликтное присваивание. Если количество использованных цветов меньше количества регистров, то бесконфликтное присваивание оказывается возможным. Среди современных вариантов применения можно упомянуть присвоение частот мобильным радиостанциям и другие способы использования электромагнитного спектра. В самом простом случае двум клиентам, находящимся достаточно близко друг от друга, необходимо назначить разные частоты, тогда как далекие друг от друга клиенты могут использовать одну частоту. Задача минимизации количества частот также сводится к задаче раскраски вершин. Другим примеры приложений и ссылки см. на странице Майкла Трика, посвященной раскраске [12].
Раскраска вершин является базовым примитивом многих приложений; классическим примером являются ''задачи планирования'' в присутствии множества попарных ограничений на одновременное выполнение заданий. Например, при составлении расписания занятий в университете два курса, которые ведет один и тот же преподаватель, нельзя поставить на один и тот же временной интервал. Аналогичным образом два курса, предназначенные для одной и той же группы студентов, также не должны конфликтовать друг с другом. Задача определения минимального количества требуемых временных интервалов с учетом этих ограничений может рассматриваться как задача раскраски вершин. Еще одним распространенным приложением является ''распределение регистров''. Задача распределения регистров заключается в присвоении переменных ограниченному числу аппаратных регистров в процессе выполнения программы. Доступ к переменным в регистрах осуществляется намного быстрее, чем к переменным, не хранящимся в регистрах. Однако в большинстве случаев регистров намного меньше, чем переменных, так что приходится одному регистру назначать несколько переменных. Переменные конфликтуют друг с другом, если одна из них используется одновременно перед и после второй в течение короткого периода времени (например, при выполнении подпрограммы). Задача заключается в присвоении переменных, не конфликтующих друг с другом, с целью минимизации использования других видов памяти. Простой подход к ее решению состоит в создании графа, вершины которого представляют переменные, а ребра – конфликты между ними. Раскраска в этом случае представляет бесконфликтное присваивание. Если количество использованных цветов меньше количества регистров, то бесконфликтное присваивание оказывается возможным. Среди современных вариантов применения можно упомянуть ''присвоение частот'' мобильным радиостанциям и другим пользователям электромагнитного спектра. В самом простом случае двум клиентам, находящимся достаточно близко друг от друга, необходимо назначить разные частоты, тогда как далекие друг от друга клиенты могут использовать одну частоту. Задача минимизации количества частот также сводится к задаче раскраски вершин. Другие примеры приложений и ссылки см. на странице Майкла Трика, посвященной раскраске [12].


== Открытые вопросы ==
== Открытые вопросы ==
Строка 21: Строка 21:


== Экспериментальные результаты ==
== Экспериментальные результаты ==
Все проанализированные алгоритмы начинают работу с присвоения исходной палитры цветов каждой вершине и последующего повторения простого раунда итерации:
Все проанализированные алгоритмы начинают работу с присвоения исходной ''палитры'' цветов каждой вершине и последующего повторения простого раунда итерации:


  1. ''Проснись!'': каждая вершина независимо от остальных просыпается с определенной вероятностью участия в раскраске на этом раунде.


1. Проснись!: каждая вершина независимо от остальных просыпается с определенной вероятностью участия в раскраске на этом раунде.
  2. ''Попытайся!'': каждая вершина независимо от остальных выбирает предварительный цвет из палитры, доступной на этом раунде.


2. Попытайся!: каждая вершина независимо от остальных выбирает предварительный цвет из палитры, доступной на этом раунде.
  3. ''Устрани конфликты!'': если ни одна из соседних вершин не выбрала тот же предварительный цвет, то он становится окончательным. Такая вершина более не рассматривается алгоритмом, остальные вершины соответствующим образом корректируют свои палитры. Если возникает конфликт, он разрешается одним из двух способов: либо все конфликтующие вершины признаются неуспешными и переходят на следующий раунд, либо с помощью так называемой венгерской эвристики среди всех вершин, выбравших один и тот же цвет, вычисляется независимое множество. Вершины независимого множества получают окончательные цвета и выбывают из рассмотрения. Венгерская эвристика для независимого множества рассматривает вершины в произвольном порядке, удаляя всех соседей встретившейся вершины, которая, в свою очередь, добавляется к независимому множеству. См. в [1, p. 91] подробный анализ этой эвристики для доказательства теоремы Турана.


3. Устрани конфликты!: если ни она из соседних вершин не выбрала тот же предварительный цвет, то он становится окончательным. Такая вершина завершает работу алгоритма, остальные вершины соответствующим образом корректируют свои палитры. Если возникает конфликт, он разрешается одним из двух способов: либо все конфликтующие вершины признаются неуспешными и переходят на следующий раунд, либо с помощью так называемой венгерской эвристики среди всех вершин, выбравших один и тот же цвет, вычисляется независимое множество. Вершины независимого множества получают окончательные цвета и выбывают из рассмотрения. Венгерская эвристика для независимого множества рассматривает вершины в произвольном порядке, удаляя всех соседей встретившейся вершины, которая, в свою очередь, добавляется к независимому множеству. См. в [1, p. 91] подробный анализ этой эвристики для доказательства теоремы Турана.
  4. ''Накорми голодных!'': если в палитре вершины заканчиваются цвета, ей присваиваются новые свежие цвета.
 
4. Накорми голодных!: если в палитре вершины заканчиваются цвета, ей присваиваются новые свежие цвета.




Строка 36: Строка 35:




В алгоритме <math>(\Delta + 1)</math>-раскраски исходная палитра для вершины v задается множеством <math>[\Delta] := \{ 1, ..., \Delta + 1 \}</math> (глобальная настройка) или [d(v) + 1] (где d(v) – степень вершины v) (локальная настройка). Экспериментальные результаты свидетельствуют о том, что (a) наилучшая вероятность пробуждения равна 1, (b) во время выполнения локальная версия палитры оказывается не хуже глобальной, но может обеспечить значительную экономию цветов, (c) венгерская эвристика, применяемая не к случайным числам, а к идентификаторам вершин, дает хорошие результаты.
В алгоритме <math>(\Delta + 1)</math>-раскраски исходная палитра для вершины v задается множеством <math>[\Delta] := \{ 1, ..., \Delta + 1 \}</math> (глобальная настройка) или [d(v) + 1], где d(v) – степень вершины v (локальная настройка). Экспериментальные результаты свидетельствуют о том, что (1) наилучшая вероятность пробуждения равна 1, (2) во время выполнения локальная версия палитры оказывается не хуже глобальной, но может обеспечить значительную экономию цветов, (3) венгерская эвристика, применяемая не к случайным числам, а к идентификаторам вершин, дает хорошие результаты.




Строка 73: Строка 72:


12. Trick, M.: Michael Trick's coloring page: http://mat.gsia.cmu.ed u/COLOR/color.htm l
12. Trick, M.: Michael Trick's coloring page: http://mat.gsia.cmu.ed u/COLOR/color.htm l
[[Категория: Совместное определение связанных терминов]]

Навигация