Моделирование дедуктивного и индуктивного мышления с помощью языка логического вывода ПРОЛОГ
Получение новых знаний методом индуктивного мышления
На основе фактов и процедуры "родитель" построим полную систему логического дедуктивного вывода. На генеалогическом дереве это соответствует всем логическим цепочкам, следующим из каждой вершины, кроме концевых:
1) мужчина(Юрий), родитель(Юрий, Фёдор), родитель(Фёдор, Ирина); 2) мужчина(Юрий), родитель(Юрий, Фёдор), родитель(Фёдор, Пётр), родитель(Пётр, Иван); 3) мужчина(Юрий), родитель(Юрий, Фёдор), родитель(Фёдор, Пётр), родитель(Пётр, Василий); 4) женщина(Елена), родитель(Елена, Фёдор), родитель(Фёдор, Ирина); 5) женщина(Елена), родитель(Елена, Фёдор), родитель(Фёдор, Пётр), родитель(Пётр, Иван); 6) женщина(Елена), родитель(Елена, Фёдор), родитель(Фёдор, Пётр), родитель(Пётр, Василий); 7) женщина(Елена), родитель(Елена, Марья), родитель(Марья, Иван); 8) женщина(Елена), родитель(Елена, Марья), родитель(Марья, Василий); 9) женщина(Ольга), родитель(Ольга, Ирина); 10) женщина(Ольга), родитель(Ольга, Пётр), родитель(Пётр, Иван); 11) женщина(Ольга), родитель(Ольга, Пётр), родитель(Пётр, Василий); 12) мужчина(Пётр), родитель(Пётр, Иван); 13) мужчина(Пётр), родитель(Пётр, Василий); 14) женщина(Марья), родитель(Марья, Иван); 15) женщина(Марья), родитель(Марья, Василий).
Первая стратегия анализа логических цепочек.
Анализируя первую цепочку, видим, что она представляет собой некоторую странную конструкцию, не лишённую закономерности. Чтобы представить её в абстрактной форме, изменим обозначение конкретных имён переменных по принципу: за крайними будем закреплять абстрактные символы X, Y, ... , а за внутренними - символы P, Q, .... Тогда первая цепочка примет вид:
мужчина(Х), родитель(Х, Р), родитель(Р, Y).
Находим, что эта абстрактная конструкция, при разных вариантах связывания переменных, повторяется в цепочках 2, 3, 5, 6. В 2 и 3 такую конструкцию можно выделять дважды, с пересечением. Если процедура "мужчина" при этом явно не фигурирует, она подразумевается, благодаря первому вхождению мужского имени.
Тогда целесообразно столь жизненно важное отношение между объектами Х и Y выделить в отдельное правило, придумав ему наименование:
дедушка(Х, Y) :- мужчина(Х), родитель(Х, Р), родитель(Р, Y).
Конечно, с высоты познаний мы с некоторой иронией относимся к формализации нашего мышления. Мы-то знаем названия тех понятий, которые хотим вывести автоматически.
Новым правилом дополняем понятийную логическую нейронную сеть на рис. 7.3. Решив "целевую" задачу дедуктивного вывода, дополняем фактографическую логическую нейронную сеть, что частично отображено на рис. 7.2.
Аналогично замечаем, что абстрактная конструкция вида
женщина(Х), родитель(Х, Р), родитель(Р, Y),
впервые встретившаяся при анализе цепочки 4, тоже многократно используется в последующих логических цепочках - 5, 6, 7, 8, 10, 11.
Выбрав название (на основе детского лепета), сформулируем новое правило:
бабушка(Х) :- женщина(Х), родитель(Х, Р), родитель(Р, Y).
Однако слишком длинными представляются нам некоторые цепочки, даже после замены новыми правилами. Например, цепочка 2 принимает вид
дедушка(Юрий, Пётр), родитель(Пётр, Иван).
Абстрагируясь и придумав имя новому понятию, получаем новое правило:
прадедушка(Х, Y) :- дедушка(Х, Р), родитель(Р, Y).
Аналогично получается правило:
прабабушка(Х, Y) :- бабушка(Х, Р), родитель(Р, Y).
На основе новых правил и следующих из них фактов могут быть дополнены фактографическая и понятийная нейронные сети, что частично отражено на рисунках 2 и 3.
Выше говорилось, что новые знания остаются гипотезами до достаточно полного подтверждения опытом и дедуктивными рассуждениями.
Предположим, что явился (не запылился) Залётный Молодец, который сообщил Ивану, что он – его дед. Воспользуемся правилом дедушка и попробуем решить задачу дедукции:
дедушка(ЗалётныйМолодец, Иван) :- мужчина(Залётный Молодец), родитель(Залётный Молодец, Р), родитель(Р, Иван).
Первое же высказывание в этой цепочке не проходит унификацию, так как в фактах нет соответствующей регистрации! Если даже будет установлено, что Залётный Молодец – мужчина, то установление праотцовства – весьма болезненный процесс. Так что второе высказывание вряд ли пройдёт унификацию, и рекомендовать Ивану проявление прародительской почтительности мы не станем. Но это доказывает весьма высокую действенность выведенного правила!
При появлении следующего поколения можно будет установить истинность и непротиворечивость выведенных выше правил.
Вторая стратегия анализа логических цепочек основана на совместном рассмотрении логических цепочек, являющихся альтернативным продолжением одна другой.
Предположим, что нам неизвестны правила брат(Х, Y) и сестра(Х, Y)
При совместном анализе цепочек 1 и 2 находим, что их различие начинается с высказываний родитель(Фёдор, Ирина) (первая цепочка) и родитель(Фёдор, Пётр). Запишем в абстрактном, обобщённом виде:
родитель(Х, Y) родитель(Х, Z).
Возникает вопрос: в каком отношении родства находятся Y и Z при общем X, если а) Y – обязательно мужчина, б) Z – обязательно женщина? Запишем проект конструируемых понятий:
F1(Y, Z) :- мужчина(Y), родитель(Х, Y), родитель(X, Z), Y<>Z; F2(Z, Y) :- женщина(Z), родитель(Х, Z), родитель(Х, Y), Z<>Y.
Воспользуемся где-то услышанными красивыми названиями, сменим обозначения для приведения к "стандартному" виду и запишем два новых правила:
брат(Х, Y) :- мужчина(Х), родитель(Р, Х), родитель(Р, Y), X<>Y ; сестра(Х, Y) :- женщина(Х), родитель(Р, Х), родитель(Р, Y), X<>Y.
Новые правила отражаются в БЗ и подтверждаются при их применении в задачах достижения цели.
На основе данного множества фактов, осуществляя стратегию совместного анализа цепочек логического вывода, можно высказать гипотезу о новых понятиях племянник и племянница:
племянник(Х, Y) :- мужчина(Х), родитель(Р, Х), сестра(Р, Y); племянница(Х, Y) :- женщина(Х), родитель(Р, Х), брат(Р, Y).
Дальнейшее обобщение на базе существующих фактов невозможно.
Действительно, мы знаем, что Ирина – племянница Марьи, а Иван и Василий – племянники Фёдора по материнской линии. (По отцовской линии они внуки Фёдора.)
Следует надеяться, что с появлением новых поколений станет возможно дальнейшее обобщение, которое способно привести к неоднозначности и противоречивости выводов. Например, в дополнение к прежнему, может быть сформулирован вывод
племянник(Х, Y) :- мужчина(Х), родитель(Р, Х), брат(Р, Y).
Для устранения возникшего противоречия в определении племянник следует расширить использование в ПРОЛОГе логических операций И и ИЛИ (в "классическом" ПРОЛОГе ограниченно используется символ ;, как знак дизъюнкции, а скобки в предложениях не применяются). Ведь под запятой, разделяющей высказывания в одном предложении, подразумевается конъюнкция И, а если использовать в предложениях символ дизъюнкции ИЛИ, единственное непротиворечивое правило примет вид:
племянник(Х, Y) :- мужчина(Х), родитель(Р, Х), (брат(Р, Y) ИЛИ сестра(Р, Y)).
Аналогично,
племянница(Х, Y) :- женщина(Х), родитель(Р, Х), (брат(Р, Y) ИЛИ сестра(Р, Y)).
Краткие итоги
- Алгоритмический язык логического вывода ПРОЛОГ позволяет строить программные процедуры не только дедуктивного, но и индуктивного вывода на основе именованных фактов и правил, описанных в базе знаний.
- Выделение законченных подструктур связей между фактами, особенно – повторяющихся в различных цепочках дедуктивного вывода, позволяет абстрагировать и именовать эти подструктуры для включения в состав базы знаний в качестве новых правил. Так формируются новые знания.
- Развиваемый ПРОЛОГ должен отображать в правилах вывода не только связи вила И, но и связи типа ИЛИ.
Вопросы
- Какие идеи лежат в основе дедуктивного вывода с помощью языка ПРОЛОГ?
- Что представляет собой стратегия "бектрекинг"?
- Как формируются новые правила (вывода) в рамках языка ПРОЛОГ?
- Какие расширения языка ПРОЛОГ необходимы?