Prolog – язык разработки систем, основанных на знаниях

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Информационные технологии
  • 29 29 страниц
  • 10 + 10 источников
  • Добавлена 29.03.2015
1 000 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Введение 3
1 История языка Prolog 5
1.1 Разработка языка Prolog 5
1.2 Основные тенденции в развитии языка Prolog 6
1.3 История версий языков Turbo Prolog, PDC Prolog и Visual Prolog 7
2 Общие сведения о языке Prolog 9
2.1 Общие сведения о языке Prolog 9
2.2 Понятие факта, правила, запроса и процедуры 10
2.3 Механизм сопоставления и поиска с возвратом 12
2.4 Область применения языка Prolog 15
3 Prolog – язык разработки систем, основанных на знаниях 20
3.1 Системы, основанные на знаниях 20
3.2 Логические модели и логическое программирование 21
3.3 Простейшие конструкции языка предикатов 22
3.4 Предикатные формулы 23
3.5 Определение правильно построенной формулы 25
3.6 Логический вывод 26
Заключение 28
4 Список литературы 29
Фрагмент для ознакомления

Логические модели и логическое программированиеОдним из способов представления знаний в информационных системах является язык математической логики, позволяющий формально описывать понятия предметной области и связи между ними.В отличие от естественного языка, который очень сложен, язык логики предикатов использует только такие конструкции естественного языка, которые легко формализуются. Логика предикатов – это языковая система, которая оперирует с предложениями на естественном языке в пределах синтаксических правил этого языка. Язык логики предикатов использует слова, которые описывают [9]:понятия и объекты изучаемой предметной области;свойства этих объектов и понятий, а также их поведение и отношения между ними.В терминах логики предикатов первый тип слов называется термами, а второй тип слов – предикатами. Термы представляют собой средства для обозначения интересующих нас индивидуумов, а предикаты выражают отношения между различными индивидуумами, которые обозначаются с помощью термов.Логическая модель представляет собой множество предложений, выражающих различные логические свойства именованных отношений.Логическое программирование – это подход, при котором пользователь описывает предметную область совокупностью предложений в виде логических формул, а кибернетическое устройство, манипулируя этими предложениями, строит необходимый для решения задач вывод.Простейшие конструкции языка предикатовОдной из простейших конструкций логики предикатов является терм. Терм – это знак (символ) или комбинация знаков (символов), являющаяся наименьшим значимым элементом языка. К термам относятся константы, переменные и функции. Константы обозначают конкретные объекты реального мира. Переменные используются для обозначения некоторого из возможных объектов реального мира или их совокупности. Обычно их обозначения начинаются с заглавной буквы.Структуры – представляют собой последовательность разделенных запятыми констант или переменных, которые заключены в круглые скобки и следуют за функциональным символом (функтором). Функторы обозначают операторы, которые после воздействия на объект возвращают некоторое значение. Пример записи структур: сумма (1,2); +(1,2); удвоить (X), а примерами работы с ними и их унификации могут быть:?- +(2, 3) = 2 + 3.true.?- +(2, *(5,6)) = +(X, *(5X = 2,Y = 6.?- Resultis +(2, *(5,6)).Result =32 ?Предикат – это логическая функция, которая выражает отношение между своими аргументами и принимает значение «истина», если это отношение имеется, или «ложь», если оно отсутствует. Заключенная в скобки последовательность из nтермов, перед которой стоит предикатный символ, называется n-местным (или n-арным) предикатом, который принимает значения «истина» или «ложь» в соответствии со значением термов, являющимися его аргументами. Примеры записи предикатов:является ( ласточка, птица ).отец (X, «Петр»).Такого типа предикаты получили название атомарных предикатов и соответствуют наиболее простым предложениям разговорного языка – нераспространенным предложениям. В обычном человеческом языке из нераспространенных предложений с помощью соединительных союзов, местоимений, и других частей речи строят более сложные конструкции – сложные предложения.Предикатные формулыВ логике предикатов сложным предложениям естественного языка соответствуют предикатные формулы. Предикатные формулы образуются из атомарных предикатов с использованием логических связок. Эти связки еще называют пропозициональными и выделяют пять типов таких связок, которые приведены в табл. 6.1.Таблица 3.1.Обозначение и назначение логических связокОбозначение–1, илиА; или vО или ~Читается, как ...НЕИИЛИЕсли ..., То , Из ... следуетТогда и только ...ОперацияотрицаниеконъюнкциядизъюнкцияимпликацияэквиваленцияВ логических выражениях порядок выполнения логических операций задается круглыми скобками. При их отсутствии логические связки имеют следующий приоритет использования: сначала выполняется отрицание («не»), затем конъюнкция («и»), после конъюнкции – дизъюнкция («или») и в последнюю очередь – импликация.В логике высказываний показано, что операцию импликации можно выразить через дизъюнкцию и отрицание: А ^ В = –AvВ, а операцию эквивалентности можно представить через операции отрицания, дизъюнкции и конъюнкции: А -о- B= (–AvВ) А (–iBV A).Таким образом, операций отрицания, дизъюнкции и конъюнкции вполне достаточно, чтобы описывать и обрабатывать любые логические высказывания. Что касается логического программирования, то в нем наиболее часто используют связки «И», «НЕ»«ЕСЛИ». Тогда предикатная формула, соответствующая сложному предложению, может иметь вид, например,является(ласточка, птица) ^ имеет (ласточка, крылья),владеет (ласточка, гнездо).где «является», «имеет», «владеет»– это атомарные предикаты, а «,» и «-^» представляют собой логические связки.Однако приведенная конструкция предикатной формулы позволяет делать утверждение не только о конкретном индивидууме, которым являетсяласточка, но и обо всех индивидуумах из класса птиц, используя для этого вместо констант переменные:является(Х, птица) ^ имеет(Х,крылья), владеет(Х, гнездо)Используя переменные вместо конкретных имен, мы приходим к более общим понятиям кортежа длины n, предиката и логической формулы. Однако предикат, который содержит переменные, например,имеет (Х, крылья)не может быть однозначно оценен, так как невозможно определить ложь он или истина. Его значение определяется после подстановки в переменную некоторой константы.Однако иногда можно определить значения предиката, не делая подстановок, используя кванторы общности (V) и существования (3), которые обозначают «для всех» и «существует, по крайней мере, одно». Тогда приведенная выше логическая формула будет записана в виде:(VX) [является (Х, птица) ^ имеет (Х, крылья),владеет (Х, гнездо)]и соответствуют предложению, которое может читаться как: «любой Х является птицей, если этот Х имеет крылья и владеет гнездом».Кванторное логическое высказывание с квантором всеобщности вида VxA(x) – истинно только тогда, когда для каждого объекта xиз заданной совокупности высказывание A(x) истинно. Логическое высказывание с квантором существования 3xA(x) – истинно только тогда, когда в заданной совокупности существует объект х, такой, что высказывание A(x) истинно.Кванторы V и 3 могут использоваться и для любого числа переменных, а при их комбинации очень важен порядок их использования. Рассмотрим их различное использование, и соответствующее семантическое толкование высказываний на примере использования двуместного предиката любит/2, который описывает отношение «Х любит Y»:VXVYлюбит (Х, Y) - все любят всех;3Х VYлюбит (Х, Y) - существует такой X, который любит всех;VХ 3Yлюбит (Х, Y) - любой X любит хотя бы одного Y;3Х 3 Yлюбит (Х, Y) - существует такой X, который кого-либо любит;Y 3Xлюбит (Х, Y) - существует такой Y, которого кто-то любит;VY 3Xлюбит(Х, Y) - каждого Yлюбит хотя бы один Х.Определение правильно построенной формулыКомбинируя логические связки и кванторы можно рекурсивно определить составную формулу логики предикатов, называемую правильно построенной формулой (далее просто ППФ или логическая формула). Если говорить применительно к естественному языку, то ППФ описывает обычное предложение общего вида [10]:Термом является либо константа, либо переменная, либо кортеж из nтермов, перед которым стоит функтор.Предикат – кортеж из nтермов, перед которым стоит предикатный символ.Атомарный предикат является логической формулой.Если Fи G– логические формулы, то (F), (F,G), (FvG), (~F), (F^-G), (FoG) –также являются логическими формулами.Если F(X) – логическая формула, то выражения VXF(X) и 3XF(X) является логическими формулами.Все результаты, получаемые повторением конечного числа раз пунктов с 1 по 6, являются правильными логическими формулами.Множество предложений, которые построены согласно этим правилам, образуют язык логики предикатов первого порядка, который, являясь формализованным аналогом обычной логики, дает возможность строго рассуждать об истинности и ложности утверждений и об их взаимосвязи. В частности, о логическом следовании одного утверждения из другого, или, например, об их эквивалентности.Рассмотрим классический пример формализации утверждений естественного языка в логике первого порядка. «Все люди смертны»– этими словами начинается самый знаменитый из силлогизмов, гласящий далее: «Сократ – человек» и «следовательно, Сократ смертен». Используя определения правильно построенной формулы, первое предложение можно записать в виде VX( человек(Х) ^ смертен ), а второе предложение в виде факта человек(«Сократ»).Логический выводЛогический вывод – это процесс получения из множества правильно построенных логических формул {Si} некоторой новой ППФ (s) путем применения одного или нескольких правил вывода.Одним из таких правил является правило modusponens, которое используется в исчислении высказываний. Его еще называют правилом отделения или гипотетическим силлогизмом. Простой силлогизм – это рассуждение мысли, которое состоит из трёх простых атрибутивных высказываний: двухпосылок и одного заключения. Примером силлогизма может быть только что рассмотренный пример:Всякий человек смертен(большаяпосылка)Сократ – человек(меньшая посылка)Сократ смертен(заключение)Правило вывода modusponensпозволяет от утверждения условного высказывания A^-В и утверждения его основания A(антецедента) перейти к утверждению следствия B(консеквенту). Другими словами, если Aи A^-В – выводимые формулы, то Bтакже выводима. Формат записи этого правила вывода будет иметь вид:A, A^ ВBСледует отметить, что рассмотренное правило является частным случаем правила резолюций, которое в свою очередь относится к методу доказательства теорем через поиск противоречий. Правило резолюций, последовательно применяемое для списка резольвент, позволяет ответить на вопрос, существует ли в исходном множестве логических выражений противоречие.ЗаключениеПредставленная курсовая работа написана на тему «Prolog – язык разработки систем, основанных на знаниях»,целью которой являлось изучение языка Prolog и его характерных особенностей, позволяющих использовать его для разработки экспертных систем.В данной работе на основании анализа литературы и электронных источников были решены следующие задачи. Рассмотрена история разработки и основные тенденции языка пролог, приведена история версий языковTurbo Prolog, PDC Prolog и Visual Prolog и их краткое описание.Представлены общие сведения и описание основных конструктов языка Prolog, изучены основные понятия языка и определена область его применения. Исследованы особенности языка Prolog, как языка, основанного на знаниях. Приведено определение «Системы, основанной на знаниях» и описаны основные черты языка Prolog, как языка логического программирования, основанного на знаниях и принципы его работы.Цель работы – изучение языка Prolog и его характерных особенностей, позволяющих использовать его для разработки систем, основанных на знаниях – достигнута.Список литературыБратко, Иван. Алгоритмы искусственного интеллекта на языке PROLOG, 3-е издание. : Пер. с англ. – М. : Издательский дом «Вильяме», 2004. – 640 с. :Стерлинг Л., Шапиро Э. Искусство программирования на языке Prolog. – М.: Мир, 1990.Марселлус Д. Программирование экспертных систем на ТурбоPrologе– М.: Финансы и статистика, 1994Ин Ц., Соломон Д. Использование Турбо-Prologа. – М.: Мир, 1993Шрайнер П.А. Основы программирования на языке Prolog. Курс лекций. – ИНТУИТ, 2005. – 176 с.Цуканова Н.И., Дмитриева Т.А. Теория и практика логического программирования на языке Visual Prolog 7.Учебное пособие для вузов. – М.: Горячая Линия - Телеком, 2013. - 232 с.Язык программирования Prolog [Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет: –http://it.kgsu.ru/Prolog/oglav.html–Загл. с экрана.Visual Prolog. Техническая, справочная и обучающая информацияот разработчиков (рус.) [Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет – http:://wikiru.visual-prolog.com/index.phpCostaEduardo. Visual Prolog для чайников [Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет: http://wikiru.visual-prolog.com/index.php?title=Visual_Prolog_for_Tyros –Загл. с экранаWielemakerJan, AnjewierdenAnjo. Programmingin XPCE/Prolog[Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет:http://www.swi-prolog.org/packages/xpce/UserGuide/ –Загл. с экрана.


1. Братко, Иван. Алгоритмы искусственного интеллекта на языке PROLOG, 3-е издание. : Пер. с англ. – М. : Издательский дом «Вильяме», 2004. – 640 с. :
2. Стерлинг Л., Шапиро Э. Искусство программирования на языке Prolog. – М.: Мир, 1990.
3. Марселлус Д. Программирование экспертных систем на ТурбоPrologе– М.: Финансы и статистика, 1994
4. Ин Ц., Соломон Д. Использование Турбо-Prologа. – М.: Мир, 1993
5. Шрайнер П.А. Основы программирования на языке Prolog. Курс лекций. – ИНТУИТ, 2005. – 176 с.
6. Цуканова Н.И., Дмитриева Т.А. Теория и практика логического программирования на языке Visual Prolog 7.Учебное пособие для вузов. – М.: Горячая Линия - Телеком, 2013. - 232 с.
7. Язык программирования Prolog [Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет: –http://it.kgsu.ru/Prolog/oglav.html–Загл. с экрана.
8. Visual Prolog. Техническая, справочная и обучающая информацияот разработчиков (рус.) [Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет – http:://wikiru.visual-prolog.com/index.php
9. CostaEduardo. Visual Prolog для чайников [Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет: http://wikiru.visual-prolog.com/index.php?title=Visual_Prolog_for_Tyros –Загл. с экрана
10. WielemakerJan, AnjewierdenAnjo. Programmingin XPCE/Prolog[Электронный ресурс]. – Режим доступа: открытый ресурс; постоянный адрес в Интернет:http://www.swi-prolog.org/packages/xpce/UserGuide/ –Загл. с экрана.

Вопрос-ответ:

Что такое язык Prolog?

Язык Prolog - это язык программирования, который используется для разработки систем, основанных на знаниях. Он основан на логике предикатов и обеспечивает возможность задания фактов, правил и запросов для решения различных задач.

Как развивался язык Prolog?

Язык Prolog был разработан в конце 1960-х годов Хаскелем Карром и Робертом Ковачем в Университете Эдинбурга. Впоследствии он претерпел множество изменений и доработок с целью улучшения производительности и функциональности.

Какие основные тенденции были в развитии языка Prolog?

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

Какие версии языка Prolog существуют?

Существует несколько версий языка Prolog, включая Turbo Prolog, PDC Prolog и Visual Prolog. Каждая из версий имеет свои особенности и функциональность, а также различные возможности для создания систем на базе знаний.

В каких областях применяется язык Prolog?

Язык Prolog широко применяется в различных областях, включая искусственный интеллект, компьютерную лингвистику, экспертные системы, анализ данных и многие другие. Он позволяет легко формализовать знания и решать задачи логического вывода.

Какой историей развития языка Prolog вы можете поделиться?

Язык Prolog был разработан в 1971 году в Университете Марселя Ален (Франция) Аланом Колмерауэром и Филиппом Русселом. Он был создан как инструмент для программирования на искусственном интеллекте и база для исследования реляционного программирования. В последующие годы язык Prolog продолжал развиваться и получил широкое применение в различных областях, связанных с искусственным интеллектом и логическим программированием.

Какие основные тенденции в развитии языка Prolog можно выделить?

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

В чем заключается механизм сопоставления и поиска с возвратом в языке Prolog?

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