Решение систем логических уравнений

Автор публикации:

Дата публикации:

Краткое описание: ...


Решение систем логических уравнений

Первый способ: самый простой – «табличный».

Он подходит для тех систем, где все уравнения однотипны, т.е. второе уравнение подобно первому, третье – второму и т.д. Каждое новое уравнение в системе должно содержать переменные, которые есть в предыдущем уравнении. Количество общих переменных не должно быть больше 2. Желательно, чтобы общие переменные имели одинаковые значения, т.е. были «парой». В противном случае, этот метод становится не эффективным и нужно решать СЛУ по-другому.

Пример 1. (демонстрационный вариант 2016 года)

(¬ (x1 ≡ y1)) ≡ (x2 ≡ y2)
(¬ (x
2 ≡ y2)) ≡ (x3 ≡ y3)

(¬ (x
8 ≡ y8)) ≡ (x9 ≡ y9)

Шаг 1. Найдём количество решений для первого уравнения. Из уравнения видно, что если две соседних переменные не равны, то следующая пара переменных обязательно должна быть равной: (xi ≠ yi)→(xi+1 = yi+1).

И наоборот, если первая пара переменных одинаковая, то следующая должна иметь разные значения: (xi = yi)→(xi+1 ≠ yi+1).

Исходя из этого правила, построим таблицу истинности для первого уравнения, в которую войдут только нужные нам строки (те, при которых функция истинна).

Пусть x1 и y1 имеют разные значения (0,1 или 1,0), тогда x2 и y2 будут одинаковы (0,0 или 1,1).

Пусть x1 и y1 имеют одинаковые значения (0,0 или 1,1), тогда x2 и y2 будут разные (0,1 или 1,0).

Итого, по первому уравнению мы имеем 8 наборов переменных.

 Шаг 2. Найдём количество решений для второго уравнения. Варианты решений второго уравнения будут точно такими же, как и для первого.

  [pic]

Шаг 3. Добавьте во вторую таблицу два столбца для общих переменных: x1 и y1.

 Не обращая внимания на столбцы значений x3 и y3 вставьте значения для x1 и y1 , исходя из таблицы 1.

Берем первую строку таблицы: x2=0, y2=1

Смотрим в таблице 1 чему будут равны переменные x1 и y: при x2=0, а y2=1, значения переменных x1 и y1 могут быть либо x1=0, y1=0, либо x1=1, y1=1.

Если x2=1, а y2=0, то x1 и y1 также могут быть либо x1=0, y1=0, либо x1=1, y1=1.

И так далее заполняем всю таблицу:

Видно, что, после добавления второго уравнения, количество найденных решений увеличилось в два раза.

Так как все уравнения в нашей системе однотипны, то каждое следующее уравнение также будет увеличивать количество решений в два раза.

Всего в данной системе 8 уравнений.

Итого: 8*2*2*2*2*2*2*2=1024 решения.

Ответ: 1024

Но такое простое решение подходит не для всех систем. Бывает, что даже для одного уравнения СЛУ трудно (невозможно) построить таблицу истинности, не говоря уже о том, чтобы объединить в таблице два уравнения.

Второй способ: замена выражений простыми переменными.

Этот способ особенно эффективен, когда вы видите, что после замены можно получить логическую операцию – импликацию.

Пример 2.

(x1→x2)→(x3→x4) = 1
(x
3→x4)→(x5→x6) = 1
(x
5→x6)→(x7→x8) = 1
(x
7→x8)→(x9→x10) = 1

Шаг 1. Введем замены:

Z1=(x1→x2)
Z
2=(x3→x4)
Z
3=(x5→x6)
Z
4=(x7→x8)
Z
5=(x9→x10)

Тогда система уравнений примет более простой вид:

Z1→Z2= 1
Z
2→Z3 = 1
Z
3→Z4 = 1
Z
4→Z5 = 1

Можно переписать СЛУ в виде одного уравнения:

(Z1→Z2)*(Z2→Z3)*(Z3→Z4)*(Z4→Z5) = 1

Как и СЛУ, это уравнение будет истинно только в том случае, когда каждый из множителей будет принимать значение ИСТИНА.

Шаг 2. Построим таблицу истинности для нашего уравнения, в которую войдут только те строки, при которых уравнение истинно.

 Внутри скобок – операция импликация между двумя соседними переменными: Zi→Zi+1

Импликация принимает значение истина, если первая переменная будет меньше или равна второй переменной.

Это значит, что для того, чтобы всё уравнение (вся система) была истинна, необходимо и достаточно, чтобы Zi ≤ Zi+1 

Шаг 3. Для каждого из набора решений Z1-Z5 найдем количество решений x.

Возьмём первую строчку таблицы истинности: Z1 = 0, Z2 = 0, Z3 = 0, Z4 = 0, Z5 = 0

Z1=(x1→x2), Z2=(x3→x4), Z3=(x5→x6), Z4=(x7→x8), Z5=(x9→x10)

Следовательно, (x1→x2)=0 И (x3→x4)=0 И (x5→x6)=0 И (x7→x8)=0 И (x9→x10)=0

Импликация принимает значение ЛОЖЬ в одном единственном случае (1→0)

Значит, x1=1, x2=0, x3=1, x4=0, x5=1, x6=0, x7=1, x8=0, x9=1, x10=0. Итого 1 набор.

  [pic]

Общее количество решений: 1+3+9+27+81+243=364

Ответ: 364

Метод с заменой выражений очень хорош, но также не универсален. Есть такие СЛУ, где не подходит ни один из способов. Такие системы можно попытаться решить «целиком», не дробя на отдельные уравнения.

Третий способ: Анализ всей системы уравнений.

Пример 3.

((x1*x2)→x3)*((x4*x5)→x6)=1
((x
4*x5)→x6)*((x7*x8)→x9)=1
((x
7*x8)→x9)*((x10*x11)→x12)=1

Решение: табличный способ не эффективен, т.к. слишком много общих переменных (x1,x2,x3). Метод замены не эффективен, т.к. корневая операция – конъюнкция.

Перепишем систему в следующем виде:

((x1*x2)→x3)*((x4*x5)→x6)*((x7*x8)→x9)*((x10*x11)→x12)=1

Для того, чтобы все уравнение было истинно, необходимо и достаточно, чтобы каждый из множителей принимал значение ИСТИНА.

Найдём количество решений для первого множителя.

Если в результате операции x1*x2 была получена ЛОЖЬ, то x3 может принимать любое значение (0 или 1)

Если в результате операции x1*x2 была получена ИСТИНА, то x3 может принимать только одно значение (1)

Следовательно, всего мы получаем 7 вариантов решений (для первого множителя).

 Всего таких множителей 4, каждый из которых даст 7 решений. Итого: 7*7*7*7=2401 набор.

Ответ: 2401