Максимальная выполнимость формул в 2-КНФ: различия между версиями

Перейти к навигации Перейти к поиску
м
 
(не показаны 4 промежуточные версии этого же участника)
Строка 46: Строка 46:
'''Основной алгоритм'''
'''Основной алгоритм'''


Сначала описывается редукция от MAX 2-SAT к MAX TRIANGLE, согласно которой каждый треугольник веса K в полученном графе находится в взаимно-однозначном соответствии с присваиванием, при котором становятся выполнимыми K дизъюнктов экземпляра MAX 2-SAT. Пусть a, b – вещественные числа, и пусть <math>\Z [a, b] := [a, b] \cap \Z</math>.
Сначала описывается редукция от MAX 2-SAT к MAX TRIANGLE, согласно которой каждый треугольник веса K в полученном графе находится в взаимно однозначном соответствии с присваиванием, при котором становятся выполнимыми K дизъюнктов экземпляра MAX 2-SAT. Пусть a, b – вещественные числа, и пусть <math>\Z [a, b] := [a, b] \cap \Z</math>.




Строка 58: Строка 58:




'''Утверждение 1'''. Существует взаимно однозначное соответствие между треугольниками веса K в G и присваиваниями переменных, при которых ровно K дизъюнктов в F становятся выполнимыми.
'''Утверждение 1'''. Существует взаимно однозначное соответствие между треугольниками веса K в графе G и присваиваниями переменных, при которых ровно K дизъюнктов в F становятся выполнимыми.


Доказательство. Пусть ''a'' – присваивание переменной. Тогда существуют уникальные вершины <math>v_1 \in L_1, v_2 \in L_2, v_3 \in L_3</math>, такие, что ''a'' в точности является конкатенацией <math>v_1, v_2, v_3</math> как присваиваний. Более того, любая тройка вершин <math>v_1 \in L_1, v_2 \in L_2, v_3 \in L_3</math> соответствует присваиванию. Таким образом, существует взаимно однозначное соответствие между треугольниками в G и присваиваниями в F.
Доказательство. Пусть ''a'' – присваивание переменной. Тогда существуют уникальные вершины <math>v_1 \in L_1, v_2 \in L_2, v_3 \in L_3</math>, такие, что ''a'' в точности является конкатенацией <math>v_1, v_2, v_3</math> как присваиваний. Более того, любая тройка вершин <math>v_1 \in L_1, v_2 \in L_2, v_3 \in L_3</math> соответствует присваиванию. Таким образом, существует взаимно однозначное соответствие между треугольниками в G и присваиваниями в F.
Строка 75: Строка 75:




'''Теорема 2 (Алон, Галил, Маргалит [1]). Пусть A и B – матрицы размера n x n с элементами из <math>\Z [-W, W] \cup{ \infty}</math>. Тогда произведение <math>A \otimes_d B</math> может быть вычислено за время <math>O(W \; n^{\omega} \; log \; n)</math>.'''
'''Теорема 2 (Алон, Галил, Маргалит [1]). Пусть A и B – матрицы размера n x n с элементами из <math>\Z [-W, W] \cup \{ \infty \}</math>. Тогда произведение <math>A \otimes_d B</math> может быть вычислено за время <math>O(W \; n^{\omega} \; log \; n)</math>.'''


Доказательство (набросок). Заменим элементы <math>\infty</math> в A и B на 2W + 1 следующим образом. Определим матрицы A' и B', где <math>A'[i, j] = x^{3W - A[i, j]}, B'[i, j] = x^{3W - B[i, j]}</math> и <math>x</math> – переменная. Положим <math>C = A' \times B'</math>. Тогда <math>C[i, j] = \sum_{k = 1}^n x^{6W - A[i, k] - B[k, j]}</math>.
Доказательство (набросок). Заменим элементы "<math>\infty</math>" в A и B на 2W + 1 следующим образом. Определим матрицы A' и B', где <math>A'[i, j] = x^{3W - A[i, j]}, B'[i, j] = x^{3W - B[i, j]}</math> и <math>x</math> – переменная. Положим <math>C = A' \times B'</math>. Тогда <math>C[i, j] = \sum_{k = 1}^n x^{6W - A[i, k] - B[k, j]}</math>.


