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

Две ло­ги­че­ские функ­ции за­да­ны вы­ра­же­ни­я­ми:

F1  =  (w ∨¬ y) → (z ≡ x)

F2  =  (w ∨¬ y) ≡ (x → z)

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

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

???

???

???

???

F1

F2

110
0000
00000

 

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

 

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

 

Пе­ре­мен­ная 1

???

Пе­ре­мен­ная 2

???

Функ­ция

F

010

 

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

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

Ре­ше­ние.

Со­ста­вим таб­ли­цу ис­тин­но­сти для вы­ра­же­ния F1  =  (w ∨¬ y) → (z ≡ x) вруч­ную или при по­мо­щи языка 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 not((w or not(y)) <= (z == x)):

print(x, y, z, w)

Далее вы­пи­шем те на­бо­ры пе­ре­мен­ных, при ко­то­рых дан­ное вы­ра­же­ние равно 0. В на­бо­рах пе­ре­мен­ные за­пи­шем в по­ряд­ке х, y, z, w. По­лу­чим сле­ду­ю­щие на­бо­ры:

(0, 0, 1, 0),

(0, 0, 1, 1),

(0, 1, 1, 1),

(1, 0, 0, 0),

(1, 0, 0, 1),

(1, 1, 0, 1).

Со­ста­вим таб­ли­цу ис­тин­но­сти для вы­ра­же­ния F2  =  (w ∨¬ y) ≡ (x → z) вруч­ную или при по­мо­щи языка 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 not((w or not(y)) == (x <= z)):

print(x, y, z, w)

Далее вы­пи­шем те на­бо­ры пе­ре­мен­ных, при ко­то­рых дан­ное вы­ра­же­ние равно 0. В на­бо­рах пе­ре­мен­ные за­пи­шем в по­ряд­ке х, y, z, w. По­лу­чим сле­ду­ю­щие на­бо­ры:

(0, 1, 0, 0),

(0, 1, 1, 0),

(1, 0, 0, 0),

(1, 0, 0, 1),

(1, 1, 0, 1),

(1, 1, 1, 0).

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

Рас­смот­рим тре­тью стро­ку таб­ли­цы ис­тин­но­сти. По­сколь­ку в на­бо­рах нет строк с че­тырь­мя зна­че­ни­я­ми 0, то дан­ная стро­ка может со­от­вет­ство­вать толь­ко на­бо­ру с тремя 0 и одной 1. В каж­дом из вы­ра­же­ний таких на­бо­ров два.

В пер­вом вы­ра­же­нии это на­бо­ры:

(0, 0, 1, 0),

(1, 0, 0, 0).

Во вто­ром вы­ра­же­нии это на­бо­ры:

(0, 1, 0, 0),

(1, 0, 0, 0).

В тре­тьей стро­ке таб­ли­цы ис­тин­но­сти зна­че­нии 1 может сто­ять толь­ко в чет­вер­том столб­це и он дол­жен быть оди­на­ко­вый для двух вы­ра­же­ний. Толь­ко для пе­ре­мен­ной x вы­пол­ня­ет­ся это усло­вие. Сле­до­ва­тель­но, пе­ре­мен­ная x со­от­вет­ству­ет чет­вер­то­му столб­цу.

Рас­смот­рим вто­рую стро­ку таб­ли­цы ис­тин­но­сти и вто­рую функ­цию. Дан­ная стро­ка таб­ли­цы ис­тин­но­сти может со­от­вет­ство­вать на­бо­рам:

(0, 1, 0, 0),

(1, 0, 0, 0).

По­сколь­ку пе­ре­мен­ная x  — это чет­вер­тый стол­бец, тогда в пер­вом столб­це может быть толь­ко пе­ре­мен­ная y.

Рас­смот­рим первую стро­ку таб­ли­цы ис­тин­но­сти и первую функ­цию. По­сколь­ку x при­ни­ма­ет зна­че­ние 1 и в дан­ной стро­ке уже есть две 1, то такая стро­ка может со­от­вет­ство­вать толь­ко на­бо­рам:

(1, 0, 0, 1),

(1, 1, 0, 1).

По­сколь­ку пе­ре­мен­ная z в этих на­бо­рах при­ни­ма­ет толь­ко зна­че­ние 0, то вто­ро­му столб­цу может со­от­вет­ство­вать толь­ко пе­ре­мен­ная w. Сле­до­ва­тель­но, тре­тий стол­бец  — это пе­ре­мен­ная z.

 

Ответ: ywzx.

 

При­ве­дем код Ильи Кры­ло­ва на языке 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):

result1 = bool((w or not (y)) <= (z == x))

result2 = bool((w or not (y)) == (x <= z))

if not ((result1 == True) and (result2 == True)):

print(x,y,z,w,int(result1),int(result2))


Аналоги к заданию № 58469: 58510 Все