Site Loader

Содержание

Алгебра логики в программировании — Умскул Учебник

На этой странице вы узнаете
  • Что не так с импликацией и эквиваленцией?
  • Какое применение алгебра логики может найти в программировании?

В статье «Алгебра логики» мы выучили основы этого непростого раздела математики. Разобравшись в той теме, пора пойти дальше и заговорить на понятном компьютеру языке — языке программирования.

Логические уравнения в Python
Мы говорили, что алгебра логики оперирует истиной и ложью, которым также могут соответствовать числа 1 и 0.

В Python эта логика сохраняется. В нем есть логический тип данных bool, который может принимать значение True или False — истина и ложь соответственно. Последние также эквивалентны числам 1 и 0.

Как логические операторы записываются в программе Python и в чем их отличие?

Логические операторы в Python мы уже упоминали в статье «Основы программирования. Часть 2». Давайте их вспомним:

Что не так с импликацией и эквиваленцией?

Проблема в том, что для импликации и эквиваленции нет специальных логических операторов, но для них можно использовать математические:
— Математическое сравнение на равенство работает также, как логическая эквиваленция: вернет True, если значения будут одинаковые и False в противном случае.
— Математическое “меньше или равно” полностью соответствует логическому следованию: False будет возвращено только в том случае, если значение слева будет меньше или равно значению справа. А если вспомнить аналогию логических переменных и целых чисел, это произойдет только в ситуации 1 <= 0. В остальных случаях будет истина.

Но несмотря на схожесть работы, это все еще математические операторы, из-за чего нарушается привычный приоритет. Так что в программе он будет следующим:
Эквиваленция и импликация будут иметь равный приоритет и выполняться в порядке очереди. Но относительно логических операторов их приоритет станет самым высоким.
— Инверсия, конъюнкция и дизъюнкция будут иметь свой законный приоритет.

Самый практичный совет по записи логических уравнений в программе — не стесняйтесь использовать скобки, если используете математические операторы.

Например:

  • простое логическое уравнение только из конъюнкции, дизъюнкции и инверсии в лишних скобках не нуждается (кроме тех, конечно, что уже есть в уравнении):
  • при появлении импликации и эквиваленции подключаем скобки, чтобы сохранить приоритет и этих, и других логических операторов:

Решение практических задач
Какое применение алгебра логики может найти в программировании?

Между программированием и алгеброй логики установлен довольно приятный союз:

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

Например, очень популярная задача алгебры логики — построение таблицы истинности. Давайте попробуем предположить, что нам может понадобиться, чтобы программа смогла это сделать?

А много нам и не надо:

  1. Нужен перебор логических переменных по совсем небольшому диапазону — от 0 до 1.
  2. Правильно записанное логическое уравнение, чтобы проверить его при каждом наборе истины и лжи.

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

Начнем с обобщенной задачи — построение таблицы истинности. На этом примере можно показать, что математические операторы путают приоритет логических. Так что давайте составим таблицу истинности для уравнения A ≡ B ∧ C ⇒ A.

Перебор устроим с помощью вложенных циклов for. Они будут перебирать отдельные переменные, которые потом будут поставляться в логическое уравнение. Для удобства будем сохранять значение уравнения в отдельную переменную, затем выводить все на экран.


print("A B C")
for A in range(0, 2):
	for B in range(0, 2):
		for C in range(0, 2):
			result = A == ((B and C) <= A)
			print(A, B, C, result)
Вывод:
A B C
0 0 0 False
0 0 1 False
0 1 0 False
0 1 1 True
1 0 0 True
1 0 1 True
1 1 0 True
1 1 1 True

Мы заранее подписали каждый столбец, так что не запутаться в выводе будет проще.

Да, промежуточных результатов при такой реализации у нас нет. А зачем они нам? Нам важен итоговый результат — мы его получили.

У меня есть ощущение, что этот код не очень красивый. Он однозначно рабочий, но все-таки слишком много вложенных циклов. Как это можно решить?

