Смекни!
smekni.com

Лекции по информатики 2 (стр. 13 из 43)

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

В качестве иллюстраций рассмотрим базу знаний о семье. Пусть в семье есть дочь Оля, сын Сережа, мама Надя, папа Коля, бабушка Зина и дедушка Миша:

Соответствующая база данных на языке Пролог:

мама (Зина, Надя); папа (Миша, Надя);

мама (Надя, Оля); папа (Коля, Оля);

мама (Надя, Сережа); папа (Коля, Сережа);

Система Пролог при наличии этих фактов в памяти ЭВМ даст следующие ответы на вопросы о «папах» и «мамах»:

? мама (Надя, Оля) - Надя - мама Оли?

да

? папа (Сережа, Надя) - Сережа - папа Нади?

нет

Машина, использующая систему Пролог, дает ответы строго в соответствии с определенными логическими законами и принципа­ми логического вывода. Разберем эти законы и принципы.

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

Закон противоречия - первый общий закон логики. Этот закон впервые высказал Аристотель - основатель логики как научной дисциплины:

А и не А - Не могут быть истинны одновременно

ложь суждение и его отрицание

Примеры противоречивых утверждений:

1) «яблоко - спелое»;

«яблоко - неспелое»;

2) «треугольник АВС - прямоугольный»;

«стороны треугольника равны друг другу».

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

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

Так, вопрос ? мама (Надя, Оля) ЭВМ преобразует в отрицание не мама (Надя, Оля) и временно присоединяет его к базе знаний. При этом получившаяся база становится противоречивой и система Про­лог объявляет отрицание ложным и выводит ответ ДА.

Закон исключения третьего - второй общий закон логики, ука­занный Аристотелем:

А или не А - Истинно суждение либо его отрицание,

истина третьего не дано.

Примеры взаимоисключающих утверждений:

1) «Сегодня будет дождь» или «Сегодня дождя не будет».

2) «Любой треугольник правильный либо в нем есть разные сто­роны».

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

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

Закон противоречия в записи на языке исчисления предикатов преобразуется в процедуру вывода ответов на простейшие вопросы вида ? А(с):

А(х) и не А(с) - При противоречии А(х) и не А(с)

ложь, при х = с контрпримером служит х = с.

Содержательный смысл: При противоречии А(х) и не А(с) контр­примером служит х = с. Здесь х - переменная, а с - конкретное значение, при котором отрицание ответа оказывается ложным. Это значение х = с выводится системой Пролог в качестве ответа на поставленный вопрос. Примеры такого рода вопросов и ответов:

? папа (х, Коля) - Кто папа у Коли ?

нет

? папа (х, Оля) - Кто папа у Оли ?

х = Коля

? мама (х, у) - Что известно о мамах?

х = Зина у = Надя

х = Надя у = Оля

Закон двойного отрицания - третий общий закон логики. Этот закон также был высказан Аристотелем:

не (не А) - Если неверно отрицание,

А то суждение – истинно

Примеры рассуждений.

1) Неверно, что «Вчера не было дождя».

Следовательно, «Вчера был дождь».

2) Неправда, что «это сделал не Саша».

Следовательно, «это сделал Саша». (?)

Из второго примера видно, что закон двойного отрицания явля­ется косвенным доказательством, поскольку оно не опирается на факты или аргументы. По этим причинам закон двойного отрицания может оказаться ошибочным и этот закон не является общезначи­мым (верным для всех случаев и ситуаций).

Правильность утверждений и рассуждений даже при безупречной логике доказательств зависит от достоверности исходных фактов и положений. Эту идею выражает четвертый общий логический за­кон - закон достаточных оснований, впервые сформулированный Лейбницем - создателем одной из самых первых механических вы­числительных машин и основателем исчисления предикатов.

Закон достаточных оснований:

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

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

Пример рассуждений, не имеющих достаточных оснований:

1. «Если дорогу перебежала черная кошка, то быть неприятностям».

2. «Это верно, потому что это - справедливо».

Экспертные системы на ЭВМ с этой точки зрения должны созда­ваться исключительно на основе достоверных данных и общих пра­вил вывода, проверенных практикой. Включение в базу знаний не­достоверных данных или неподтвержденных обобщений и правил может привести к появлению ошибок и получению неправильных решений.

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

Закон логического вывода modus ponens - первый закон, указан­ный Аристотелем:

А ® В, А - Если из А следует В и посылка А истинна,

В то выполняется и следствие В.

Примеры применения правила логического вывода.

1. «Если идет дождь, то на улице мокро».

«Пошел дождь».

Следовательно, «на улице мокро».

2. «Если кому-то весело, то он улыбается».

«Маша развеселилась».

Следовательно, «Маша улыбается».

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

А(х)® В(х),А(с) - Если из А(х) следует В(х) и А(х) выполнено

В(с) для х = с, то выполняется В (с).

Данная процедура из конкретного факта А(с) и общего правила логического вывода А(х) ® В(х) позволяет вывести новое конкрет­ное утверждение В(с). Иными словами, эта процедура вывода позво­ляет выводить новые конкретные сведения из общих правил и уже известных конкретных фактов.

Следовательно, знание и применение законов логического выво­да позволяет порождать новые сведения, являющиеся логическим следствием уже известных сведений. Этим свойством и этими зако­нами могут пользоваться не только люди - они применяются в си­стемах машинного интеллекта.

Закон вывода отрицаний - второй закон логического вывода:

А ® В, не В - Если из А следует В, но следствие В ложно,

неА то не выполняется посылка А.

Примеры логического вывода из отрицаний.

1. «Если идет дождь, то на улице мокро».

«На улице сухо».

Следовательно, «На улице не было дождя».

2. «Если кому-то весело, то он улыбается».

«Вова не улыбается».

Следовательно, «Вове не весело».

В предикатной форме закон вывода отрицаний превращается в конструктивную процедуру вывода отрицаний:

А(х) ® В(х), не В(с) - Если из А(х) следует В(х), но В не выполнено

не А(с) для х = с,то не выполняется и А(с).

Данная процедура из конкретного отрицания следствия не В(с) и общего правила А(х) ® В(х) выводит конкретное отрицание не А(с) предпосылки при х = с. Эта процедура используется в системе Пролог как основной механизм поиска ответов на сложные вопросы, в ко­торых участвуют определяемые предикаты.

В качестве иллюстраций дополним рассмотренную базу знаний о семье набором правил на языке Пролог, выражающих понятие «ро­дитель»:

родитель (х, у) ¬ мама(х, у); - Мама - родитель

родитель (х, у) ¬ папа (х, у); - Папа – родитель

После ввода этих правил в ЭВМ система Пролог на вопросы о родителях выдаст такие ответы при указанной выше базе данных:

? родитель (Надя, х) - Кому родитель Надя ?

х = Оля

х = Сережа

Вывод ответов на эти вопросы система Пролог проводит следу­ющим образом. Во-первых, вопрос ? родитель (Надя, х) будет заменен на отрицание не родитель (Надя,х). Далее это отрицание будет сопо­ставлено с правилом вывода родитель(х, у) ¬ мама(х, у), а затем с правилом родитель (х, у) ¬ папа(х, у).

Применение этой же процедуры вывода ко второму определению родитель (х, у) ¬ папа(х, у) даст отрицание не папа (Надя,х), озна­чающее утверждение «Надя не является папой никому». Для этого утверждения компьютер не имеет в базе данных никаких соответст­вующих фактов и после просмотра базы знаний по этому варианту выдает ответ НЕТ.