Здравствуйте, Валерий!
Рассмотрим задачу №191925.
1. В первом условии имеем функцию
(x[sub]1[/sub][$8594$]x[sub]2[/sub])[$8853$](x[sub]3[/sub][$8594$]x[sub]4[/sub]) четырёх переменных (
x[sub]1[/sub],
x[sub]2[/sub],
x[sub]3[/sub] и
x[sub]4[/sub]). Необходимо определить, при каких значениях этих переменных функция равна 1. Для этого составим таблицу значений функции для всех наборов переменных:
(для облегчения расчётов внесём в неё также значения промежуточных выражений
x[sub]1[/sub][$8594$]x[sub]2[/sub] и
x[sub]3[/sub][$8594$]x[sub]4[/sub]).
Из таблицы видно, что функция принимает единичное значение на наборах
0010,
0110,
1000,
1001,
1011 и
1110. Поскольку функция не зависит от остальных переменных (
x[sub]5[/sub] ...
x[sub]10[/sub]), то каждый из этих наборов представляет собой на самом деле несколько наборов. Например,
0010, это наборы
0010000000,
0010000001,
0010000010,...
0010111110,
0010111111 - всего 64 набора, в которых переменные
x[sub]5[/sub]...x[sub]10[/sub] принимают все возможные значения.
Для облегчения работы (чтобы не писать слишком много) используют сокращённую запись, в которой вместо двух наборов, отличающихся только значением одной переменной (0 или 1), используют один, в котором эта переменная имеет значение
x (означающее "0 или 1"). То есть, вместо
0010000000 и
0010000001 можно записать
001000000x, вместо
001000000x и
001000001x пишем
00100000xx и т.д. Соответственно, те шесть наборов, на которых наша функция принимает значение 1, запишутся как
0010xxxxxx,
0110xxxxxx,
1000xxxxxx,
1001xxxxxx,
1011xxxxxx и
1110xxxxxx. Если же объединить первый и второй наборы (они отличаются только значением переменной
x[sub]2[/sub]), а также третий и четвёртый (отличающиеся значением переменной
x[sub]4[/sub]), то решение примет вид
0x10xxxxxx,
100xxxxxxx,
1011xxxxxx и
1110xxxxxx.
Определить количество наборов при такой форме записи решения очень просто: каждый компонент записи задаёт
2[sup]k[/sup] наборов, где
k - число значений
x в этом компоненте. То есть в данном случае
0x10xxxxxx и
100xxxxxxx задают по
2[sup]7[/sup] = 128 наборов, а
1011xxxxxx и
1110xxxxxx - по
2[sup]6[/sup] = 64, а всего
128 + 128 + 64 + 64 = 384 набора.
2. Если бы рассмотренное условие было единственным, это и было бы решением задачи. Но необходимо учесть и остальные. Поэтому рассмотрим условие 2.
В общем случае следовало бы повторить для него все те же действия, что и для первого условия (составить таблицу значений функции, определить наборы, на которых она равна 1 и записать их в сокращённой форме). Но в данном случае мы видим, что соответствующая функция
(x[sub]3[/sub][$8594$]x[sub]4[/sub])[$8853$](x[sub]5[/sub][$8594$]x[sub]6[/sub]) отличается от предыдущей только используемыми переменными (
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). Следовательно, множество наборов переменных, удовлетворяющих этому условию, можно получить путём сдвига всех значений из предыдущего решения (
0x10xxxxxx,
100xxxxxxx,
1011xxxxxx и
1110xxxxxx) вправо на 2:
xx0x10xxxx,
xx100xxxxx,
xx1011xxxx и
xx1110xxxx - также 384 набора.
3. Таким образом, имеется множество наборов, удовлетворяющих первому условию, и аналогичное множество наборов, удовлетворяющих второму условию. Множество наборов, удовлетворяющих обоим условиям, является, очевидно, пересечением этих двух множеств. Можно было бы записать все 384 набора переменных из первого решения и все 384 из второго, а затем найти общие, но это очень долго и неудобно. Гораздо быстрее и проще выполнить операцию пересечения непосредственно над сокращёнными записями. Определим, по каким правилам она будет выполняться.
Пусть у нас имеется функция одной переменной
x, тогда множеством наборов переменных, на которых она принимает некоторое значение, может быть либо
{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 можно задать таблицей:
(знак "-" означает, что пересечения нет). В случае нескольких переменных операция "пересечения" выполняется "поразрядно" - над каждой из переменных.
Теперь найдём пересечение двух наборов:
{0x10xxxxxx, 100xxxxxxx, 1011xxxxxx, 1110xxxxxx}[$8745$]{xx0x10xxxx, xx100xxxxx, xx1011xxxx, xx1110xxxx} = {0x10xxxxxx[$8745$]xx0x10xxxx, 0x10xxxxxx[$8745$]xx100xxxxx, 0x10xxxxxx[$8745$]xx1011xxxx, 0x10xxxxxx[$8745$]xx1110xxxx, 100xxxxxxx[$8745$]xx0x10xxxx, 100xxxxxxx[$8745$]xx100xxxxx, 100xxxxxxx[$8745$]xx1011xxxx, 100xxxxxxx[$8745$]xx1110xxxx, 1011xxxxxx[$8745$]xx0x10xxxx, 1011xxxxxx[$8745$]xx100xxxxx, 1011xxxxxx[$8745$]xx1011xxxx, 1011xxxxxx[$8745$]xx1110xxxx, 1110xxxxxx[$8745$]xx0x10xxxx, 1110xxxxxx[$8745$]xx100xxxxx, 1110xxxxxx[$8745$]xx1011xxxx, 1110xxxxxx[$8745$]xx1110xxxx} = {[$8709$], 0x100xxxxx, 0x1011xxxx, [$8709$], 100x10xxxx, [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], 101110xxxx, [$8709$], 11100xxxxx, 111011xxxx, [$8709$]} = {0x100xxxxx, 0x1011xxxx, 100x10xxxx, 101110xxxx, 11100xxxxx, 111011xxxx} - это решение задаёт 64+32+32+16+32+16=192 набора.
4. Точно также функция
(x[sub]5[/sub][$8594$]x[sub]6[/sub])[$8853$](x[sub]7[/sub][$8594$]x[sub]8[/sub]) из третьего условия отличается лишь используемыми переменными (
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] соответственно). Поэтому множество наборов переменных, удовлетворяющих третьему условию, запишется как
xxxx0x10xx,
xxxx100xxx,
xxxx1011xx и
xxxx1110xx. Найдём его пересечение с уже найденным множеством:
{0x100xxxxx, 0x1011xxxx, 100x10xxxx, 101110xxxx, 11100xxxxx, 111011xxxx}[$8745$]{xxxx0x10xx, xxxx100xxx, xxxx1011xx, xxxx1110xx} = {0x100xxxxx[$8745$]xxxx0x10xx, 0x100xxxxx[$8745$]xxxx100xxx, 0x100xxxxx[$8745$]xxxx1011xx, 0x100xxxxx[$8745$]xxxx1110xx, 0x1011xxxx[$8745$]xxxx0x10xx, 0x1011xxxx[$8745$]xxxx100xxx, 0x1011xxxx[$8745$]xxxx1011xx, 0x1011xxxx[$8745$]xxxx1110xx, 100x10xxxx[$8745$]xxxx0x10xx, 100x10xxxx[$8745$]xxxx100xxx, 100x10xxxx[$8745$]xxxx1011xx, 100x10xxxx[$8745$]xxxx1110xx, 101110xxxx[$8745$]xxxx0x10xx, 101110xxxx[$8745$]xxxx100xxx, 101110xxxx[$8745$]xxxx1011xx, 101110xxxx[$8745$]xxxx1110xx, 11100xxxxx[$8745$]xxxx0x10xx, 11100xxxxx[$8745$]xxxx100xxx, 11100xxxxx[$8745$]xxxx1011xx, 11100xxxxx[$8745$]xxxx1110xx, 111011xxxx[$8745$]xxxx0x10xx, 111011xxxx[$8745$]xxxx100xxx, 111011xxxx[$8745$]xxxx1011xx, 111011xxxx[$8745$]xxxx1110xx} = {0x100x10xx, [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], 0x101110xx, [$8709$], 100x100xxx, 100x1011xx, [$8709$], [$8709$], 1011100xxx, 10111011xx, [$8709$], 11100x10xx, [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], 11101110xx} = {0x100x10xx, 0x101110xx, 100x100xxx, 100x1011xx, 1011100xxx, 10111011xx, 11100x10xx, 11101110xx} - это решение задаёт 16+8+16+8+8+4+8+4=72 набора.
5. Наконец, последнему условию будет удовлетворять множество наборов переменных
xxxxxx0x10,
xxxxxx100x,
xxxxxx1011 и
xxxxxx1110. Его пересечение с уже найденным множеством
{0x100x10xx, 0x101110xx, 100x100xxx, 100x1011xx, 1011100xxx, 10111011xx, 11100x10xx, 11101110xx}[$8745$]{xxxxxx0x10, xxxxxx100x, xxxxxx1011, xxxxxx1110} = {0x100x10xx[$8745$]xxxxxx0x10, 0x100x10xx[$8745$]xxxxxx100x, 0x100x10xx[$8745$]xxxxxx1011, 0x100x10xx[$8745$]xxxxxx1110, 0x101110xx[$8745$]xxxxxx0x10, 0x101110xx[$8745$]xxxxxx100x, 0x101110xx[$8745$]xxxxxx1011, 0x101110xx[$8745$]xxxxxx1110, 100x100xxx[$8745$]xxxxxx0x10, 100x100xxx[$8745$]xxxxxx100x, 100x100xxx[$8745$]xxxxxx1011, 100x100xxx[$8745$]xxxxxx1110, 100x1011xx[$8745$]xxxxxx0x10, 100x1011xx[$8745$]xxxxxx100x, 100x1011xx[$8745$]xxxxxx1011, 100x1011xx[$8745$]xxxxxx1110, 1011100xxx[$8745$]xxxxxx0x10, 1011100xxx[$8745$]xxxxxx100x, 1011100xxx[$8745$]xxxxxx1011, 1011100xxx[$8745$]xxxxxx1110, 10111011xx[$8745$]xxxxxx0x10, 10111011xx[$8745$]xxxxxx100x, 10111011xx[$8745$]xxxxxx1011, 10111011xx[$8745$]xxxxxx1110, 11100x10xx[$8745$]xxxxxx0x10, 11100x10xx[$8745$]xxxxxx100x, 11100x10xx[$8745$]xxxxxx1011, 11100x10xx[$8745$]xxxxxx1110, 11101110xx[$8745$]xxxxxx0x10, 11101110xx[$8745$]xxxxxx100x, 11101110xx[$8745$]xxxxxx1011, 11101110xx[$8745$]xxxxxx1110} = {[$8709$], 0x100x100x, 0x100x1011, [$8709$], [$8709$], 0x1011100x, 0x10111011, [$8709$], 100x100x10, [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], 100x101110, 1011100x10, [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], [$8709$], 1011101110, [$8709$], 11100x100x, 11100x1011, [$8709$], [$8709$], 111011100x, 1110111011, [$8709$]} = {0x100x100x, 0x100x1011, 0x1011100x, 0x10111011, 100x100x10, 100x101110, 1011100x10, 1011101110, 11100x100x, 11100x1011, 111011100x, 1110111011} даёт решение задачи - 8+4+4+2+4+2+2+1+4+2+2+1=36 наборов.
Задача №191927 решается аналогично (единственное замечание - переменные следует расположить в следующем порядке:
x[sub]1[/sub],
y[sub]1[/sub],
x[sub]2[/sub],
y[sub]2[/sub],
x[sub]3[/sub],
y[sub]3[/sub],
x[sub]4[/sub],
y[sub]4[/sub],
x[sub]5[/sub],
y[sub]5[/sub],
x[sub]6[/sub],
y[sub]6[/sub]).