SAT-задача, или задача выполнимости булевых формул, является фундаментальной в информатике - она является первой задачей, для которой удалось доказать ее принадлежность к классу NP-полных задач (при формулировке задачи в форме КНФ = 1), имеет широкое применение в ряде областей, включая искусственный интеллект, верификацию программного обеспечения, криптографию, проектирование интегральных схем [1].
На текущий момент лидирующим подходом решения SAT-задачи является CDCL (Conflict Driven Clause Learning), в основе которого лежит классический алгоритм DPLL, и основная идея которого состоит в анализе встречаемых «конфликтов» в ходе решения и добавления новых искусственно сконструированных дизъюнктов в исходную КНФ, отражающих в себе информацию о соответствующих конфликтах, позволяющую в дальнейшем поиске их избегать [1].
В ряде практических задач возникает необходимость в решении смежной задачи - задачи нахождения корня как можно меньшего ранга логического уравнения вида КНФ = 1 (минимизации корня уравнения КНФ = 1).
Так, например, построение тестовых наборов для неисправности схемы в [2] сводится к поиску допустимых интервалов некоторой КНФ, где проверяющий тест задается набором таких интервалов (конъюнкций). При этом чем меньше их ранг, тем больше возможностей для сокращения длины проверяющего теста, что является предпочтительным.
В сравнении с задачей выполнимости булевых формул количество научных работ, рассматривающих эту расширенную задачу, существенно меньше. Из них можно обратить внимание на [3], где предложена модификация алгоритма Закревского с детерминированной эвристикой ветвления, направленной на сокращение ранга искомого корня.
В данной дипломной работе разработан метод поиска корня как можно меньшего ранга логического уравнения вида КНФ = 1, в основу которого взят модифицированный алгоритм CDCL со стохастической эвристикой ветвления основанной на предложенной в [3].
В целях исследования работы предлагаемого алгоритма и сравнения его с существующим методом [3] был реализован «решатель» (программная реализация), поддерживающий оба метода, и обладающий относительно простым программным интерфейсом, позволяющим заменять эвристику ветвления, условие останова, механизм поиска (DPLL, CDCL) и другие параметры поиска.
В данной работе была рассмотрена задача минимизации корня логического уравнения КНФ = 1, а также смежная с ней задача выполнимости булевых формул в формулировке КНФ.
Был изучен один из существующих методов поиска допустимого интервала КНФ как можно меньшего ранга, основанный на алгоритме Закревского. Были выявлены несколько недостатков этого метода.
На основе этого анализа был разработан метод поиска корня как можно меньшего ранга логического уравнения КНФ = 1, представляющий собой модифицированный алгоритм CDCL с рестартами и стохастической эвристикой ветвления.
Разработанный метод был реализован на языке С++, его эффективность в сравнении с предыдущим методом показана экспериментально (на рассмотренных бенчмарках).
Реализованный «решатель» (программная реализация) поддерживает оба из рассмотренных методов и имеет относительно простой программный интерфейс, позволяющий заменять эвристику ветвления, условие останова, механизм поиска (DPLL, CDCL) и другие параметры поиска, что делает его применимым для дальнейших исследований в данном направлении.
1. Armin Biere, Marijn Heule, Hans van Maaren, Toby Walsh, "Handbook of Satisfiability", in Frontiers in Artificial Intelligence and Applications pp. 336, IOS Press 2021, ISBN 978-1-64368-160-3.
2. Тычинский В. З. Получение тестовых пар для робастно тестируемых неисправностей задержек путей с использованием SAT- решателей / В. З. Тычинский, В. В. Андреева // Материалы международной научной конференции "Математическое и программное обеспечение информационных, технических и экономических систем", Томск, 28-30 мая 2020 г.
3. Андреева Валентина Валерьевна, Тарновская Татьяна Павловна Сокращение ранга конъюнкции, представляющей корень логического уравнения // Вестник Томского государственного университета. Управление, вычислительная техника и информатика. 2015. №4 (33).
4. Закревский А.Д. Логические уравнения. М. : Едиториал УРСС, 2003. 96 с.
5. Gomes, Carla P., Bart Selman, and Henry Kautz. "Boosting combinatorial search through randomization." AAAI/IAAI 98.1998 (1998): 431-437.
6. Luby, Michael, Alistair Sinclair, and David Zuckerman. "Optimal speedup of Las Vegas algorithms." Information Processing Letters 47.4 (1993): 173¬180.
7. AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, revision 3.32 (2021).
8. SATLIB - Benchmark problems // [электронный ресурс] URL:
https: //www. cs.ubc. ca/~hoos/S ATLIB/benchm.html; (дата обращения
25.05.2024).