Тема 2. Алгебра логики – таблицы истинности

2.01 Полностью заполненные фрагменты таблицы истинности

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгебра логики – таблицы истинности
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#6162

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

         --------
(w  ∨ y) ∧ (x → z)

Ниже представлен фрагмент таблицы истинности функции F.

|----|----|----|----|---|
|???-|???-|???-|???-|F--|
|-0--|-1--|-0--|-0--|-1-|
|-0--|-1--|-1--|-0--|-1-|
| 0  | 1  | 1  | 1  | 1 |
-------------------------

Определите, какому столбцу истинности функции F  соответствует каждая переменная x,y,z,w

Показать ответ и решение

Решение руками

Для истинности функции обе скобки должны быть истинны. Вторая скобка будет истинна, если импликация будет ложной. Тогда x = 1, z = 0.  Получается, что x  занимает второй столбец, а переменная z  занимает второй. При этом первая скобка тоже будет истинной. Она будет ложной лишь в случае w = 0, y = 1.  Обратимся ко второй строке и поймём, что для истинности скобки y  занимает четвёртый столбец, а w  занимает третий.

Идея решения через циклы:

В программе используются вложенные циклы для перебора всех возможных значений переменных x,y,z,w  . Для каждого набора вычисляется значение логического выражения, и если оно истинно, комбинация выводится на экран. Так можно определить, какие строки соответствуют таблице истинности.

Код решения через циклы

# Выводим заголовок для результатов
print("x y z w")

# Перебираем все возможные значения переменной x
for x in range(0,2):
    # Перебираем все возможные значения переменной y
    for y in range(0,2):
        # Перебираем все возможные значения переменной z
        for z in range(0,2):
            # Перебираем все возможные значения переменной w
            for w in range(0,2):
                # Проверяем условие логического выражения
                if ((w or not(y)) and not(x <= z)) == True:
                    # Если условие выполняется, выводим комбинацию
                    print(x, y, z, w)

Вывод программы:

x y z w

1 0 0 0

1 0 0 1

1 1 0 1

Идея решения через itertools:

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

Код решения через itertools

# Импортируем функцию product для генерации комбинаций
from itertools import product

# Выводим заголовок для результатов
print("w x y z")

# Перебираем все комбинации из 0 и 1 длиной 4
for w,x,y,z in product([0,1], repeat=4):
    # Проверяем выполнение логического выражения
    if (w or not(y)) and not(x <= z):
        # Если условие истинно, выводим комбинацию
        print(w,x,y,z)

Ответ: zxwy

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!