Начнем с некоторых общих замечаний относительно монотонных булевых функций.
Булева функция f(ξ1,ξ2,…,ξn) называется монотонной по первому аргументу, если f(0,ξ2,…,ξn)≤f(1,ξ2,…,ξn) для любого вектора (ξ1,ξ2,…,ξn), и антимонотонной по первому аргументу, если выполняется противоположное неравенство. Аналогично определяется монотонность и антимонотонность по остальным аргументам. Функция f(ξ1,ξ2,…,ξn) антимонотонна по ξ1 в том и только том случае, когда функция f(ξ1’,ξ2,…,ξn) монотонна по ξ1. Функция f(ξ1,ξ2,…,ξn) монотонна, если она монотонна по всем своим аргументам.
Если функция f(ξ1,ξ2,…,ξn) монотонна по ξ1, она допускает следующее разложение по переменной ξ1.
f(ξ1,ξ2,…,ξn)= f(0,ξ2,…,ξn) ∨ f(1,ξ2,…,ξn)ξ1.
В справедливости этого тождества несложно убедиться непосредственно, подставив ξ1=0 и ξ1=1:
f(0,ξ2,…,ξn)= f(0,ξ2,…,ξn) ∨ f(1,ξ2,…,ξn)⋅0;
f(1,ξ2,…,ξn)= f(0,ξ2,…,ξn) ∨ f(1,ξ2,…,ξn)⋅1
(второе верно в силу монотонности, поскольку f(0,ξ2,…,ξn) ≤ f(1,ξ2,…,ξn)).
Если функция f(ξ1,ξ2,…,ξn) монотонна еще и по переменной ξ2, то разложение можно продолжить. В случае, когда функция f(ξ1,ξ2,…,ξn) монотонна по всем аргументам, последовательно применяя указанное разложение, мы придем к ДНФ функции f(ξ1,ξ2,…,ξn), не содержащей отрицаний переменной. Если функция f(ξ1,ξ2,…,ξn) по некоторым переменным монотонна, а по некоторым антимонотонна, ее можно представить в виде ДНФ, в которую первые переменные входят без отрицания, а вторые – только с отрицанием.
В качестве примера рассмотрим так называемы пороговые функции, которые определяются условиями вида
f(ξ1,ξ2,…,ξn) = 1⇔ k1ξ1+k2ξ2+…+knξn ≥ s,
где k1, k2, …, kn, s – действительные коэффициенты. Пороговая функция монотонна по тем переменным, которые входят в сумму с положительным коэффициентом и антимонотонна по тем переменным, которые входят в сумму с отрицательным коэффициентом.
Пример.Пусть f(ξ1,ξ2,ξ3) определяется условием
f(ξ1,ξ2,ξ3)=1 ⇔ 3ξ1−5ξ2+ξ3≥−1.
Тогда
f(ξ1,ξ2,ξ3)= ξ1ξ3∨ξ2’.
Чтобы получить эту формулу, можно выписать СДНФ и провести в ней сокращения, используя законы поглощения.
Рассмотрим теперь турнирный выбор. Для множества участников (игроков) Ω={1,2,…n} задана турнирная таблица T=(tij), в которой клетка tij содержит 2, если i победил j; 0, если j победил i; 1, если i и j сыграли вничью. Все клетки tii содержат единицы.
Пусть X – некоторое множество участников турнира. По определению турнирного выбора из X отбираются победители, то есть игроки, набравшие максимальное число во встречах с игроками из X. Для i∈X обозначим через li(X) разность между числом побед и числом поражений игрока i во встречах с игроками из X. Ясно, что победителями являются те игроки, для которых li(X) принимает наибольшее значение. Таким образом,
i∈C(X) ⇔ ∀j∈X li(X)≥lj(X).
Пусть ξ = (ξ1,ξ2,…,ξn) характеристический вектор множества X и (C1(ξ),C2(ξ),…,Cn(ξ)) – характеристический вектор C(X). Для i∈X имеем
li(X) = ξ1⋅(ti1−1) + ξ2⋅(ti2−1) +…+ ξn⋅(tin−1).
Обозначим через gij(ξ) пороговую функцию, определенную условием
gij(ξ)=1 ⇔ li(X)− lj(X) ≥0,
(результат i не хуже, чем результат j).
Тогда условие попадания в число победителей можно переписать так: