Прежде всего, в статье есть краткое описание того, что такое переменная «температура»:
Алгоритм Фрухтермана и Рейнгольда добавляет понятие «температура», которое можно использоватьследующим образом: «температура может начинаться с начального значения (скажем, на одну десятую ширины рамки) и снижаться до 0 обратным линейным образом». Температура контролирует смещение вершин, так что по мере улучшения компоновки коррективыстать меньше.Использование температуры здесь является частным случаем общего метода, называемого имитационным отжигом, использование которого в силовых алгоритмах обсуждается далее в этой главе.
Таким образом, алгоритм является разновидностью Имитация отжига методика поиска глобального оптимума функции.Вот интуитивное описание алгоритма:
Вы начинаете со случайного состояния вашей проблемы при высокой температуре.Вы начинаете случайным образом изменять свое состояние, отдавая предпочтение новым состояниям, которые улучшают значение функции.Во-первых, из-за высокой температуры вы допускаете очень большие изменения текущего состояния, в том числе такие, которые не улучшают значение функции и даже не ухудшают ее (это помогает избежать застревания в локальном оптимуме).С помощью итераций вы уменьшаете температуру в соответствии с некоторым графиком охлаждения (именно здесь в игру вступает функция cool(t)
), все больше отдавая предпочтение вариантам, которые только улучшают значение функции.
Существуют различныетонкости, касающиеся того, как выбрать начальную температуру, график охлаждения, вероятность принятия новых состояний и т. д. Обычно это очень специфическая задача, и общий подход затруднен.