Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТЛабораторная работа ИИС.doc
Скачиваний:
23
Добавлен:
24.11.2019
Размер:
303.62 Кб
Скачать

Логические операции над логическими переменными

Высказывание, понимаемое как предложение естественного языка, мо­жет быть истинным или ложным, хотя причина истинности или ложности бывает разной.

Способ (правило) записи некоторых выражений называют синтакси­сом. Правило, по которым определяется смысл выражения, их истинность (или ложность) называют семантикой.

Утверждение 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 =PQR

F2 =QP формальное описание базы знаний

F3 : Q

и зададимся вопросом-целью:

будет ли дождь?

Решим поставленную задачу, воспользовавшись правилом вывода modus po­nens: A , A  B => B (если верно А и AB, то верно и B). Тогда Q , Q  P => P, т. е. верно P.

Но тогда QP, QP  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).

Эти тождества могут быть использованы для приведения выражения ис­числения высказываний к синтаксически различным, но логически эквивалент­ным формам.

Формула исчисления высказываний, которая истинна во всех интер­претациях, называется тавтологией или общезначимой формулой. Приме­рами тавтологий являются XX, X(YX).

Формула исчисления высказываний называется противоречием, если она ложна во всех интерпретациях. Например, XX.

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

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

В математической логике не рассматривается конкретное содержание выска­зывания, важно только, истинно оно или ложно. Поэтому высказывание можно представить некоторой переменной величиной, значениями которой может быть только 0 или 1. Если высказывание истинно, то его значение равно 1, если ложно- 0.

Простые высказывания назвали логическими переменными, а сложные-логи­ческими функциями. Значения логических функций также только 0 или 1. Для простоты записи высказывания обозначаются латинскими буквами А, В, С. Использование 0 и 1 подчеркивает некоторое соответствие между значе­ниями логических переменных и функций, в математической логике и циф­рами в двоичной системе счисления. Это позволяет описывать работу ло­ги­ческих схем ПК и проводить их анализ и синтез с помощью математиче­ского аппарата алгебры логики.

Наибольшее распространение получили следующие три способа реше­ния ло­гических задач:

  1. средствами алгебры логики;

  2. табличный;

  3. с помощью рассуждений.

Решение логических задач средствами алгебры логики

Обычно используется следующая схема решения:

  • изучается условие задачи;

  • вводится система обозначений для логических высказываний;

  • конструируется логическая формула, описывающая логические связи ме­жду всеми высказываниями условия задачи;

  • определяются значения истинности этой логической формулы;

  • из полученных значений истинности формулы определяются значения истинности введённых логических высказываний, на основании кото­рых делается заключение о решении.

Пример: Трое друзей, болельщиков автогонок "Формула-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(У=соответствие (чернов(У)).

К получившейся базе знаний можно обращаться с различными запро­сами, например: ?- соответствие (А,В). На этот вопрос будут получены все варианты ответов, содержащих фамилию и цвет волос каждого человека.

Решение логической задачи усложнится, если в ней фигурирует не два, а большее число множеств, если соответствия не взаимно - однозначны.