В статье «Комбинаторика в информатике» мы обсуждали такую вещь, как модуль itertools, который содержит функции для работы с различными комбинациями. Как раз наш случай — мы используем различные комбинации 1 и 0

.

Сейчас нам пригодится функция product, которая создаст различные комбинации из указанных элементов. Изначально запишем их в отдельный массив для удобства:


from itertools import product
print("A B C")
d = [0, 1]
for i in product(d, repeat = 3):
	A, B, C = i
	result = A == ((B and C) <= A)
	print(A, B, C, result)
Вывод:
A B C
0 0 0 False
0 0 1 False
0 1 0 False
0 1 1 True
1 0 0 True
1 0 1 True
1 1 0 True
1 1 1 True

Как видите, результат мы получили тот же, но смогли избавиться от некрасивого массива вложенных циклов. С еще большим количеством переменных в уравнении было бы нагляднее.

 

Пожалуй, стоит подробнее рассказать про строку:
A, B, C = i.

Мы точно знаем, что i — это массив с 3 элементами, так как мы изначально задали создание наборов длиной 3. Если указать перед ним ровно столько же переменных, им можно присвоить соответствующие элементы массива в одну строку.

Выше мы обсуждали, почему в этом уравнении обязательно должны быть скобки. Давайте докажем это. Построим таблицу истинности для того же уравнения, но не будем ставить скобки.


from itertools import product
print("A B C")
d = [0, 1]
for i in product(d, repeat = 3):
	A, B, C = i
	result = 
A == B and C <= A
print(A, B, C, result) Вывод: A B C 0 0 0 True 0 0 1 False 0 1 0 False 0 1 1 False 1 0 0 False 1 0 1 False 1 1 0 True 1 1 1 True

Не вышло: итоговые значения таблиц истинности разные. Значит, приоритет действительно нарушается.

Другая наша возможная цель — проверить, будет ли выражение истинным всегда? Получим ли мы истину при любом наборе логических переменных?

Как и в прошлый раз, у нас есть не один вариант реализации. Будем анализировать выражение А ∧ (В ∨ С) ≡ В.

Первый вариант:

  • перебор всех наборов — вложенными циклами или с помощью product;
  • сохранение всех результатов уравнения от каждого набора;
  • проверка, чтобы ни одно значение не было ложным — для сохранения всех результатов можно использовать список.

from itertools import product
d = [0, 1]
all_results = []
for i in product(d, repeat = 3):
	A, B, C = i
	result = (A and (B or C)) == B
	all_results.append(result)
if False not in all_results:
	print("Функция полностью истинна")
else:
	print("Функция истинна не всегда")
Вывод: Функция истинна не всегда

Python не был бы Python, если бы не дал нам возможность записать все практически в одну строку.

Второй вариант — функция all.

Она возвращает True, если все значения внутри нее равны True — как раз наш случай. Чтобы записать программу максимально коротко, прямо внутри нее можно прописать и уравнение, и перебор его элементов:


from itertools import product
d = [0, 1]
result = all((A and (B or C)) == B for A, B, C in product(d, repeat = 3))
if result:
	print("Функция полностью истинна")
else:
	print("Функция истинна не всегда")

Здесь в переменную result записывается логическое значение True, если для всех наборов А, В, С из комбинаций d длиной 3 результат логического уравнения равен True.

Если же среди всех результатов есть хоть один False — функция all даст нам False.

Для похожей задачи — чтобы не все значения уравнения были ложными — можно использовать функцию any. Синтаксис абсолютно такой же, разница есть в принципе работы. any вернет True, если среди всех переданных значений есть хоть одно истинное значение.


from itertools import product
d = [0, 1]
result = any((A and (B or C)) == B for A, B, C in product(d, repeat = 3))
if result:
	print("Функция не всегда ложна")
else:
	print("Функция всегда ложна")
Вывод: Функция не всегда ложна

