|
|
Строка 6: |
Строка 6: |
| == Описание == | | == Описание == |
| | | |
− | Одним из особых случаев <tex>\mathrm {SAT}</tex> является класс задач, где каждый конъюнкт содержит операции <tex>\oplus</tex> (т. е. исключающее или), а не (обычные) <tex>\lor</tex> операторы.(Формально, обобщенная КНФ с тернарным булевым оператором R работает только если <tex> 1</tex> или <tex> 3</tex> переменные дают <tex> \mathtt {true}</tex> в своих аргументах. Конъюнкты,имеющие более <tex> 3</tex> переменных могут быть преобразованы в сочетании с формулой преобразования с сохранением выполнимости булевой функции, т. е. <tex>\mathrm {XOR}</tex>-<tex>\mathrm {SAT}</tex> может быть снижена до <tex>\mathrm {XOR}</tex>-<tex>3</tex>-<tex>\mathrm {SAT}</tex>)<ref>''Alfred V. Aho; John E. Hopcroft; Jeffrey D. Ullman.''The Design and Analysis of Computer Algorithms. Addison-Wesley.; здесь: Thm.10.4, 1974.</ref> | + | Одним из особых случаев <tex>\mathrm {SAT}</tex> является класс задач, где каждый конъюнкт содержит операции <tex>\oplus</tex> (т. е. исключающее или), а не (обычные) <tex>\lor</tex> операторы.(Формально, обобщенная КНФ с тернарным булевым оператором <tex> \mathrm {R}</tex> работает только если <tex> 1</tex> или <tex> 3</tex> переменные дают <tex> \mathtt {true}</tex> в своих аргументах. Конъюнкты,имеющие более <tex> 3</tex> переменных могут быть преобразованы в сочетании с формулой преобразования с сохранением выполнимости булевой функции, т. е. <tex>\mathrm {XOR}</tex>-<tex>\mathrm {SAT}</tex> может быть снижена до <tex>\mathrm {XOR}</tex>-<tex>3</tex>-<tex>\mathrm {SAT}</tex>)<ref>''Alfred V. Aho; John E. Hopcroft; Jeffrey D. Ullman.''The Design and Analysis of Computer Algorithms. Addison-Wesley.; здесь: Thm.10.4, 1974.</ref> |
| | | |
| | | |
− | Это задача [[Класс P|Р-класса]],так как <tex>\mathrm {XOR}</tex>-<tex>\mathrm {SAT}</tex> формулу можно рассматривать как систему линейных уравнений по модулю <tex>2</tex>,которая ,в свою очередь, может быть решена за <tex>O(n^3)</tex> методом Гаусса <ref>[https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0 Метод Гаусса]</ref>.Такое представление возможно на основе связи между Булевой алгеброй и Булевым кольцом <ref>[https://en.wikipedia.org/wiki/Boolean_algebra_(structure)#Boolean_rings Связь между Булевой алгеброй и Булевым кольцом]</ref> и том факте,что арифметика по модулю <tex>2</tex> образует конечное поле <ref>[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5 Конечное поле ]</ref>. | + | Это задача [[Класс P|Р-класса]], так как <tex>\mathrm {XOR}</tex>-<tex>\mathrm {SAT}</tex> формулу можно рассматривать как систему линейных уравнений по модулю <tex>2</tex>, которая, в свою очередь, может быть решена за <tex>O(n^3)</tex> методом Гаусса <ref>[https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%93%D0%B0%D1%83%D1%81%D1%81%D0%B0 Метод Гаусса]</ref>.Такое представление возможно на основе связи между Булевой алгеброй и Булевым кольцом <ref>[https://en.wikipedia.org/wiki/Boolean_algebra_(structure)#Boolean_rings Связь между Булевой алгеброй и Булевым кольцом]</ref> и том факте, что арифметика по модулю <tex>2</tex> образует конечное поле <ref>[https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5 Конечное поле ]</ref>. |
| | | |
| ==Решение XOR-SAT задачи методом Гаусса== | | ==Решение XOR-SAT задачи методом Гаусса== |
Версия 00:05, 7 января 2017
Задача: |
[math]\mathrm {XORSAT}[/math] (XOR-satisfiability) выполнимость функции — задача распределения аргументов в булевой КНФ функции, записанной в виде XOR-КНФ, таким образом, чтобы результат данной функции был равен [math] 1 [/math]. |
Описание
Одним из особых случаев [math]\mathrm {SAT}[/math] является класс задач, где каждый конъюнкт содержит операции [math]\oplus[/math] (т. е. исключающее или), а не (обычные) [math]\lor[/math] операторы.(Формально, обобщенная КНФ с тернарным булевым оператором [math] \mathrm {R}[/math] работает только если [math] 1[/math] или [math] 3[/math] переменные дают [math] \mathtt {true}[/math] в своих аргументах. Конъюнкты,имеющие более [math] 3[/math] переменных могут быть преобразованы в сочетании с формулой преобразования с сохранением выполнимости булевой функции, т. е. [math]\mathrm {XOR}[/math]-[math]\mathrm {SAT}[/math] может быть снижена до [math]\mathrm {XOR}[/math]-[math]3[/math]-[math]\mathrm {SAT}[/math])[1]
Это задача Р-класса, так как [math]\mathrm {XOR}[/math]-[math]\mathrm {SAT}[/math] формулу можно рассматривать как систему линейных уравнений по модулю [math]2[/math], которая, в свою очередь, может быть решена за [math]O(n^3)[/math] методом Гаусса [2].Такое представление возможно на основе связи между Булевой алгеброй и Булевым кольцом [3] и том факте, что арифметика по модулю [math]2[/math] образует конечное поле [4].
Решение XOR-SAT задачи методом Гаусса
Система уравнений
|
("[math]1[/math]" означает «[math] \mathtt {true}[/math]», "[math]0[/math]" означает «[math] \mathtt {false}[/math]»)
Каждый конъюнкт ведет к одному уравнению.
|
|
Переменные
|
Значение
|
[math] a [/math] [math]\oplus[/math] [math] c [/math] [math]\oplus[/math] [math] d [/math]
|
[math]=1[/math]
|
[math] b [/math] [math]\oplus[/math] [math]\neg c [/math] [math]\oplus[/math] [math] d [/math]
|
[math]=1[/math]
|
[math] a [/math] [math]\oplus[/math] [math] b [/math] [math]\oplus[/math] [math]\neg d [/math]
|
[math]=1[/math]
|
[math] \neg a [/math] [math]\oplus[/math] [math] \neg b [/math] [math]\oplus[/math] [math]\neg c [/math]
|
[math]=1[/math]
|
[math] \neg a [/math] [math]\oplus[/math] [math] b [/math] [math]\oplus[/math] [math] c [/math]
|
[math] \cong 1 [/math]
|
Нормированная система уравнений
|
Используя свойства Булевых колец
([math]\neg x=1 \oplus x[/math], [math]x \oplus x=1[/math])
|
|
Переменные
|
Значение
|
[math] a [/math] [math]\oplus[/math] [math] c [/math] [math]\oplus[/math] [math] d [/math]
|
[math]=1[/math]
|
[math] b [/math] [math]\oplus[/math] [math] c [/math] [math]\oplus[/math] [math] d [/math]
|
[math]=0[/math]
|
[math] a [/math] [math]\oplus[/math] [math] b [/math] [math]\oplus[/math] [math] d [/math]
|
[math]=0[/math]
|
[math] a [/math] [math]\oplus[/math] [math] b [/math] [math]\oplus[/math] [math] c [/math]
|
[math]=1[/math]
|
[math] a [/math] [math]\oplus[/math] [math] b [/math] [math]\oplus[/math] [math] c [/math]
|
[math] \cong 0 [/math]
|
Матрица соответствующих коэффициентов
|
[math]a[/math]
|
[math]b[/math]
|
[math]c[/math]
|
[math]d[/math]
|
|
Строка
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]A[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]B[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]C[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]D[/math]
|
Преобразования, чтобы сформировать
верхнюю треугольную матрицу
|
[math]a[/math]
|
[math]b[/math]
|
[math]c[/math]
|
[math]d[/math]
|
|
Операция
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]A[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]C[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]D[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]B[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]A[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]C[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]D[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]B[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]A[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]E=C \oplus A[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]F=D \oplus A[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]B[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]A[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]E[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]G=F \oplus E[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]H=B \oplus E[/math]
|
Преобразования, чтобы сформировать
диагональную матрицу
|
[math]a[/math]
|
[math]b[/math]
|
[math]c[/math]
|
[math]d[/math]
|
|
Операция
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]I=A \oplus H[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]E[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]J=G \oplus H[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]H[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]K=I \oplus J[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]L=E \oplus J[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]J[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]0[/math]
|
[math]1[/math]
|
[math]1[/math]
|
[math]H[/math]
|
Следствие:[math]R[/math]([math]a[/math],[math]c[/math],[math]d[/math])[math]\land[/math] [math]R[/math]([math]b[/math],[math]\neg c[/math],[math]d[/math])[math]\land[/math][math]R[/math]([math]a[/math],[math]b[/math],[math]\neg d[/math])[math]\land[/math][math]R[/math]([math]a[/math],[math]\neg b[/math],[math]\neg c[/math])∧ R(¬a,b,c)
Вычислительная сложность
Формула с
[math]2[/math]-мя дизъюнктами может быть неудовлетворена(красный),
[math]3[/math]-
[math]\mathrm {SAT}[/math](зелёный),
[math]\mathrm {XOR}[/math]-
[math]3[/math]-
[math]\mathrm {SAT}[/math](синий) ,или/и
[math]1[/math]-
[math]\mathrm {in}[/math]-
[math]3[/math]-
[math]\mathrm {SAT}[/math], в зависимости от количества переменных со значением
[math] \mathtt {true}[/math] в
[math]1[/math]-м (горизонтальном) и втором (вертикальном) конъюнкте.
Поскольку [math]a\ XOR\ b\ XOR\ c[/math] принимает значение [math] \mathtt {true}[/math],если и только если [math]1[/math] из [math]3[/math] переменных {[math]a[/math],[math]b[/math],[math]c[/math]} принимает значение [math] \mathtt {true}[/math] ,каждое решение в [math]1[/math]-[math]\mathrm {in}[/math]-[math]3[/math]-[math]\mathrm {SAT}[/math] задачи для данной КНФ-формулы является также решением [math]\mathrm {XOR}[/math]-[math]3[/math]-[math]\mathrm {SAT}[/math] задачи, и ,в свою очередь,обратное также верно.
Как следствие, для каждой КНФ-формулы, можно решить [math]\mathrm {XOR}[/math]-[math]3[/math]-[math]\mathrm {SAT}[/math]-задачу и на основании результатов сделать вывод, что либо [math]3[/math]-[math]\mathrm {SAT}[/math] задача решаема или, что [math]1[/math]-[math]\mathrm {in}[/math]-[math]3[/math]-[math]\mathrm {SAT}[/math]-задача нерешаема.
При условии ,что P- и NP-классы не равны,ни [math]2[/math]-,ни Хорн-,ни [math]\mathrm {XOR}[/math]-[math]\mathrm {SAT}[/math] не являются задачи NP-класса,в отличии от [math]\mathrm {SAT}[/math].
См. также
Примечания
Источники информации