Black-box Complexity. Примеры нереалистичных оценок Black-box Complexity

Материал из Викиконспекты
Перейти к: навигация, поиск
Эта статья находится в разработке!

Введение в Black-box complexity

Целью теории сложности является определение вычислительной трудности алгоритмов. Классическая теория сложности предполагает, что алгоритму полностью известна структура решаемой задачи. В случае эволюционных алгоритмов, алгоритм обладает информацией только о качестве (значении fitness функции) получаемого им решения. По этой причине утверждения классической теории сложности мало применимы для эволюционных алгоритмов.

Black-box Complexity — попытка построить теорию сложности для эволюционных алгоритмов. Вкратце, black-box complexity алгоритма — количество вычислений fitness функции, необходимое для получения решения. Такое определение позволяет получить не реалистично низкие оценки black-box complexity, например, полиномиальную сложность для [math]\mathrm{NP}[/math]-полной задачи поиска максимальной клики.

По этой причине были введены ограничения на исследуемые алгоритмы. Требуется, чтобы для получения новых кандидатов на решение использовались только несмещенные (позиция элемента в битовой строке и его значение не влияют на выбор битов для изменения) вариативные операторы. Так же введено понятие арности[math]k[/math]-арный несмещенный black-box алгоритм использует только те операторы, которые принимают не более чем [math]k[/math] аргументов. Для некоторых классов задач такой подход к опеределению black-box complexity позволяет получить более реалистичные оценки сложности. Операторы с арностью [math]1[/math] называют мутационными. В данной статье показано, что даже для алгоритмов, использующих только мутационные операторы можно получить не реалистично маленькую оценку black-box complexity.

Неограниченная и несмещенная Black-box модели

Обозначения

  • [math]\mathbb{N}[/math] — положительные целые числа;
  • [math]\forall k \in \mathbb{N}[/math]
[math][k] := \{1, \ldots , k\}[/math];
  • [math][0..k] := [k] \cup \{0\}[/math];
  • для битовой строки [math]x = x_1 \cdots x_n \in \{0, 1\}^n[/math]
[math]\overline{x}[/math] — побитовое дополнение строки [math]x[/math];
  • [math]\bigoplus[/math] — побитовое исключающее или;
  • для любого множества [math]S[/math]
[math]2^S[/math] — множество всех подмножеств множества [math]S[/math]
  • для [math]n \in \mathbb{N}[/math]
[math]S_n[/math] — множество всех перестановок [math][n][/math];
  • для [math]\sigma \in S_n[/math] и [math]x \in \{0,1\}^n[/math]
[math]\sigma(x) := x_{\sigma(1)} \cdots x_{\sigma(n)}[/math];
  • под [math]log[/math] понимается натуральный логарифм.

Неограниченная Black-box модель

Рассматривается класс алгоритмов оптимизации, которые получают информацию о решаемой задаче через вычисление fitness функции возможных решений. Заданная fitness функция вычисляется ораклом, или дается как black-box. Алгоритм может запросить у оракла значение функции для любого решения, однако более никакой информации о решении получить не может.

В качестве fitness функции берется псевдо-булевая функция [math]F:\{0,1\}^n \rightarrow \mathbb{R}[/math].

Согласно концепции black-box, алгоритм может включать следующие действия:

  • выбор вероятностного распределения над [math]\{0,1\}^n[/math];
  • выбор кандидата [math]x \in \{0,1\}^n[/math] cогласно выбранному распределению;
  • запрос значения fitness функции выбранного кандидата у оракла.

Схема неограниченного black-box алгоритма:

