Microsoft Word Лабораторная работа Продукционная модель docx



Pdf көрінісі
бет1/3
Дата06.02.2023
өлшемі0,65 Mb.
#65647
  1   2   3


Лабораторная работа №1 «Представление знаний. Продукционная 
модель» 
 
Продукция – это предложение-образец вида «Если, то», по которому 
осуществляется поиск в базе знаний.
В продукции выделяют левую часть (начинается с «если» и 
заканчивается перед «то») и правую (начинается после «то»). Левая часть 
продукции – антецедент – условие выполнения правой часть продукции. 
Правая часть – консеквент – действие, выполняемое в случае нахождения 
элементов, удовлетворяющих левой части. Действие может быть 
промежуточным и выступать затем в качестве консеквента или целевым, 
завершающим процедуру вывода.
Антецедент формируется из фактов, входных данных задачи и 
логических связок (и, или, не). Консеквент может представлять из себя 
действие по изменению фактов, данных, рекомендацию, решение задачи. 
Кроме этого, любая продукция имеет имя и приоритет, определяющий 
последовательность проверки продукций машиной вывода.
Продукции отражают причинно-следственные связи, которые и 
позволяют человеку принимать решения, базируясь на знаниях и 
предположениях о том, что есть и что будет, если что-то сделать. 
Любой язык программирования всегда ориентирован на определенный 
круг задач, при решении которых он наиболее эффективен. Для языка Prolog 
типичными являются проекты, связанные с разработкой систем 
искусственного интеллекта. Prolog обладает достаточно мощными 
средствами, позволяющими извлекать информацию из баз данных и знаний. 
При этом его методы поиска принципиально отличаются от "традиционных".
Prolog – язык программирования, который основан не на алгоритме, а 
на логике предикатов. Если программа на алгоритмическом (процедурном) 
языке является последовательностью инструкций, выполняющихся в 
заданном порядке, то Prolog, содержит только описание задачи, а Prolog-
машина выполняет поиск решения, руководствуясь только этим описанием и 
используя механизм поиска с возвратом и унификацию. 
Prolog является декларативным языком. Это означает, что имея 
необходимые факты и правила, он может использовать дедуктивные выводы 
для решения задач программирования. Prolog-программа содержит описание 
проблемы, которое представляет собой набор логических утверждений в 
форме фактов, таких как, например 
Иван любит Марью. 
Петр любит футбол. 
или в форме правил, например, 
Иван любит Х, если Петр любит Х. 


На основе имеющихся правил и фактов Prolog делает выводы. Имея два 
вышеприведенных факта и одно правило, он придет к выводу, что «Иван 
любит футбол». А если задать запрос: «Кто любит футбол?», то он найдет все 
решения этой задачи. При этом он автоматически управляет решением задачи, 
стараясь во время выполнения программы найти все возможные наборы 
значений, удовлетворяющие запросу. Поиск производится по всей базе 
данных, ранее введенной в систему. 
Термин база данных используется при объединении набора фактов для 
совместного их использования при решении некоторой конкретной задачи. 
Если кроме фактов в описании предметной области содержатся еще и 
правила, то часто используют термин база знаний
Программа на языке Prolog состоит из множества предложений (фраз). 
Каждое предложение может быть одного из трех типов: это либо факт, либо 
правило, либо запрос.
Факт — это фраза без условий, утверждение о том, что соблюдается 
некоторое отношение. Он записывается как имя предиката, за которым 
следует заключенный в скобки список аргументов. Каждый факт должен 
заканчиваться точкой. Например:
likes('Иван’,’Марья’).
likes('Петр’,’футбол’).
- Правило — это факт, истинность которого зависит от истинности 
других фактов. Состоит из головы и тела, разделенных знаком :- , который 
читается как «если» и соответствует импликации. Голова правила — это 
предикат, а тело правила — последовательность предикатов, разделенных 
запятыми. Правило должно заканчиваться точкой, а запятая в теле правила 
означает конъюнкцию (логическое И). Например:
likes(‘Иван’,X) :- likes(‘Петр’,X). 
Запрос — это последовательность предикатов, разделенных запятыми 
или точкой с запятой и завершающаяся точкой. На естественном языке 
запятая соответствует союзу «и», а на языке математической логики 
обозначает конъюнкцию. Точка с запятой соответствует союзу «или» и 
обозначает дизъюнкцию. Предикат запроса называется целью. Простые 
запросы, не содержащие никаких переменных, допускают лишь два 
возможных ответа: "true" или "false". В случае ответа "true" говорят, что 
запрос завершился успехом, цель достигнута. Использование переменных в 
запросах позволяет задавать более сложные вопросы. Например: 
?- likes('Иван','футбол').
true.
 
?- likes(Who,'Марья').
Who = 'Иван' .
 


?- likes(Man,'футбол').
Man = 'Петр' ;
Man = 'Иван'.
 
?- likes(X, 'Марья'),likes(X,'футбол').
X = 'Иван' .
Последний из приведенных выше запросов на естественном языке 
можно интерпретировать как «Кто любит Марью и футбол?». С точки зрения 
логики предикатов — это составной (сложный) запрос. 
Стандартный Prolog распознает тип объекта по его синтаксической 
форме и не требует какую-либо дополнительную информацию (наподобие 
объявления типа данных) для того, чтобы распознать тип объекта. В качестве 
основных объектов данных обычно выделяет три типа термов: константы, 
переменные (простые термы) и структуры (составные термы).
- Константа — поименованный конкретный объект или конкретное 
отношение. Существует два вида констант - атомы и числа. Атом - это либо 
последовательность латинских букв, цифр и знака подчеркивания, 
начинающаяся со строчной буквы, либо произвольная группа символов, 
заключенная в апострофы (одинарные кавычки). Иногда допускается 
использование и двойных кавычек. Примеры записи констант: ivan, ‘Ivan’, 
invoice_n, “иван”, ‘№_счета’, 'Иван’. 
- Переменная — обозначение объекта, значения которого меняется в 
ходе выполнения программы. В Prolog она имеет имя, начинающееся с 
прописной буквы или знака подчеркивания. Например: Name, X, Invoice_n. 
Переменная называется связанной, если имеется объект, который она 
обозначает. При отсутствии такого объекта переменная называется 
свободной. Для обозначения переменной, на которую отсутствует ссылка в 
программе, используется анонимная переменная, которая обозначается 
одиночным знаком подчеркивания «_». Область действия любой из 
переменных – это предложение. Одноименные переменные в разных 
предложениях могут иметь разные значения. 


Достарыңызбен бөлісу:
  1   2   3




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет