БАЗЫ ЗНАНИЙ
Занятие 1.
Логическая модель знаний
1. Логическая модель знаний
Логическая модель знаний состоит из фактов и
правил.
Факт (от лат. factum – сделанное, свершившееся) — это частное утверждение.
Например: Земля – планета Солнечной системы.
Правило —
это утверждение общего характера, справедливое для многих объектов.
Например: ЕСЛИ планета движется вокруг Солнца, ТО это планета
Солнечной системы.
В логической
модели знаний факты представляют собой
декларативные знания (я знаю, что…), а правила – процедурные знания (я знаю, как…). Поэтому с помощью правил можно вывести новое знание.
Логическая модель
знаний положена в основу языка логического программирования ПРОЛОГ.
2. Понятие языка логического программирования ПРОЛОГ
Язык Пролог (Prolog – от Programmation en Logique) разработан в 1973 году группой исследователей из
Марсельского университета под руководством Алана Колмероэ для создания систем
искусственного интеллекта. Стандарт языка
Пролог – ISO13211:1995.
База знаний на Прологе состоит из базы
данных и правил.
База данных на
Прологе – это совокупность фактов. В
процессе работы ее можно корректировать: добавлять факты, удалять и изменять
факты, утратившие актуальность. База данных – обязательная составляющая любой
базы знаний.
Факт на Прологе записывается в виде предиката. Предикат – конструкция
вида:
имя(аргументы).
Предикат
описывает некоторое отношение между аргументами или свойство (если аргумент
один).
Пример 1. Факт «Сидоров – учитель» записывается в виде предиката следующим образом:
учитель ("Сидоров").
или
учитель (сидоров).
Здесь: имя предиката – учитель и один аргумент – «Сидоров» (или сидоров).
Этот предикат описывает
свойство объекта Сидоров.
Пример 2. Факт «Мария знает английский язык» записывается в виде предиката следующим
образом:
знает(«Мария»,английский_язык).
или
знает(мария,английский_язык).
Здесь: имя предиката – знает и два аргумента –
«Мария» (или мария) и английский язык
Этот предикат описывает отношение между объектами Мария и английский язык.
Пример 3. Факт «Учитель вручает Марии альбом» записывается в
виде предиката следующим образом:
вручает(учитель,«Мария»,альбом).
или
вручает(учитель,мария,альбом).
Здесь: имя предиката – вручает и три аргумента –
учитель, «Мария» (или мария) и альбом.
Этот предикат описывает отношение между объектами учитель, Мария и альбом.
Последовательность аргументов в скобках связана со
смыслом факта и поэтому не перестановочна.
При записи фактов необходимо
помнить:
– имена предикатов и аргументов записываются в
именительном падеже;
– имя предиката начинается со строчной буквы;
– пробелы в записи предиката
недопустимы;
– символьные константы в списке
аргументов начинаются со строчной буквы или записываются в кавычках (в этом
случае первой может быть заглавная буква);
– в символьных константах в
качестве разделителя используется символ «_» —
подчеркивание;
– числовые константы только
целые;
– запись предиката (факта)
заканчивается точкой.
Правило
на Прологе – это предложение
вида:
<голова
правила>:–<тело правила>.
Значок «:–» читается «ЕСЛИ». Простейшее правило
состоит из двух предикатов. Предикат, записанный слева от «:–», называется заголовком или головой правила. Предикат, стоящий
после знака «:–», называется телом
правила. Всякое правило обозначает следующее:
ЕСЛИ истинно тело правила, ТО истинна голова правила.
Переменные величины, присутствующие в правилах, обозначают прописными буквами.
Пример 4. Факт «сын» определяется через факт «отец» правилом:
сын(А,В):–отец(В,А).
Здесь: А и В – переменные величины, принимающие в
качестве значений любые мужские имена.
Это правило означает: ЕСЛИ В – отец А, ТО А является сыном для В.
Правило на Прологе
определяет новый предикат через предикаты, определенные ранее. Тело правила – это
условие (посылка) истинности головы правила, т.е. ЕСЛИ истинно тело правила, ТО
истинна голова правила. Переменная может быть заменена неопределенным местоимением:
кто-то, что-то, некто, нечто и т.п.
3.
Создание простой базы знаний.
Создадим базу знаний
«Знатоки», которая состоит из
следующих фактов и правил, выраженных предложениями на естественном языке:
Мария
знает английский язык.
Мария
знает информатику.
Мария
знает музыку.
Иван
знает то же, что и Мария.
Первые три предложения - это
факты. Четвертое – правило.
Записываем факты в виде
предикатов на Прологе:
знает(мария,английский).
знает(мария,информатика).
знает(мария,музыка).
Правило приводим к виду:
если Мария знает
что-то, то Иван знает то же самое.
Заменим неопределенные местоимения на переменную Х и
запишем это правило на Прологе:
знает(иван,X):–знает(мария,X).
Итак, база знаний "Знатоки" имеет вид:
Факты
знает(мария,английский).
знает(мария,информатика).
знает(мария,музыка).
Правила
знает(иван,Х):–знает(мария,Х).
База знаний создается для того, чтобы можно
было получать из нее информацию в форме ответов на различные вопросы. В
Прологе вопрос к базе знаний называется целью.
4. Цели на Прологе.
К базе знаний может быть сформулировано два вида целей (вопросов,
запросов):
1. подтвердить справедливость факта; если факт содержится в
базе знаний или выводится (доказывается) с использованием базы
знаний, то в результате получается ответ «да», иначе получается ответ
«нет».
2. перечислить все значения переменных, указанных в запросе, удовлетворяющих
фактам и правилам базы знаний.
Перед целью будем ставить знак вопроса (?).
Пример 5. Вопрос первого вида (типа) к базе знаний «Знатоки» на естественном языке: «Знает ли
Иван английский?»
На Прологе этот вопрос – цель первого вида и формулируется
так:
?
знает(«Иван»,английский).
Получим ответ: да.
Пример 6. Вопрос второго вида (типа) к базе знаний «Знатоки» на естественном языке: «Знают ли Мария
и Иван английский?» (или «Кто из них знает английский»?).
На Прологе этот вопрос – цель второго вида и формулируется
так:
?
знает(Х,английский).
Получим ответ: Х=мария
Х=иван.
Задания для самостоятельного
выполнения
1. Определите, какие из утверждений являются фактами, а
какие – правилами:
1.1. Иван Бобров имеет оценку «пять» по алгебре;
1.2. Алексей Вяткин имеет оценку «пять» по
истории;
1.3. Сергей Кротов имеет оценку «четыре» по геометрии;
1.4. ученик, имеющий по предмету оценку
«пять» –
отличник;
1.5. ученик, имеющий по истории оценку «пять» –
историк;
1.6. ученик, имеющий по предмету оценку «двойку» –
двоечник;
1.7. ученик, имеющий по алгебре оценку «четыре»
– математик;
1.8. ученик, имеющий по геометрии оценку
«пять» – математик;
1.9. ученик, имеющий по геометрии оценку
«четыре» – математик;
1.10. ученик, имеющий по алгебре оценку «пять» –
математик.
1.
Используя факты и правила из второго задания,
разработайте базу знаний с одним правилом (по Вашему выбору).
2.
Для одной из
предметных областей (погода, спортивные соревнования, математика, физика,
биология, география и т.п.) сформулируйте несколько фактов и правил, т.е.
разработайте простейшую базу знаний.
Занятие 2. Основы
работы с системой программирования Turbo
Prolog
Цели занятия:
–
познакомиться с
системой Turbo Prolog 2.0. для IBM PC;
–
создать
простейшую компьютерную базу знаний;
–
научиться
работать с компьютерной базой знаний.
Система программирования Turbo Prolog
Одна из самых распространенных реализаций
системы программирования на Прологе, используемая на IBM PC, —
система Turbo Prolog 2.0. Она была создана в
Символы (алфавит) Turbo Prolog:
– прописные буквы латинского алфавита от А до Z;
– строчные буквы латинского алфавита от а до z;
– цифры от 0
до 9;
– специальные символы ? - : , () «»
(остальные специальные символы используются в особых случаях, которые здесь не
рассматриваются).
Правила образования имен. Имя — последовательность букв и/или цифр,
начинающаяся с буквы. Имена предикатов и объектов выбираются произвольно,
но так, чтобы наилучшим образом отражать смысл тех понятий, которые они
представляют. Имена предикатов и объектов должны начинаться со строчных букв.
Например: mary, informatics.
Имена переменных величин начинаются с прописной
буквы. Например: X, What. По смыслу переменная может
быть заменена на неопределенное местоимение: кто-то, что-то, некто, нечто и
т.п.
Стандартные типы Turbo Prolog (таблицу переписываете в тетрадь):
Типы данных |
Обозначение |
Диапазон значений |
Примеры |
Целое число |
integer |
от –32767 до 32767 |
– 24 65 |
Действительное число |
real |
от –1Е–307
до 1Е308 |
1.25Е27 –56478 |
Строка |
string |
Последовательность символов |
“Home”
”Flower” |
Символические имена |
symbol |
1. Имя: первый символ – строчная латинская буква. |
home know
mary algebra |
2. Последовательность любых символов,
заключенная в кавычки. |
“home” “know” “ mary ” “ algebra
” |
Описание базы знаний на Turbo Prolog в общем случае
имеет вид:
predicates
< описание предикатов >.
clauses
< факты и правила >.
С ключевого слова predicates (утверждения) начинается раздел описания
предикатов. В этом разделе необходимо указать имена предикатов, количество и
типы аргументов (объектов).
Например,
факт know (знает) должен быть представлен следующим
описанием:
predicates
know(symbol,symbol)
Это описание означает, что оба аргумента
предиката know относятся к
символьному типу — symbol.
С ключевого слова clauses (предложения, пункты) начинается раздел
описания фактов и правил.
Например: факт знает(мария,информатику)
в разделе описания утверждений
должен иметь вид:
clauses
know(mary,informatics).
Это описание означает, что аргументам
предиката know
присвоены значения mary и informatics.
Описание базы знаний «Знатоки» на Turbo Prolog и работа с ней: (предыд. занятие)
predicates
know(symbol,symbol).
clauses
know(mary,informatics).
know(mary,english).
know(mary,algebra).
know(mary,geometry).
know(john, What) :– know(mary, What).
Аргумент What записывается с прописной буквы
потому, что является переменной величиной.
Среда Turbo Prolog
После запуска программы рrolog.ехе в операционной системе Windows, на экране монитора появляется окно (рис. 1).
Рис. 1. Вид экрана монитора после запуска
программы рrolog.ехе
Нажмите клавишу Esc, чтобы отменить заставку и
получить доступ к среде.
Среда системы Turbo
Prolog:
1.
меню:
1.1.
Files – операции
с файлами:
1.1.1.
Load –
загрузить файл с диска;
1.1.2.
New file – создать новый
файл;
1.1.3.
Save –
сохранить файл под старым именем;
1.1.4.
Write to – сохранить файл под
новым именем;
1.1.5. Quit – выйти из системы;
1.2.
Edit –
войти в окно редактирования;
1.3.
Run – начать
работу базы знаний (исполнения программы) с использованием окна диалога;
1.4.
Compile
– компилировать программу (описание базы знаний);
1.5. Options – опции;
1.6. Setup – установки;
2.
окна:
2.1.
Editor
– ввод и редактирование программы (описания базы знаний);
2.2.
Dialog
– диалог системы с пользователем в процессе исполнения программы;
2.3.
Message – сообщения
системы;
2.4.
Trace – трассировка
исполнения программы;
3.
нижнее
меню.
Клавишей →
выберите пункт меню Edit и нажмите клавишу Enter. Вы вошли в окно редактирования
и, следовательно, выбрали режим редактирования. Вид экрана монитора после
выбора режима редактирования представлен на рис. 2.
Рис. 2. Вид экрана монитора после выбора режима
редактирования.
Обратите внимание на то, что
окно редактирования выделено двойной рамкой, т.е. оно активное.
Введите с клавиатуры описание
базы знаний «Знатоки» (программу).
Нажмите клавишу Esc, чтобы выйти в меню.
Клавишей → выберите пункт меню Run и нажмите клавишу Enter. Вы вошли в режим диалога с системой Turbo Prolog. Вид экрана
монитора после выбора режима исполнения представлен на рис. 4.
Рис. 4. Вид экрана
монитора после выбора режима исполнения
Обратите внимание на окно Dialog, выделенное двойной рамкой. Система Turbo Prolog вывела приглашение
Goal:
(Цель) и ждет от
пользователя запрос.
Пользователь набирает с клавиатуры текст
запроса, например, первого вида (рис. 5.):
Рис. 5. Пользователь набрал
текст запроса первого вида.
Затем пользователь вводит запрос, нажав
клавишу Enter. Система Turbo Prolog, моделируя человеческую логику, ищет ответ на запрос. Получив ответ,
система выводит на экран ответ и приглашение Goal: и ждет от пользователя следующий запрос (рис. 6):
Рис. 6. Вид экрана монитора после завершения ответа на
запрос
Система ответила
утвердительно: Yes, т. е. Иван знает геометрию.
Пользователь набирает с клавиатуры текст
запроса, например, второго вида (рис. 7.):
Рис. 7. Пользователь набрал
текст запроса второго вида.
Затем пользователь вводит запрос, нажав
клавишу Enter. Система Turbo Prolog, моделируя человеческую логику, ищет ответ на запрос. Получив ответ,
система выводит на экран ответ и приглашение Goal: и ждет от пользователя следующий запрос (рис. 8):
Рис. 8. Вид экрана монитора после завершения ответа на
запрос
Система получила два значения
переменной Х: mary и john. Это соответствует истине. 2 Solutions означает два решения.
Завершения работы с системой.
Для завершения работы нужно:
1. нажать клавишу Esc,
чтобы выйти в меню;
2. выберите клавишей ←
пункт меню Files и нажмите
клавишу Enter;
3. выберите клавишами ↓, ↑
Quit и нажмите
клавишу Enter.
Вы завершили работу с системой Turbo Prolog.
Задания для самостоятельной
работы.
2. Запишите факты и правила на Турбо Прологе:
2.1. Иван Бобров имеет оценку «пять» по алгебре;
2.2. Алексей Вяткин имеет оценку «пять» по
истории;
2.3. Сергей Кротов имеет оценку «четыре» по геометрии;
2.4. ученик, имеющий по предмету оценку
«пять» –
отличник;
2.5. ученик, имеющий по истории оценку «пять» –
историк;
2.6. ученик, имеющий по предмету оценку «двойку» –
двоечник;
2.7. ученик, имеющий по алгебре оценку «четыре»
– математик;
2.8. ученик, имеющий по геометрии оценку
«пять» – математик;
2.9. ученик, имеющий по геометрии оценку
«четыре» – математик;
2.10. ученик, имеющий по алгебре оценку «пять» –
математик.
3. Используя факты
и правила из первого задания, разработайте базу знаний с одним правилом (по
Вашему выбору) на Турбо Прологе.
3. Введите в компьютер базу знаний,
разработанную Вами при выполнении задания на предыдущем занятии.
Занятие 3. Использование
логических связок в Прологе
Выводы, получаемые Прологом, всегда являются частью всех
возможных логически правильных ответов на заданный запрос.
Операция логическое «и» (конъюнкция) в Прологе обозначается запятой, а
операция логическое «или»
(дизъюнкция) - точкой с запятой.
Например,
grandmather(X,Z):-mather(X,Y),
mather(Y,Z).
«Х является бабушкой для Z, если Х является мамой для Y и Yявляется мамой для Z»
sister(Y,Z):-mather(X,Y),
mather(X,Z).
«Y сестра Z, если Х мать для Y и Yмать для Z»
potomok(Y,X):-mather(X,Y);
grandmather(X,Y).
«Y потомок Х,
если Х мать Y или Х бабушка Y»
Вопросы на
оценку «три»:
Сформировать следующие правила:
1. Студенты допускаются
к экзамену, если они сдали зачеты и защитили курсовой проект.
2. Беру с собой зонт,
если на улице пасмурно или идет дождь.
3. Лена и Лариса
сокурсницы, если они погодки и учатся в университете.
Задания для системы искусственного интеллекта.
Уровень
А.
№ 1
База знаний «Золотой ключик»:
взрослый(папа_карло,шарманщик).
взрослый(джузеппе,
столяр).
взрослый(карабас_барабас,хозяин_театра). взрослый(дуремар,продавец_пиявок).
животное(алиса,лиса).
животное(артемон,собака_пудель).
животное(базилио,кот).
животное(тортила,черепаха).
кукла(буратино). кукла(пьеро).
кукла(мальвина). кукла(арлекин).
плохой(карабас_барабас). плохой(дуремар).
хороший(Х):-взрослый(Х),not(плохой(Х)).
Указать ответы на следующие вопросы:
?-взрослый(Х,_). — Кто из персонажей
являются взрослыми?
?-взрослый(папа_карло,Х). — Кем был папа
Карло?
?-кукла(Х). — Кто из персонажей являются
куклами?
?-животное(У,лиса). — Как звали лису?
Уровень
В.
№ 1
Даны результаты сдачи экзаменов для группы
из пяти учеников:
фамилия |
алгебра |
геометрия |
история |
|||
Антонов |
5 |
5 |
5 |
|||
Бобров |
5 |
3 |
2 |
|
||
Вяткин |
5 |
5 |
5 |
|
||
Кротов |
2 |
3 |
3 |
|
||
Соснин |
4 |
4 |
4 |
|
||
Построить базу знаний о результатах
экзаменов, определив в ней следующие правила:
отличник (человек, у которого по всем
предметам пятерки);
двоечник (есть хотя бы одна двойка);
математик (по алгебре и по геометрии учится
на 4 и 5).
Получить ответы на следующие вопросы:
Является ли Вяткин отличником?
Определить всех отличников.
Определить всех двоечников.
Является ли Соснин математиком? Определить всех неуспевающих по истории.
№2
Сформировать базу знаний «Страны». Данные приведены в
таблице.
Страна |
Население (человек) |
Площадь (кв.км.) |
Россия |
145 млн 100 тыс |
17 075 000 |
Украины |
49 495 млн. |
603 700 |
США |
281 421 906 |
9 629 091 |
Англия |
2,5 млн. |
129 634 |
Уэльса |
|
20 637 |
Шотландии |
|
77 179 |
Индия |
1,06 миллиард |
3 287 263 |
Северной Ирландии |
1 200 000 |
13 438 |
Сформировать правило для ответа на вопрос: вывести
название большой страны (критерий: население превышает 200 тыс человек и
площадь превышает 5 млн.)
№ 3
Сформировать базу знаний.
Беседуют 3 собеседника: Белокуров, Рыжов, Чернов. Брюнет
сказал: «Один из нас блондин, другой брюнет, третий рыжий, но ни у кого цвет
волос не соответствует фамилии.» Какой цвет волос у каждого из собеседников?