Тема 15. Алгебра логики – преобразование логических выражений

15.05 Отрезки

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

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

Задача 1#20059

На числовой прямой даны два отрезка: P = [0;10]  и Q = [25;50]  . Укажите наименьшую возможную длину промежутка A  , для которого формула

(x ∕∈ A ) → ((x ∕∈ P)∧ (x ∕∈ Q ))

тождественно истинна (т.е. принимает значение 1 при любых значениях переменной x  ).

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

Решение аналитикой

Формула имеет вид импликации, которая будет истинной в следующих случаях:

1. Если x ∕∈ A  ложно (то есть x ∈ A  ), тогда формула истинна независимо от значений в P  и Q  .

2. Если x ∕∈ A  истинно (то есть x ∕∈ A  ), то необходимо, чтобы (x ∕∈ P) ∧(x ∕∈ Q )  было истинным.

Таким образом, для того чтобы формула была тождественно истинной, необходимо, чтобы все значения, которые не принадлежат промежутку A  , также не принадлежали ни одному из отрезков P  и Q  .

Даны два отрезка:

- P = [0,10]

- Q = [25,50]

Чтобы формула была тождественно истинной, необходимо, чтобы промежуток A  содержал все значения из обоих отрезков P  и Q  . Это значит, что:

A = [0,10]∪[25,50].

Теперь найдем наименьшую длину промежутка A  . Длина каждого из отрезков:

1. Длина отрезка [0,10] = 10− 0 = 10.

2. Длина отрезка [25,50] = 50− 25 = 25.

Общая длина промежутка:

LA = L [0,10] + L[25,50] = 10+ 25 = 35.

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

Наименьшая длина промежутка может быть достигнута путем выбора:

A = [0,50].

Длина этого промежутка:

LA = 50− 0 = 50.

Решение программой

def f(x, P, Q, A):
    return ((not inn(x, A)) <= ((not inn(x, P)) and (not inn(x, Q))))

def inn(x, F):
    return (F[0] <= x <= F[1])

P = [0, 10]
Q = [25, 50]
k = 3
ans = []
ans_len = 100000000000000000000000
for start in range(60 * k):
    for finish in range(start, 60 * k):
        met_false = False
        A = [start / k, finish / k]
        for x in range(60 * k):
            if not f(x / k, P, Q, A):
                met_false = True
                break
        if not met_false:
            A[0] = int(A[0])
            if int(A[1]) != A[1]:
                A[1] += 1
            A[1] = int(A[1])

            if ans_len > A[1] - A[0]:
                ans_len = A[1] - A[0]
                ans = A.copy()
print(ans_len, ans)

Ответ: 50

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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