Python — гибкий язык. Если вам важнее видеть алгоритм работы кода более явно — используйте вложенные циклы, массивы для хранения значений и будьте более, чем на 100% уверены в каждом шаге. Если же вы хотите использовать дополнительные инструменты для сокращения объема кода и, как следствие, более быстрого его написания — вам в помощь комбинации product из itertools и инструменты массовой проверки all и any.

Фактчек
  • Для импликации и эквиваленции в Python используются математические операторы сравнения, что немного нарушает их общий приоритет. Сохранить его можно с помощью скобок.
  • Значения истины и лжи в Python являются логическим типом данных, который может принимать значение True или False и соответствует 1 и 0.
  • Функция all проверяет, все ли переданные ей значения истинны. Функция any проверяет, есть ли среди всех переданных значений хоть одно истинное.

Проверь себя

Задание 1.
Для выражения А ∨ В ∧ ¬(В ∧ А) выберите верную запись на языке Python (с сохранением порядка действий):

  1. A and B or not B or A
  2. A and B or not (B or A)
  3. A or B and not B and A
  4. A or B and not (B and A)

Задание 2.
Для выражения ¬А ⇒ В ≡ А ∧ В выберите верную запись на языке Python (с сохранением порядка действий):

  1. not (А <= В == А and В)
  2. not А <= В == (А and В)
  3. ((not A) <=  B) == (A and B)
  4. (not А) <= (В == (А and В))

Задание 3.
Чему будет равен последний столбец таблицы истинности для уравнения: 
A ∧ B ⇒ C ∧ D ∨ D ∧ A?

  1. 11101101
  2. 11101111
  3. 00000011
  4. 11000111

Задание 4.
Выберите уравнение, которое во всех случаях принимает значение истины:

  1. ¬(A ∧ B) ∧ ¬(C ∧ ¬A)
  2. ¬(A ∧ B) ∨ ¬(C ∧ ¬A)
  3. A ∧ B ∧ ¬(C ∧ ¬A)
  4. ¬(A ∧ B) ∨ ¬(C ∧ A)

Ответ: 1. — 4; 2. — 3; 3. — 1; 4. — 2.

Логика-Т транзисторные элементы | ТОВ «ЕЛЕКТРОПРОМОПТ»

Элементы серии Логика-Т используются для гальванического разделения первичных цепей и входов транзисторных элементов, а также для согласования элементов в тех узлах системы, в которых требуется гальваническое разделение цепей, в серии

Логика-Т предусмотрены также и магнитные элементы – управляемые трансформаторы. Назначение различного типа элементов серии Логика Т приведено в нижеследующем перечне.
Для гальванического разделения первичных цепей и входов транзисторных элементов, а также для согласования элементов в тех узлах системы, в которых требуется гальваническое разделение цепей, в серии Логика Т предусмотрены также и магнитные элементы – управляемые трансформаторы. Назначение различного типа элементов серии 
Логика-Т
приведено в нижеследующем перечне.

Типы элементов и их назначение
Логические
Логика Т-101 – Двойная диодно-транзисторная схема «ИЛИ-НЕ». Выполняет операцию Пирса.
Логика Т-102– Триггер маломощный. Применяется в схемах счетчиков, регистров как «память».
Логика Т-103 – Триггер маломощный. Применяется в разветвленных цепях матричных шифраторов и дешифраторов, а так же как «память» при работе на реле или сигнальную лампу.
Логика Т-104 – Двойная потенциально-импульсная ячейка. Применяется для составления импульсных схем «ИЛИ», «И», дифференцирования импульсов, а также для размножения входов элемента Т-102.


Логика Т-105 – То же, что и Т-104. Применяется для размножения входов элемента Т-103.
Логика Т-106 – Схема «ИЛИ». Позволяет изменять число входов от 2 до 8. Применяется для реализации логических функций.
Логика Т-107 – Диодная приставка «И». Обеспечивает возможность получения двух схем «И» на 4 входа или одной схемы на 6 входов и одной на 2 входа.

