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

15.06 Смешанное

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

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

Задача 1#29733

Обозначим через ДЕЛ(n  , m  ) утверждение «число n  делится без остатка на число m  ». Для дробных чисел это означает, что результатом деления n  на m  является целое число.

На числовой прямой даны отрезки P = [15,23]  , Q = [17,34]  . Найдите максимальную длину промежутка A  , такого что выражение

                             ------- -------            -------
(¬ (Д ЕЛ (x,4.5)) ∧¬ (Д ЕЛ (x,3))∨ (x ∈ Q) ∨(x ∈ A ))∧((x ∈ P )∨ (x ∈ A))

тождественно истинно, то есть принимает значение 1  при любом натуральном числе x  .

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

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

Запишем мечты врагов:

⌊  (
   {x ∕∈ P         (
||  (              |||| x ∈ A
||   x ∈ A         |||| ⌊   x∈∕P
|| (|x ∈ Q          ||{ |(
|| ||||           ⇒     ||||| x ∈ Q
|| |{x ∈ A          |||| ||{ ⌊  .
|| |⌊   ..          |||| |⌈|| ⌈ x.. 3
|⌈ ||||⌈ x . 3        ||(  |(    ..
  |(  x ... 4.5            x . 4.5

Рассмотрим мечты врагом из совокупности отдельно:

1)  Враги хотят, чтобы x ∕∈ P  , то есть x ∈ [1,15)∪ (23,+ ∞ )  , но так как мы берем только натуральные иксы, то x ∈ [1,14]∪ [24,+∞ )  .

2)  Враги хотят, чтобы x ∈ Q  и x  был кратен 4.5  или 3  . Тогда они будут брать x  из промежутка [17,34]  , кратные 4.5  или 3  , и по условию нас интересуют натуральные иксы, значит x ∈ {18,21,24,27,30,33} .

Так как условия 1)  и 2)  указаны в совокупности, значит врагам подойдут иксы, находящиеся в объединении множеств первого и второго условия.

Поэтому враги мечтают, чтобы x ∈ [1,14]∪{18} ∪{21} ∪[24,+∞ )  и чтобы x ∈ A  .

 

Друзья говорят: «Нет, все эти иксы не принадлежат A  ». Тогда друзья могут взять, например, A = (14,18)  или A = (18,21)  или A = (21,24)  . Наибольшую длину имеет A = (14,18)  , его длина = 4  .

 

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

Мы решаем задачу перебором, чтобы найти промежуток A  максимальной длины, при котором заданное логическое выражение верно для всех натуральных x  . Идея решения заключается в следующем:

1. Мы реализуем функцию inn(x, A), которая проверяет, принадлежит ли число x  отрезку A  .

- Функция возвращает True, если A [0] ≤ x ≤ A[1]  , и False в противном случае.

2. Мы реализуем функцию f(x, A), которая вычисляет логическое выражение для заданного x  и промежутка A  .

- Задаём отрезки P = [15,23]  и Q = [17,34]  .

- Проверяем четыре условия внутри выражения:

      - x%4.5 ⁄= 0  и x%3 ⁄= 0  , что соответствует отрицанию делимости на 4.5 и на 3.

      - x ∕∈ Q  , проверка принадлежности отрезку Q  с помощью функции inn.

      - x ∕∈ A  , проверка принадлежности отрезку A  .

      - x ∈ P  или x ∕∈ A  , аналогично через inn.

- Все эти проверки объединяются через логические and и or, точно повторяя структуру исходного выражения.

3. Мы задаём переменные для хранения ответа: - ans — максимальная длина найденного промежутка A  , изначально 0. - borders — список из двух элементов, хранящий левую и правую границы промежутка A  . - n — множитель для перехода от дробных значений к целым при переборе, чтобы избежать проблем с шагом цикла.

4. Основной перебор промежутков A  :

- Для левой границы a  от 1⋅n  до 70⋅n  :

      - Для правой границы b  от a  до 70⋅n  :

         - Создаём текущий промежуток A = [a∕n,b∕n]  .

         - Предполагаем, что этот промежуток подходит, устанавливаем flag = True.

         - Перебираем все натуральные x  от 1 до 70 ⋅n  :

         - Вычисляем f(x, A).

         - Если функция возвращает False, значит x  нарушает тождественность, устанавливаем flag = False и прерываем цикл по x  .

      - После проверки всех x  , если flag = True и длина промежутка A [1]− A [0]  больше текущего ans, обновляем ans и границы в borders.

5. После завершения перебора выводим borders — левую и правую границы максимального промежутка A  , и ans — его длину.

# Функция проверки принадлежности x промежутку A
def inn(x, A):
    return A[0] <= x <= A[1]

# Функция проверки логического выражения для x и промежутка A
def f(x, A):
    P = [15, 23]
    Q = [17, 34]
    return (((x % 4.5 != 0) and (x % 3 != 0) or (not inn(x, Q)) \
         or (not inn(x, A))) and (inn(x, P) or (not inn(x, A))))

# Инициализация переменных для хранения максимальной длины и границ
ans, n = 0, 15
borders = [0 ,0]

# Перебор всех возможных левых границ a
for a in range(1 * n, 70 * n):
    # Перебор всех возможных правых границ b, не меньше a
    for b in range(a, 70 * n):
        # Создаём текущий промежуток A
        A = [a / n, b / n]
        # Предполагаем, что промежуток подходит
        flag = True
        # Перебираем все натуральные x
        for x in range(1, 70 * n):
            # Проверяем выполнение логического выражения
            if not f(x, A):
                # Если найдено нарушение, устанавливаем флаг False
                flag = False
                # Прерываем перебор x
                break
        # Если промежуток подходит и длина больше текущей, обновляем ans и границы
        if flag:
            if A[1] - A[0] > ans:
                ans = A[1] - A[0]
                borders[0] = A[0]
                borders[1] = A[1]

                                                                                                     
                                                                                                     
# Выводим границы и длину максимального промежутка A
print(borders)
print(ans)

Видим, что программа вывела промежуток [14.066,17.933]  и его длину ≈ 3.866  .

Значит, ответом является промежуток с дробными границами, левая граница которого стремится к 14  , а правая к      18  , тогда длина стремится к 4  .

Ответ: 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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