Итак - мы решили задачу, используя логику нулевого порядка (логика высказываний)
Обобщим алгоритм решения задачи:
- Проанализировали условия задачи
- Вывели возможные истинные высказывания
- Перевели возможные истинные высказывания с естественного языка на язык математической логики
- Сформулировали три истинных высказывания на языке математической логики
- Перевели три полученных формулы на язык логической функции MS Excel
- Соорудили электронную таблицу истинности в MS Excel (с перебором вариантов и внесением логических формул/функций)
- Методом перебора шести строк таблицы вычислили истинный ответ (Ferrari из Италии)
Является ли данное решение элегантным?
Это дело вкуса
Мы же с вами, уважаемый читатель, не про вкусовщину, а про строгую логику, ценность которой в строгой однозначности!
Предлагаем обратить внимание на количество строк в нашей боевой таблице истинности
Для поиска ответа мы использовали таблицу, состоящую из шести строк. При этом мы помним, что полная таблица истинности, отражающая все возможные комбинации значений переменных состоит из
32 строкНа всякий случай разжуем природу 32 строк:
- 32 - это два в пятой степени (2^5)
- Два - количество возможных значений переменной (ложь/истина)
- Пять - количество переменных
А теперь давайте рассмотрим задачу, в которой фигурируют не две, а 10 стран, и не 3 марки автомобиля, а 20
Географически подкованный читатель знает, что в реальном мире количество стран больше, чем 10
А мало-мальски интересующийся автомобилями читатель подтвердит, что природа нам дала больше 20 марок автомобилей
Таким образом - условие задачи с 10 странами и 20 марками автомобилей - не является причудой сумасшедших математиков, высосанной из пальца
Так вот - сколько строк будет содержать таблица истинности для решения задачи с данными условиями?
Правильно - количество строк таблицы истинности будет равняться 2 в 30 степени
1.073.741.824 строк
Если же вдруг уважаемого читателя не смущает создание и перебор таблицы с более чем миллиардом строк (это же компьютер - пущай работает!), то приведем финальный логический аргумент - это число ровно в 1.024 раз превышает максимально возможное количество строк на одном листе электронной таблицы MS Excel
Подведем итоги:
- Применив логику нулевого порядка - с грехом пополам задачу мы решили
- При этом считаем, что нам также удалось продемонстрировать границы подобного мышления: логика высказываний (математическая логика нулевого порядка) физически не подходит для работы со сложными системами (содержащими большое количество элементов, атрибутов элементов и связей)
Прежде чем перейти к решению задачи методами математической логики
первого порядка - давайте познакомимся с фундаментом данной логики -
ПРЕДИКАТОМПредикат - это базовая сущность и основа математической логики первого порядка
Предикат - это
функцияСпецифика предиката, как функции, заключается в том, что он может принимать лишь два значения - ЛОЖЬ (
0) или ИСТИНА (
1)
Примеры простейших предикатов:
- isCity(‘Новосибирск’) = 1
- isCity(‘Москва’) = 1
- isCapital(‘Москва’) = 1
- isCapital(‘Новосибирск’) = 0
isCity и isCapital - два предиката, отвечающие на вопрос - является ли аргумент (то, что в скобках) городом и столицей
К примеру - isCity(‘шуруп’) = 0 (Мы проверили, такого города не существует)
Названия предикатов (isCity, isCapital и т.п.) изначально не существуют и задаются человеком
Ничего сложного и непонятного, не так ли?
Тем временем, уважаемый читатель, мы незаметно шаг за шагом добрались до такого интеллектуального инструмента как -
функция!Появление в нашем языке функции - весьма
знаковое событие!Мы специально пробежались по всему, что излагали ранее и обнаружили, что слово “функция” использовалось в нашем тексте лишь два раза
- В цитате Германа Вейля: “Галилей превратил законы природы в математическую функцию”
- И один раз в данной Главе - когда мы с вами писали логическую функцию для MS Excel
Считаем, что данный факт является дополнительным аргументом к тезису, что обратив свой взор на математическую логику первого порядка (логику предикатов) - мы совершаем определенный фазовый переход в нашем мышлении
К слову, само мышление - также является функцией!
Также наша лингвистическая и философская радость подкрепляется тем фактом, что компьютер, охоту на которого мы ведем, является сверхбыстрым калькулятором, исполняющим
функции (!!!)Так что - у кого были сомнения на тот счет, что в своих рассуждениях мы ведем нас куда-то не туда - сомнения прочь!
Предикат (функция) - является базовой сущностью математической логики первого порядка, которую также называют
логикой предикатовВ математической логике нулевого порядка - функции отсутствуют, ее основа -
высказывания. Именно поэтому логику нулевого порядка называют
логикой высказыванийВ общем, уважаемый читатель уже понял, что
функция - крайне важная, ценная и полезная методическая и интеллектуальная находка
Давайте разбираться с прикладной ценностью предиката (функции) - чем он может быть полезен нам в народном хозяйстве, а также в деле приручения и одомашнивания компьютера
Смело заявляем следующее - использование предикатов в народном хозяйстве открывает следующие
возможности:
- Однозначно и полно описывать сложные системы (объекты, связи, состояния)
- Производить вычислительные и логические операции с описанными системами
Напомним, что математическая логика нулевого порядка (высказываний) не способна справиться с описанными задачами - см. пример с 30 переменными и системой из 1.073.741.824 строк
Также считаем доказанным неспособность решать озвученные задачи использованием естественного языка, расширенного языком схем (рисунков)
Уважаемый читатель конечно же помнит, что любая организация - сложная система, которой необходимо управлять
Например, большинство организаций, как система, содержат следующие объекты управления (множества):
- сотрудники
- заказчики
- сырье
- поставщики
- оборудование
- бюджеты
- планы
- контракты
- совещания
- сделки
- транзакции
- и многое многое другое
Продолжим наше знакомство с предикатами и их товарищами, а затем рассмотрим решение задачи про определение марки и родины автомобиля методами логики предикатов
Возьмем классический кейс Аристотеля про конечность жизни и смертность Сократа
На естественном языке кейс формулируется следующим образом:
Всякий человек смертен. Сократ - человек. Следовательно - Сократ смертен
На языке математической логики нулевого порядка он выражается следующей формулой (кодом):
(A → B) & (С → A) ⇒ (C → B)
В логике предикатов данный кейс описывается следующей формулой:
(∀x)(isMan(x) → isMortal(x))
Считаем, что поводов пугаться данной формулы и впадать во фрустрацию - нет. Появился лишь один незнакомый знак -
∀, который означает “для всех”
Внимательный читатель, как человек, который уже не первую минуту владеет основами предикатов, увидел в данной формуле два предиката -
isMan и
isMortalПредикат (функция)
isMan - отвечает на вопрос - является ли аргумент предиката человеком
Предикат (функция)
isMortal - отвечает на вопрос - является ли аргумент смертным
Запись
∀x - означает “для всех икс” (или "для каждого икс")
Строго говоря - данная формула определяет, что все люди (как множество) смертны
Для пущей дотошности в таблице ниже мы разложили все элементы формулы по полочкам их значений: