<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.67.53.106&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=178.67.53.106&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/178.67.53.106"/>
		<updated>2026-05-19T18:00:42Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25758</id>
		<title>Сложность задачи вычисления Least Hypervolume Contributor и задачи его аппроксимации</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25758"/>
				<updated>2012-06-19T09:38:06Z</updated>
		
		<summary type="html">&lt;p&gt;178.67.53.106: /* Сложность задачи MINCON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Используемые обозначения ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{HYP}\left(M\right)&amp;lt;/tex&amp;gt; – гиперобъем множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, x) := \mathrm{HYP}(M) - \mathrm{HYP}(M \ x)&amp;lt;/tex&amp;gt; – вклад элемента &amp;lt;tex&amp;gt;x \in M&amp;lt;/tex&amp;gt; в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) := \min \limits_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – минимальный вклад в гиперобъем множества.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{LC}(M) := \mathrm{argmin}_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – least contributor, минимальный вкладчик, элемент, имеющей минимальный вклад в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\varepsilon\text{-}\mathrm{LC}(M)&amp;lt;/tex&amp;gt; – элемент, имеющий вклад, отличающийся от минимального не более чем в &amp;lt;tex&amp;gt;1 + \varepsilon&amp;lt;/tex&amp;gt; раз, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-}\mathrm{LC}(M)) \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи MINCON ==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача MINCON является #P-трудной, а задача аппроксимации с точностью до &amp;lt;tex&amp;gt;2^{d^{1 - \varepsilon}}&amp;lt;/tex&amp;gt; является NP-трудной для любого &amp;lt;tex&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для доказательства теоремы сведем задачу #MON-CNF к задаче MINCON.&lt;br /&gt;
Про задачу #MON-CNF известно, что она является #P-трудной, а ее аппроксимация является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&lt;br /&gt;
Задача #MON-CNF – задача нахождения числа удовлетворяющих подстановок для монотонной булевой формулы, записанной в КНФ, &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt;,&lt;br /&gt;
где клозы &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
За &amp;lt;tex&amp;gt;\Box(a_1, \ldots, a_d)&amp;lt;/tex&amp;gt; будем обозначать прямоугольный гиперпараллелипипед &amp;lt;tex&amp;gt;[0, a_1] \times \ldots \times [0, a_d]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt; – монотонная булева формула в КНФ, &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим параллелипипеды &amp;lt;tex&amp;gt;A_k = \Box(a_1^k, \ldots, a_d^k, 2^d + 2) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt; для  каждого клоза формулы, при этом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a_i^k =&lt;br /&gt;
  \begin{cases}&lt;br /&gt;
    1,~\text{if}~i \in C_k \\&lt;br /&gt;
    2,~\text{otherwise}&lt;br /&gt;
  \end{cases}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также добавим параллелипипед &amp;lt;tex&amp;gt;B = \Box(2, \ldots, 2, 1) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt;. Таким образом множество &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; будет&lt;br /&gt;
состоять из &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt; элемента &amp;lt;tex&amp;gt;\{A_1, \ldots, A_n, B\}&amp;lt;/tex&amp;gt;. Не умаляя общности, будем считать, что ни один клоз не доминируется&lt;br /&gt;
другим, то есть &amp;lt;tex&amp;gt;C_i \nsubseteq C_j&amp;lt;/tex&amp;gt; для любых &amp;lt;tex&amp;gt;i \neq j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Для каждого &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt; существуют такие &amp;lt;tex&amp;gt;x_i  = a_i^k - 1&amp;lt;/tex&amp;gt;, что область &amp;lt;tex&amp;gt;[x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times [1, 2^d + 2]&amp;lt;/tex&amp;gt; уникально покрывается только&lt;br /&gt;
элементом &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, что означается, что &amp;lt;tex&amp;gt;\mathrm{CON}(M, A_k) &amp;gt; 2^d&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Так как объем &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; составляется лишь &amp;lt;tex&amp;gt;2^d&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
именно &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет являться минимальным вкладчиком.&lt;br /&gt;
&lt;br /&gt;
Представим &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; в виде набора кубиков  &amp;lt;tex&amp;gt;B_x = [x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times [0, 1]&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;x_i \in \{0, 1\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входил в &amp;lt;tex&amp;gt;\mathrm{CON}(M, B)&amp;lt;/tex&amp;gt;, необходимо, чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; не входил в &amp;lt;tex&amp;gt;\bigcup \limits_{k = 1}^n A_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входит в &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, если для всех &amp;lt;tex&amp;gt;i \in \{1, \ldots, d\}&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;x_i + 1 \le a_i^k&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;a_i^k = 2&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;x_i = 1&amp;lt;/tex&amp;gt;,&lt;br /&gt;
и &amp;lt;tex&amp;gt;i \notin C_k&amp;lt;/tex&amp;gt;.  Получаем, что такой набор &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt; для какого-то &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
есть &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\overline{f} = \bigvee \limits_{k=1}^n \bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;B_x \subseteq \mathrm{CON}(M, B)&amp;lt;/tex&amp;gt; тогда и только тогда, когда &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) = \mathrm{CON}(M, B) = \left\vert\left\{ \left(x_1, \ldots, x_d \right) \in \left\{0, 1\right\}^d | \left(x_1, \ldots, x_d \right) \text{ satisfies } f \right\}\right\vert&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Из-за сведения получаем, что задача MINCON является #P-трудной, а ее аппроксимация является NP-трудной, даже когда минимальный вкладчик уже известен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для докозательства этой теоремы сведем задачу MINCON к задаче &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC. Не умаляя общности, будем считать, что &amp;lt;tex&amp;gt;d \ge 2&amp;lt;/tex&amp;gt;, так как для&lt;br /&gt;
&amp;lt;tex&amp;gt;d = 1&amp;lt;/tex&amp;gt; задача становится тривиальной. Также будем считать, что &amp;lt;tex&amp;gt;\mathrm{MINCON}(M) &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; – размер обрамляющего прямоугольного параллелипипеда множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Очевидно, что &amp;lt;tex&amp;gt;V \le 2^{\text{input size}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Определим новое множество элементов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A = \left\{\Box\left(a_1 + 2V, a_2, \ldots, a_d\right) | \left(a_1, \ldots, a_d\right) \in M\right\}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;B = \Box \left(2V, \ldots, 2V\right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{\lambda} = \Box \left(1, \ldots, 1, 2V + \lambda \right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;M_{\lambda} = A \cup \{B\} \cup \{ C_{\lambda} \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Исходные элементы были сдвинуты вдоль первой оси, поэтому вклад этих элементов не изминился, так как добавленная часть покрывается новым элементом &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Также отметим, что вклад каждого из элементов множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; не превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Элемент &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; единственный, кто покрывает область &amp;lt;tex&amp;gt;[V, 2V] \times \ldots \times [V, 2V]&amp;lt;/tex&amp;gt;, объем которой превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;. Единственным кандидатом на&lt;br /&gt;
должность минимального вкладчика, не присутствовавшего в начальном множестве &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, является элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt;. Его вклад в точности соответствуем области&lt;br /&gt;
&amp;lt;tex&amp;gt;[0, 1] \times \ldots \times [0, 1] \times [2V, 2V + \lambda]&amp;lt;/tex&amp;gt;, объем которой равен &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом, элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; является минимальным вкладчиком только, если &amp;lt;tex&amp;gt;\lambda \le \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как умея решать задачу LC, мы можем проверять, является ли &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; минимальным вкладчиком, можно&lt;br /&gt;
устроить двоичный поиск по велечине &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;, чтобы найти &amp;lt;tex&amp;gt;\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, что&lt;br /&gt;
потребует &amp;lt;tex&amp;gt;O(\log(V))&amp;lt;/tex&amp;gt; шагов. Однако в случае &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC запросов&lt;br /&gt;
обычный двоичный поиcк осуществить не удается. Несмотря на появившуюся неточность, продолжим выполнять&lt;br /&gt;
все шаги двоичного поиска как обычно.&lt;br /&gt;
&lt;br /&gt;
Использование &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC может привести двоичный поиск не туда.&lt;br /&gt;
Будем искать только старший бит ответа, то есть положим &amp;lt;tex&amp;gt;\lambda = 2^{\kappa}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt; – целое число.&lt;br /&gt;
Так как мы имеем &amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-LC}(M)) \le (1 + \varepsilon) \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, то неправильный ответ&lt;br /&gt;
на запрос может выдаваться только при &amp;lt;tex&amp;gt;(1 + \varepsilon)^{-1}\mathrm{MINCON}(M) \le 2^{\kappa} \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Вне этого интервала результат запроса всегда верен.&lt;br /&gt;
Используя такой двоичный поиск, мы получим число &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt;, которое или попадает в указанный интервал, и тогда задача решена, или является&lt;br /&gt;
максимальным целым числом меньшим &amp;lt;tex&amp;gt;\log_2 \left((1 + \varepsilon)^{-1}\mathrm{MINCON}(M)\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;\lambda = 2^{\kappa} \ge \mathrm{MINCON}(M) / (2(1 + \varepsilon))&amp;lt;/tex&amp;gt;, то есть была получена &amp;lt;tex&amp;gt;2(1 + \varepsilon)&amp;lt;/tex&amp;gt; аппроксимация задачи MINCON.&lt;br /&gt;
&lt;br /&gt;
Ранее было показано, что аппроксимация задачи MINCON является NP-трудной, таким образом NP-трудность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC доказана.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
# Bringmann K., Friedrich T. Approximating the least hypervolume contributor: NP-hard in general, but fast in practice (2009)&lt;/div&gt;</summary>
		<author><name>178.67.53.106</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25757</id>
		<title>Сложность задачи вычисления Least Hypervolume Contributor и задачи его аппроксимации</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25757"/>
				<updated>2012-06-19T09:37:32Z</updated>
		
		<summary type="html">&lt;p&gt;178.67.53.106: /* Сложность задачи MINCON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Используемые обозначения ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{HYP}\left(M\right)&amp;lt;/tex&amp;gt; – гиперобъем множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, x) := \mathrm{HYP}(M) - \mathrm{HYP}(M \ x)&amp;lt;/tex&amp;gt; – вклад элемента &amp;lt;tex&amp;gt;x \in M&amp;lt;/tex&amp;gt; в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) := \min \limits_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – минимальный вклад в гиперобъем множества.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{LC}(M) := \mathrm{argmin}_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – least contributor, минимальный вкладчик, элемент, имеющей минимальный вклад в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\varepsilon\text{-}\mathrm{LC}(M)&amp;lt;/tex&amp;gt; – элемент, имеющий вклад, отличающийся от минимального не более чем в &amp;lt;tex&amp;gt;1 + \varepsilon&amp;lt;/tex&amp;gt; раз, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-}\mathrm{LC}(M)) \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи MINCON ==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача MINCON является #P-трудной, а задача аппроксимации с точностью до &amp;lt;tex&amp;gt;2^{d^{1 - \varepsilon}}&amp;lt;/tex&amp;gt; является NP-трудной для любого &amp;lt;tex&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для доказательства теоремы сведем задачу #MON-CNF к задаче MINCON.&lt;br /&gt;
Про задачу #MON-CNF известно, что она является #P-трудной, а ее аппроксимация является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&lt;br /&gt;
Задача #MON-CNF – задача нахождения числа удовлетворяющих подстановок для монотонной булевой формулы, записанной в КНФ, &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt;,&lt;br /&gt;
где клозы &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
За &amp;lt;tex&amp;gt;\Box(a_1, \ldots, a_d)&amp;lt;/tex&amp;gt; будем обозначать прямоугольный гиперпараллелипипед &amp;lt;tex&amp;gt;[0, a_1] \times \ldots \times [0, a_d]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt; – монотонная булева формула в КНФ, &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим параллелипипеды &amp;lt;tex&amp;gt;A_k = \Box(a_1^k, \ldots, a_d^k, 2^d + 2) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt; для  каждого клоза формулы, при этом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a_i^k =&lt;br /&gt;
  \begin{cases}&lt;br /&gt;
    1,~\text{if}~i \in C_k \\&lt;br /&gt;
    2,~\text{otherwise}&lt;br /&gt;
  \end{cases}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также добавим параллелипипед &amp;lt;tex&amp;gt;B = \Box(2, \ldots, 2, 1) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt;. Таким образом множество &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; будет&lt;br /&gt;
состоять из &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt; элемента &amp;lt;tex&amp;gt;\{A_1, \ldots, A_n, B\}&amp;lt;/tex&amp;gt;. Не умаляя общности, будем считать, что ни один клоз не доминируется&lt;br /&gt;
другим, то есть &amp;lt;tex&amp;gt;C_i \nsubseteq C_j&amp;lt;/tex&amp;gt; для любых &amp;lt;tex&amp;gt;i \neq j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Для каждого &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt; существуют такие &amp;lt;tex&amp;gt;x_i  = a_i^k - 1&amp;lt;/tex&amp;gt;, что область &amp;lt;tex&amp;gt;[x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times [1, 2^d + 2]&amp;lt;/tex&amp;gt; уникально покрывается только&lt;br /&gt;
элементом &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, что означается, что &amp;lt;tex&amp;gt;\mathrm{CON}(M, A_k) &amp;gt; 2^d&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Так как объем &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; составляется лишь &amp;lt;tex&amp;gt;2^d&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
именно &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет являться минимальным вкладчиком.&lt;br /&gt;
&lt;br /&gt;
Представим &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; в виде набора кубиков  &amp;lt;tex&amp;gt;B_x = [x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times \{0, 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;x_i \in \{0, 1\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входил в &amp;lt;tex&amp;gt;\mathrm{CON}(M, B)&amp;lt;/tex&amp;gt;, необходимо, чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; не входил в &amp;lt;tex&amp;gt;\bigcup \limits_{k = 1}^n A_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входит в &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, если для всех &amp;lt;tex&amp;gt;i \in \{1, \ldots, d\}&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;x_i + 1 \le a_i^k&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;a_i^k = 2&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;x_i = 1&amp;lt;/tex&amp;gt;,&lt;br /&gt;
и &amp;lt;tex&amp;gt;i \notin C_k&amp;lt;/tex&amp;gt;.  Получаем, что такой набор &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt; для какого-то &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
есть &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\overline{f} = \bigvee \limits_{k=1}^n \bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;B_x \subseteq \mathrm{CON}(M, B)&amp;lt;/tex&amp;gt; тогда и только тогда, когда &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) = \mathrm{CON}(M, B) = \left\vert\left\{ \left(x_1, \ldots, x_d \right) \in \left\{0, 1\right\}^d | \left(x_1, \ldots, x_d \right) \text{ satisfies } f \right\}\right\vert&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Из-за сведения получаем, что задача MINCON является #P-трудной, а ее аппроксимация является NP-трудной, даже когда минимальный вкладчик уже известен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для докозательства этой теоремы сведем задачу MINCON к задаче &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC. Не умаляя общности, будем считать, что &amp;lt;tex&amp;gt;d \ge 2&amp;lt;/tex&amp;gt;, так как для&lt;br /&gt;
&amp;lt;tex&amp;gt;d = 1&amp;lt;/tex&amp;gt; задача становится тривиальной. Также будем считать, что &amp;lt;tex&amp;gt;\mathrm{MINCON}(M) &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; – размер обрамляющего прямоугольного параллелипипеда множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Очевидно, что &amp;lt;tex&amp;gt;V \le 2^{\text{input size}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Определим новое множество элементов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A = \left\{\Box\left(a_1 + 2V, a_2, \ldots, a_d\right) | \left(a_1, \ldots, a_d\right) \in M\right\}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;B = \Box \left(2V, \ldots, 2V\right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{\lambda} = \Box \left(1, \ldots, 1, 2V + \lambda \right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;M_{\lambda} = A \cup \{B\} \cup \{ C_{\lambda} \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Исходные элементы были сдвинуты вдоль первой оси, поэтому вклад этих элементов не изминился, так как добавленная часть покрывается новым элементом &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Также отметим, что вклад каждого из элементов множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; не превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Элемент &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; единственный, кто покрывает область &amp;lt;tex&amp;gt;[V, 2V] \times \ldots \times [V, 2V]&amp;lt;/tex&amp;gt;, объем которой превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;. Единственным кандидатом на&lt;br /&gt;
должность минимального вкладчика, не присутствовавшего в начальном множестве &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, является элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt;. Его вклад в точности соответствуем области&lt;br /&gt;
&amp;lt;tex&amp;gt;[0, 1] \times \ldots \times [0, 1] \times [2V, 2V + \lambda]&amp;lt;/tex&amp;gt;, объем которой равен &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом, элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; является минимальным вкладчиком только, если &amp;lt;tex&amp;gt;\lambda \le \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как умея решать задачу LC, мы можем проверять, является ли &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; минимальным вкладчиком, можно&lt;br /&gt;
устроить двоичный поиск по велечине &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;, чтобы найти &amp;lt;tex&amp;gt;\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, что&lt;br /&gt;
потребует &amp;lt;tex&amp;gt;O(\log(V))&amp;lt;/tex&amp;gt; шагов. Однако в случае &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC запросов&lt;br /&gt;
обычный двоичный поиcк осуществить не удается. Несмотря на появившуюся неточность, продолжим выполнять&lt;br /&gt;
все шаги двоичного поиска как обычно.&lt;br /&gt;
&lt;br /&gt;
Использование &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC может привести двоичный поиск не туда.&lt;br /&gt;
Будем искать только старший бит ответа, то есть положим &amp;lt;tex&amp;gt;\lambda = 2^{\kappa}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt; – целое число.&lt;br /&gt;
Так как мы имеем &amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-LC}(M)) \le (1 + \varepsilon) \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, то неправильный ответ&lt;br /&gt;
на запрос может выдаваться только при &amp;lt;tex&amp;gt;(1 + \varepsilon)^{-1}\mathrm{MINCON}(M) \le 2^{\kappa} \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Вне этого интервала результат запроса всегда верен.&lt;br /&gt;
Используя такой двоичный поиск, мы получим число &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt;, которое или попадает в указанный интервал, и тогда задача решена, или является&lt;br /&gt;
максимальным целым числом меньшим &amp;lt;tex&amp;gt;\log_2 \left((1 + \varepsilon)^{-1}\mathrm{MINCON}(M)\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;\lambda = 2^{\kappa} \ge \mathrm{MINCON}(M) / (2(1 + \varepsilon))&amp;lt;/tex&amp;gt;, то есть была получена &amp;lt;tex&amp;gt;2(1 + \varepsilon)&amp;lt;/tex&amp;gt; аппроксимация задачи MINCON.&lt;br /&gt;
&lt;br /&gt;
Ранее было показано, что аппроксимация задачи MINCON является NP-трудной, таким образом NP-трудность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC доказана.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
# Bringmann K., Friedrich T. Approximating the least hypervolume contributor: NP-hard in general, but fast in practice (2009)&lt;/div&gt;</summary>
		<author><name>178.67.53.106</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25756</id>
		<title>Сложность задачи вычисления Least Hypervolume Contributor и задачи его аппроксимации</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25756"/>
				<updated>2012-06-19T09:36:41Z</updated>
		
		<summary type="html">&lt;p&gt;178.67.53.106: /* Сложность задачи MINCON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Используемые обозначения ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{HYP}\left(M\right)&amp;lt;/tex&amp;gt; – гиперобъем множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, x) := \mathrm{HYP}(M) - \mathrm{HYP}(M \ x)&amp;lt;/tex&amp;gt; – вклад элемента &amp;lt;tex&amp;gt;x \in M&amp;lt;/tex&amp;gt; в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) := \min \limits_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – минимальный вклад в гиперобъем множества.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{LC}(M) := \mathrm{argmin}_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – least contributor, минимальный вкладчик, элемент, имеющей минимальный вклад в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\varepsilon\text{-}\mathrm{LC}(M)&amp;lt;/tex&amp;gt; – элемент, имеющий вклад, отличающийся от минимального не более чем в &amp;lt;tex&amp;gt;1 + \varepsilon&amp;lt;/tex&amp;gt; раз, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-}\mathrm{LC}(M)) \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи MINCON ==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача MINCON является #P-трудной, а задача аппроксимации с точностью до &amp;lt;tex&amp;gt;2^{d^{1 - \varepsilon}}&amp;lt;/tex&amp;gt; является NP-трудной для любого &amp;lt;tex&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для доказательства теоремы сведем задачу #MON-CNF к задаче MINCON.&lt;br /&gt;
Про задачу #MON-CNF известно, что она является #P-трудной, а ее аппроксимация является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&lt;br /&gt;
Задача #MON-CNF – задача нахождения числа удовлетворяющих подстановок для монотонной булевой формулы, записанной в КНФ, &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt;,&lt;br /&gt;
где клозы &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
За &amp;lt;tex&amp;gt;\Box(a_1, \ldots, a_d)&amp;lt;/tex&amp;gt; будем обозначать прямоугольный гиперпараллелипипед &amp;lt;tex&amp;gt;[0, a_1] \times \ldots \times [0, a_d]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt; – монотонная булева формула в КНФ, &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим параллелипипеды &amp;lt;tex&amp;gt;A_k = \Box(a_1^k, \ldots, a_d^k, 2^d + 2) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt; для  каждого клоза формулы, при этом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a_i^k =&lt;br /&gt;
  \begin{cases}&lt;br /&gt;
    1,~\text{if}~i \in C_k \\&lt;br /&gt;
    2,~\text{otherwise}&lt;br /&gt;
  \end{cases}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также добавим параллелипипед &amp;lt;tex&amp;gt;B = \Box(2, \ldots, 2, 1) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt;. Таким образом множество &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; будет&lt;br /&gt;
состоять из &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt; элемента &amp;lt;tex&amp;gt;\{A_1, \ldots, A_n, B\}&amp;lt;/tex&amp;gt;. Не умаляя общности, будем считать, что ни один клоз не доминируется&lt;br /&gt;
другим, то есть &amp;lt;tex&amp;gt;C_i \nsubseteq C_j&amp;lt;/tex&amp;gt; для любых &amp;lt;tex&amp;gt;i \neq j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Для каждого &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt; существуют такие &amp;lt;tex&amp;gt;x_i  = a_i^k - 1&amp;lt;/tex&amp;gt;, что область &amp;lt;tex&amp;gt;[x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times [1, 2^d + 2]&amp;lt;/tex&amp;gt; уникально покрывается только&lt;br /&gt;
элементом &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, что означается, что &amp;lt;tex&amp;gt;\mathrm{CON}(M, A_k) &amp;gt; 2^d&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Так как объем &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; составляется лишь &amp;lt;tex&amp;gt;2^d&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
именно &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет являться минимальным вкладчиком.&lt;br /&gt;
&lt;br /&gt;
Представим &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; в виде набора кубиков  &amp;lt;tex&amp;gt;B_x = [x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times \{0, 1\}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;x_i \in [0, 1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входил в &amp;lt;tex&amp;gt;\mathrm{CON}(M, B)&amp;lt;/tex&amp;gt;, необходимо, чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; не входил в &amp;lt;tex&amp;gt;\bigcup \limits_{k = 1}^n A_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входит в &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, если для всех &amp;lt;tex&amp;gt;i \in \{1, \ldots, d\}&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;x_i + 1 \le a_i^k&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;a_i^k = 2&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;x_i = 1&amp;lt;/tex&amp;gt;,&lt;br /&gt;
и &amp;lt;tex&amp;gt;i \notin C_k&amp;lt;/tex&amp;gt;.  Получаем, что такой набор &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt; для какого-то &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
есть &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\overline{f} = \bigvee \limits_{k=1}^n \bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;B_x \subseteq \mathrm{CON}(M, B)&amp;lt;/tex&amp;gt; тогда и только тогда, когда &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) = \mathrm{CON}(M, B) = \left\vert\left\{ \left(x_1, \ldots, x_d \right) \in \left\{0, 1\right\}^d | \left(x_1, \ldots, x_d \right) \text{ satisfies } f \right\}\right\vert&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Из-за сведения получаем, что задача MINCON является #P-трудной, а ее аппроксимация является NP-трудной, даже когда минимальный вкладчик уже известен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для докозательства этой теоремы сведем задачу MINCON к задаче &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC. Не умаляя общности, будем считать, что &amp;lt;tex&amp;gt;d \ge 2&amp;lt;/tex&amp;gt;, так как для&lt;br /&gt;
&amp;lt;tex&amp;gt;d = 1&amp;lt;/tex&amp;gt; задача становится тривиальной. Также будем считать, что &amp;lt;tex&amp;gt;\mathrm{MINCON}(M) &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; – размер обрамляющего прямоугольного параллелипипеда множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Очевидно, что &amp;lt;tex&amp;gt;V \le 2^{\text{input size}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Определим новое множество элементов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A = \left\{\Box\left(a_1 + 2V, a_2, \ldots, a_d\right) | \left(a_1, \ldots, a_d\right) \in M\right\}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;B = \Box \left(2V, \ldots, 2V\right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{\lambda} = \Box \left(1, \ldots, 1, 2V + \lambda \right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;M_{\lambda} = A \cup \{B\} \cup \{ C_{\lambda} \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Исходные элементы были сдвинуты вдоль первой оси, поэтому вклад этих элементов не изминился, так как добавленная часть покрывается новым элементом &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Также отметим, что вклад каждого из элементов множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; не превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Элемент &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; единственный, кто покрывает область &amp;lt;tex&amp;gt;[V, 2V] \times \ldots \times [V, 2V]&amp;lt;/tex&amp;gt;, объем которой превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;. Единственным кандидатом на&lt;br /&gt;
должность минимального вкладчика, не присутствовавшего в начальном множестве &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, является элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt;. Его вклад в точности соответствуем области&lt;br /&gt;
&amp;lt;tex&amp;gt;[0, 1] \times \ldots \times [0, 1] \times [2V, 2V + \lambda]&amp;lt;/tex&amp;gt;, объем которой равен &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом, элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; является минимальным вкладчиком только, если &amp;lt;tex&amp;gt;\lambda \le \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как умея решать задачу LC, мы можем проверять, является ли &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; минимальным вкладчиком, можно&lt;br /&gt;
устроить двоичный поиск по велечине &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;, чтобы найти &amp;lt;tex&amp;gt;\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, что&lt;br /&gt;
потребует &amp;lt;tex&amp;gt;O(\log(V))&amp;lt;/tex&amp;gt; шагов. Однако в случае &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC запросов&lt;br /&gt;
обычный двоичный поиcк осуществить не удается. Несмотря на появившуюся неточность, продолжим выполнять&lt;br /&gt;
все шаги двоичного поиска как обычно.&lt;br /&gt;
&lt;br /&gt;
Использование &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC может привести двоичный поиск не туда.&lt;br /&gt;
Будем искать только старший бит ответа, то есть положим &amp;lt;tex&amp;gt;\lambda = 2^{\kappa}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt; – целое число.&lt;br /&gt;
Так как мы имеем &amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-LC}(M)) \le (1 + \varepsilon) \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, то неправильный ответ&lt;br /&gt;
на запрос может выдаваться только при &amp;lt;tex&amp;gt;(1 + \varepsilon)^{-1}\mathrm{MINCON}(M) \le 2^{\kappa} \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Вне этого интервала результат запроса всегда верен.&lt;br /&gt;
Используя такой двоичный поиск, мы получим число &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt;, которое или попадает в указанный интервал, и тогда задача решена, или является&lt;br /&gt;
максимальным целым числом меньшим &amp;lt;tex&amp;gt;\log_2 \left((1 + \varepsilon)^{-1}\mathrm{MINCON}(M)\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;\lambda = 2^{\kappa} \ge \mathrm{MINCON}(M) / (2(1 + \varepsilon))&amp;lt;/tex&amp;gt;, то есть была получена &amp;lt;tex&amp;gt;2(1 + \varepsilon)&amp;lt;/tex&amp;gt; аппроксимация задачи MINCON.&lt;br /&gt;
&lt;br /&gt;
Ранее было показано, что аппроксимация задачи MINCON является NP-трудной, таким образом NP-трудность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC доказана.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
# Bringmann K., Friedrich T. Approximating the least hypervolume contributor: NP-hard in general, but fast in practice (2009)&lt;/div&gt;</summary>
		<author><name>178.67.53.106</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25755</id>
		<title>Сложность задачи вычисления Least Hypervolume Contributor и задачи его аппроксимации</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_Least_Hypervolume_Contributor_%D0%B8_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8_%D0%B5%D0%B3%D0%BE_%D0%B0%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=25755"/>
				<updated>2012-06-19T09:35:15Z</updated>
		
		<summary type="html">&lt;p&gt;178.67.53.106: /* Сложность задачи MINCON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Используемые обозначения ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{HYP}\left(M\right)&amp;lt;/tex&amp;gt; – гиперобъем множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, x) := \mathrm{HYP}(M) - \mathrm{HYP}(M \ x)&amp;lt;/tex&amp;gt; – вклад элемента &amp;lt;tex&amp;gt;x \in M&amp;lt;/tex&amp;gt; в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) := \min \limits_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – минимальный вклад в гиперобъем множества.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{LC}(M) := \mathrm{argmin}_{x \in M} \mathrm{CON}(M, x)&amp;lt;/tex&amp;gt; – least contributor, минимальный вкладчик, элемент, имеющей минимальный вклад в гиперобъем.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\varepsilon\text{-}\mathrm{LC}(M)&amp;lt;/tex&amp;gt; – элемент, имеющий вклад, отличающийся от минимального не более чем в &amp;lt;tex&amp;gt;1 + \varepsilon&amp;lt;/tex&amp;gt; раз, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-}\mathrm{LC}(M)) \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи MINCON ==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача MINCON является #P-трудной, а задача аппроксимации с точностью до &amp;lt;tex&amp;gt;2^{d^{1 - \varepsilon}}&amp;lt;/tex&amp;gt; является NP-трудной для любого &amp;lt;tex&amp;gt;\varepsilon &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для доказательства теоремы сведем задачу #MON-CNF к задаче MINCON.&lt;br /&gt;
Про задачу #MON-CNF известно, что она является #P-трудной, а ее аппроксимация является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=&lt;br /&gt;
&lt;br /&gt;
Задача #MON-CNF – задача нахождения числа удовлетворяющих подстановок для монотонной булевой формулы, записанной в КНФ, &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt;,&lt;br /&gt;
где клозы &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
За &amp;lt;tex&amp;gt;\Box(a_1, \ldots, a_d)&amp;lt;/tex&amp;gt; будем обозначать прямоугольный гиперпараллелипипед &amp;lt;tex&amp;gt;[0, a_1] \times \ldots \times [0, a_d]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;f = \bigwedge \limits_{k=1}^n \bigvee \limits_{i \in C_k} x_i&amp;lt;/tex&amp;gt; – монотонная булева формула в КНФ, &amp;lt;tex&amp;gt; C_k \subseteq {\{1,...,d\}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Построим параллелипипеды &amp;lt;tex&amp;gt;A_k = \Box(a_1^k, \ldots, a_d^k, 2^d + 2) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt; для  каждого клоза формулы, при этом&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a_i^k =&lt;br /&gt;
  \begin{cases}&lt;br /&gt;
    1,~\text{if}~i \in C_k \\&lt;br /&gt;
    2,~\text{otherwise}&lt;br /&gt;
  \end{cases}&lt;br /&gt;
&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также добавим параллелипипед &amp;lt;tex&amp;gt;B = \Box(2, \ldots, 2, 1) \subseteq \mathbb{R}^{d+1}&amp;lt;/tex&amp;gt;. Таким образом множество &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; будет&lt;br /&gt;
состоять из &amp;lt;tex&amp;gt;n + 1&amp;lt;/tex&amp;gt; элемента &amp;lt;tex&amp;gt;\{A_1, \ldots, A_n, B\}&amp;lt;/tex&amp;gt;. Не умаляя общности, будем считать, что ни один клоз не доминируется&lt;br /&gt;
другим, то есть &amp;lt;tex&amp;gt;C_i \nsubseteq C_j&amp;lt;/tex&amp;gt; для любых &amp;lt;tex&amp;gt;i \neq j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Для каждого &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt; существуют такие &amp;lt;tex&amp;gt;x_i  = a_i^k - 1&amp;lt;/tex&amp;gt;, что область &amp;lt;tex&amp;gt;[x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times [1, 2^d + 2]&amp;lt;/tex&amp;gt; уникально покрывается только&lt;br /&gt;
элементом &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, что означается, что &amp;lt;tex&amp;gt;\mathrm{CON}(M, A_k) &amp;gt; 2^d&amp;lt;/tex&amp;gt; для любого &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;. Так как объем &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; составляется лишь &amp;lt;tex&amp;gt;2^d&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
именно &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; будет являться минимальным вкладчиком.&lt;br /&gt;
&lt;br /&gt;
Представим &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; в виде набора кубиков  &amp;lt;tex&amp;gt;B_x = [x_1, x_1 + 1] \times \ldots \times [x_d, x_d + 1] \times {0, 1}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;x_i \in [0, 1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входил в &amp;lt;tex&amp;gt;\mathrm{CON}(M, B)&amp;lt;/tex&amp;gt;, необходимо, чтобы &amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; не входил в &amp;lt;tex&amp;gt;\bigcup \limits_{k = 1}^n A_k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;tex&amp;gt;B_x&amp;lt;/tex&amp;gt; входит в &amp;lt;tex&amp;gt;A_k&amp;lt;/tex&amp;gt;, если для всех &amp;lt;tex&amp;gt;i \in \{1, \ldots, d\}&amp;lt;/tex&amp;gt; выполнено &amp;lt;tex&amp;gt;x_i + 1 \le a_i^k&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;a_i^k = 2&amp;lt;/tex&amp;gt; для всех &amp;lt;tex&amp;gt;x_i = 1&amp;lt;/tex&amp;gt;,&lt;br /&gt;
и &amp;lt;tex&amp;gt;i \notin C_k&amp;lt;/tex&amp;gt;.  Получаем, что такой набор &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt; для какого-то &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;, то&lt;br /&gt;
есть &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;\overline{f} = \bigvee \limits_{k=1}^n \bigwedge \limits_{i \in C_k} \lnot x_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;B_x \subseteq \mathrm{CON}(M, B)&amp;lt;/tex&amp;gt; тогда и только тогда, когда &amp;lt;tex&amp;gt;(x_1, \ldots, x_d)&amp;lt;/tex&amp;gt; удовлетворяет &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;, то есть&lt;br /&gt;
&amp;lt;tex&amp;gt;\mathrm{MINCON}(M) = \mathrm{CON}(M, B) = \left\vert\left\{ \left(x_1, \ldots, x_d \right) \in \left\{0, 1\right\}^d | \left(x_1, \ldots, x_d \right) \text{ satisfies } f \right\}\right\vert&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Из-за сведения получаем, что задача MINCON является #P-трудной, а ее аппроксимация является NP-трудной, даже когда минимальный вкладчик уже известен.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Сложность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC==&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=&lt;br /&gt;
&lt;br /&gt;
Задача &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC является NP-трудной.&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
&lt;br /&gt;
Для докозательства этой теоремы сведем задачу MINCON к задаче &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC. Не умаляя общности, будем считать, что &amp;lt;tex&amp;gt;d \ge 2&amp;lt;/tex&amp;gt;, так как для&lt;br /&gt;
&amp;lt;tex&amp;gt;d = 1&amp;lt;/tex&amp;gt; задача становится тривиальной. Также будем считать, что &amp;lt;tex&amp;gt;\mathrm{MINCON}(M) &amp;gt; 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt; – размер обрамляющего прямоугольного параллелипипеда множества &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;. Очевидно, что &amp;lt;tex&amp;gt;V \le 2^{\text{input size}}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Определим новое множество элементов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;A = \left\{\Box\left(a_1 + 2V, a_2, \ldots, a_d\right) | \left(a_1, \ldots, a_d\right) \in M\right\}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;B = \Box \left(2V, \ldots, 2V\right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;C_{\lambda} = \Box \left(1, \ldots, 1, 2V + \lambda \right)&amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;M_{\lambda} = A \cup \{B\} \cup \{ C_{\lambda} \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Исходные элементы были сдвинуты вдоль первой оси, поэтому вклад этих элементов не изминился, так как добавленная часть покрывается новым элементом &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Также отметим, что вклад каждого из элементов множества &amp;lt;tex&amp;gt;A&amp;lt;/tex&amp;gt; не превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Элемент &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; единственный, кто покрывает область &amp;lt;tex&amp;gt;[V, 2V] \times \ldots \times [V, 2V]&amp;lt;/tex&amp;gt;, объем которой превышает &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;. Единственным кандидатом на&lt;br /&gt;
должность минимального вкладчика, не присутствовавшего в начальном множестве &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, является элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt;. Его вклад в точности соответствуем области&lt;br /&gt;
&amp;lt;tex&amp;gt;[0, 1] \times \ldots \times [0, 1] \times [2V, 2V + \lambda]&amp;lt;/tex&amp;gt;, объем которой равен &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом, элемент &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; является минимальным вкладчиком только, если &amp;lt;tex&amp;gt;\lambda \le \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как умея решать задачу LC, мы можем проверять, является ли &amp;lt;tex&amp;gt;C_{\lambda}&amp;lt;/tex&amp;gt; минимальным вкладчиком, можно&lt;br /&gt;
устроить двоичный поиск по велечине &amp;lt;tex&amp;gt;\lambda&amp;lt;/tex&amp;gt;, чтобы найти &amp;lt;tex&amp;gt;\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, что&lt;br /&gt;
потребует &amp;lt;tex&amp;gt;O(\log(V))&amp;lt;/tex&amp;gt; шагов. Однако в случае &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC запросов&lt;br /&gt;
обычный двоичный поиcк осуществить не удается. Несмотря на появившуюся неточность, продолжим выполнять&lt;br /&gt;
все шаги двоичного поиска как обычно.&lt;br /&gt;
&lt;br /&gt;
Использование &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC может привести двоичный поиск не туда.&lt;br /&gt;
Будем искать только старший бит ответа, то есть положим &amp;lt;tex&amp;gt;\lambda = 2^{\kappa}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt; – целое число.&lt;br /&gt;
Так как мы имеем &amp;lt;tex&amp;gt;\mathrm{CON}(M, \varepsilon\text{-LC}(M)) \le (1 + \varepsilon) \mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;, то неправильный ответ&lt;br /&gt;
на запрос может выдаваться только при &amp;lt;tex&amp;gt;(1 + \varepsilon)^{-1}\mathrm{MINCON}(M) \le 2^{\kappa} \le (1 + \varepsilon)\mathrm{MINCON}(M)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Вне этого интервала результат запроса всегда верен.&lt;br /&gt;
Используя такой двоичный поиск, мы получим число &amp;lt;tex&amp;gt;\kappa&amp;lt;/tex&amp;gt;, которое или попадает в указанный интервал, и тогда задача решена, или является&lt;br /&gt;
максимальным целым числом меньшим &amp;lt;tex&amp;gt;\log_2 \left((1 + \varepsilon)^{-1}\mathrm{MINCON}(M)\right)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Таким образом &amp;lt;tex&amp;gt;\lambda = 2^{\kappa} \ge \mathrm{MINCON}(M) / (2(1 + \varepsilon))&amp;lt;/tex&amp;gt;, то есть была получена &amp;lt;tex&amp;gt;2(1 + \varepsilon)&amp;lt;/tex&amp;gt; аппроксимация задачи MINCON.&lt;br /&gt;
&lt;br /&gt;
Ранее было показано, что аппроксимация задачи MINCON является NP-трудной, таким образом NP-трудность задачи &amp;lt;tex&amp;gt;\varepsilon&amp;lt;/tex&amp;gt;-LC доказана.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
# Bringmann K., Friedrich T. Approximating the least hypervolume contributor: NP-hard in general, but fast in practice (2009)&lt;/div&gt;</summary>
		<author><name>178.67.53.106</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B3%D0%B8%D0%BF%D0%B5%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BC%D0%B0&amp;diff=25688</id>
		<title>Алгоритмы точного вычисления гиперобъема</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B3%D0%B8%D0%BF%D0%B5%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BC%D0%B0&amp;diff=25688"/>
				<updated>2012-06-18T21:11:27Z</updated>
		
		<summary type="html">&lt;p&gt;178.67.53.106: /* Алгоритм Hypervolume by Slicing Objectives (HSO) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{В разработке}}&lt;br /&gt;
&lt;br /&gt;
== Постановка задачи ==&lt;br /&gt;
&amp;lt;tex&amp;gt;x = (x_1, x_2, ..., x_d; x_i \ge 0) \in R^d&amp;lt;/tex&amp;gt; - точка в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерном пространстве.&lt;br /&gt;
&lt;br /&gt;
Точка &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; доминирует точку &amp;lt;tex&amp;gt;y&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;x \succ y&amp;lt;/tex&amp;gt;), если &amp;lt;tex&amp;gt;\forall i : x_i \ge y_i, \exists j : x_j &amp;gt; y_j&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;X = (x^1, x^2, ..., x^n) \subset R^d&amp;lt;/tex&amp;gt; - множество из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; точек в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерном пространстве таких, что &amp;lt;tex&amp;gt;\nexists i \neq j : x_i \succ x_j&amp;lt;/tex&amp;gt; - никакая точка не доминируется другой точкой из этого множества.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;S(X) = \mu (\bigcup \limits_{x \in X} \{y | x \succ y\}) &amp;lt;/tex&amp;gt; - гиперобъем множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
В частности, если &amp;lt;tex&amp;gt;X = \{x\}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;S(X) = \prod \limits_{i=1}^{d} x_i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Задача: найти точное значение гиперобъема &amp;lt;tex&amp;gt;S(X)&amp;lt;/tex&amp;gt; множества из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; точек &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерного пространоства.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм включения-исключения (Inclusion-Exclusion Algorithm, IEA) ==&lt;br /&gt;
&lt;br /&gt;
Самый простой алгоритм нахождения гиперобъема базируется на идее комбинаторной [[формула включения-исключения|формулы включения-искючения]].&lt;br /&gt;
Все множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; представляется в виде объединения &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; гиперкубов (&amp;lt;tex&amp;gt;X^i&amp;lt;/tex&amp;gt;), соответствующих отдельным точкам &amp;lt;tex&amp;gt;x^i&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
После этого объем всего множества вычисляется по формуле: &amp;lt;center&amp;gt; &amp;lt;tex&amp;gt; S(X) = \sum \limits_{I \in 2^n} (-1)^{|I|+1}  S(\bigcap \limits_{ j \in I} X^j) &amp;lt;/tex&amp;gt; &amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объем пересечения гиперкубов легко считается как произведение по каждой координате минимального значения этой координаты среди всех точек, которым соответствуют гиперкубы.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в этом алгоритме перебираются все подмножества точек множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, для каждого множества находится гиперобъем пересечения соответствующих гиперкубов, и он прибавляется с соответствующим знаком к ответу.&lt;br /&gt;
Время работы этого алгоритма составляет &amp;lt;tex&amp;gt;O(n 2^n)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм LebMeasure ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм LebMeasure обрабатывает точки множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; по очереди. Для каждой очередной точки &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; находится объем некоторого максимального по включению гиперкуба, доминируемого эксклюзивно только этой точкой &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; и она заменяется на некоторое множество ''порожденных'' точек, которые доминируют оставшуюся область, доминировшуюся до этого точкой &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Например, если изначально было четыре точки в трехмерном пространстве &amp;lt;tex&amp;gt;(6, 7, 4), (9, 5, 5), (1, 9, 3), (4, 1, 9)&amp;lt;/tex&amp;gt;, то точка &amp;lt;tex&amp;gt;(6, 7, 4)&amp;lt;/tex&amp;gt; эксклюзивно доминирует куб с одним концов в &amp;lt;tex&amp;gt;(6, 7, 4)&amp;lt;/tex&amp;gt;, а другим - в &amp;lt;tex&amp;gt;(4, 5, 3)&amp;lt;/tex&amp;gt;. После добавления объема этого куба к ответу, точка &amp;lt;tex&amp;gt;(6, 7, 4)&amp;lt;/tex&amp;gt; порождает три точки: &amp;lt;tex&amp;gt;(4, 7, 4), (6, 5, 3), (6, 7, 3)&amp;lt;/tex&amp;gt;. При этом точка &amp;lt;tex&amp;gt;(6, 5, 4)&amp;lt;/tex&amp;gt; доминируется точкой &amp;lt;tex&amp;gt;(9, 5, 5)&amp;lt;/tex&amp;gt; и сразу удаляется из множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Обработка точек продолжается, пока все точки не будут обработаны. Таким образом, время работы алгоритма напрямую зависит от количества порожденных точек. Легко заметить, что таких точек не более, чем &amp;lt;tex&amp;gt;n^d&amp;lt;/tex&amp;gt;, поскольку каждая координата каждой порожденной точки равна соответствующей координате некоторой точки исходного множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
К сожалению, эта верхняя оценка является достижимой. Например, если исходное множество &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt; имеет вид: &amp;lt;tex&amp;gt;(1, n, n, ..., n), (2, n - 1, n - 1, ..., n - 1), ..., (n, 1, 1, ..., 1)&amp;lt;/tex&amp;gt;, и точки обрабатываются именно в этом порядке, то всего будет обработано &amp;lt;tex&amp;gt;n^{d-1}&amp;lt;/tex&amp;gt; точка, что показано в [1]. Правда, если в этом примере точки обрабатываются в обратном порядке, то суммарное количество обработанных точек линейно зависит от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;. Тем не менее, существуют примеры, для которых любой порядок обработки приводит к экспоненциальной зависимости числа порожденных точек от размерности пространства &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; и эта зависимость близка к &amp;lt;tex&amp;gt;n^d&amp;lt;/tex&amp;gt; [1].&lt;br /&gt;
&lt;br /&gt;
== Алгоритм Hypervolume by Slicing Objectives (HSO) ==&lt;br /&gt;
&lt;br /&gt;
Под ''Objectives'' в названии данного алгоритма имеются в виду координаты пространства &amp;lt;tex&amp;gt;R^d&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если алгоритм LebMeasure по очереди рассматривает все точки, то алгоритм HSO рассматривает по очереди все координаты, сводя задачу к меньшей на единицу размерности.&lt;br /&gt;
&lt;br /&gt;
Изначально все точки сортируются по первой координате. Значения этой координаты используются для ''расслоения'' (разрезания) всего множества на &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; частей, внутри каждой из которых при движении вдоль первой координаты форма ''разреза'' (гиперплоскости), проходящего перпендикулярно оси первой координаты, не меняется. Таким образом, для подсчета объема каждой части необходимо найти объем разреза, и умножить на длину части вдоль первой координаты. При этом получившийся разрез имеет на единицу меньшую размерность.&lt;br /&gt;
Заметим, что после сортировки и расслоения первая часть содержит все исходные &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; точек множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;, вторая - все, помимо точки с минимальной первой координатой, вдоль которой происходит расслоение, и т.д., а последняя часть содержит только одну точку с максимальной этой координатой.&lt;br /&gt;
&lt;br /&gt;
После этого все полученные части расслаиваются уже по второй координате, далее все полученные - по третьей и т.д. В итоге исходное множество разбивается на несколько непересекающихся гиперкубов и остается их найти суммарный гиперобъем. Заметим, что расслаивание части можно прекратить в тот момент, когда в нее входит только одна точка и посчитать объем гиперкуба, образованного проекцией этой точки на оставшиеся координаты.&lt;br /&gt;
&lt;br /&gt;
Описанный процесс можно реализовать как в виде рекурсивной процедуры, расслаивающей множество вдоль очередной координаты и вызывающей себя рекурсивно для каждой части и следующей координаты, так и нерекурсивно, если поддерживать множество всех текущих частей и на очередной итерации разбивать их все вдоль очередной координаты.&lt;br /&gt;
&lt;br /&gt;
Время работы алгоритма напрямую зависит от суммарного количества частей, на которые будет разбито исходное множество. По аналогичным предыдущему алгоритму рассуждениям легко показывается, что частей не более &amp;lt;tex&amp;gt;n^d&amp;lt;/tex&amp;gt;. Тем не менее, существует более точная оценка.&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Суммарное количество частей, полученных алгоритмом HSO, не превышает &amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;f(n, d) = {n + d - 2 \choose d - 1}&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|proof=&lt;br /&gt;
База:&amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;f(n, 1) = 1&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также, из алгоритма расслоения следует, что из части с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; точками будет получено по одной части для каждого &amp;lt;tex&amp;gt;i = 1...n&amp;lt;/tex&amp;gt;, то есть: &amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;f(n, d) = \sum \limits_{i = 1}^{n}f(i, d - 1)&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Докажем полезные леммы:&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;{x \choose y} = {x - r \choose y} + \sum \limits_{i = 1}^{r} {x - i \choose y - 1}&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
|proof=Индукция по &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt;. База: &amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;{x \choose y} = {x - 1 \choose y} + {x - 1 \choose y - 1}&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
Переход: предполагаем, что утверждение верно для &amp;lt;tex&amp;gt;r = j&amp;lt;/tex&amp;gt;. Раскрываем первое слагаемое в правой части предположения аналогично базе и получаем: &lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;{x \choose y} = {x - j - 1 \choose y} + {x - (j + 1) \choose y - 1} + \sum \limits_{i = 1}^{j}{x - i \choose y - 1} = {x - (j + 1) \choose y} + \sum \limits_{i = 1}^{j}{x - i \choose y - 1}&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Лемма&lt;br /&gt;
|statement=&amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;{x \choose y} = \sum \limits_{i = 1}^{x - y + 1} {x - i \choose y - 1}&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
|proof=Подставляем в предыдущую лемму &amp;lt;tex&amp;gt;r = x - y&amp;lt;/tex&amp;gt; и получаем:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;{x \choose y} = {y \choose y} + \sum \limits_{i = 1}^{x - y} {x - i \choose y - 1} = {x - (x - y + 1) \choose y - 1} + \sum \limits_{i = 1}^{x - y} {x - i \choose y - 1} = \sum \limits_{i = 1}^{x - y + 1} {x - i \choose y - 1}&amp;lt;/tex&amp;gt;.&amp;lt;/center&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
продолжаем доказательство теоремы по индукции:&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;tex&amp;gt;f(n, d) = {n + d - 2 \choose d - 1} = \sum \limits_{i = 1}^{n} {n + d - 2 - i \choose d - 2} = \sum \limits_{k = n}^{1} {n + d + 2 - (n - k + 1) \choose d - 2} = \sum \limits_{k = 1}^{n} {k + d - 3 \choose d - 2} = \sum \limits_{k = 1}^{n}{k + (d - 1) - 2 \choose (d - 1) - 1} = \sum \limits_{k = 1}^{n}{f(k, d - 1)}&amp;lt;/tex&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Таким образом, на этот алгоритм получена более низкая оценка времени работы, чем на предыдущий, и это подтверждается на практике [1].&lt;br /&gt;
&lt;br /&gt;
== Сведение к задаче KMP (Klee's Measure Problem) ==&lt;br /&gt;
&lt;br /&gt;
Задача KMP состоит в нахождении объема объединения прямоугольных гиперпараллелепипедов в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерном пространстве. Как показано в описании алгоритма IEA, исходная задача легко сводится к этой, если каждой точке поставить в соответствие гиперкуб с одной вершиной в центре координат, а противоположной - в этой точке.&lt;br /&gt;
&lt;br /&gt;
Существует несколько алгоритмов решения задачи KMP, самый оптимальный из которых использует идеи сканирующей гиперплоскости, [[Статистики на отрезках. Корневая эвристика|корневой эвристики]] и КД-дерево, и позволяет решать задачу за время &amp;lt;tex&amp;gt;O(n^{d/2}\log n)&amp;lt;/tex&amp;gt;. Рассмотрим его.&lt;br /&gt;
&lt;br /&gt;
Для начала изложим идею сканирующей гиперплоскости. Рассмотрим всевозможные значения &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-ой координаты у точек множества &amp;lt;tex&amp;gt;X&amp;lt;/tex&amp;gt;. &lt;br /&gt;
Возьмем гиперплоскость, перпендикулярную оси &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-ой координаты, будем ее двигать по этим значениям от минимального до максимального и рассматривать проекцию всех гиперкубов на эту гиперплоскость. Заметим, что между точками проекция меняться не будет, а в каждой точке будут появляться или исчезать проекции некоторых гиперкубов. Поэтому, если уметь эффективно пересчитывать объем проекции при каждом появлении/исчезновении и прибавлять это значение, умноженное на расстояние между последовательными значениями &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-ой координаты, то можно легко посчитать суммарный гиперобъем. Как раз для эффективного пересчета используется такая структура, как КД-дерево.&lt;br /&gt;
&lt;br /&gt;
Теперь изложим идею алгоритма на примере трехмерного пространства.&lt;br /&gt;
Будем считать, что сканирующая плоскость двигается перепендикулярно оси &amp;lt;tex&amp;gt;OZ&amp;lt;/tex&amp;gt;. В каждый момент проекция всех параллелепипедов на эту плоскость предствляет собой множество прямоугольников и необходимо уметь обрабатывать следующие три запроса:&lt;br /&gt;
# добавить прямоугольник&lt;br /&gt;
# удалить прямоугольник&lt;br /&gt;
# посчитать площадь объединения всех прямоугольников&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition=КД-деревом называется [[Дерево поиска, наивная реализация|сбалансированное двоичное дерево]], где каждой вершине &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; соответствует некоторая область &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерного пространства, удовлетворяющая следующим свойствам:&lt;br /&gt;
# Корневой вершине &amp;lt;tex&amp;gt;root&amp;lt;/tex&amp;gt; соответствует &amp;lt;tex&amp;gt;C_{root}&amp;lt;/tex&amp;gt; - все пространство.&lt;br /&gt;
# Каждое &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt; является гиперпараллелепипедом (возможно бесконечным в некоторых направлениях).&lt;br /&gt;
# Для каждой вершины &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; с детьми &amp;lt;tex&amp;gt;\beta&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\gamma&amp;lt;/tex&amp;gt; верно, что области &amp;lt;tex&amp;gt;C_{\beta}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;C_{\gamma}&amp;lt;/tex&amp;gt; не пересекаются и &amp;lt;tex&amp;gt;C_{\alpha} = C_{\beta} \cup C_{\gamma}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Будем хранить прямоугольники в КД-дереве следующим образом:&lt;br /&gt;
# Для каждого листа &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; будем хранить все прямоугольники, которые пересекают внутреннюю часть области &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Для каждой внутренней вершины &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; будем считать число &amp;lt;tex&amp;gt;Cover_{\alpha}&amp;lt;/tex&amp;gt; - количество прямоугольников, которые полностью покрывают область &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt;, но не полностью покрывают область родителя этой вершины &amp;lt;tex&amp;gt;C_{father(\alpha)}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Также для каждой вершины будем хранить значение площади пересечения области этой вершины со всеми прямоугольниками &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt;, которое определяется следующим образом:&lt;br /&gt;
# Для каждого листа &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; равно площади пересечения всех прямоугольников с областью этого листа.&lt;br /&gt;
# Для каждой внутренней вершины &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt;Cover_{\alpha} &amp;gt; 0&amp;lt;/tex&amp;gt;, тогда &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; равно площади всей области &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt;, иначе &amp;lt;tex&amp;gt;M&amp;lt;/tex&amp;gt; равно сумме этих значений для двух сыновей этой вершины.&lt;br /&gt;
&lt;br /&gt;
Таким образом, значение для корневой вершины &amp;lt;tex&amp;gt;M_{root}&amp;lt;/tex&amp;gt; и является искомой площадью объединения всех прямоугольников.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим операцию добавления прямоугольника (box) в КД-дерево.&lt;br /&gt;
&lt;br /&gt;
  procedure Insert(box, &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;)&lt;br /&gt;
  if &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt; - лист then&lt;br /&gt;
    добавить box в эту вершину&lt;br /&gt;
    пересчитать &amp;lt;tex&amp;gt;M_{\alpha}&amp;lt;/tex&amp;gt;&lt;br /&gt;
  elseif box покрывает область &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt; then&lt;br /&gt;
    &amp;lt;tex&amp;gt;Cover_{\alpha} = Cover_{\alpha} + 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
    &amp;lt;tex&amp;gt;M_{\alpha} = &amp;lt;/tex&amp;gt; объем области &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt;&lt;br /&gt;
  elseif box пересекает область &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt; then&lt;br /&gt;
    Insert(box, leftson(&amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;))&lt;br /&gt;
    Insert(box, rightson(&amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;))&lt;br /&gt;
    if &amp;lt;tex&amp;gt;Cover_{\alpha} &amp;gt; 0 &amp;lt;/tex&amp;gt; then&lt;br /&gt;
      &amp;lt;tex&amp;gt;M_{\alpha} = &amp;lt;/tex&amp;gt; объем области &amp;lt;tex&amp;gt;C_{\alpha}&amp;lt;/tex&amp;gt;&lt;br /&gt;
    else&lt;br /&gt;
      &amp;lt;tex&amp;gt;M_{\alpha} = M_{leftson(\alpha)} + M_{rightson(\alpha)}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Аналогично устроена операция удаления прямоугольника - она выполняет обратные действия.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим теперь как именно будет устроено разделение пространства на области КД-деревом для эффективного его использования.&lt;br /&gt;
Возьмем проекции всех параллелепипедов на плоскость, перепендикулярную оси &amp;lt;tex&amp;gt;OZ&amp;lt;/tex&amp;gt; - множество прямоугольников &amp;lt;tex&amp;gt;V&amp;lt;/tex&amp;gt;. Рассмотрим все &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;-координаты границ прямоугольников и разобьем ось &amp;lt;tex&amp;gt;OX&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;2\sqrt{n}&amp;lt;/tex&amp;gt; промежутков так, чтобы в каждом из них было не более &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt; границ. Получившиеся &amp;lt;tex&amp;gt;2\sqrt{n}&amp;lt;/tex&amp;gt; полос разобьем горизонтальными линиями на итоговые области по отдельности следующим образом. Для каждой полосы у всех прямоугольников, имеющих вертикальную границу в этой полосе, возьмем все горизонтальные границы (их будет не более &amp;lt;tex&amp;gt;2\sqrt{n}&amp;lt;/tex&amp;gt;), а среди всех горизонтальных границ, пересекающих область, возьмем каждую &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt;-ую. Таким образом, в итоге получим не более &amp;lt;tex&amp;gt;4\sqrt{n}&amp;lt;/tex&amp;gt; областей в каждой верикальной полосе.&lt;br /&gt;
&lt;br /&gt;
Полученные области обладают следующими свойствами:&lt;br /&gt;
# Всего &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; областей.&lt;br /&gt;
# Каждый прямоугольник частично покрывает не более &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; областей.&lt;br /&gt;
# Никакая вершина прямоугольника не лежит внутри какой-нибудь области.&lt;br /&gt;
# Для каждой области есть не более &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; частично покрывающих ее прямоугольников.&lt;br /&gt;
&lt;br /&gt;
Все эти утверждения несложно следуют из алгоритма разбиения на области.&lt;br /&gt;
&lt;br /&gt;
Каждая из этих областей будет одним из листов КД-дерева. Для построения всего дерева сначала объединим все области для одной вертикальной полосы, сливая соседние области в одну вершину дерева. После этого аналогично будем сливать соседние вертикальные области и в итоге получим корневую вершину, представляющую всю плоскость.&lt;br /&gt;
&lt;br /&gt;
Построенное КД-дерево обладает следующими свойствами:&lt;br /&gt;
# В нем &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; вершин.&lt;br /&gt;
# Каждый прямоугольник хранится в &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; листьях.&lt;br /&gt;
# Каждый прямоугольник влияет на &amp;lt;tex&amp;gt;O(\sqrt{n} \log n)&amp;lt;/tex&amp;gt; значений &amp;lt;tex&amp;gt;Cover&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Никакая вершина прямоугольника не лежит внутри области какого-нибудь листа.&lt;br /&gt;
# Для области каждого листа есть не более &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; частично покрывающих ее прямоугольников.&lt;br /&gt;
&lt;br /&gt;
Все эти свойства следуют из свойств разбиения на области и логарифмической высоты дерева.&lt;br /&gt;
&lt;br /&gt;
Наконец, получаем итоговый алгоритм. Идем сканирующей плоскостью, перепендикулярной оси &amp;lt;tex&amp;gt;OZ&amp;lt;/tex&amp;gt;, добавляя или удаляя прямоугольники из КД-дерева. При этом каждый раз пересчитываем площадь объединения всех текущих прямоугольников и, складывая эти величины, умноженные на соответствующую разницу &amp;lt;tex&amp;gt;z&amp;lt;/tex&amp;gt;-координат, получаем общий объем.&lt;br /&gt;
&lt;br /&gt;
Каждая операция добавления или удаления прямоугольников требует изменения &amp;lt;tex&amp;gt;O(\sqrt{n} \log n)&amp;lt;/tex&amp;gt; полей &amp;lt;tex&amp;gt;Cover&amp;lt;/tex&amp;gt;, а также операций добавления или удаления прямоугольника в &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; листьев, каждая из которых требует &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt; времени. Итого, на одну операцию добавления или удаления требуется &amp;lt;tex&amp;gt;O(\sqrt{n} \log n)&amp;lt;/tex&amp;gt; времени, суммарно таких операций &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;, и получается, что весь алгоритм работает за &amp;lt;tex&amp;gt;O(n \sqrt{n} \log n)&amp;lt;/tex&amp;gt;. При этом на хранение всей информации требуется &amp;lt;tex&amp;gt;O(n\sqrt{n}) &amp;lt;/tex&amp;gt; памяти - каждый лист может хранить &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; прямоугольников.&lt;br /&gt;
&lt;br /&gt;
Все идеи этого алгоритма обобщаются с трехмерного пространства на &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерное следующим образом.&lt;br /&gt;
&lt;br /&gt;
Построение разбиения на области в &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt;-мерном пространстве вместо двухмерного ведется сначала аналогичным образом, только после того, как в двухмерном пространстве получаются итоговые прямоугольные области, здесь продолжаются аналогичные разбиения вдоль третьей координаты - берутся все границы третьей координаты гиперпараллелепипедов, имеющие границу по первой или второй координате строго внутри области (их получается не более &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt;), а также каждую &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt;-ую границу по третьей координате гиперепараллелепипедов, пересекающих эту область, и так далее.&lt;br /&gt;
&lt;br /&gt;
Это разбиение на области имеет следующие аналогичные свойства:&lt;br /&gt;
# Всего &amp;lt;tex&amp;gt;O(n^{d/2})&amp;lt;/tex&amp;gt; областей.&lt;br /&gt;
# Каждый гиперпараллелепипед частично покрывает не более &amp;lt;tex&amp;gt;O(n^{(d-1)/2})&amp;lt;/tex&amp;gt; областей.&lt;br /&gt;
# Никакая вершина гиперпараллелепипеда не лежит внутри какой-нибудь области.&lt;br /&gt;
# Для каждой области есть не более &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; частично покрывающих ее гиперпараллелепипедов.&lt;br /&gt;
&lt;br /&gt;
Общее дерево строится аналогичным образом и оно в итоге состоит из &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; уровней, каждый из которых имеет высоту &amp;lt;tex&amp;gt;O(\log n)&amp;lt;/tex&amp;gt; в дереве - самый верхний уровень содержит разбиение по первой координате, следующий - по второй и так далее.&lt;br /&gt;
&lt;br /&gt;
Построенное КД-дерево обладает следующими свойствами:&lt;br /&gt;
# В нем &amp;lt;tex&amp;gt;O(n^{d/2})&amp;lt;/tex&amp;gt; вершин.&lt;br /&gt;
# Каждый гиперпараллелепипед хранится в &amp;lt;tex&amp;gt;O(n^{(d-1)/2})&amp;lt;/tex&amp;gt; листьях.&lt;br /&gt;
# Каждый гиперпараллелепипед влияет на &amp;lt;tex&amp;gt;O(n^{(d-1)/2} \log n)&amp;lt;/tex&amp;gt; значений &amp;lt;tex&amp;gt;Cover&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Никакая вершина гиперпараллелепипеда не лежит внутри области какого-нибудь листа.&lt;br /&gt;
# Для области каждого листа есть не более &amp;lt;tex&amp;gt;O(\sqrt{n})&amp;lt;/tex&amp;gt; частично покрывающих ее гиперпараллелепипедов.&lt;br /&gt;
&lt;br /&gt;
Операции в этом дереве выполняются аналогично трехмерному случаю и каждая операция добавления или удаления в КД-дерево размерности &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; занимает &amp;lt;tex&amp;gt;O(n^{(d-1)/2} \log n)&amp;lt;/tex&amp;gt; времени. Выполняя сканирование гиперплоскостью вдоль одной из координат получаем КД-дерево размерности &amp;lt;tex&amp;gt;d-1&amp;lt;/tex&amp;gt;, в котором необходимо провести &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; операций, то есть суммарное время работы алгоритма равно: &amp;lt;tex&amp;gt;O(n \times n^{(d-1-1)/2} \log n) = O(n^{d/2} \log n)&amp;lt;/tex&amp;gt;. При этом хранение КД-дерева требует &amp;lt;tex&amp;gt;O(n^{d/2})&amp;lt;/tex&amp;gt; памяти.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
# While, L., Hingston, P., Barone, L., Huband, S.: A Faster Algorithm for Calculating Hypervolume. IEEE Transaction on Evolutionary Computation, Vol.10, No. 1, pp 29–38 (2006)&lt;br /&gt;
# [http://rain.ifmo.ru/~tsarev/teaching/ea-2012/seminars/1320.pdf Zhou X., Sun C., Mao N., Li W.: Generalization of HSO algortihms for computing hypervolume for mutiobjective optimization problems, IEEE Congress on Evolutionary Computation (2007)]&lt;br /&gt;
# K. Bringmann, T. Friedrich.: An Efficient Algorithm for Computing Hypervolume Contributions. Evolutionary Computation, Vol. 18, No. 3, pp 383-402, MIT Press. (2010)&lt;br /&gt;
# N. Beume.: S-Metric calculation by considering dominated hypervolume as Klee’s measure problem. Evolutionary Computation, 17(4), pp 477–492. (2009)&lt;br /&gt;
# N. Beume, G. Rudolph.: Faster S-metric calculation by considering dominated hypervolume as Klee’s measure problem. In Proc. Second International Conference on Computational Intelligence (IASTED ’06), pp 233–238. (2006)&lt;br /&gt;
# Overmars, M.H., Yap, C.K.: New upper bounds in Klee’s measure problem. SIAM Journal on Computing 20(6), pp 1034–1045. (1991)&lt;br /&gt;
# Klee, V.: Can the measure of S[ai, bi] be computed in less than O(n log n) steps? In: American Mathematical Monthly. Volume 84, pp 284–285. (1977)&lt;/div&gt;</summary>
		<author><name>178.67.53.106</name></author>	</entry>

	</feed>