Функциональные
Логика Т-201 – Согласующий входной элемент. Предназначен для гальванического разделения первичных цепей и входов транзисторных элементов.
Логика Т-202 – Релейный элемент. Применяется для преобразования непрерывно изменяющегося напряжения в дискретный сигнал заданного уровня.
Логика Т-203 – Нуль-орган. Применяется для сравнения напряжений постоянного тока.

Временные
Логика Т-301 – Тройная RC-цепочка. Применяется в качестве дифференцирующей и интегрирующей цепочек, а также как фильтр высших частот.
Логика Т-302 – Двойная транзисторная задержка. Применяется для построения линий задержки , одновибраторов и мультивибраторов.
Логика Т-303 – Элемент задержки времени. Применяется для получения задержки выходного сигнала на время от 1 до 10 секунд.
Логика Т-304 – То же, что и Т-303. Применяется для получения задержки от 10 до 100 секунд.
Логика Т-305 – Обеспечивающий заданную выдержку времени (0,5—9 с).

Усилители
Логика Т-401 – Двойной усилитель для повышения нагрузочных способностей логических схем, для включения сигнальных ламп.
Логика Т-402 – Выходной усилитель мощности. Применяется для повышения нагрузочных способностей логических схем, включения обмоток магнитных усилителей, реле мощностью до 3 ватт.
Логика Т-403 – Выходной усилитель мощности. Применяется для включения обмоток магнитных усилителей, реле, сигнальных ламп мощностью до 10 ватт.
Логика Т-404 – Выходной усилитель мощности. Применяется для включения обмоток магнитных усилителей, контакторов, соленоидов мощностью до 30 ватт.
Логика Т-405 – Выходной усилитель мощности. Применяется для включения обмоток магнитных усилителей, контакторов, соленоидов с пусковой мощностью до 100 ватт.

Пошук продукції Пошук:

Элементы логики

Элементы логики
Центр Жака Маритена: Показания
на

Его Высокопреосвященство кардинал Мерсье

Третье издание
Переведено

Юэн Макферсон

Нью-Йорк

Манхэттенвилл Пресс
1912

Нихил Обстат.
РЕМИГИУС ЛАФОРТ, Д.Д.
Цензор

Подтверждение
ДЖОН КАРДИНАЛ ФАРЛИ
Архиепископ Нью-Йорка

Авторское право 1912
Манхэттенвилл Пресс


Введение

  • 1. Определение логики
  • 2. Материалы логического порядка
  • 3. Формальная причина логического порядка
  • 4. Отличие психологии от логики
  • 5. Конечная причина логического порядка
  • 6. Отличие логики от метафизики
  • 7. Логику можно рассматривать как практическую науку или как искусство.
  • 8. Разделы логики

Глава I

Действующая причина логического порядка

  • 9. Происхождение и характер операций мыслительной способности
  • 10. Множественность операций мыслительной способности. Их фундаментальная идентичность
  • 11. Абстрактный характер понятий делает возможными суждения и рассуждения

Глава II

Материя или материальная причина логического порядка

  • 12. Объект и раздел главы II
Арт. I. Концепции
§ 1.
Понятие, его предмет и свойства
  • 13. Понятие в его логическом аспекте
  • 14. По какому праву логика занимается актами простого понимания?
  • 15. Логические проблемы, возникающие в связи с актом простого опасения
  • 16. Логические категории или затруднения
  • 17. Предсказуемые
  • 18. Понимание и расширение понятий
  • 19. Отношения подчинения между идеями в отношении их расширения
  • 20. Сравнение идей в плане их понимания. Отношение идентичности и оппозиции
§ 2. Разделение понятий
  • 21. Основные рубрики классификации понятий
  • 22. Классификация идей по отношению к объекту, абстрагируемому интеллектом
  • 23. Классификация идей по способу представления объекта
  • 24. Классификация когниций. в отношении их происхождения или образования
Арт. II. Условия.
§ 1.
Термин, его предмет и свойства
  • 25. Объект термина
  • 26. Десять частей речи
§ 2 Классификация терминов
  • 27. Классификация терминов

Глава III