На следующем шаге выберем такое число <math>x</math>, чтобы из суммы произвольных степеней <math>x</math> было легко определить наибольшую степень <math>x</math>, встречающуюся в сумме; эта наибольшая степень сразу же дает минимум <math>A[i, k] + B[k, j]</math>. Каждый <math>C[i,j]</math> – это полином от <math>x</math> с коэффициентами из <math>\Z [0, n]</math>. Предположим, что каждый <math>C[i, j]</math> оценивается при <math>x = n + 1</math>. Тогда каждый элемент <math>C[i, j]</math> можно рассматривать как (n + 1)-арное число, а положение старшей значащей цифры этого числа дает минимум <math>A[i, k] + B[k, j]</math>.
На следующем шаге выберем такое число <math>x</math>, чтобы из суммы произвольных степеней <math>x</math> было легко определить наибольшую степень <math>x</math>, встречающуюся в сумме; эта наибольшая степень сразу же дает минимум <math>A[i, k] + B[k, j]</math>. Каждый элемент <math>C[i,j]</math> представляет собой полином от <math>x</math> с коэффициентами из <math>\Z [0, n]</math>. Предположим, что каждый <math>C[i, j]</math> оценивается при <math>x = n + 1</math>. Тогда каждый элемент <math>C[i, j]</math> можно рассматривать как (n + 1)-арное число, а положение старшей значащей цифры этого числа дает минимум <math>A[i, k] + B[k, j]</math>.




Суммируя все вышесказанное, <math>A \otimes_d B</math> можно вычислить, построив <math>A'[i, j] = (n + 1)^{3W-A[i, j]]}, B'[i, j] = (n + 1)^{3w - B[i, j]}</math> за время O(W log n) на каждый элемент, вычисляя <math>C = A' \times B'</math> за время <math>O(n^{\omega} \cdot (W \; log \; n))</math> (так как размеры элементов равны O(W log n)), а затем извлекая минимум из каждого элемента <math>C</math> за время <math>O(n^2 \cdot W \; log \; n)</math>. Заметим, что если минимум для элемента <math>C[i,j]</math> равен хотя бы <math>2W + 1</math>, то <math>C[i, j] = \infty</math>.        □
Суммируя все вышесказанное, <math>A \otimes_d B</math> можно вычислить, построив <math>A'[i, j] = (n + 1)^{3W-A[i, j]}, B'[i, j] = (n + 1)^{3w - B[i, j]}</math> за время O(W log n) на каждый элемент, вычисляя <math>C = A' \times B'</math> за время <math>O(n^{\omega} \cdot (W \; log \; n))</math> (так как размеры элементов равны O(W log n)), а затем извлекая минимум из каждого элемента <math>C</math> за время <math>O(n^2 \cdot W \; log \; n)</math>. Заметим, что если минимум для элемента <math>C[i,j]</math> равен хотя бы <math>2W + 1</math>, то <math>C[i, j] = \infty</math>.        □




Используя быстрый алгоритм произведения расстояний, можно решить задачу MAX TRIANGLE быстрее, чем простым перебором. Нижеследующее изложение основывается на алгоритм Итаи и Роде [10] для выявления наличия треугольника в невзвешенном графе менее чем за <math>n^3</math> шагов. Результат может быть обобщен на ''подсчет'' количества [[Задача о клике|k-клик]] для произвольного <math>k \ge 3</math>. (Для простоты изложения результат подсчета опущен. Что касается работы с k-кликами, то, к сожалению, не существует асимптотического преимущества во времени выполнения от использования алгоритма на k-кликах вместо алгоритма на треугольниках – по крайней мере, если говорить о лучших на сегодня алгоритмах для решения этих задач).
Используя быстрый алгоритм произведения расстояний, можно решить задачу MAX TRIANGLE быстрее, чем простым перебором. Нижеследующее изложение основывается на алгоритме Итаи и Роде [10] для выявления наличия треугольника в невзвешенном графе менее чем за <math>n^3</math> шагов. Результат может быть обобщен на ''подсчет'' количества [[Задача о клике|k-клик]] для произвольного <math>k \ge 3</math>. (Для простоты изложения результат подсчета опущен. Что касается работы с k-кликами, то, к сожалению, не существует асимптотического преимущества во времени выполнения от использования алгоритма на k-кликах вместо алгоритма на треугольниках – по крайней мере, если говорить о лучших на сегодня алгоритмах для решения этих задач).




