Теоретическая оценка времени работы алгоритмов RMHC и (1+1)-ES для задач OneMax и MST — различия между версиями
Agapova (обсуждение | вклад) м |
Agapova (обсуждение | вклад) м |
||
| Строка 1: | Строка 1: | ||
== Постановка задачи однокритериальной оптимизации== | == Постановка задачи однокритериальной оптимизации== | ||
| − | + | Пусть <tex>S</tex> {{---}} дискретное пространство решений, а | |
| − | <tex>S</tex> {{---}} пространство решений | ||
| − | |||
<tex>f : S \rightarrow \mathbb{R}</tex> {{---}} оценочная функция. | <tex>f : S \rightarrow \mathbb{R}</tex> {{---}} оценочная функция. | ||
| − | + | Тогда задача однокритериальной оптимизации заключается в том, чтобы найти такое <tex>s \in S </tex>, что <tex> f(s)</tex> максимально. При этом рассматривается black-box scenario, что означает, что получить информацию об <tex>f</tex> можно только путем ее вычисления. | |
== Методы решения == | == Методы решения == | ||
==='''HC'''(Hill Climbing)=== | ==='''HC'''(Hill Climbing)=== | ||
| − | Общая схема алгоритма выглядит следующим образом: | + | В русскоязычном варианте этот метод называется методом спуска. Общая схема данного алгоритма выглядит следующим образом: |
x <tex>\leftarrow</tex> random | x <tex>\leftarrow</tex> random | ||
while(true) | while(true) | ||
| Строка 22: | Строка 20: | ||
==='''RMHC''' (Random Mutation Hill Climbing)=== | ==='''RMHC''' (Random Mutation Hill Climbing)=== | ||
| − | + | В данном алгоритме применяется же схема, что и для метода спуска, но <tex> x'</tex> получают путем случайного изменения одного из компонентов решения <tex> x </tex>. | |
==='''ES''' (Evolution Strategies)=== | ==='''ES''' (Evolution Strategies)=== | ||
| + | Это широкий класс алгоритмов поиска, основанных на идеях приспособления и эволюции. Существуют различные вариации ES: | ||
| − | 1) (1+1)-ES {{---}} | + | 1) (1+1)-ES {{---}} на каждой итерации существует одно исходное решение <tex> x</tex> и одно промежуточное решение <tex>x'</tex>. После внесения случайного изменения в каждый из компонентов <tex> x</tex>, <tex>x'</tex> может оказаться любым элементом <tex>S</tex>, но, чем он ближе к <tex>x</tex>, тем выше вероятность его выбора. |
| − | 2) (1+<tex>\lambda</tex>)-ES {{---}} генерируется <tex>\lambda</tex> промежуточных решений, среди них выбирается лучшее. | + | 2) (1+<tex>\lambda</tex>)-ES {{---}} на каждой итерации генерируется <tex>\lambda</tex> промежуточных решений, среди них выбирается лучшее. |
| − | 3) (<tex>\mu</tex>+<tex>\lambda</tex>)-ES {{---}} генерируется <tex>\lambda</tex> промежуточных решений, среди них выбирается <tex>\mu</tex> лучших. | + | 3) (<tex>\mu</tex>+<tex>\lambda</tex>)-ES {{---}} на каждой итерации генерируется <tex>\lambda</tex> промежуточных решений, среди них выбирается <tex>\mu</tex> лучших. |
== Примеры задач == | == Примеры задач == | ||
===OneMax=== | ===OneMax=== | ||
| − | + | Задача состоит в том, чтобы найти битовую строку длины <tex>n</tex>, состоящую из одних единиц. Оценочная функция {{---}} количество единиц в текущем решении: | |
<tex>f(x_1, x_2, \dots , x_n) = OneMax(x_1, x_2, \dots , x_n) = x_1 + x_2, + \dots + x_n </tex> | <tex>f(x_1, x_2, \dots , x_n) = OneMax(x_1, x_2, \dots , x_n) = x_1 + x_2, + \dots + x_n </tex> | ||
===MST (Minimum spanning tree)=== | ===MST (Minimum spanning tree)=== | ||
| − | + | Известная задача на графах, формулируется следующим образом. Пусть дан связный неориентированный граф <tex> G = (V, E) </tex>, с ребрами веса <tex> w_e </tex>. Требуется найти остовное дерево <tex>T = (V, E')</tex> минимального веса <tex> w(T) = \sum_{e \in E'} w_e </tex>. | |
== Оценка времени работы для OneMax == | == Оценка времени работы для OneMax == | ||
| + | |||
| + | Чтобы оценить время работы вышеописанных алгоритмов на задаче OneMax необходимо доказать несколько утверждений. | ||
{{Утверждение | {{Утверждение | ||
| Строка 103: | Строка 104: | ||
=== Алгоритм RMHC === | === Алгоритм RMHC === | ||
| − | + | Решение задачи OneMax с помощью алгоритма RMHC выглядит следующим образом. В качестве начального решения примем случайный вектор, а затем на каждой итерации равномерно выбираем и инвертируем один бит из <tex> n </tex>. Пусть <tex> k </tex> {{---}} количество единиц в векторе (то есть значение <tex> f </tex>) в начале фазы. При <tex> k + 1 = k' > k </tex> фаза заканчивается. | |
Оценим время работы алгоритма для данной задачи. | Оценим время работы алгоритма для данной задачи. | ||
| Строка 109: | Строка 110: | ||
Вероятность окончания фазы {{---}} это вероятность того, что будет выбран один из оставшихся <tex>n - k</tex> нулевых битов: <tex> \frac{n - k}{n} </tex>. Тогда по [[#proposal5|лемме об ожидании]] <tex> E(t) = \frac{n}{n-k} </tex> для конкретной фазы. | Вероятность окончания фазы {{---}} это вероятность того, что будет выбран один из оставшихся <tex>n - k</tex> нулевых битов: <tex> \frac{n - k}{n} </tex>. Тогда по [[#proposal5|лемме об ожидании]] <tex> E(t) = \frac{n}{n-k} </tex> для конкретной фазы. | ||
| − | Отсюда ожидаемая продолжительность всех фаз: | + | Отсюда ожидаемая продолжительность всех фаз равна: |
<tex> \sum_{k=0}^{n-1} \frac{n}{n-k} = n \sum_{i=1}^{n} \frac{1}{i} = O(n \log n) </tex> | <tex> \sum_{k=0}^{n-1} \frac{n}{n-k} = n \sum_{i=1}^{n} \frac{1}{i} = O(n \log n) </tex> | ||
=== Алгоритм (1+1)-ES === | === Алгоритм (1+1)-ES === | ||
| − | + | Применим (1+1)-ES к решению задачи OneMax. Для этого на каждой итерации независимо для каждого бита инвертируем его с вероятностью <tex> p = \frac{1}{n} </tex>. Пусть <tex> k </tex> {{---}} значение <tex> f </tex> в начале фазы. При <tex> k' > k </tex> фаза заканчивается. | |
Оценим время работы алгоритма для данной задачи. | Оценим время работы алгоритма для данной задачи. | ||
| − | + | Чтобы количество единиц увеличилось, необходимо из перевернуть хотя бы один <tex>n - k</tex> нулевых битов, и при этом не затронуть единичных. С учетом того, что вероятность переворота <tex> \frac{1}{n} </tex>, получаем вероятность окончания фазы <tex> (n - k)\frac{1}{n}(1 - \frac{1}{n}) ^ {n-1} \geq \frac{n - k}{e n}</tex> по [[#proposal3|утверждению(3)]]. Тогда по [[#proposal5|лемме об ожидании]] <tex> E(t) \leq \frac{e n}{n-k} </tex> для конкретной фазы. | |
Отсюда ожидаемая продолжительность всех фаз меньше либо равна: | Отсюда ожидаемая продолжительность всех фаз меньше либо равна: | ||
| Строка 132: | Строка 133: | ||
<tex>\forall t \in \mathbb{N}, x \in \mathbb{N}_0 : E(X_t | X_{t-1} = x) \leq (1 - \delta) x</tex>. | <tex>\forall t \in \mathbb{N}, x \in \mathbb{N}_0 : E(X_t | X_{t-1} = x) \leq (1 - \delta) x</tex>. | ||
| − | Тогда <tex>T = \min\{t \in \mathbb{N}_0 | X_t = 0\}</tex> удовлетворяет: | + | Тогда <tex>T = \min\{t \in \mathbb{N}_0 | X_t = 0\}</tex> (момент достижения оптимума) удовлетворяет: |
<tex>E(T) \leq \frac{1}{\delta}(\ln(X_0) + 1)</tex> | <tex>E(T) \leq \frac{1}{\delta}(\ln(X_0) + 1)</tex> | ||
}} | }} | ||
| Строка 148: | Строка 149: | ||
<tex>\forall c > 0, Pr(T > \frac{1}{\delta}(\ln(X_0) + c)) \leq e ^ {-c}</tex> | <tex>\forall c > 0, Pr(T > \frac{1}{\delta}(\ln(X_0) + c)) \leq e ^ {-c}</tex> | ||
}} | }} | ||
| + | |||
| + | Теорема о дрифте с успехом применяется для оценки времени работы эволюционных алгоритмов в различных ситуациях. Рассмотрим несколько примеров. | ||
===RMHC для OneMax=== | ===RMHC для OneMax=== | ||
| Строка 165: | Строка 168: | ||
<tex>E(X_t | X_{t-1} = k) \leq (k-1)\frac{k}{e n} + k (1 - \frac{k}{e n}) = k (1 - \frac{1}{e n})</tex>, то есть <tex> \delta = \frac{1}{e n}</tex>. | <tex>E(X_t | X_{t-1} = k) \leq (k-1)\frac{k}{e n} + k (1 - \frac{k}{e n}) = k (1 - \frac{1}{e n})</tex>, то есть <tex> \delta = \frac{1}{e n}</tex>. | ||
| − | + | Применяем [[#theorem1|теорему о дрифте]], с учетом того, что <tex> X_0 \leq n </tex>, и получаем: <tex> E(T) \leq e n(\ln{n} + 1)</tex>. | |
=== (1+1)-ES для MST === | === (1+1)-ES для MST === | ||
| − | Решение представляет собой битовую строку <tex>x</tex> длины <tex>m = |E|</tex>, где <tex>x_e = 1</tex>, если <tex>e \in E'</tex>, и <tex>x_e = 0</tex> в обратном случае. | + | Рассмотрим в качестве более содержательного примера поиск минимального остовного дерева с помощью (1+1)-ES. Решение представляет собой битовую строку <tex>x</tex> длины <tex>m = |E|</tex>, где <tex>x_e = 1</tex>, если <tex>e \in E'</tex>, и <tex>x_e = 0</tex> в обратном случае. |
| − | + | На каждой итерации независимо для каждого бита инвертируем его с вероятностью <tex>\frac{1}{m}</tex>. | |
| − | + | В качестве оценочной функции возьмем <tex>w(T) + c_{penalty} ({\#comp} - 1) </tex>, где <tex>\#comp</tex> {{---}} число компонент связности в текущем <tex> T </tex>. | |
{{Теорема | {{Теорема | ||
| Строка 184: | Строка 187: | ||
<tex>X_t = {\#comp} - 1</tex> после итерации <tex>t</tex>. | <tex>X_t = {\#comp} - 1</tex> после итерации <tex>t</tex>. | ||
| − | Если <tex>X_{t - 1} = k</tex>, то существует как минимум <tex>k</tex> ребер, которые не входят в <tex>T</tex> и добавление которых уменьшает <tex>X_t</tex>: | + | Если <tex>X_{t - 1} = k</tex>, то существует как минимум <tex>k</tex> ребер, которые не входят в <tex>T</tex> и добавление которых уменьшает <tex>X_t</tex>. По аналогии с решением задачи OneMax получаем: |
<tex>E(X_t) \leq (1 - \frac{1}{e m})k</tex>. | <tex>E(X_t) \leq (1 - \frac{1}{e m})k</tex>. | ||
| Строка 192: | Строка 195: | ||
2) Пусть <tex>T</tex> уже связно. Тогда оно остается связным и на дальнейших итерациях. | 2) Пусть <tex>T</tex> уже связно. Тогда оно остается связным и на дальнейших итерациях. | ||
| − | Пусть <tex> X_t = w(T) - w_{opt} </tex> для <tex>T</tex> после итерации <tex>t</tex>. | + | Пусть {{---}} это разница между весом текущего дерева и оптимального: <tex> X_t = w(T) - w_{opt} </tex> для <tex>T</tex> после итерации <tex>t</tex>. |
| − | Если <tex>X_{t-1} = D > 0</tex>, то существуют <tex>e_1, \dots, e_k</tex> из <tex>T</tex> и <tex>e'_1, \dots, e'_k</tex> из <tex>E \setminus T</tex> такие, что | + | Если <tex>X_{t-1} = D > 0</tex>, то существуют наборы ребер <tex>e_1, \dots, e_k</tex> из <tex>T</tex> и <tex>e'_1, \dots, e'_k</tex> из <tex>E \setminus T</tex> такие, что |
| − | <tex>T' = T - \{e_1, \dots , e_k\} + \{e'_1, \dots , e'_k\}</tex> {{---}} это | + | <tex>T' = T - \{e_1, \dots , e_k\} + \{e'_1, \dots , e'_k\}</tex> {{---}} это минимальное остовное дерево. |
| − | + | Следовательно <tex>D = \sum_{i} (w(e_i) - w(e'_i))</tex>, и для всех <tex>i</tex> | |
| − | <tex>T_i = T - e_i + e'_i</tex> {{---}} остовное дерево с <tex>w(T_i) < w(T)</tex>. | + | <tex>T_i = T - e_i + e'_i</tex> {{---}} остовное дерево с весом <tex>w(T_i) < w(T)</tex>. |
| − | С верояностью <tex>\geq 1/e m^2</tex>, одна итерация обменяет в точности ребра <tex>e_i</tex> и <tex>e'_i</tex>. | + | С верояностью <tex>\geq 1/e m^2</tex>, одна итерация обменяет в точности ребра <tex>e_i</tex> и <tex>e'_i</tex>. Тогда: |
<tex>E(X_t) \leq D - \sum_{i} (1/e m^2) (w(e_i) - w(e'_i))= (1 - 1/e m^2) D </tex> | <tex>E(X_t) \leq D - \sum_{i} (1/e m^2) (w(e_i) - w(e'_i))= (1 - 1/e m^2) D </tex> | ||
Версия 23:07, 18 июня 2012
Содержание
Постановка задачи однокритериальной оптимизации
Пусть — дискретное пространство решений, а — оценочная функция.
Тогда задача однокритериальной оптимизации заключается в том, чтобы найти такое , что максимально. При этом рассматривается black-box scenario, что означает, что получить информацию об можно только путем ее вычисления.
Методы решения
HC(Hill Climbing)
В русскоязычном варианте этот метод называется методом спуска. Общая схема данного алгоритма выглядит следующим образом:
x random while(true) x' neighbour(x) f(x') f(x) x = x'
Итерации выполняются, пока не будет удовлетворен критерий останова. Возможны два варианта HC:
1) first ascent — в качестве выбирается первый из соседей, для которого
2) steepest ascent — осуществляется перебор всех соседей, и в качестве выбирается тот, для которого максимально
RMHC (Random Mutation Hill Climbing)
В данном алгоритме применяется же схема, что и для метода спуска, но получают путем случайного изменения одного из компонентов решения .
ES (Evolution Strategies)
Это широкий класс алгоритмов поиска, основанных на идеях приспособления и эволюции. Существуют различные вариации ES:
1) (1+1)-ES — на каждой итерации существует одно исходное решение и одно промежуточное решение . После внесения случайного изменения в каждый из компонентов , может оказаться любым элементом , но, чем он ближе к , тем выше вероятность его выбора.
2) (1+)-ES — на каждой итерации генерируется промежуточных решений, среди них выбирается лучшее.
3) (+)-ES — на каждой итерации генерируется промежуточных решений, среди них выбирается лучших.
Примеры задач
OneMax
Задача состоит в том, чтобы найти битовую строку длины , состоящую из одних единиц. Оценочная функция — количество единиц в текущем решении:
MST (Minimum spanning tree)
Известная задача на графах, формулируется следующим образом. Пусть дан связный неориентированный граф , с ребрами веса . Требуется найти остовное дерево минимального веса .
Оценка времени работы для OneMax
Чтобы оценить время работы вышеописанных алгоритмов на задаче OneMax необходимо доказать несколько утверждений.
| Утверждение (1): |
|
Из курса математического анализа известно, что . Путем несложных преобразований получаем: . |
| Утверждение (2): |
|
1) Из определения сразу следует : . 2) Известно, что для справедливо Отсюда, вновь воспользовавшись определением , получаем . |
| Утверждение (3): |
. |
| по утверждению(1), отсюда следует требуемый результат. |
| Утверждение (4): |
. |
| по утверждению(2) и утверждению(3). |
| Утверждение (Лемма об ожидании): |
Если вероятность наступления события на каждом шаге равна , то матожидание наступления этого события . |
|
По определению математического ожидания: . Из курса математического анализа известно, что , а также то, что этот ряд удовлетворяет условиям теоремы о почленном дифференцировании. Воспользовавшись этим фактом, получаем: . Отсюда видно, что: . |
Алгоритм RMHC
Решение задачи OneMax с помощью алгоритма RMHC выглядит следующим образом. В качестве начального решения примем случайный вектор, а затем на каждой итерации равномерно выбираем и инвертируем один бит из . Пусть — количество единиц в векторе (то есть значение ) в начале фазы. При фаза заканчивается.
Оценим время работы алгоритма для данной задачи.
Вероятность окончания фазы — это вероятность того, что будет выбран один из оставшихся нулевых битов: . Тогда по лемме об ожидании для конкретной фазы.
Отсюда ожидаемая продолжительность всех фаз равна:
Алгоритм (1+1)-ES
Применим (1+1)-ES к решению задачи OneMax. Для этого на каждой итерации независимо для каждого бита инвертируем его с вероятностью . Пусть — значение в начале фазы. При фаза заканчивается.
Оценим время работы алгоритма для данной задачи.
Чтобы количество единиц увеличилось, необходимо из перевернуть хотя бы один нулевых битов, и при этом не затронуть единичных. С учетом того, что вероятность переворота , получаем вероятность окончания фазы по утверждению(3). Тогда по лемме об ожидании для конкретной фазы.
Отсюда ожидаемая продолжительность всех фаз меньше либо равна:
Оценка времени работы с использованием Drift Analysis
| Теорема (Drift theorem): |
Пусть — неотрицательные целочисленные случайные величины и существует такое что:
. Тогда (момент достижения оптимума) удовлетворяет: |
| Теорема (An Improved Drift theorem): |
Пусть — случайные величины из и существует такое что:
. Тогда удовлетворяет: , |
Теорема о дрифте с успехом применяется для оценки времени работы эволюционных алгоритмов в различных ситуациях. Рассмотрим несколько примеров.
RMHC для OneMax
Пусть — число нулевых бит после итерации :
Пусть . Тогда
, то есть .
Отсюда по теореме о дрифте, с учетом того, что получаем: .
(1+1)-ES для OneMax
Пусть — число нулевых бит после итерации : .
Пусть . Тогда вероятность перевернуть один нулевых битов равна . Отсюда:
, то есть .
Применяем теорему о дрифте, с учетом того, что , и получаем: .
(1+1)-ES для MST
Рассмотрим в качестве более содержательного примера поиск минимального остовного дерева с помощью (1+1)-ES. Решение представляет собой битовую строку длины , где , если , и в обратном случае.
На каждой итерации независимо для каждого бита инвертируем его с вероятностью .
В качестве оценочной функции возьмем , где — число компонент связности в текущем .
| Теорема (Neumann, Wegener (2004)): |
Ожидаемое время работы (1+1)-ES для задачи MST равно , где — максимальный вес ребра. |
| Доказательство: |
|
1) Пусть после итераций связно: после итерации . Если , то существует как минимум ребер, которые не входят в и добавление которых уменьшает . По аналогии с решением задачи OneMax получаем: . Применяя теорему о дрифте, получаем требуемый результат. 2) Пусть уже связно. Тогда оно остается связным и на дальнейших итерациях. Пусть — это разница между весом текущего дерева и оптимального: для после итерации . Если , то существуют наборы ребер из и из такие, что — это минимальное остовное дерево. Следовательно , и для всех — остовное дерево с весом . С верояностью , одна итерация обменяет в точности ребра и . Тогда:
Используем теорему о дрифте, учитывая, что , и получаем требуемый результат. |
Источники
- Doerr B.: Tutorial: Drift Analysis. GECCO '11 Proceedings of the 13th annual conference companion on Genetic and evolutionary computation, 1311-1320 (2011)
- Droste S., Jansen T., Wegener I.: On the analysis of the (1 + 1) evolutionary algorithm. Theoretical Computer Science 276, 51–81 (2002)
- Witt C.: Randomized Search Heuristics. Algorithms for Massive Data Sets, DTU Informatik,Danmarks Tekniske Universitet (2010)