Формальная причина логического порядка

  • 28. Предварительное примечание
Арт. I. Решение и предложение
§ 1. Понятие суждения и предложения
  • 29. Решение и предложение
  • 30. Функция суждений и предложений в интеллектуальной жизни
§ 2. Суждения и предложения
  • 31. Общая классификация предложений
I. Классификация простых предложений
  • 32. Первый отдел предложений: по существу
  • 33. Два вида суждений в необходимом вопросе
  • 34. Синонимические обозначения вышеперечисленных
  • 35. Второе подразделение предложений: в отношении их формы
  • 36. Логическое значение сказуемого простого предложения
  • 37. Третье подразделение предложений: в отношении их количества
  • 38. Четвертое подразделение предложений: в отношении их качества
II. Классификация сложных предложений
  • 39. Классификация сложных предложений
§ 3. Отношения между предложениями
  • 40. Отношения между предложениями
  • 41. Эквивалентность нескольких предложений
  • 42. Конвертируемость предложений
  • 43. Отношения оппозиции и подчинения
  • 44. Правила, касающиеся истинности или ложности противоположных утверждений
  • 45. Правила, касающиеся истинности или ложности подчиненных предложений
  • 46. Непосредственные выводы
Арт. II. Рассуждение
  • 47. Предварительные замечания. Объект искусства. II
§ 1. Рассуждение и силлогизм
  • 48. Рассуждение
  • 49. Силлогизм. Терминология
  • 50. Природа и логическая основа силлогизма
  • 51. Какого порядка необходимость принципов силлогизма?
  • 52. Логические первые принципы
  • 53. Фигуры и способы силлогизма
  • 54. Правила силлогизма
  • 55. Диапазон правил силлогизма. Логика и правда
§ 2. Силлогизмы
  • 56. Предварительные замечания
I. Силлогизмы, рассматриваемые с точки зрения их формы
  • 57. Деление силлогизмов по форме. .
  • 58. Разновидность категорического силлогизма
  • 59. Природа и правила условного силлогизма
  • 60. Конъюнктив и дизъюнктивный силлогизм
  • 61. Исключительный силлогизм
  • 62. Дилемма
II.
Силлогизмы, рассматриваемые по своему содержанию 90 147
  • 63. Предварительные замечания
Различные виды демонстрации
  • 64. I. Первичный отдел
  • 65. Условия научной демонстрации
  • 66. Доказательство фактов и демонстрация причин
  • 67. II. Демонстрации априори и апостериори
  • 68. III. Круговая или регрессивная демонстрация
  • 69. IV. Другие случайные формы демонстрации
Возможные аргументы
  • 70. Возможные аргументы
  • 71. I. Аргументы по аналогии: (1) Энтимема
  • 72. (2) Аналоговая индукция, или аналогия
  • 73. (3) Пример
  • 74. II. Аргументы от авторитета
Ошибочные и изощренные аргументы
  • 75. Ложные рассуждения
  • 76. Ложные рассуждения или софизмы
  • 77. Собственно так называемые ложные рассуждения: I. Софизмы индукции
  • 78. II. Софизмы дедукции
Арт. III. Научная систематизация
Предварительные замечания
  • 79. Наука – это система
  • 80. Научная систематизация
§ 1. Научные процессы
  • 81. I. Определение. Его функция
  • 82. Определения слов и вещей
  • 83. Процессы определения. Синтез. Комбинированный анализ
  • 84. Правила определения
  • 85. II. Подразделение неотделимо от определения
  • 86. Правила деления и синтеза
§ 2. Метод и методы
  • 87. Метод. Разнообразие научных методов.
  • 88. I. Синтетический метод
  • 89. II. Метод позитивных наук. Его объект
  • 90. Стадии индукционного процесса
  • 91. Индуктивные методы
  • 92. Объект индукции
  • 93. Логические основы индукции
  • 94. Индукция и силлогизм
  • 95. Статистика. Их отношение к обвинению
  • 96. Аналитико-синтетический метод. Заключение
  • 97. Метод философии

