Пробный урок
📘 ЕГЭ по информатике 2027 · задание 2 из 27

Задание 2 ЕГЭ по информатике: Таблицы истинности и логические схемы

Что проверяет задание 2, сколько баллов оно приносит и сколько времени на него закладывать — и 3 примера в формате ФИПИ с подробным решением и ответом.

Уровень
базовый
Максимум
1 балл
Время
~3 минуты
Компьютер
не нужен

Примеры задания 2 с решениями

Сначала попробуйте решить сами, затем откройте решение и сверьте ответ

Пример 1

Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w. Дан частично заполненный фрагмент таблицы истинности функции F; все строки фрагмента различны.
Фрагмент таблицы истинности: три строки, где F = 0, часть клеток пустая
Определите, какому столбцу таблицы соответствует каждая из переменных x, y, z, w. В ответе напишите буквы в том порядке, в котором идут соответствующие им столбцы.
Показать решение и ответ
1. F — это «ИЛИ» трёх частей, поэтому F = 0, только если все части ложны: ¬w = 0 → w = 1; x ∧ ¬y = 0; y ≡ z = 0 → y ≠ z. 2. Выписываем все наборы с F = 0 (x, y, z, w): (0, 0, 1, 1), (0, 1, 0, 1), (1, 1, 0, 1). Их ровно три — значит, во фрагменте именно они, в каком-то порядке. 3. В этих наборах единиц: w — 3, y — 2, x — 1, z — 1. 4. В столбце 4 видны три единицы — это может быть только w. В столбце 1 видны две единицы — это y (у w все три уже заняты столбцом 4). 5. Во второй строке y = 0 — это набор (0, 0, 1, 1): x = 0, z = 1. Во второй строке столбца 2 стоит 0, значит столбец 2 — x, а столбец 3 — z. 6. Порядок столбцов: y, x, z, w. Проверка перебором:
from itertools import permutations, product            # перестановки столбцов и наборы значений

def f(x, y, z, w):                                     # функция из условия
    return (x and not y) or (y == z) or (not w)       # ∧ → and, ∨ → or, ≡ → ==, ¬ → not

frag = [(1, None, None, 1), (None, 0, None, 1), (1, None, None, 1)]   # фрагмент; None — пустая клетка

def fits(row, pattern):                                # совпадает ли строка с видимыми клетками
    return all(c is None or c == v for v, c in zip(row, pattern))

for p in permutations('xyzw'):                         # пробуем все порядки переменных в столбцах
    zeros = [r for r in product([0, 1], repeat=4)      # все наборы значений в порядке столбцов p
             if not f(**dict(zip(p, r)))]              # оставляем те, где F = 0
    for rows in permutations(zeros, 3):                # раскладываем три разных набора по строкам
        if all(fits(r, fr) for r, fr in zip(rows, frag)):   # все видимые клетки совпали
            print(''.join(p))                          # подходящий порядок столбцов: yxzw
            break                                      # этот порядок уже найден

Ответ: yxzw

Пример 2

Логическая функция F задаётся выражением (x → y) ∧ (y → z) ∧ w. Дан частично заполненный фрагмент таблицы истинности функции F; все строки фрагмента различны.
Фрагмент таблицы истинности: три строки, где F = 1
Определите, какому столбцу таблицы соответствует каждая из переменных x, y, z, w. В ответе напишите буквы в том порядке, в котором идут соответствующие им столбцы.
Показать решение и ответ
1. F = 1, когда все три части истинны: w = 1, x → y и y → z. Две импликации подряд означают x ≤ y ≤ z. 2. w во всех строках с F = 1 равен 1. В столбцах 1, 2 и 3 видны нули — значит, w — это столбец 4. 3. Строка 1: столбец 1 = 1, столбец 3 = 0. Раз x ≤ y ≤ z, столбец 1 «старше» столбца 3 в цепочке. 4. Строка 3: столбец 2 = 0, столбец 3 = 1 — столбец 3 «старше» столбца 2. 5. Порядок по цепочке: столбец 2 ≤ столбец 3 ≤ столбец 1, то есть x — столбец 2, y — столбец 3, z — столбец 1. 6. Ответ: zxyw. Проверка перебором:
from itertools import permutations, product            # перестановки столбцов и наборы значений

