- •Махачкала - 2006
- •Лабораторная работа №1 Основные понятия логики и логики высказывания
- •Логические операции над логическими переменными
- •1.6. Решение логических задач с помощью рассуждений
- •Контрольные вопросы
- •Лабораторная работа №2 Основы логики предикатов первого порядка.
- •Преобразование произвольной формулы логики предикатов первого порядка в клаузальную форму
- •1.Исключение импликаций
- •2. Перемещения знака отрицания ( ) непосредственно к атомам
- •3. Переименование переменных
- •4. Перемещение кванторов влево
- •5. Сколемизация.
- •6. Распеределение конъюнкций относительно дизъюнкций
- •7. Перемещение скобок к концу и началу
Логические операции над логическими переменными
Высказывание, понимаемое как предложение естественного языка, может быть истинным или ложным, хотя причина истинности или ложности бывает разной.
Способ (правило) записи некоторых выражений называют синтаксисом. Правило, по которым определяется смысл выражения, их истинность (или ложность) называют семантикой.
Утверждение 1. «Корова есть домашнее животное» выражает некоторый, не зависящий от способа выражения факт – фактическая истина.
Утверждение 2. «Любой человек жив до тех пор, пока не умер» является истиной языка. Его истинность следует из смысла слов.
Утверждение 3. «Если из того, что был снегопад, следует, что крыша белая, то если крыша не белая, то снегопада не было» - содержит в себе высказывания («был снегопад», «крыша белая») и связки «не» и «если ...то». Если заменить эти высказывания на другие, например «волков надо бояться», «в лес нельзя ходить», то получим также истинное высказывание: «Если из того, что волков надо бояться, следует, что в лес нельзя ходить, то если в лес можно ходить, то волков не надо бояться».
Если эти высказывания заменить x и y, то предложение «если из х следует y, то из не y следует не х» будет логически истинным независимо от смысла (интерпретации) х и y.
Истинность или ложность выражений в математической логике может зависеть от интерпретации- смысла, приписываемого соответствующим элементам этих выражений, и от их (логической) структуры. Причем больший интерес вызывают те выражения, которые истинны (ложны) вне зависимости от интерпретации – общелогической истины.
Рассмотрим основные понятия алгебры логики.
Основные логические операции над логическими переменными: отрицание (логическое «не»), конъюнкция (логическое «и»), дизъюнкция (логическое «или») и импликация («если … то»). Знаки логических операций называют логическими связками, а выражения, которые получаются при использовании логических переменных и логических связок – логическими или пропозициональными формулами.
Логические операции называют также логическими (булевскими) функциями).
Отрицание логической переменной А, обозначается А, или А , или ~A ( этот знак правда, используется иногда для другой логической операции – эквивалентности): читается «отрицание А» или «не А» и означает противоположное А значение: в случае, когда А принимает значение истина, А принимает значение ложь, и если А=false, то А=true.
Таблица истинности 1. Отрицание.
А |
¬А |
0 |
1 |
1 |
0 |
Конъюнкция обозначается А В, или АВ, по аналогии с умножением чисел, читается как «конъюнкция А и В» или «А и В». А и В называются конъюнктами. Конъюнкция двух логических переменных истинна тогда и только тогда, когда истинны обе переменные.
Следует отметить: А В= В А и (А В) С = А В С.
Таблица истинности 2. Конъюнкция.
А |
В |
А ^ В |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
Дизъюнкция двух логических переменных обозначается АВ или А+В (читается «дизъюнкция А и В» или « А или В») ложна тогда и только тогда, когда ложны обе переменные. А и В называются дизъюнктами.
Следует отметить: АВ= ВА и (А В) С = А В С
Таблица истинности 3. Дизъюнкция.
А |
В |
А V В |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
Импликация обозначается АВ или АВ, читается «из А следует В» или «В следует из А», или «если А, то В» или «А достаточное условие для В» или «В необходимое условие для А». А называют посылкой (или антецедентом); В называют заключением (консеквентом). АВ ложна в одном тока случае, когда А=true, В=false, в остальных случаях она истина.
Следует отметить: АВ= АВ
Таблица истинности 4. Импликация.
А |
В |
А → В |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
Эквивалентность — это функция тождества. Она обозначается символами ≡ или <=>. Выбираем обозначение А ≡ В. («тогда и только тогда»).Запись А ≡ В читается как «А эквивалентно В». Эквивалентность двух высказываний истинна только в тех случаях, когда оба высказывания ложны или оба истинны.
Таблица истинности 5. Эквивалентность.
А |
В |
А ≡ В |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
Эти операции позволяют строить выражения любого уровня сложности.
Всякое выражение, построенное из элементарных высказываний при помощи
операций, будем называть формулой. Любую формулу можно считать некоторой логической функцией. Все формулы могут быть описаны таблицей истинности.
В алгебре высказываний любую логическую функцию можно выразить через основные логические операции, записать ее в виде логического выражения и упростить, применяя законы логики и свойства логических операций. Необходимо только учитывать порядок выполнения логических операций (приоритет) и скобки. Операции в логическом выражении выполняются слева направо с учетом скобок. Приоритет логических операций: инверсия, конъюнкция, дизъюнкция.
Дадим формальное описание предметной области:
F1 : Если жарко и сыро, то будет дождь .
F2 : Если сыро, то жарко база знаний
F3 : сейчас сыро
Воспользуемся обозначениями:
Р – жарко, Q – сыро, R – будет дождь,
тогда
F 1 =PQR
F2 =QP формальное описание базы знаний
F3 : Q
и зададимся вопросом-целью:
будет ли дождь?
Решим поставленную задачу, воспользовавшись правилом вывода modus ponens: A , A B => B (если верно А и AB, то верно и B). Тогда Q , Q P => P, т. е. верно P.
Но тогда QP, QP R => R, т.е. верно R. То есть, поставленная задача решена, ответ – будет дождь.
Исчисление высказываний представляет собой логику не анализируемых предположений, в которой пропозициональные константы могут рассматриваться как представляющие определенные простые выражения вроде "Сократ — мужчина" и "Сократ смертен".. Пропозициональные константы являются частью языка высказываний, который используется для приложения исчисления пропозициональных переменных к конкретной проблеме.
Выражение является предложением или правильно построенной формулой (ППФ) исчисления высказываний тогда и только тогда, когда оно может быть сформулировано в виде некоторой последовательности допустимых символов согласно установленным .
Например, ((Р/\Q) —>R) ¬PV¬QVR
является правильно построенным предложением в исчислении высказываний, поскольку: P,Q,R- высказывания и поэтому предложения;
Р/\Q -конъюнкция двух предложений, поэтому является предложением;
(Р/\Q) —>R - импликация одного предложения в другое, т.е. предложение;
¬Pи¬Q - отрицания предложений, являющиеся предложениями;
¬PV¬Q -дизъюнкция двух предложений, поэтому является предложением;
¬PV¬QVR -дизъюнкция двух предложений, т.е. предложение;
Для логических выражений Р, Q и R
¬(¬P) P
(P\/Q) (¬P->Q)
закон контрапозиции импликации: Р->Q (¬Q->¬P)
закон Моргана: ¬ (P\/Q) (¬P/\¬Q) и ¬ (P/\Q) (¬P\/¬Q)
законы коммутативности: (Р/\Q) (Q/\Р) и (Р\/О) (Q\/Р).
Ассоциативный закон: ((Р/\Q)/\R) (Р/\ (Q/\ R)).
Ассоциативный закон: ((Р\/Q)\/R) (Р\/ (Q\/ R)).
дистрибутивный закон: Р\/(Q/\R) (Р\/Q)/\(Р\/R).
дистрибутивный закон: Р/\(Q\/R) (Р/\Q)\/(Р/\R).
Эти тождества могут быть использованы для приведения выражения исчисления высказываний к синтаксически различным, но логически эквивалентным формам.
Формула исчисления высказываний, которая истинна во всех интерпретациях, называется тавтологией или общезначимой формулой. Примерами тавтологий являются XX, X(YX).
Формула исчисления высказываний называется противоречием, если она ложна во всех интерпретациях. Например, XX.
В алгебре логики логические операции часто описываются при помощи так называемых таблиц истинности. Таблица истинности представляет собой таблицу, устанавливающую соответствие между возможными значениями набора переменных и значениями функции.
Таблицы истинности логических функций позволяют определить значения, которые принимают эти функции при различных значениях переменных, сравнивать функции между собой, определять, удовлетворяют ли функции заданным свойствам.
В математической логике не рассматривается конкретное содержание высказывания, важно только, истинно оно или ложно. Поэтому высказывание можно представить некоторой переменной величиной, значениями которой может быть только 0 или 1. Если высказывание истинно, то его значение равно 1, если ложно- 0.
Простые высказывания назвали логическими переменными, а сложные-логическими функциями. Значения логических функций также только 0 или 1. Для простоты записи высказывания обозначаются латинскими буквами А, В, С. Использование 0 и 1 подчеркивает некоторое соответствие между значениями логических переменных и функций, в математической логике и цифрами в двоичной системе счисления. Это позволяет описывать работу логических схем ПК и проводить их анализ и синтез с помощью математического аппарата алгебры логики.
Наибольшее распространение получили следующие три способа решения логических задач:
средствами алгебры логики;
табличный;
с помощью рассуждений.
Решение логических задач средствами алгебры логики
Обычно используется следующая схема решения:
изучается условие задачи;
вводится система обозначений для логических высказываний;
конструируется логическая формула, описывающая логические связи между всеми высказываниями условия задачи;
определяются значения истинности этой логической формулы;
из полученных значений истинности формулы определяются значения истинности введённых логических высказываний, на основании которых делается заключение о решении.
Пример: Трое друзей, болельщиков автогонок "Формула-1", спорили о результатах предстоящего этапа гонок.
— Вот увидишь, Шумахер не придет первым, — сказал Дима. Первым будет Хилл.
— Да нет же, победителем будет, как всегда, Шумахер, — воскликнул Николай. — А об Алези и говорить нечего, ему не быть первым.
Петр, к которому обратился Николай, возмутился:
— Хиллу не видать первого места, а вот Алези пилотирует самую мощную машину.
По завершении этапа гонок оказалось, что каждое из двух предположений двоих друзей подтвердилось, а оба предположения третьего из друзей оказались неверны. Кто выиграл этап гонки?
Решение. Введем обозначения для логических высказываний:
Ш — победит Шумахер; Х — победит Хилл; А — победит Алези.
Реплика Николая "Алези пилотирует самую мощную машину" не содержит никакого утверждения о месте, которое займёт этот гонщик, поэтому в дальнейших рассуждениях не учитывается.
Зафиксируем высказывания каждого из друзей:
Дима : ШХ, Коля: Ш А , Петр: Х
Учитывая то, что предположения двух друзей подтвердились, а предположения третьего неверны, запишем и упростим истинное высказывание
Высказывание
истинно только при Ш=1,
А=0, Х=0.
Ответ. Победителем этапа гонок стал Шумахер.
Решение логических задач табличным способом
При использовании этого способа условия, которые содержит задача, и результаты рассуждений фиксируются с помощью специально составленных таблиц.
Пример: В симфонический оркестр приняли на работу трёх музыкантов: Борисова, Семенова и Ветрова, умеющих играть на скрипке, флейте, альте, кларнете, гобое и трубе. Известно, что:
Смит самый высокий;
играющий на скрипке меньше ростом играющего на флейте;
играющие на скрипке и флейте и Браун любят пиццу;
когда между альтистом и трубачом возникает ссора, Смит мирит их;
Браун не умеет играть ни на трубе, ни на гобое.
На каких инструментах играет каждый из музыкантов, если каждый владеет двумя инструментами?
Решение. Составим таблицу и отразим в ней условия задачи, заполнив соответствующие клетки цифрами 0 и 1 в зависимости от того, ложно или истинно соответствующее высказывание.
Так как музыкантов трoе, инструментов шесть и каждый владеет только двумя инструментами, получается, что каждый музыкант играет на инструментах, которыми остальные не владеют.
Из условия 4 следует, что Семенов не играет ни на альте, ни на трубе, а из условий 3 и 5, что Борисов не умеет играть на скрипке, флейте, трубе и гобое. Следовательно, инструменты Борисова — альт и кларнет. Занесем это в таблицу, а оставшиеся клетки столбцов "альт" и "кларнет" заполним нулями:
Таблица6
|
скрипка |
флейта |
альт |
кларнет |
гобой |
труба |
Борисов |
0 |
0 |
1 |
1 |
0 |
0 |
Семенов |
|
|
0 |
0 |
|
0 |
Ветров |
|
|
0 |
0 |
|
|
Из таблицы видно, что на трубе может играть только Ветров.
Из условий 1 и 2 следует, что Семенов не скрипач. Так как на скрипке не играет ни Борисов, ни Семенов, то скрипачом является Ветров. Оба инструмента, на которых играет Ветров, теперь определены, поэтому остальные клетки строки "Ветров" можно заполнить нулями:
Таблица 7
|
скрипка |
флейта |
альт |
кларнет |
гобой |
труба |
Борисов |
0 |
0 |
1 |
1 |
0 |
0 |
Семенов |
0 |
|
0 |
0 |
|
0 |
Ветров |
1 |
0 |
0 |
0 |
0 |
1 |
Из таблицы видно, что играть на флейте и на гобое может только Семенов.
Таблица 8
|
скрипка |
флейта |
альт |
кларнет |
гобой |
труба |
Борисов |
0 |
0 |
1 |
1 |
0 |
0 |
Семенов |
0 |
1 |
0 |
0 |
1 |
0 |
Ветров |
1 |
0 |
0 |
0 |
0 |
1 |
Ответ: Борисов играет на альте и кларнете, Семенов — на флейте и гобое, Ветров — на скрипке и трубе.
Пример: Три одноклассника — Влад, Тимур и Юра, встретились спустя 10 лет после окончания школы. Выяснилось, что один из них стал врачом, другой физиком, а третий юристом. Один полюбил туризм, другой бег, страсть третьего — регби.
Юра сказал, что на туризм ему не хватает времени, хотя его сестра — единственный врач в семье, заядлый турист. Врач сказал, что он разделяет увлечение коллеги.
Забавно, но у двоих из друзей в названиях их профессий и увлечений не встречается ни одна буква их имен.
Определите, кто чем любит заниматься в свободное время и у кого какая профессия.
Решение: Здесь исходные данные разбиваются на тройки (имя — профессия — увлечение).
Из слов Юры ясно, что он не увлекается туризмом и он не врач. Из слов врача следует, что он турист.
Таблица 9
Имя |
Юра |
|
|
Профессия |
|
врач |
|
Увлечение |
|
туризм |
|
Буква "а", присутствующая в слове "врач", указывает на то, что Влад тоже не врач, следовательно врач — Тимур. В его имени есть буквы "т" и "р", встречающиеся в слове "туризм", следовательно второй из друзей, в названиях профессии и увлечения которого не встречается ни одна буква его имени — Юра. Юра не юрист и не регбист, так как в его имени содержатся буквы "ю" и "р". Следовательно, окончательно имеем:
Таблица 10
Имя |
Юра |
Тимур |
Влад |
Профессия |
физик |
врач |
юрист |
Увлечение |
бег |
туризм |
регби |
Ответ. Влад — юрист и регбист, Тимур — врач и турист, Юра — физик и бегун.
Многие логические задачи связаны с рассмотрением нескольких конечных множеств с одинаковым количеством элементов, между которыми устанавливается взаимно - однозначное соответствие. На языке Пролог эти множества можно рассматривать как базы данных, зависимости между объектами устанавливаются с помощью правил.
Пример 1. Беседуют трое друзей: Белокуров, Рыжов и Чернов. Брюнет сказал Белокурову :"Любопытно, что один из нас блондин, другой брюнет, третий - рыжий, но ни у кого цвет волос не соответствует фамилии". Какой цвет волос у каждого из друзей?
Традиционным способом задача решается заполнением таблицы:
Таблица 11
-
Цвет волос
Фамилия
рыжие
черные
русые
Белокуров
-
Чернов
-
Рыжов
-
По условию задачи ни у кого из друзей цвет волос не соответствует фамилии. Это позволяет поставить символ "-" в соответствующих клетках.
Таблица 12
-
Цвет волос
Фамилия
рыжие
черные
русые
Белокуров
-
Чернов
-
Рыжов
-
Так как Белоруков не брюнет, значит можно проставить знак "-" в соответствующей клетке.
Между множеством фамилий участников беседы и множеством цветов волос должно быть установлено взаимно - однозначное соответствие. Поэтому определяем цвет волос сначала у Белокурова, затем у Чернова, и, наконец, у Рыжова. В соответствующих клетках проставляем знак"+". В каждой строке и в каждом столбце должен быть только один такой знак.
Таблица 13
-
Цвет волос
Фамилия
рыжие
черные
русые
Белокуров
+
-
-
Чернов
-
-
+
Рыжов
-
+
-
Из последней таблицы следует, что у Белокурова волосы рыжие, у Чернова - русые, у Рыжова - черные.
На языке Пролог структура программы будет следующей: сначала перечисляются
данные - фамилии и цвета волос, а затем записываются правила, связывающие эти два множества.
/* База данных фамилий */
фамилия (белокуров).
фамилия (чернов).
фамилия (рыжов).
/* База данных цветов волос */
цвет_волос (рыжие).
цвет_волос (черные).
цвет_волос (русые).
/* Устанавливаем взаимно - однозначное соответствие между базами данных, Х - элемент из базы данных цветов волос */
/* Белокуров не брюнет и не блондин */
соответствие(Х,У):- фамилия(Х) цвет_волос(У), Х=белокуров, not(У=черный), not(У=русый).
/* Цвет волос у Чернова и Белокурова не совпадают */
соответствие(Х,У):- фамилия(Х) цвет_волос(У), Х=чернов, not(У=черный), not(соответствие(белокуров(У)).
/* У всех троих волосы разного цвета */
соответствие(Х,У):- фамилия(Х) цвет_волос(У), Х=рыжов, not(соответствие(белокуров(У)), not(У=соответствие (чернов(У)).
К получившейся базе знаний можно обращаться с различными запросами, например: ?- соответствие (А,В). На этот вопрос будут получены все варианты ответов, содержащих фамилию и цвет волос каждого человека.
Решение логической задачи усложнится, если в ней фигурирует не два, а большее число множеств, если соответствия не взаимно - однозначны.
