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

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

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

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

Задача 1#6392

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

(x →  y) ∧ (y → z )

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

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

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

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

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

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

2. Рассмотрим вторую строчку. Видим, что переменная z  вновь принимает значение 1. Первая импликация должна быть истинной, а это будет возможно тогда, когда x = 0, y = 1.  Получается, что x  занимает второй столбец, а y  занимает первый.

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

Используются вложенные циклы для перебора всех возможных значений переменных x, y,z  . Для каждого набора вычисляется логическая функция F = (x →  y) ∧ (y → z)  . Если значение функции истинно, программа выводит комбинацию переменных вместе с единицей для F  .

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

# Выводим заголовок таблицы
print("x y z F")

# Перебираем все значения переменной x
for x in range(2):
    # Перебираем все значения переменной y
    for y in range(2):
        # Перебираем все значения переменной z
        for z in range(2):
            # Вычисляем значение логической функции F
            F = (x <= y) and (y <= z)
            # Если функция равна 1, выводим комбинацию
            if F:
                print(x, y, z, 1)

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

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

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

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

# Выводим заголовок таблицы
print("x y z")

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

Ответ: yxz

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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