'''Теорема 3. Задача MAX TRIANGLE может быть решена за время <math>O(W \; n^{\omega} \; log \; n)</math> для графов с весами из <math>\Z [-W, W]</math>.'''
'''Теорема 3. Задача MAX TRIANGLE может быть решена за время <math>O(W \; n^{\omega} \; log \; n)</math> для графов с весами из <math>\Z [-W, W]</math>.'''


Доказательство. Сначала демонстрируется, что весовая функция на вершинах и ребрах может быть преобразована в эквивалентную весовую функцию с весами только на ребрах. Пусть w – весовая функция над G. Переопределим веса следующим образом:
Доказательство. Сначала продемонстрируем, что весовая функция на вершинах и ребрах может быть преобразована в эквивалентную весовую функцию с весами только на ребрах. Пусть w – весовая функция над G. Переопределим веса следующим образом:


<math>w'( \{ u, v \}) = \frac{w(u) + w(v)}{2} + w( \{u, v \}), w'(u) = 0</math>.
<math>w'( \{ u, v \}) = \frac{w(u) + w(v)}{2} + w( \{u, v \}), w'(u) = 0</math>.
Строка 97: Строка 97:




Следующим шагом будет использование быстрого произведения расстояний для поиска треугольника с максимальным весом в реберно-взвешенном графе с n вершинами. Рассмотрим множество вершин G как множество {1, ..., n}. Определим A как матрицу размера n x n, такую, что A[i, j] = - w({i, j}), если существует ребро {i, j}, и A[i, j] = <math>\infty</math> в противном случае. Утверждение заключается в том, что треугольник с весом не менее K включает вершину i тогда и только тогда, когда <math>(A \otimes_d B \; A \otimes_d A) [i, j] \le -K</math>. Это объясняется тем, что данное неравенство выполняется тогда и только тогда, когда существуют отличные друг от друга j и k, такие, что {i, j}, {j, k}, {k, i} – ребра, и A[i, j] + A[j, k] + A[k, i] <math>\le</math> -K, то есть w({i, j}) + w({j, k}) + w({k, i}) <math>\ge</math> K.
Следующим шагом будет использование быстрого произведения расстояний для поиска треугольника с максимальным весом в реберно-взвешенном графе с n вершинами. Представим множество вершин графа G в виде множества {1, ..., n}. Определим A как матрицу размера n x n, такую, что A[i, j] = - w({i, j}), если существует ребро {i, j}, и A[i, j] = <math>\infty</math> в противном случае. Утверждение заключается в том, что треугольник с вершиной i и с весом не менее K существует тогда и только тогда, когда <math>(A \otimes_d A \otimes_d A) [i, j] \le -K</math>. Это объясняется тем, что данное неравенство выполняется тогда и только тогда, когда существуют отличные друг от друга j и k, такие, что {i, j}, {j, k}, {k, i} – ребра, и  


A[i, j] + A[j, k] + A[k, i] <math>\le</math> -K, то есть w({i, j}) + w({j, k}) + w({k, i}) <math>\ge</math> K.


Поэтому, найдя i, такой, что <math>(A \otimes_d B \; A \otimes_d A) [i, j]</math> минимизировано, мы получим вершину i, содержащуюся в максимальном треугольнике. Для получения фактического треугольника следует проверить все m ребер {j, k} на предмет того, является ли {i, j, k} треугольником. □
 
Поэтому, найдя i, такой, что <math>(A \otimes_d A \otimes_d A) [i, j]</math> минимизировано, мы получим вершину i, содержащуюся в максимальном треугольнике. Для получения фактического треугольника следует проверить все m ребер {j, k} на предмет того, является ли {i, j, k} треугольником. □




Строка 108: Строка 110:


