Консультация № 192087
10.12.2017, 15:58
0.00 руб.
1 1 1
Здравствуйте! У меня возникли сложности с двумя задачами, прикрепленными в файле. Я видел решение этих задач в консультациях 191925 и 191927, но я не понял их, так как ни разу не решал задачи такого типа. Поэтому ,пожалуйста, распишите решения подробно.
Прикрепленные файлы:
648827f99fe322213905631bae76143815d38745.png

Обсуждение

давно
Старший Модератор
312929
1973
20.12.2017, 05:37
общий
это ответ
Здравствуйте, Валерий!

Рассмотрим задачу №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]).
Форма ответа