Глава IV

Окончательная причина логического порядка

Заключение
  • 98. Логика на службе науки и истины
  • 99. Определение науки

<< ======= >>

элементов логики | работа Уэйтли

В истории логики: Другие логики 18-го века

…эта традиция возникла 9 Ричарда Уэйтли.0359 Elements of Logic (1826) и, следуя той же традиции, чрезвычайно популярный A System of Logic Джона Стюарта Милля (1843). Хотя в настоящее время несимволический учебник Уотли в значительной степени помещен в сноску, он переформулировал многие понятия настолько вдумчиво и ясно, что в целом (и во-первых…

Подробнее

обзор Милля

  • В книге Джона Стюарта Милля: Общественная жизнь и письмо) Джона Стюарта Милля

    … (1828 г. ) Ричарда Уэйтли Элементов логики г., он уже защищал силлогизм от шотландских философов, которые говорили о замене его предполагаемой системой индуктивной логики. Он требовал, чтобы его индуктивная логика «дополняла, а не заменяла». В течение нескольких лет он тщетно искал…

    Подробнее
«,»url»:»Introduction»,»wordCount»:0,»sequence»:1},»imarsData»:{«HAS_REVERTED_TIMELINE»:»false «,»INFINITE_SCROLL»:»»},»npsAdditionalContents»:{},»templateHandler»:{«имя»:»INDEX»},»paginationInfo»:{«previousPage»:null,»nextPage»:null,»totalPages «:1},»uaTemplate»:»INDEX»,»infiniteScrollList»:[{«p»:1,»t»:184321}],»familyPanel»:{«topicInfo»:{«id»:184321,» title»:»Элементы логики»,»url»:»https://www.britannica.com/topic/Elements-of-Logic»,»description»:»История логики: Другие логики 18-го века: … это традиции возникли «Элементы логики» Ричарда Уэйтли (1826 г.) и, следуя той же традиции, чрезвычайно популярная «Система логики» Джона Стюарта Милля (1843 г.). Хотя в настоящее время несимволический учебник Уотли в значительной степени переведен в сноску, он переформулировал многие понятия настолько вдумчиво и ясно, что в целом (и во-первых…»,»type»:»TOPIC»,»titleText»:»Elements of Logic»,» metaDescription»:»Другие статьи, в которых обсуждаются элементы логики: история логики: Другие логики 18-го века: …эта традиция возникла в «Элементах логики» Ричарда Уэйтли (1826 г. ) и, в той же традиции, в чрезвычайно популярной «Системе логики» Джона Стюарта Милля. Логика (1843 г.) Несмотря на то, что в настоящее время несимволический учебник Уэйтли в значительной степени отнесен к сноске, он переформулировал многие концепции настолько вдумчиво и ясно, что в целом (и во-первых…»,»identifierHtml»:»work by Whately»,»identifierText»: «работа Whately», «topicClass»: «topic», «topicKey»: «Elements-of-Logic», «articleContentType»: «INDEX», «ppTecType»: «THING», «gaTemplate»: «INDEX», «topicType»:»INDEX»,»relativeUrl»:»/topic/Elements-of-Logic»,»assemblyLinkPrefix»:»/media/1/184321/»},»topicLink»:{«title»:»Элементы Logic»,»url»:»https://www.britannica.com/topic/Elements-of-Logic»},»tocPanel»:{«title»:»Каталог»,»itemTitle»:»Ссылки»,» toc»:null},»groups»:[]},»byline»:null,»citationInfo»:null,»websites»:null,»freeTopicReason»:»TOPIC_IS_INDEX_PAGE»,»topicCollectionLinks»:[],»articleSchemaMarkup» :{«keywords»:»Elements of Logic»,»wordcount»:0,»url»:»https://www.britannica.com/topic/Elements-of-Logic»,»description»:»Другие статьи, где Обсуждаются «Элементы логики»: история логики: Другие логики 18-го века: …эта традиция возникла в «Элементах логики» Ричарда Уэйтли (1826 г.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *