Логическое программирование

Автор работы: Пользователь скрыл имя, 01 Октября 2013 в 21:27, курсовая работа

Краткое описание

Психология мышления также весьма сдержанно относится к тому, как формируются у человека схемы рассуждений и как он ими пользуется в конкретных ситуациях. Лингвисты, которые много занимались логическими проблемами естественного языка, остались далеки от понимания того, как носитель этого языка строит на нем свои схемы принятия решений.
Цель курсовой работы ― рассмотреть модели рассуждений, их виды и цель их создания.
Актуальность темы моделирования рассуждений представляют интерес для специалистов по интеллектуальным системам и искусственному интеллекту.

Содержание

Введение………………………………………….………………………………..2
Глава 1. Знания и их представление……………………………………………4
Логические модели……………………………………………………5
Продукционные модели………………………………………………7
1.3 Сетевые модели………………………………………………………..8
1.4 Фреймовые модели……………………………………………………9
Глава 2. Моделирование рассуждений……………………………………….12
2.1 Рассуждения на основе прецедентов………………………………13
2.2 Моделирование рассуждений на основе ограничений……….…….15
2.3 Немонотонные модели рассуждений……………………………….16
2.4 Рассуждения о действиях и изменениях……………………………16
2.5 Рассуждения с неопределенностью……………….………………..17
Глава 3. Логическое программирование…………………………………….18
3.1 Арифметика………………………………… ……………………….20
3.2 Запросы……………………………………………………………….21
3.3 Правила………………………………………………………………23
Заключение………………………………………………………………………25
Список использованной литературы………………………………………….26

Вложенные файлы: 1 файл

Моделирование рассуждений в ИИС.doc

— 135.50 Кб (Скачать файл)

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

Иногда рассматриваются  так называемые гибридные байесовские  сети, с вершинами которых связаны  как дискретные, так и непрерывные  переменные. Байесовские сети часто  применяются для моделирования  технических систем.

 

 

Глава 3. Логическое программирование

 

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

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

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

Основные преимущества и особенности логической парадигмы программирования:

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

– данный подход наиболее удобен для решения логических задач;

–логическое программирование требует особого стиля мышления программиста.

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

Наиболее известный пример языка логического программирования – это PGOLOG, был разработан в середине 1970-х во Франции в рамках проекта по пониманию естественного языка.

Язык ПРОЛОГ предназначен для представления  и использования знаний в различных  предметных областях. Математическую основу языка составляет исчисление предикатов первого порядка (ИППП), при этом объекты предметной области, их свойства и связи представляются конъюнкцией правильно построение формул специального вида, называемых дизъюнктами Хорна. Для решения задачи получения новой информации об отношениях предметной области, формулируемой как задача доказательства теоремы, в интерпретаторе системы программирования ПРОЛОГ реализован метод резолюции.[6]

Программа на языке  ПРОЛОГ состоит из утверждений (предложений, дизъюнктов Хорна), составляющих базу фактов и базу правил, к которым  допустимо обращение с запросами. Запросы называются также целевыми утверждениями или просто целями.

Программирование  на ПРОЛОГ состоит из следующих этапов:

  1. Объявление некоторых фактов об объектах и отношениях между ними.
  2. Объявление некоторых правил об объектах и отношениях между ними.
  3. Формулировка вопросов об объектах и отношениях между ними.

Большинство существующих систем программирования ПРОЛОГ являются комбинированными в том смысле, что  допускают как интерпретацию  программ, так и их компиляцию.

 

 

3.1 Арифметика

 

Для описания арифметических операций в языке ПРОЛОГ используются структуры, функторами которых выступают знаки арифметических действий, а компонентами - термы, являющиеся операндами. В качестве операндов могут использоваться числа, переменные и структуры. Последние, в свою очередь, должны представлять собой арифметические выражения. С точки зрения ИППП знаки арифметических операций в таких структурах выступают в качестве функциональных букв.

Арифметические  операции могут также использоваться для вычислений. Например, если имеются  сведения о населении и площади  некоторой страны, то можно вычислить среднюю плотность населения для этой страны. Средняя плотность населения показывает, сколь тесно было бы в данной стране, если бы ее население было равномерно распределено по всей ее территории.

Рассмотрим  следующую базу данных, содержащую сведения о населении и площади некоторых стран в 1976 г. Для представления связи между страной и ее населением будет использоваться предикат нас. В наши дни население обычно характеризуется довольно большими числами. Не все версии Пролога позволяют работать с такими числами. Поэтому будем исчислять население в миллионах: нас (Х, Y) означает, что население страны X составляет примерно «Y миллионов» людей. Предикат площадь будет обозначать связь между страной и ее площадью (в миллионах квадратных километров):

нас(сша,203).

нас(индия, 548).

нас(китай,800).

нас(бразилия,108).

площадь(сша,8).

площадь(индия,3).

площадь(китай,9).

площадь(бразилия,8).

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

Введем предикат плотность(Х, Y), где X – это страна, a Y – плотность населения в  данной стране, и запишем соответствующее  правило на Прологе:

плотность(X,Y):-нас(Х,Р), площадь(Х,А), Y is Р/А.

Данное правило  читается следующим образом:

«Плотность  населения страны X представляется числом Y, если: Население X - это Р, и Площадь X - это A, и Y вычисляется делением Р на A.»

В правиле используется оператор деления '/' введенный в предыдущем разделе. Операция деления выполняется на самом деле как целочисленное деление, сохраняющее только целую часть результата.

 

3.2 Запросы

 

Введенные элементы языка ПРОЛОГ позволяют рассмотреть  более сложные типы запросов к базе фактов. В общем виде запрос (целевое утверждение) формулируется в следующем виде:

 

?-<структура-1>,..., <структура-N>.

 

Здесь каждая структура  представляет собой предикат, возможно содержащий переменные. Причем областью действия переменной является всё утверждение в целом, то есть одна и та же переменная в пределах утверждения означает один и тот же объект. Символ "," (запятая) между предикатами трактуется как логическая связка И, то есть запрос необходимо рассматривать как требование на поиск в базе фактов информации, удовлетворяющей одновременно всем предикатам целевого утверждения. Предикаты, объединенные связкой И в таком запросе, называются подцелями (имея в виду весь запрос целью).

Пример. Пусть необходимо получить из базы фактов информацию о наличии строительных блоков высотой более 2 и менее 5. Тогда соответствующий диалог с интерпретатором ПРОЛОГа будет иметь следующий вид (рисунок 1):

 

Рисунок 1.Диалог

 

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

Выбирается  первый в последовательности запроса  предикат и делается попытка (если этот предикат не встроенный) согласовать его с базой фактов, для чего выполняется сопоставление этого предиката последовательно со всеми утверждениями базы до тех пор, пока оно не даст положительного результата. Если этого не происходит, интерпретатор выдает в качестве ответа No. В ходе согласования возможна конкретизация переменных значениями. В нашем примере на этом этапе будет выполнено согласование предиката block(F,H) с третьим утверждением базы фактов, при этом переменная F получит значение cyl, переменная Н - 5, а маркер будет установлен на утверждении 3.

Удовлетворив  один предикат (подцель) запроса, интерпретатор  переходит к соседнему справа (у нас это H>2). Этот предикат - встроенный, для его проверки нет необходимости  обращаться к базе фактов, поскольку интерпретатор в состоянии сам установить его истинность (5>2). Далее следует проверка (попытка "согласовать") последнего предиката в запросе, которая заканчивается неудачей. Здесь включается в работу механизм бэктрекинга (возврата), который заставляет интерпретатор, передвигаясь по предикатам целевого утверждения справа налево, вновь согласовывать эти предикаты, но уже на новых утверждениях базы фактов. Если попытка пересогласовать какой-либо предикат (подцель) интерпретатору удается, то он продолжает рассмотрение подцелей от данной в обычном порядке (слева направо). В нашем примере бэктрекинг достигнет предиката block(F,H), это приведет к расконкретизации переменных F и H и поиску нового утверждения, согласующегося с ним, начиная со следующего после отмеченного маркером (то есть начиная с четвертого) факта.

Этот (четвертый) факт согласуется с подцелью, F получает значение cyl, H - 3, и это значение H удовлетворяет двум оставшимся в  запросе предикатам. Таким образом, будет найден первый ответ на запрос. Ввод пользователем символа ";" инициирует механизм бэктрекинга и, следовательно, дальнейший поиск с использованием рассмотренной схемы.

 

3.3 Правила

 

Правило представляет собой дизъюнкт Хорна, содержащий один положительный литерал и несколько  отрицательных, и записывается следующим образом:

 

<структура-0>:- <структура-1>,..., <структура-N>.

 