Инициализация: выбрать [math]x^{(0)}[/math] согласно некоторому вероятностному распределению [math]p^{(0)}[/math] над [math]\{0,1\}^n[/math]. Запросить [math]f(x^{(0)})[/math].
Оптимизация: for [math]t = 1, 2, 3, \ldots [/math] until условие остановки do
  Исходя из [math]((x^{(0)}, f(x^{(0)}), \ldots, (x^{(t-1)}, f(x^{(t-1)}))[/math], выбрать вероятностное распределение [math]p^{(t)}[/math] над [math]\{0,1\}^n[/math].
  Выбрать [math]x^{(t)}[/math] согласно [math]p^{(t)}[/math] и запросить [math]f(x^{(t)})[/math].

В качестве времени работы black-box алгоритма берется количество запросов к ораклу сделанное до первого запроса с оптимальным решением.

Пусть [math]\mathcal{F}[/math] — класс псевдо-булевых функций. Сложностью алгоритма [math]A[/math] над [math]\mathcal{F}[/math] называется максимальное предположительное время работы [math]A[/math] на функции [math]f \in \mathcal{F}[/math] (в худшем случае). Сложностью [math]\mathcal{F}[/math] относительно класса алгоритмов [math]\mathcal{A}[/math] называется минимальная сложность среди всех [math]A \in \mathcal{A}[/math] над [math]\mathcal{F}[/math]. Неограниченной black-box сложностью [math]\mathcal{F}[/math] называется сложность [math]\mathcal{F}[/math] относительно класса неограниченных black-box алгоритмов.

Несмещенная Black-box модель

Класс неограниченных black-box алгоритмов слишком мощный. Например для любого функционального класса [math]\mathcal{F} = \{f\}[/math] неограниченная black-box сложность равна единице — алгоритм, который просто запрашивает оптимальное решение первым же шагом, удовлетворяет этому условию.

Чтобы избежать этих недостатков была введена более строгая модель. В ней алгоритмы могут генерировать новые решения используя только несмещенные вариативные операторы.


Определение:
[math]\forall k \in \mathbb{N}, k[/math]-арным несмещенным распределением [math](D(\cdot|y^{(1)},\ldots,y^{(k)}))_{y^{(1)},\ldots,y^{(k)} \in \{0,1\}^n}[/math] называется семейство вероятностных распределений над [math]\{0,1\}^n[/math] таких, что для любых [math]y^{(1)},\ldots,y^{(k)} \in \{0,1\}^n[/math] выполняются следующие условия:
  • [math]\forall x, z \in \{0,1\}^n[/math]:
[math]D(x|y^{(1)},\ldots,y^{(k)}) = D(x \bigoplus z|y^{(1)} \bigoplus z,\ldots,y^{(k)} \bigoplus z)[/math];
  • [math]\forall x \in \{0,1\}^n \forall \sigma \in S_n[/math]:
[math]D(x|y^{(1)},\ldots,y^{(k)}) = D(\sigma(x)|\sigma(y^{(1)}),\ldots,\sigma(y^{(k)}))[/math].


Первое условие называется [math]\bigoplus[/math]-инвариантностью, второе — перестановочной инвариантностью. Оператор, выбранный из [math]k[/math]-арного несмещенного распределения называется [math]k[/math]-арным несмещенным вариативным оператором.

Схема [math]k[/math]-арного несмещенного black-box алгоритма:

Инициализация: выбрать [math]x^{(0)}[/math] равновероятно из [math]\{0,1\}^n[/math]. Запросить [math]f(x^{(0)})[/math].
Оптимизация: for [math]t = 1, 2, 3, \ldots [/math] until условие остановки do
  Исходя из [math](f(x^{(0)}), \ldots, f(x^{(t-1)}))[/math], выбрать [math]k[/math] индексов [math]i_1, \ldots, i_k \in [0..t-1][/math] и [math]k[/math]-арное несмещенное распределение [math]D(\cdot|x^{(i_1)},\ldots,x^{(i_k)})[/math].
  Выбрать [math]x^{(t)}[/math] согласно [math]D(\cdot|x^{(i_1)},\ldots,x^{(i_k)})[/math] и запросить [math]f(x^{(t)})[/math].
Лемма:
Предположим, что для задачи [math]P[/math] существует black-box алгоритм [math]A[/math], который с константной вероятностью успеха решает [math]P[/math] за [math]s[/math] итераций. Тогда black-box сложность [math]P[/math] не больше [math]O(s)[/math].

Jump функции

Определение:
[math]\forall k \lt n/2[/math] функция [math]Jump_k[/math] определяется как
[math]Jump_k(x) = \left\{ \begin{array}{ccc} n, & if & |x|_1=n; \\ |x|_1, & if & k \lt |x|_1 \lt n-k; \\ 0, & & otherwise, \end{array}\right.[/math]
[math]\forall x \in \{0,1\}^n.[/math]


Будет показано, что для любого константного [math]k[/math] можно с высокой вероятностью решить проблему [math]OneMax[/math] за малое количество black-box обращений к [math]Jump_k[/math]. С помощью этого можно показать, что для любого константного [math]k[/math] несмещенная black-box сложность для функции [math]Jump_k[/math] удивительно мала.

Лемма:
[math]\forall k,c[/math] существует унарная несмещенная процедура [math]s[/math], использующая [math]c+1[/math] запросов к [math]Jump_k[/math] такая, что для всех битовых строк [math]x[/math], [math]s(x) = OneMax(x)[/math] с вероятностью [math]1 - O(n^{-c})[/math].
Доказательство:
[math]\triangleright[/math]

Используется унарный несмещенный вариативный оператор [math]flip_k[/math], который равновероятно выбирает строку из [math]k[/math]-окрестности для аргумента (битовую строку, которая отличается в [math]k[/math] позициях). Затем будет использована процедура [math]s[/math], которая использует [math]Jump_k[/math] для аппроксимации [math]OneMax[/math] как показано ниже. Процедура выбирает [math]c[/math] битовых строк в [math]k[/math]-окрестности [math]x[/math]. Если [math]|x|_1 \geq n-k[/math], то правдоподобно, что хотя бы раз только единицы из [math]x[/math] будут заменены, что приведет к тому, что [math]Jump_k = |x|_1 - k[/math]. Так как больше никакая строка из выборки не будет иметь более низкое [math]Jump_k[/math] значение, то добавление [math]k[/math] к минимальному ненулевому значению [math]Jump_k[/math] других строк из выборки приведет к нужному результату. Случай, когда [math]|x|_1 \leq k[/math], аналогичен.

Понятно, что процедура верна при всех [math]x[/math], таких, что [math]k \lt |x|_1 \lt n-k[/math]. Остальные два случая симметричны, поэтому пусть [math]|x|_1 \geq n-k[/math]. Очевидно, что результат процедуры корректен тогда и только тогда, когда хотя бы в одной из [math]c[/math] строк были заменены только единицы. Вычислим вероятность [math]p[/math] этого события. Мы выбираем [math]k[/math] бит для замены итеративно, поэтому после [math]i[/math] итераций имеется как минимум [math]n-k-i[/math] позиций с единицей из [math]n-i[/math] позиций, которые можно выбирать. Это приводит к границе на вероятность выбора единиц:

[math](\frac{n-k}{n})\cdot(\frac{n-k-1}{n-1})\cdots(\frac{n-k-(k-1)}{n-(k-1)}) = \Pi_{i=0}^{k-1}(1 - \frac{k}{n-i}) \geq (1 - \frac{k}{n-k})^k \geq (1 - \frac{k^2}{n-k}),[/math]

используя неравенство Бернулли. Таким образом имеем:

[math]p \geq 1 - (\frac{k^2}{n-k})^c[/math].

Процедура [math]s[/math]:

if [math]Jump_k(x) \neq 0[/math] then output [math]Jump_k(x)[/math];
[math]M \leftarrow \{Jump_k(flip_k(x)) | i \in [c]\}[/math];
if [math]max(M) \lt  n/2[/math] then [math]m \leftarrow max(M) - k[/math];
else [math]m \leftarrow min(M \backslash \{0\}) + k[/math];
output [math]m[/math];
[math]\triangleleft[/math]

Теперь, используя предыдущую лемму, можно найти несмещенную black-box сложность для функции [math]Jump_k[/math] при константном [math]k[/math].

Теорема:
Для константы [math]k[/math] несмещенная black-box сложность [math]Jump_k[/math]:
  • [math]O(n \log(n))[/math] для унарных вариативных операторов;
  • [math]O(n / \log(m))[/math] для [math]m[/math]-арных вариативных операторов при [math]2 \leq m \leq n[/math];
  • [math]O(n / \log(n))[/math] для *-арных вариативных операторов.

Процедуре из леммы для работы необходимо знание параметра [math]k[/math]. Процедуру можно модифицировать таким образом, что она будет работать без этого знания. Как только процедура впервые выберет случайную битовую строку с [math]Jump_k=0[/math] она определит [math]k[/math], затем продолжит работу как было описано раньше. Параметр [math]k[/math] определяется с помощью выбора достаточно большого количества случайных строк в [math]i[/math]-окрестности от строки с [math]Jump_k=0[/math], начиная с [math]i=1[/math] и продолжая до тех пор, пока [math]Jump_k[/math] не станет отличным от нуля. Эта строка будет иметь максимальное значение [math]Jump_k=n-k-1[/math]. Из этого значения и [math]n[/math] процедура может вычислить [math]k[/math].

Задача о разбиении