- •Представление знаний в информационных системах Основные понятия об инженерных знаниях. Общие сведения о знаниях
- •Логическая модель представления знаний
- •Логика предикатов
- •Достоинства и недостатки логических моделей
- •Стандартные типы доменов
- •Списки в прологе
- •Операция отсечения
- •Разделение списка
- •Объединение списка
- •Сортировка списков
- •Сетевые модели Семантические сети
- •Виды вершин
- •Виды дуг
- •Вспомогательные отношения
- •Основные преимущества моделей представления знаний
- •Продукционная модель представления знаний
- •Стратегии выбора
- •Простота механизмов вывода.
- •Системы продукции могут реализованы любыми алгоритмами и следовательно отражать любое знание доступное эвм.
- •Методы обработки знаний
- •Представление неточных и нечетких знаний
- •Операции с нечеткими множествами
- •Стандартные функции принадлежности
- •Дефазификация
- •Преимущества и недостатки нечеткой логики
- •Инструментальные методы работы со знаниями
- •Понятие о функциональном логическом программирование
- •Экспертные системы
- •Классификация экспертных систем
- •Обучение.
Достоинства и недостатки логических моделей
Преимущества:
-
Высокой уровень формализации, обеспечивающий возможность реализации системы формальных точных определений и выводов.
-
Согласованность знаний как единого целого, облегчающее решение проблема верификации базы знаний, оценки независимости и полноты системы аксиом.
-
Единое средство описания как знаний о предметной области, так и способов решения, что позволяет любую задачу свести к поиску логического вывода некоторую формулу.
Недостатки:
-
Представление знаний в логической модели не наглядно;
-
Написание знаний в виде логических формул не позволяет появиться преимуществам, которые имеются при автоматизированной обработке структурных данных.
-
Детерминированность логического вывода, т.е. отсутствие возможности оперирования с нечеткими знаниями.
-
Невозможность применения в качестве параметров предикатов других предикатов, т.е. невозможность формулирования знаний о знаниях.
Логику предикатов первого порядка можно использовать как основу для конструирования более сложных логических методов представления знания. В этом качестве она используется в модальных и псевдо-физических логиках.
Пролог
Факт – это простейший вид предложения, он используется для констатации того, что выполнено некоторое отношение между объектами.
man(tom).
Правила содержат утверждения, истинность которых зависит от некоторых условий.
Child(X,Y):-parent(X,Y).
Утверждение записывается, как X является ребенком Y, если истинно утверждение, что Y является родителем X.
Правила используются для определения новых предикатов через уже имеющиеся. Множество всех утверждений, входящих в состав одного предиката называется процедурой. В прологе требуются, что бы предложение каждой процедуры были сгруппированы в одном месте
В предикатах объекты могут быть конкретными или абстрактными. Конкретные объекты задаются именем. Имя – это идентификатор, начинающийся с маленькой буквы. Абстрактный объект – это переменная. Переменная обозначается идентификатором с большой буквы.
Область действия переменных входящих в предложения ограничивается этим предложением.
Каждое правило и каждый факт должны заканчиваться точкой, которая является признаком конца предложения.
Анонимная переменная, которая обозначается нижним подчеркиванием _
Child(X,Y):-parent(X,_).
Вопрос (цель) – это средство извлечения информации из логической программы. Простой вопрос (подцель) – это предикат, относительно которого мы хотим выяснить, выполняется он или нет. Аргументом для этого предиката могут быть как конкретные объекты, так и переменные. Вопрос – это всегда последовательность, состоящая из одной или нескольких подцелей.
Стандартные типы доменов
В Пролог встроенных 6 типов доменов.
Типы данных |
Ключевое слово |
Символьный |
Char |
Целые числа |
Integer |
Действительные числа |
Real |
Строки |
String |
Символьные имена |
Symbol |
Файлы |
file |
Программа может состоят из 5-ти разделов:
-
Домена (domains), содержит описание доменов, которые описывают различные классы объектов. Это не обязательный раздел программы.
-
Database, содержит утверждениz, которые являются предикатами динамической базы данных.
-
Predicates, служит для описания используемых программ и предикатов. Обязательный раздел.
-
Goal, формирует назначения, создаваемые программой, т.е. даются цели или ставятся вопросы.
-
Clauses, заносятся факты и правила известные априори.
Арифметические операторы сходятся с операторами C++.
Знаки логики:
, |
И |
; |
ИЛИ |
Пример 1:
Predicates
likes(symbol, symbol)
likes(john, “Germany”)
likes(dick, “France”)
likes(ann, “Germany”)
likes(german, “Spain”)
likes(john, “Italy”)
likes(mary, R):-likes(dick, R)
likes(nina,R):-likes(john, R), likes(ann, R)
-likes(german, “Spain”)
-likes(john, x)
-likes(X,Y)
Используя предикат replay (A,B,S) указать имеит ли решение выражение Ax + В = 0 и сколько этих решений.
Пример 2:
Predicates
replay(real, real, real)
Clauses
Replay(A,B,S):-A=0,B=0, S= “Любое решение”
Replay(A,B,S):-A=0, B<>0, S= “Решение нет”
Replay(A,B,S):-A<>0, S= “Решение одно”
-replay (1,2,Z)