- •Представление знаний в информационных системах Основные понятия об инженерных знаниях. Общие сведения о знаниях
- •Логическая модель представления знаний
- •Логика предикатов
- •Достоинства и недостатки логических моделей
- •Стандартные типы доменов
- •Списки в прологе
- •Операция отсечения
- •Разделение списка
- •Объединение списка
- •Сортировка списков
- •Сетевые модели Семантические сети
- •Виды вершин
- •Виды дуг
- •Вспомогательные отношения
- •Основные преимущества моделей представления знаний
- •Продукционная модель представления знаний
- •Стратегии выбора
- •Простота механизмов вывода.
- •Системы продукции могут реализованы любыми алгоритмами и следовательно отражать любое знание доступное эвм.
- •Методы обработки знаний
- •Представление неточных и нечетких знаний
- •Операции с нечеткими множествами
- •Стандартные функции принадлежности
- •Дефазификация
- •Преимущества и недостатки нечеткой логики
- •Инструментальные методы работы со знаниями
- •Понятие о функциональном логическом программирование
- •Экспертные системы
- •Классификация экспертных систем
- •Обучение.
Списки в прологе
Список – это упорядоченная последовательность элементов.
Объектами списка могут быть любые элементы. Список может является частью другого списка. Список записывается в квадратных скобках.
<пропустил, помогал списывать контрольную>
Domains
list=real*.
Predicates
member(real,list)
clauses
member(X,[X|_]).
member(X,[_|T]):-member(X,T)
Для того что бы выяснить является ли элемент членом списка необходимо установить эквивалентен ли он голове списка, а если нет, то не является ли он членом хвоста списка. Происходит рекурсивный вызов Х сравнивается с головой, потом хвост становится отдельным списком и Х сравнивается с головой этого списка, т.о. пока хвост не исчерпает себя.
Операция отсечения
Пролог имеет встроенную операцию отсечения, которая записывается восклицательным знаком.
Разделение списка
domains
list=integer*.
Predicates
del(integer, list, list, list).
clauses
del(H,[H|T], [H|L1], L2):-H<M,
del(M,T,L1,L2).
del(M,[H|T],L1,[H|L2]):-H>=M,
del(M,T,L1,L2).
del(_,[],[],[]).
Всегда происходит деление списка по условиям. Делим список на голову и хвост. Голову сравниваем с условием и относим либо к L1 либо к L2. (т.е. был изначально список L, после разбиение стал L1 и L2). А оставшийся хвост делим на голову и хвост.
Пока не достигнем граничного условия (последнее условие), когда список не будет состоят из пустых элементов.
del (8, [1,2,13,4,5,12,18,2,12],L1,L2)
L1=[1,2,4,5,2]
L2=[13,12,18,12]
Объединение списка
domains
list=integer*.
Predicates
append(list, list, list).
clauses
append([],L,L).
append([N|L1], L2, [N|L3]):- append(L1,L2,L3).
Первый элемент первого списка всегда становится первым элементом первого списка.
Каждый раз у нас удаляется голова и постепенно список себя исчерпывает и это выполняется до тех пока не выполниться ограничивающее условие.
Сортировка списков
domains
list=integer*.
predicates
sort(list,list).
cord(number, number).
rel(number, list, list).
clauses
sort([],[]).
sort([X|T], S1):- sort(T, S2), rel(X,S2,S1).
rel(X,[Y|S1],[Y,S2]) cord(X,Y), !, rel(X,S1,S2)
rel(X,S1,[X,|S1])
cord(X,S1,[X|S1]).
cord проверяет условия упорядоченности
sort сортирует
Сортировка осуществляется методом вставки.
sort([X|T], S1):- sort(T, S2), rel(X,S2,S1). – если S1 не пустой список то его можно представит в виде головы и хвоста списка.
rel(X,[Y|S1],[Y,S2]) cord(X,Y), !, rel(X,S1,S2) - предполагая, что элемент X вставляется в начало элемента списка S1 проверяется, удовлетворяет ли элемент Х и голова списка условию упорядоченности. Если условие нарушено (выполняется предикат cord), то элемент X вставляется в хвост списка с помощью рекурсивного обращения к предикату rel.
rel(X,S1,[X,|S1]) – если условие упорядоченности выполнено, то происходит переход ко второму предложению процедуры rel, которая осуществляет формирование выходного списка S2 путем вставки элемента X в начало списка S1.
Сетевые модели Семантические сети
Семантической сетью называется ориентированный граф, с помеченными вершинами и дугами, где вершины соответствуют конкретным объектам, а дугам – отношение между ними.
Граф – это совокупность объектов со связями между ними.
Семантическая сеть может быть представлена в виде , где А – это множество вершин NA – множество имен вершин, В – множество дуг, NB – множество имен дуг.