3. Представление знаний.

Продукционные системы

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

«ЕСЛИ , ТО »

Условия и следствия - это простые предложения естественного языка. Такие формализмы называют продукционными. Эти правила похожи на условные операторы IF-THEN языков программирования, однако совершенно по другому интерпретируются.


(ЕСЛИ на лампочку подано напряжение

и лампочка не горит

то лампочка перегорела)

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

Фреймы.

Это частный случай семантических сетей. Это метод представления знаний, который связывает свойства с узлами , представляющими понятия и объекты. Свойства описываются атрибутами (называемыми слотами) и их значениями.

[f( , , ...)]

где f - имя фрейма; - слот; v - имя слота; g - его значение.


Использование фреймов с их атрибутами и взаимосвязями позволяет хранить знания о предметной области в структурированном виде, представлять в БЗ абстракции и аналогии. Система знаний представляется в виде сети под фреймом или субфреймом. Каждый из фреймов отражает определенные свойства, понятия, т. е. позволяет удовлетворять требованию структурированности и связности.

С операциями присваивания значений фреймам и другими операциями можно сочетать сложные побочные действия и взаимовлияния.

Одной из важнейших концепций формализма фреймов является наследование. Можно дать указание, что если значение слота в одном из фреймов не задается, то фрейм должен унаследовать умалчивамое значение этого слота из фрейма более высокого уровня. Наследование фреймами значений слотов будет осуществляться в том случае, если в фрейме будет присутствовать слот РАЗНОВИДНОСТЬ, в котором содержится имя другого фрейма.

Используются и другие связанные с конкретным применением способы представления, но они менее распространены и, как правило, не годятся для использования в общем случае.

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


Пример1.

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


;EXSIS.LSP - пример представления знаний в виде продукций


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

(defstruct prav имя условия выводы) ;определение структурного типа PRAV


;создание структур типа PRAV и присваивание их переменным PRAV1 ... PRAV5

