Введение

В формальной логике выполнимость Хорна, или HORNSAT, — это задача определения, является ли заданное множество роговых клауз выполнимым или нет. Выполнимость Хорна и роговые клаузы названы в честь Альфреда Хорна. Роговая клауза — это клауза, содержащая не более одного положительного литерала, называемого головой клаузы, и любое количество отрицательных литералов, образующих тело клаузы. Роговая формула — это пропозициональная формула, образованная конъюнкцией роговых клауз. Выполнимость Хорна фактически является одной из "наиболее сложных" или "наиболее выразительных" задач, для которых известно, что она вычислима за полиномиальное время, в том смысле, что это P-полная задача. Задача выполнимости Хорна также может быть сформулирована для многозначных пропозициональных логик. Алгоритмы обычно не линейны, но некоторые из них являются полиномиальными; см. Hähnle (2001 или 2003) для обзора.

Обобщение

Обобщением класса формул Хорна является класс переименовываемых формул Хорна, представляющий собой множество формул, которые можно привести к форме Хорна, заменив некоторые переменные на их отрицания. Проверка существования такой замены может быть выполнена за линейное время, следовательно, задача определения выполнимости таких формул находится в классе P, поскольку её можно решить, сначала выполнив эту замену, а затем проверив выполнимость полученной формулы Хорна. Выполнимость формул Хорна и переименовываемая выполнимость формул Хорна представляют собой один из двух важных подклассов задачи выполнимости, разрешимых за полиномиальное время; другим таким подклассом является 2-выполнимость.

Двухрогный SAT

Двойной вариант задачи Horn SAT — это Dual Horn SAT, в которой каждая дизъюнкция содержит не более одного отрицательного литерала. Отрицание всех переменных преобразует экземпляр Dual Horn SAT в экземпляр Horn SAT. Хорн доказал в 1951 году, что Dual Horn SAT решается за полиномиальное время (классифицируется как P).