Здравствуйте, yak_2010!
Первое уравнение содержит функцию
(x[sub]1[/sub][$8744$]x[sub]2[/sub])[$8743$]([$172$]x[sub]3[/sub][$8744$][$172$]x[sub]4[/sub]) четырёх переменных (
x[sub]1[/sub],
x[sub]2[/sub],
x[sub]3[/sub] и
x[sub]4[/sub]). Чтобы определить, при каких значениях этих переменных функция равна
0, составим таблицу значений функции (добавиви в неё для облегчения расчётов значения промежуточных выражений
x[sub]1[/sub][$8744$]x[sub]2[/sub] и
[$172$]x[sub]3[/sub][$8744$][$172$]x[sub]4[/sub]):
Из таблицы видно, что функция принимает нулевое значение на наборах
0000,
0001,
0010,
0011,
0111,
1011 и
1111. Поскольку функция не зависит от остальных переменных (
x[sub]5[/sub] ...
x[sub]12[/sub]), то каждый из этих наборов представляет собой на самом деле несколько наборов. Например,
0000 - это наборы
000000000000,
000000000001,
000000000010,...
0000011111110,
000011111111, всего 256 наборов, в которых переменные
x[sub]5[/sub]...x[sub]12[/sub] принимают все возможные значения.
Для упрощения обычно используют сокращённую запись, в которой вместо двух наборов, отличающихся только значением одной переменной (0 или 1), используют один, в котором эта переменная имеет специальное значение
x (означающее "0 или 1"). То есть, вместо
000000000000 и
000000000001 можно записать
00000000000x, вместо
00000000000x и
00000000001x -
0000000000xx и т.д.
Соответственно, найденные семь наборов запишутся как
0000xxxxxxxx,
0001xxxxxxxx,
0010xxxxxxxx,
0011xxxxxxxx,
0111xxxxxxxx,
1011xxxxxxxx и
1111xxxxxxxx. Если же объединить первые четыре набора (они отличаются только значением переменных
x[sub]3[/sub] и
x[sub]4[/sub]) и последние два (отличающиеся значением переменной
x[sub]2[/sub]), то решение примет вид
{00xxxxxxxxxx, 0111xxxxxxxx, 1x11xxxxxxxx}.
Определить количество наборов при такой форме записи решения очень просто: каждый компонент задаёт
2[sup]k[/sup] наборов, где
k - число значений
x в этом компоненте. То есть в данном случае
00xxxxxxxxxx задаёт
2[sup]10[/sup] = 1024 набора,
0111xxxxxxxx -
2[sup]8[/sup] = 256 и
1x11xxxxxxxx 2[sup]9[/sup] = 512, а всего
1024 + 256 + 512 = 1768 наборов, удовлетворяющих первому уравнению.
Можно заметить, что второе уравнение отличается от первого только используемыми переменными (
x[sub]3[/sub],
x[sub]4[/sub],
x[sub]5[/sub] и
x[sub]6[/sub] вместо
x[sub]1[/sub],
x[sub]2[/sub],
x[sub]3[/sub] и
x[sub]4[/sub] соответственно, то есть номера переменных отличаются на 2). Следовательно, множество наборов переменных, задающее решение второго уравнения, можно получить путём сдвига всех значений из предыдущего решения
{00xxxxxxxxxx, 0111xxxxxxxx, 1x11xxxxxxxx} вправо на 2:
{xx00xxxxxxxx, xx0111xxxxxx, xx1x11xxxxxx} - также 1768 наборов.
Решение, удовлетворяющее обоим уравнением, является пересечением этих двух решений. Поскольку каждая логическая функция может принимать некоторое значение на одном из следующих множеств значений переменной:
{0},
{1},
{0,1} (которым соответствуют
0,
1 и
x в соращённой форме записи), то из стандартных правил пересечения множеств (
{0}[$8745$]{0} = {0}[$8745$]{0,1} = 0,
{1}[$8745$]{1} = {1}[$8745$]{0,1} = 1,
{0,1}[$8745$]{0,1} = {0,1},
{0}[$8745$]{1} = [$8709$] - пустое множество) следует правило выполнения операции "пересечения" над значениями
0,
1 и
x:
(знак "-" означает, что пересечения нет). В случае нескольких переменных операция "пересечения" выполняется "поразрядно" - над каждой из переменных.
В данном случае пересечением двух наборов-решений будет
{00xxxxxxxxxx, 0111xxxxxxxx, 1x11xxxxxxxx}[$8745$]{xx00xxxxxxxx, xx0111xxxxxx, xx1x11xxxxxx} = {00xxxxxxxxxx[$8745$]xx00xxxxxxxx, 00xxxxxxxxxx[$8745$]xx0111xxxxxx, 00xxxxxxxxxx[$8745$]xx1x11xxxxxx, 0111xxxxxxxx[$8745$]xx00xxxxxxxx, 0111xxxxxxxx[$8745$]xx0111xxxxxx, 0111xxxxxxxx[$8745$]xx1x11xxxxxx, 1x11xxxxxxxx[$8745$]xx00xxxxxxxx, 1x11xxxxxxxx[$8745$]xx0111xxxxxx, 1x11xxxxxxxx[$8745$]xx1x11xxxxxx} = {0000xxxxxxxx, 00011xxxxxxx, 001x11xxxxxx, [$8709$], [$8709$], 011111xxxxxx, [$8709$], [$8709$], 1x1111xxxxxx} = {0000xxxxxxxx, 00011xxxxxxx, 001x11xxxxxx, 011111xxxxxx, 1x1111xxxxxx} - это решение содержит 256+128+128+64+128=704 набора.
Аналогично третье уравнение отличается от второго лишь используемыми переменными (
x[sub]5[/sub],
x[sub]6[/sub],
x[sub]7[/sub] и
x[sub]8[/sub] вместо
x[sub]3[/sub],
x[sub]4[/sub],
x[sub]5[/sub] и
x[sub]6[/sub] соответственно). Поэтому множество наборов значений переменных, являющихся его решением, можно записать как
{xxxx00xxxxxx, xxxx0111xxxx, xxxx1x11xxxx}, а его пересечением с уже найденным решением первых двух уравнений будет
{0000xxxxxxxx, 00011xxxxxxx, 001x11xxxxxx, 011111xxxxxx, 1x1111xxxxxx}[$8745$]{xxxx00xxxxxx, xxxx0111xxxx, xxxx1x11xxxx} = {0000xxxxxxxx[$8745$]xxxx00xxxxxx, 0000xxxxxxxx[$8745$]xxxx0111xxxx, 0000xxxxxxxx[$8745$]xxxx1x11xxxx, 00011xxxxxxx[$8745$]xxxx00xxxxxx, 00011xxxxxxx[$8745$]xxxx0111xxxx, 00011xxxxxxx[$8745$]xxxx1x11xxxx, 001x11xxxxxx[$8745$]xxxx00xxxxxx, 001x11xxxxxx[$8745$]xxxx0111xxxx, 001x11xxxxxx[$8745$]xxxx1x11xxxx, 011111xxxxxx[$8745$]xxxx00xxxxxx, 011111xxxxxx[$8745$]xxxx0111xxxx, 011111xxxxxx[$8745$]xxxx1x11xxxx, 1x1111xxxxxx[$8745$]xxxx00xxxxxx, 1x1111xxxxxx[$8745$]xxxx0111xxxx, 1x1111xxxxxx[$8745$]xxxx1x11xxxx} = {000000xxxxxx, 00000111xxxx, 00001x11xxxx, [$8709$], [$8709$], 00011x11xxxx, [$8709$], [$8709$], 001x1111xxxx, [$8709$], [$8709$], 01111111xxxx, [$8709$], [$8709$], 1x111111xxxx} = {000000xxxxxx, 00000111xxxx, 00001x11xxxx, 00011x11xxxx, 001x1111xxxx, 01111111xxxx, 1x111111xxxx} = {000000xxxxxx, 00000111xxxx, 000x1x11xxxx, 001x1111xxxx, 01111111xxxx, 1x111111xxxx} - всего 64+16+64+32+16+32=224 набора.
Четвёртому уравнению (также отличающемуся от третьего лишь используемыми переменными) соответствует решение
{xxxxxx00xxxx, xxxxxx0111xx, xxxxxx1x11xx}, пересечением которого с предыдущим решением будет
{000000xxxxxx, 00000111xxxx, 000x1x11xxxx, 001x1111xxxx, 01111111xxxx, 1x111111xxxx}[$8745$]{xxxxxx00xxxx, xxxxxx0111xx, xxxxxx1x11xx} = {000000xxxxxx[$8745$]xxxxxx00xxxx, 000000xxxxxx[$8745$]xxxxxx0111xx, 000000xxxxxx[$8745$]xxxxxx1x11xx, 00000111xxxx[$8745$]xxxxxx00xxxx, 00000111xxxx[$8745$]xxxxxx0111xx, 00000111xxxx[$8745$]xxxxxx1x11xx, 000x1x11xxxx[$8745$]xxxxxx00xxxx, 000x1x11xxxx[$8745$]xxxxxx0111xx, 000x1x11xxxx[$8745$]xxxxxx1x11xx, 001x1111xxxx[$8745$]xxxxxx00xxxx, 001x1111xxxx[$8745$]xxxxxx0111xx, 001x1111xxxx[$8745$]xxxxxx1x11xx, 011x1111xxxx[$8745$]xxxxxx00xxxx, 011x1111xxxx[$8745$]xxxxxx0111xx, 011x1111xxxx[$8745$]xxxxxx1x11xx, 1x111111xxxx[$8745$]xxxxxx00xxxx, 1x111111xxxx[$8745$]xxxxxx0111xx, 1x111111xxxx[$8745$]xxxxxx1x11xx} = {00000000xxxx, 0000000111xx, 0000001x11xx, [$8709$], [$8709$], 0000011111xx, [$8709$], [$8709$], 000x1x1111xx, [$8709$], [$8709$], 001x111111xx, [$8709$], [$8709$], 011x111111xx, [$8709$], [$8709$], 1x11111111xx} = {00000000xxxx, 0000000111xx, 0000001x11xx, 0000011111xx, 000x1x1111xx, 001x111111xx, 011x111111xx, 1x11111111xx} = {00000000xxxx, 0000000111xx, 0000001x11xx, 0000011111xx, 000x1x1111xx, 0x1x111111xx, 1x11111111xx} - всего 16+4+8+4+16+16+8=72 набора.
Наконец решением последнего уравнения будет
{xxxxxxxx00xx, xxxxxxxx0111, xxxxxxxx1x11}, и его пересечение с решением остальных четырёх уравнений
{00000000xxxx, 0000000111xx, 0000001x11xx, 0000011111xx, 000x1x1111xx, 0x1x111111xx, 1x11111111xx}[$8745$]{xxxxxxxx00xx, xxxxxxxx0111, xxxxxxxx1x11} = {00000000xxxx[$8745$]xxxxxxxx00xx, 00000000xxxx[$8745$]xxxxxxxx0111, 00000000xxxx[$8745$]xxxxxxxx1x11, 0000000111xx[$8745$]xxxxxxxx00xx, 0000000111xx[$8745$]xxxxxxxx0111, 0000000111xx[$8745$]xxxxxxxx1x11, 0000001x11xx[$8745$]xxxxxxxx00xx, 0000001x11xx[$8745$]xxxxxxxx0111, 0000001x11xx[$8745$]xxxxxxxx1x11, 0000011111xx[$8745$]xxxxxxxx00xx, 0000011111xx[$8745$]xxxxxxxx0111, 0000011111xx[$8745$]xxxxxxxx1x11, 000x1x1111xx[$8745$]xxxxxxxx00xx, 000x1x1111xx[$8745$]xxxxxxxx0111, 000x1x1111xx[$8745$]xxxxxxxx1x11, 0x1x111111xx[$8745$]xxxxxxxx00xx, 0x1x111111xx[$8745$]xxxxxxxx0111, 0x1x111111xx[$8745$]xxxxxxxx1x11, 1x11111111xx[$8745$]xxxxxxxx00xx, 1x11111111xx[$8745$]xxxxxxxx0111, 1x11111111xx[$8745$]xxxxxxxx1x11} = {0000000000xx, 000000000111, 000000001x11, [$8709$], [$8709$], 000000011111, [$8709$], [$8709$], 0000001x1111, [$8709$], [$8709$], 000001111111, [$8709$], [$8709$], 000x1x111111, [$8709$], [$8709$], 0x1x11111111, [$8709$], [$8709$], 1x1111111111} = {0000000000xx, 000000000111, 000000001x11, 000000011111, 0000001x1111, 000001111111, 000x1x111111, 0x1x11111111, 1x1111111111} будет решением задачи. Оно задаёт 4+1+2+1+2+1+4+4+2=21 набор.