(setq prav1 (make-prav :имя 'prav1 ;присвоение полю имя значения

:условия '((жив имеет шерсть))

:выводы '((жив млекопитающее))))


(setq prav2 (make-prav :имя 'prav2

:условия '((жив кормит детенышей молоком))

:выводы '((жив млекопитающее))))


(setq prav3 (make-prav :имя 'prav3

:условия '((жив имеет перья))

:выводы '((жив птица))))


(setq prav4 (make-prav :имя 'prav4

:условия '((жив умеет летать)

(жив несет яйца))

:выводы '((жив птица))))


(setq prav5 (make-prav :имя 'prav5

:условия '((жив ест мясо))

:выводы '((жив хищник))))


(setq *правила* '(prav1 prav2 prav3 prav4 prav5) ;список, хранящий правила системы


(defun проверь-правило (правило)

;проверяет применимо ли правило

(подмнож (prav-условия правило) *факты*))


(defun подмнож (подмнож множ)

;проверяет, является ли множ подмнож

(equal подмнож (intersection1 подмнож множ)))


(defun добавь-выводы (правило)

;расширяет список фактов правилами вывода

(do ((выводы (prav-выводы правило))) ;инициализация начального значения

((null выводы) *факты*) ;условие окончания

(if (member (car выводы) *факты*) nil ;проверка - входит «голова»

(progn (prin1 "Согласно правилу:") ;выводов в список фактов

(prin1 (prav-name правило))

(push (car выводы) *факты*)))

(setq выводы (cdr выводы)))) ;шаг изменения


Для проверки работоспособности программы необходимо выполнить следующую последовательность команд:

MuLisp-87.com Common.lsp - Загрузка системы

(load structur.lsp) - подключение приложения для работы со структурами

(load rash.lsp) - подключение расширения, которое мы рассмотрим позже

(load exsis.lsp) - подключение тестируемой программы


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

(SETQ *факты* ‘(начальные факты))

где начальные факты - условия из какого-либо правила


Пример2.

Пример представления знаний с помощью фреймов. В примере упоминаются три фрейма - МЕРОПРИЯТИЕ, СОБРАНИЕ и СОБРАНИЕ1. Фрейм МЕРОПРИЯТИЕ - наиболее общий, фрейм СОБРАНИЕ - более конкретный, описывающий вид МЕРОПРИЯТИЯ, а фрейм СОБРАНИЕ1 - наиболее уточненный фрейм, описывающий конкретное СОБРАНИЕ. Фрейм СОБРАНИЕ называется субфреймом фрейма МЕРОПРИЯТИЕ, а СОБРАНИЕ1 - субфрейм фрейма СОБРАНИЕ.


(собрание имя фрейма

(разновидность (мероприятие)) имена и значения слотов

(время (среда 14.00)) (умалчиваемые значения

(место (зал заседаний)) наследуются субфреймами)

)


(собрание1

(разновидность (собрание))

(присутствуют ((Вася) (Петя) (Маша)))

)


Реализация фрейм-программы на Лиспе.


;EXSIS2 - реализация фрейм-программы на Лиспе.

(setf (get ‘собрание ‘разновидность) ‘мероприятие)

(setf (get ‘собрание ‘время) ‘(среда 14.00))

(setf (get ‘собрание ‘место) ‘(зал заседаний))

(setf (get ‘собрание1 ‘разновидность) ‘собрание)

(setf (get ‘собрание1 ‘присутствуют) ‘((Вася) (Петя) (Маша)))


;функция - определяющая наследуемые свойства

(defun наследование (фрейм имя_слота)

(cond ((get фрейм имя_слота)) ;имеется во фрейме данный слот?

;если да, то вернуть его значение.

(t (cond ((get фрейм ‘разновидность) ;иначе - проверить наличие

;слота разновидность. В случае его присутствия - рекурсивно применить

;функцию к верхним фреймам

(наследование (get фрейм ‘разновидность) имя_слота))

(t nil)))))


4. Задания к лабораторной работе.

1.Переведите следующие списочные записи в точечные:

(w (x));

((w) x);

(nil nil nil);

(v (w) x (y z));

((v w) (x y) z);

(((v) w x) y z).


2. Переведите следующие точечные записи в списочные:

(a . (b . (c . nil)));

((a . nil) . nil);

(nil . (a . nil));

(a . ((b . (c . nil)) . ((d . (e . nil)) . nil)));

(a . (b . ((c . (d . ((e . nil) . (nil))) . nil)));

((a . (b . nil)) . (c . ((d . nil) . (e . nil)))).


3. Напишите функцию:

от трех аргументов, аналог встроенной функции pairlis, которая строит список пар;

от двух аргументов, аналог встроенной функции assoc, которая ищет пару, соответствующую ключу.


4. Напишите функцию, аналог функции putassoc которая физически изменяет а-список (putassoc1 ключ данные а-список).


5. Расширьте возможности программы EXSIS.LSP:

напишите функцию, пополняющую базу знаний новыми знаниями;

напишите функцию, удаляющую ненужные знания;

расширьте базу знаний;

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


6. Подобным образом измените программу EXSIS1.LSP.


7. Разработайте базу знаний и правила базы знаний РАСПИСАНИЕ ЗАНЯТИЙ используя:

формализм фреймов;

формализм продукций.


5. Вопросы.

1. В чем особенности точечной нотации?

2. Назовите структурированные типы данных, их особенности?

3. Способы представления знаний?

4. Их достоинства и недостатки?


Лабораторная работа № 6.

Тема: Изучение учебной версии языка Лисп - dlisp. Расширение библиотеки функций dlisp.

Цель: Ознакомиться с учебной версией Лиспа - dlisp. Изучить ее возможности и особенности. Расширить библиотеку функций dlisp.


Интерфейс пользователя.

Функции, поддерживаемые dlisp.

Расширение библиотеки функций dlisp.

Задание к лабораторной работе.

Вопросы.

Информация о работе «ЛИСП»
Раздел: Информатика, программирование
Количество знаков с пробелами: 170298
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
14593
2
12

... цифр с требуемым числом разрядов и, таким образом, запомнить любое самое большое число данной разрядности. Целью данной курсовой работы является ЛИСП-реализация конечных автоматов.1. Постановка задачи Конечный автомат – автомат, проверяющий допустимость слова на ленте, и возвращающий True / False (в данном случае Correct / Incorrect). Конечный автомат может двигаться по ленте только в одном ...

Скачать
16057
6
13

... При работе пользователя с базой данных над ее содержимым выполняются следующие основные операции: выбор, добавление, модификация (замена) и удаление данных. Целью данной курсовой работы является ЛИСП – реализация основных операций над базами данных. 1 Постановка задачи Требуется разработать программу, реализующую основные операции над базами данных: выбор, добавление, модификация и удаление ...

Скачать
14282
0
14

... новых рынков, биржевой игре, оценки политических рейтингов, выборе оптимальной ценовой стратегии и т.п. Появились и коммерческие системы массового применения. Целью данной курсовой работы является ЛИСП – реализация основных операций над нечеткими множествами. 1.Постановка задачи Требуется реализовать основные операции над нечеткими множествами: 1)   содержание; 2)   равенство; 3)   ...

Скачать
11806
0
10

... метода Ньютона на случай мнимых корней полиномов степени выше второй и комплексных начальных приближений. Эта работа открыла путь к изучению теории фракталов. Целью данной курсовой работы является Лисп – реализация нахождения корней уравнения методом Ньютона. 1. Постановка задачи Дано уравнение: . Требуется решить это уравнение, точнее, найти один из его корней (предполагается, что ...

0 комментариев


Наверх