Задания
Версия для печати и копирования в MS Word
Тип 2 № 64887
i

Ло­ги­че­ская функ­ция F задаётся вы­ра­же­ни­ем:

((xy) → (¬zw)) ≡ ¬ ((wx) ∨ (yz)).

Дан ча­стич­но за­пол­нен­ный фраг­мент, со­дер­жа­щий не­по­вто­ря­ю­щи­е­ся стро­ки таб­ли­цы ис­тин­но­сти функ­ции F.

 

????????????F
011
101
0001

 

Опре­де­ли­те, ка­ко­му столб­цу таб­ли­цы ис­тин­но­сти со­от­вет­ству­ет каж­дая из пе­ре­мен­ных w, x, y, z.

В от­ве­те на­пи­ши­те буквы w, x, y, z в том по­ряд­ке, в ко­то­ром идут со­от­вет­ству­ю­щие им столб­цы (сна­ча­ла буква, со­от­вет­ству­ю­щая пер­во­му столб­цу; затем буква, со­от­вет­ству­ю­щая вто­ро­му столб­цу, и т. д.). Буквы в от­ве­те пи­ши­те под­ряд, ни­ка­ких раз­де­ли­те­лей между бук­ва­ми ста­вить не нужно.

 

При­мер. Пусть за­да­ны вы­ра­же­ние x → y, за­ви­ся­щее от двух пе­ре­мен­ных x и y, и фраг­мент таб­ли­цы ис­тин­но­сти.

 

??????F
010

 

Тогда пер­во­му столб­цу со­от­вет­ству­ет пе­ре­мен­ная y, а вто­ро­му столб­цу со­от­вет­ству­ет пе­ре­мен­ная x. В от­ве­те нужно на­пи­сать: yx.

Спрятать решение

Ре­ше­ние.

Со­ста­вим таб­ли­цу ис­тин­но­сти для вы­ра­же­ния

((xy) → (¬zw)) ≡ ¬ ((wx) ∨ (yz)).

вруч­ную или при по­мо­щи языка Python:

print("x y z w")

for x in range(0, 2):

for y in range(0, 2):

for z in range(0, 2):

for w in range(0, 2):

if ((x==y) <= (not(z) or w)) == (not(( w <= x) or (y <= z))):

print(x, y, z, w)

Далее вы­пи­шем те на­бо­ры пе­ре­мен­ных, при ко­то­рых дан­ное вы­ра­же­ние равно 1. В на­бо­рах пе­ре­мен­ные за­пи­шем в по­ряд­ке х, y, z, w.

По­лу­чим сле­ду­ю­щие на­бо­ры:

(0, 0, 1, 0),

(0, 1, 0, 1),

(1, 1, 1, 0).

Со­по­ста­вим эти на­бо­ры с при­ве­ден­ным в за­да­нии фраг­мен­том таб­ли­цы ис­тин­но­сти.

Тре­тьей стро­ке может со­от­вет­ство­вать толь­ко набор (0, 0, 1, 0), тогда вто­рой стол­бец со­от­вет­ству­ет пе­ре­мен­ной z.

Рас­смот­рим вто­рую стро­ку таб­ли­цы. По­сколь­ку вто­рой стол­бец это z, то во вто­ром столб­це стоит 0, тогда стро­ка со­от­вет­ству­ет на­бо­ру (0, 1, 0, 1). Вто­рой 0 в этом на­бо­ре со­от­вет­ству­ет пе­ре­мен­ной x, тогда чет­вер­тый стол­бец  — это x.

Рас­смот­рим первую стро­ку таб­ли­цы. Она может со­от­вет­ство­вать на­бо­ру (1, 1, 1, 0). По­сколь­ку вто­рой стол­бец это z и он равен 1. Тогда w  — это 0 и со­от­вет­ству­ет пер­во­му столб­цу, а y  — тре­тье­му столб­цу.

 

Ответ: wzyx.

 

При­ве­дем ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python:

import itertools,re

def f(vars):

x,y,z,w = vars

return ((x!=y)or(not z or w))!=((not w or z )or(not y or z))

matrix = ['01..1', '..101', '0.001']

numvars=len(matrix[0])-1

table=[''.join(map(str,vars)) + str(int(f(vars))) for vars in itertools.product( [0,1], repeat=numvars )]

for perm in itertools.permutations(range(numvars)):

permtable=[''.join([line[perm[i]] for i in range(numvars)])+line[-1] for line in table]

for lines in itertools.permutations(permtable,len(matrix)):

if re.search(''.join(matrix),''.join(lines)):

print(''.join(['xyzw'[perm[i]] for i in range(numvars)]))


Аналоги к заданию № 64887: 64932 68235 68264 Все