Здесь каждая структура  представляет собой предикат, областью действия переменных является все правило. Предикат, стоящий слева от атома ":-", называется заголовком правила, все остальные предикаты образуют его тело. Правило может трактоваться следующим образом: предикат, являющийся заголовком правила, истинен (удовлетворен) тогда, когда истинен каждый из предикатов тела правила.

Правила в Прологе  используются для описания определений, запросов к базам данных, а также обращений к другим правилам и процедурам. Пример записи правил представлен на рисунке 2.

 

Рисунок 2.Пример записи правил

 

Наличие правил в программах на языке ПРОЛОГ позволяет  интерпретатору находить ответ на запросы, не касающиеся непосредственно содержимого базы фактов.

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

• Я пользуюсь  зонтом, если идет дождь.

• Джон покупает вино, если оно дешевле, чем пиво.

В Прологе правило  состоит из заголовка и тела правила. Заголовок и тело соединяются  с помощью символа:-, который состоит из двоеточия: и тире -. Символ ':-' читается если.

Заголовок правила  описывает факт, для определения  которого предназначено это правило. Тело правила описывает конъюнкцию целей, которые должны быть последовательно  согласованы с базой данных, для  того чтобы заголовок правила был истинным.

 

 

Заключение

 

Анализируя  историю ИИ, можно выделить такое  обширное направление как моделирование  рассуждений. Долгие годы развитие этой науки двигалось именно по этому  пути, и теперь это одна из самых  развитых областей в современном  ИИ. Моделирование рассуждений подразумевает создание символьных систем, на входе которых поставлена некая задача, а на выходе требуется её решение.

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

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

Рассмотрев  данную темы, я пришла к выводу, что моделирование рассуждений способствует облегчению труда при создании программы на основе знаний. Так как при решение какой-либо проблемы я искала различные пути решения, то есть я рассуждала. Но бывают случаи, что задача сложная и представляет собой большой труд.

Таким образом, цели данной курсовой работы были достигнуты, а поставленные задачи решены и все вопросы рассмотрены.

 

Список использованной литературы

 

  1. Андрейчиков, А.В. Интеллектуальные информационные системы: учебник / А. В. Андрейчиков, О.Н. Андрейчикова. – М.: Финансы и статистика, 2007. – 250 с.
  2. Астахова, И.С. Системы искусственного интеллекта. Практический курс: учеб. пособие / И.С. Астахова, А.С. Потапов, В.А. Чулюков. – М.: Бином, Лаборатория знаний, 2008. – 276 с.
  3. Башмаков А.И., Башмаков И.А. Интеллектуальные информационные технологии: Учебное пособие. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2008. – 304 с.
  4. Гаврилова, Т.А. Базы знаний интеллектуальных систем: учебник / Т.А. Гаврилова. – СПб.: Питер, 2008.
  5. Гаскаров, Д.В. Интеллектуальные информационные системы: учебник / Д.В. Гаскаров. – М.: Высшая школа, 2008.
  6. Девятков, В.В. Системы искусственного интеллекта: учеб. пособие для студентов вузов / В.В. Девятков. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2010. – 254 с.
  7. Золотов С.И. Интеллектуальные информационные системы: учебное пособие / С.И. Золотов – Воронеж: Научная книга, 2007. – 140 с.
  8. Избачков, Ю.С. Информационные системы: учеб. пособие для ВУЗов / Ю.С. Избачков, В. Н. Петров. – СПб.: Питер, 2008.
  9. Люгер Джордж Ф. Искусственный интеллект: стратегии и методы решения сложных проблем, 4-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2008. – 864 с.
  10. Пескова, С.А. Сети и телекоммуникации: учебное пособие для ВУЗов России / С.А. Пескова, А.Н. Волков, А.В. Кузин. – М.: Академия, 2007.
  11. Путькина, Л.В. Интеллектуальные информационные системы: учебное пособие / Л.В. Путькина, Т.Г. Пискунова. – СПб.: СПбГУП, 2008.
  12. Рассел С. Искусственный интеллект: современный подход. – М.: Издательский дом «Вильямс», 2006.– 258 с.
  13. Тельнов, Ю.Ф. Интеллектуальные информационные системы в экономике: учеб. пособие / Ю. Ф. Тельнов. – М.: Синтег, 2008.
  14. Ясницкий Л.Н. Введение в искусственный интеллект: учебное пособие / Л.Н. Ясницкий. – М.: Академия, 2008.

Информация о работе Логическое программирование