== Применение ==
== Применение ==
Модифицировав конструкцию графа, можно решать другие задачи за время <math>O(1,732^n)</math>, такие как MAX CUT ([[Максимальный разрез]]), MINIMUM BISECTION ([[Минимальная бисекция]]) и SPARSEST CUT ([[Самое неплотное сечение]]). В целом, любая задача оптимизации с ограничениями, в которой каждое ограничение имеет не более двух переменных, может быть решена быстрее с помощью описанного выше подхода. Более подробную информацию можно найти в работе [17] и в недавнем обзоре Вёгингера [19]. Схожая с вышеприведенным алгоритмом техника была также использована Дорном [6] с целью ускорения динамического программирования для некоторых задач на планарных графах (и вообще на графах с ограниченной путевой шириной).
Модифицировав построение графа, можно решать другие задачи за время <math>O(1,732^n)</math>, такие как MAX CUT ([[Максимальный разрез]]), MINIMUM BISECTION ([[Минимальная бисекция]]) и SPARSEST CUT ([[Самое неплотное сечение]]). В целом, любая задача оптимизации с ограничениями, в которой каждое ограничение имеет не более двух переменных, может быть решена быстрее с помощью описанного выше подхода. Более подробную информацию можно найти в работе [17] и в обзоре Вёгингера [19]. Схожая с вышеприведенным алгоритмом техника была также использована Дорном [6] с целью ускорения динамического программирования для некоторых задач на планарных графах (и вообще на графах с ограниченной путевой шириной).


== Открытые вопросы ==
== Открытые вопросы ==
• Необходимо улучшить использование памяти описанным выше алгоритмом. В настоящее время он требует <math>\Theta(2^{2n/3})</math>. Очень интересен пока нерешенный вопрос: существует ли алгоритм для MAX 2-SAT со временем <math>O(1,99^n)</math>, использующий только полиномиальный объем памяти. На этот вопрос можно было бы ответить положительно, если бы удалось найти алгоритм решения задачи о k-кликах (k-CLIQUE) с полилогарифмическими затратами памяти и временем <math>n^{k \ \delta}</math> для некоторых <math>\delta > 0</math> и <math>k \ge 3</math>.
• Необходимо улучшить использование памяти описанным выше алгоритмом. В настоящее время он требует <math>\Theta(2^{2n/3})</math>. Очень интересен пока нерешенный вопрос: существует ли алгоритм для MAX 2-SAT со временем <math>O(1,99^n)</math>, использующий только ''полиномиальный'' объем памяти. На этот вопрос можно было бы ответить положительно, если бы удалось найти алгоритм решения задачи о k-кликах (k-CLIQUE) с полилогарифмическими затратами памяти и временем <math>n^{k - \delta}</math> для некоторых <math>\delta > 0</math> и <math>k \ge 3</math>.


• Хотелось бы найти алгоритм для MAX 2-SAT, работающий быстрее чем <math>2^n</math> и не требующий быстрого умножения матриц. Алгоритмы быстрого умножения матриц имеют печальную репутацию непрактичных.
• Хотелось бы найти алгоритм для MAX 2-SAT с временем выполнения менее <math>2^n</math>, не требующий быстрого умножения матриц. Алгоритмы быстрого умножения матриц имеют печальную репутацию непрактичных.


• Следует обобщить вышеприведенный алгоритм для задачи MAX k-SAT, где k – любое целое положительное число. В текущей формулировке требуется эффективный алгоритм для нахождения малой гиперклики в гиперграфе. Однако для этой задачи неизвестны какие-либо результаты общего вида. Есть гипотеза, что для всех <math>k \ge 2</math> задача MAX k-SAT решается за время <math>\tilde{O}(2^{n(1 - \frac{1}{k + 1})})</math>, исходя из предположения, что умножение матриц выполняется за время <math>n^{2+o(1)}</math> [17].
• Следует обобщить вышеприведенный алгоритм для задачи MAX k-SAT, где k – любое целое положительное число. В текущей формулировке требуется эффективный алгоритм для нахождения малой гиперклики в гиперграфе. Однако для этой задачи неизвестны какие-либо результаты общего вида. Есть гипотеза, что для всех <math>k \ge 2</math> задача MAX k-SAT решается за время <math>\tilde{O}(2^{n(1 - \frac{1}{k + 1})})</math>, исходя из предположения, что умножение матриц выполняется за время <math>n^{2+o(1)}</math> [17].
Строка 121: Строка 123:
* [[Максимальный разрез]]
* [[Максимальный разрез]]
* [[Минимальная бисекция]]
* [[Минимальная бисекция]]
* [[Самое неплотное сечение]]
* [[Самый неплотный разрез]]


== Литература ==
== Литература ==
4824

правки

Навигация