def f(x, y, z, w):                                     # функция из условия
    return (not x or y) and (not y or z) and w           # → записываем через not/or

frag = [(1, None, 0, None), (0, None, None, None), (None, 0, 1, None)]   # фрагмент; None — пустая клетка

def fits(row, pattern):                                # совпадает ли строка с видимыми клетками
    return all(c is None or c == v for v, c in zip(row, pattern))

for p in permutations('xyzw'):                         # пробуем все порядки переменных в столбцах
    good = [r for r in product([0, 1], repeat=4)       # наборы значений в порядке столбцов p
            if f(**dict(zip(p, r))) == 1]               # оставляем те, где F = 1
    for rows in permutations(good, 3):                 # раскладываем три разных набора по строкам
        if all(fits(r, fr) for r, fr in zip(rows, frag)):   # все видимые клетки совпали
            print(''.join(p))                          # подходящий порядок столбцов: zxyw
            break                                      # этот порядок уже найден

Ответ: zxyw

Пример 3

Логическая функция F задаётся выражением (x ∧ ¬z) ∨ (y → w). Дан частично заполненный фрагмент таблицы истинности функции F; все строки фрагмента различны.
Фрагмент таблицы истинности: три строки, где F = 0
Определите, какому столбцу таблицы соответствует каждая из переменных x, y, z, w. В ответе напишите буквы в том порядке, в котором идут соответствующие им столбцы.
Показать решение и ответ
1. F = 0, когда обе части ложны: y → w ложно только при y = 1, w = 0; x ∧ ¬z ложно, если x → z, то есть x ≤ z. 2. Значит, во всех строках y = 1 и w = 0. Столбец 3 содержит 0 — это не y; столбец 4 содержит 1 и 0 — это ни y, ни w; столбец 2 содержит 0 и 1 — тоже ни y, ни w. 3. Остаётся: y и w — это столбцы 1 и 3. В столбце 3 есть 0 — это w, а y — столбец 1. 4. Столбцы 2 и 4 — это x и z. В строке 3 столбец 2 = 1, столбец 4 = 0. Если бы столбец 2 был x, получилось бы x = 1, z = 0 — нарушение x ≤ z. Значит, столбец 2 — z, столбец 4 — x. 5. Ответ: yzwx. Проверка перебором:
from itertools import permutations, product            # перестановки столбцов и наборы значений

def f(x, y, z, w):                                     # функция из условия
    return (x and not z) or (not y or w)                 # y → w записываем как not y or w

frag = [(None, None, 0, 1), (None, 0, None, None), (None, 1, None, 0)]   # фрагмент; None — пустая клетка

def fits(row, pattern):                                # совпадает ли строка с видимыми клетками
    return all(c is None or c == v for v, c in zip(row, pattern))

for p in permutations('xyzw'):                         # пробуем все порядки переменных в столбцах
    good = [r for r in product([0, 1], repeat=4)       # наборы значений в порядке столбцов p
            if f(**dict(zip(p, r))) == 0]               # оставляем те, где F = 0
    for rows in permutations(good, 3):                 # раскладываем три разных набора по строкам
        if all(fits(r, fr) for r, fr in zip(rows, frag)):   # все видимые клетки совпали
            print(''.join(p))                          # подходящий порядок столбцов: yzwx
            break                                      # этот порядок уже найден

Ответ: yzwx

Не получается задание 2? Разберём на пробном уроке

Бесплатно покажем, как решать задание 2 и похожие, определим пробелы и составим план подготовки к ЕГЭ.

Записаться бесплатно

Все задания ЕГЭ по информатике

Структура экзамена, баллы и темы — на странице программы ЕГЭ по информатике