Как называется программа управляющая перебором правил

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

число_больше(А,3):-А

Тогда вызов решателя ПроЛога

Goal число_больше(4,Больше).

Выдаст ответы: Больше = 5, 8.

Другими словами, согласно правилам в предикате «число_больше» больше числа 4 есть два числа 5 и 8. Здесь видно, что набор правил работает как структура ветвления case в алгоритмических языках. Предикаты которые могут выдавать несколько значений называются неопределенными (nondeterm). Предикаты, которые выдают только одно значение, называются определенными (determ). Кроме неопределенных предикатов в ПроЛоге еще используют механизм неопределенности факты. Пример.

иметь(долги, плохо). иметь(квартира, хорошо). иметь(дети, хорошо).

Тогда вызов решателя ПроЛога

АМОНГАС. КАК ЗА 5 СЕКУНД ВЫЧИСЛИТЬ ПРЕДАТЕЛЯ #Амонгас #Лайфхак


Goal иметь(Что,хорошо).

Ответ будет: Что = квартира, дети

Откат (Backtracking)

Теперь введем понятие отката (Backtracking). Откат — это попытка ПроЛога найти следующий вариант решения задачи. Откат вызывается неудачей в некотором месте программы, что приводит ПроЛог к попытке найти следующее решение. Откатывание идет до места, где возможно вычислить другое решение.

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

database — знания иметь(string, string) predicates показать(string) clauses показать(Как):- % здесь переменная Что будет каждый раз освобождаться и % связываться с новым значением иметь(Что,Как), nl,write(Что,» иметь «,Как). Goal % загрузим знания с фактами иметь() из файла знания.txt consult(«знания.txt»,знания), % вызовем предикат выдающий несколько вариантов ответа показать(хорошо).

квартира иметь хорошо дети иметь хорошо

Отсечение (Cut)

Теперь введем понятие отсечения. Отсечением в ПроЛоге называется механизм, который запрещает перебор правил данного предиката находящихся ниже текущего правила и запрещает механизм отката. Отсечение обозначается знаком «!».

Пример. Если переписать предыдущий предикат «число_болше» как:

число_больше(А,3):-А

Тогда вызов решателя ПроЛога

Goal число_больше(4,Больше).

Выдаст ответ: Больше = 5.

Это происходит потому, что в каждом правиле предиката, после проверки на больше, идет оператор отсечения «!», что запрещает ПроЛогу последующий откат и поиск других вариантов ответа.

Пример использования механизма отката и отсечений.

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

12 х@акерских приложений для Андроид телефона | хакерфон без рут | Dimon Dev

При переборе списка, если текущий элемент не является искомым значением, то делаем перебор далее.

При переборе списка, если текущий элемент является искомым значением, то прекратим перебор и вернемся на предыдущий элемент.

Если предыдущие правила не сработали, то выдать текущий элемент как предыдущее значение.

Описание на языке ПроЛог предиката выполняющего эти правила будет такое:

1. найти_пред_значение(Значение,[Элемент|Список], Предыдущее):- not(Значение=Элемент), !, % отсечение перебора правил предиката, расположенных ниже найти_пред_значение(Значение,Список,Предыдущее), !. 2. найти_пред_значение(Значение,[Значение|_],_):- !,% отсечение перебора правил предиката, расположенных ниже fail. 3. найти_пред_значение(_,[Предыдущее|_],Предыдущее):- !.

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

domains Номер = integer НСписок = Номер* predicates найти_пред_значение(Номер Значение, НСписок, Номер Предыдущее) clauses найти_пред_значение(Значение,[Значение|_],_):- !,% отсечение перебора правил предиката, расположенных ниже fail. найти_пред_значение(Значение,[_|Список], Предыдущее):- найти_пред_значение(Значение,Список,Предыдущее), !.% отсечение выдачи других ответов найти_пред_значение(_,[Предыдущее|_],Предыдущее):- !.% отсечение выдачи других ответов

Читайте также:
Список литературы свидетельство о регистрации программы

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

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

При этом, в правиле до вызова рекурсии нет отсечений, и если вызов рекурсии будет неуспешным, то управление перейдет на правило предиката, расположенное ниже. Если вызов рекурсии будет успешен, то вызывается отсечение («!»), а потом выход из предиката. Третье правило выдает текущий элемент как предыдущее значение, которое стоит перед искомым значением, вызывает отсечение и выход из предиката. Действие предиката рассмотри на примере. Дадим решателю ПроЛога строку:

Goal найти_пред_значение(3,[1,2,4,3,5,2],Предыдущее).

ПроЛог делает первый вызов предиката:

  • Правило 1 не срабатывает: 3 не равно 1. Переход на второе правило:
  • Правило 2 вызывает рекурсию найти_пред_значение(3,[2,4,3,5,2],Предыдущее):
  • Правило 1 не срабатывает: 3 не равно 2. Переход на второе правило:
  • Правило 2 вызывает рекурсию найти_пред_значение(3,[4,3,5,2],Предыдущее):
  • Правило 1 не сработает: 3 не равно 4. Переход на второе правило:
  • Правило 2 вызывает рекурсию: найти_пред_значение(3,[3,5,2],Предыдущее):
  • Первое правило сработает: 3=3. и выполняется: отсечение правил предиката ниже и неудача. Что приводит в выходу из рекурсии с результатом неудачи.
  • Продолжение правила 2. Неудача вызова рекурсии со списком [3,5,2] приводит к неудаче второго правила на данном уровне. ПроЛог переходит на третье правило.
  • Правило 3. Здесь список = [4,3,5,2]. Происходят действия: Предыдущее унифицируется с 4, выход с отсечением других возможных решений.
  • Продолжение правила 2. Рекурсия возвращает удачное значение Предыдущее =4. Происходит выход с отсечением других возможных решений.
  • Продолжение правила 2. Рекурсия возвращает удачное значение Предыдущее =4. Происходит выход с отсечением других возможных решений.
  • Продолжение правила 2. Рекурсия возвращает удачное значение Предыдущее =4. Происходит выход с отсечением других возможных решений.

Ответ ПроЛога Предыдущее = 4.

Теперь посмотрим что будет, если убрать отсечение во втором правиле:

domains Номер = integer НСписок = Номер* predicates % обявляем что предикат неопределенный nondeterm найти_пред_значение(Номер Значение, НСписок, Номер Предыдущее) clauses найти_пред_значение(Значение,[Значение|_],_):- !,% отсечение перебора правил предиката, расположенных ниже fail. найти_пред_значение(Значение,[_|Список], Предыдущее):- % в этом правиле нет ни одного отсечения % что указывает на возможность отката в это место % для выбора следующего варианта ответа найти_пред_значение(Значение,Список,Предыдущее). найти_пред_значение(_,[Предыдущее|_],Предыдущее):- !.% отсечение выдачи других ответов

То ПроЛог уже выдаст несколько результатов:

Предыдущее = 4, 2, 1.

Это становится возможным, так как включается механизм отката ПроЛога и во втором правиле появляется возможность выдать ответ на каждом шаге рекурсии.

Источник: codenet.ru

Интерпретатор правил и управление выводом

При использовании продукционной модели представления знаний БЗ состоит из набора правил, а программа, управляющая перебором правил, называется интерпретатором правил, или машиной вывода. Интерпретатор правил – это программа, имитирующая логический вывод эксперта, пользующегося продукционной БЗ для интерпретации поступивших в систему данных [8].

Обычно он выполняет две функции:

1. Просмотр существующих данных из БД и правил из БЗ и добавление в БД новых фактов.

2. Определение порядка просмотра и применения правил. Этот механизм управляет процессом консультации, сохраняя для пользователя информацию о полученных заключениях, и запрашивает у него информацию, когда для срабатывания очередного правила в БД оказывается недостаточно данных.

Механизм вывода представляет собой программу, включающую два компонента, – один реализует собственно вывод, а другой управляет этим процессом. Действие компонента вывода основано на применении правила, называемого modus ponens: «Если известно, что истинно утверждение А, и существует правило вида «Если А, то В», тогда утверждение В также истинно». Таким образом, правила срабатывают, когда находятся факты, удовлетворяющие их левой части: если истинна посылка, то должно быть истинно и заключение. Компонент вывода должен функционировать даже при недостатке информации. Полученное решение может быть неточным, однако система не должна останавливаться из-за того, что отсутствует какая-либо часть входной информации.

Читайте также:
Программа как удалить всех друзей в ВК

Управляющий компонентопределяет порядок применения правил и выполняет четыре функции:

1. Сопоставление – образец правила сопоставляется с имеющимися фактами.

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

3. Срабатывание – если образец правила при сопоставлении совпал с какими-либо фактами из БД, то правило срабатывает.

4. Действие – БД подвергается изменению путем добавления в нее заключения сработавшего правила.

Интерпретатор правил работает циклически (рис.4.1).

Рис. 4.1. Цикл работы интерпретатора правил

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

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

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

При разработке стратегии управления выводом важны:

— исходная точка в пространстве состояний. От выбора этой точки зависит метод осуществления поиска – в прямом или обратном направлении;

— метод и стратегия перебора – в глубину, в ширину, по подзадачам.

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

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

Пример 4.1. Пусть имеется фрагмент БЗ из двух правил:

П1: Если «отдых летом» и «человек активный», то «ехать в горы».

П2: Если «любит солнце», то «отдых летом».

Предположим, что в систему поступили факты – «человек активный» и «любит солнце».

Первый проход БЗ:

Шаг 1. П1 не работает, поскольку не хватает данных «отдых летом».

Шаг 2. П2 срабатывает, в БД поступает факт «отдых летом».

Второй проход БЗ:

Шаг 3. П1 срабатывает, активизируя цель «ехать в горы», которая выступает как совет, который дает ЭС.

Первый проход БЗ:

Шаг 1. Цель – «ехать в горы»: пробуем П1-данных «отдых
летом» – нет. Они становятся новой целью, и ищется правило, где она находится в правой части.

Шаг 2. Цель «отдых летом»: правило П2 подтверждает цель и активизирует ее.

Второй проход БЗ:

Шаг 3. Правило П1 подтверждает искомую цель.

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

Читайте также:
Программа для обновления планшета через компьютер

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

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

Основным механизмом вывода в ИИС с фреймовым представлением знаний является механизм наследования. Управленческие функции механизма наследования заключаются в автоматическом поиске и определении значений слотов фреймов нижележащих уровней по значениям слотов фреймов верхних уровней, а также в запуске присоединенных процедур и демонов.

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

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

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

Выводы, которые достаточно тщательно не проверены, таят в себе угрозу создания противоречий. Следовательно, в семантических сетях необходимо больше, чем в продукционных системах, уделять внимания таким обстоятельствам, как устранение противоречий. Сама система такими возможностями не обладает, и потому во многих случаях эта функция возлагается на человека. Просматривая все знания, человек способен управлять их непротиворечивостью, однако, если объем знаний будет увеличиваться, то их представление резко усложнится, чем ограничит круг решаемых проблем сравнительно небольшими проблемами [11].

Дата добавления: 2016-07-22 ; просмотров: 3398 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Источник: poznayka.org

Не важно. Дистанц_СИИ-КонтрРабота_4-2020. Контрольная работа 4 по дисциплине Системы искусственного интеллекта

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 67.27 Kb.

Контрольная работа № 4

по дисциплине «Системы искусственного интеллекта»
Целью работы является приобретение и закрепление знаний по вопросам организации и использования систем искусственного интеллекта, представления знаний и выводов.

По итогам изучения темы необходимо ответить на вопросы теста.

Возможны несколько правильных ответов на вопрос.

1. Как называется программа, управляющая перебором правил?

1.1 Машина вывода

1.2 Машина ввода

1.3 Машина ввода/вывода

2. Что такое знания в системах искусственного интеллекта?

2.1 Закономерности предметной области, полученные в результате практической деятельности

2.3 Знания в памяти человека как результат мышления

2.4 Система баз данных

3. Фреймовая модель представления знаний это?

3.1 Структура для представления некоего стереотипа восприятия.

3.2 Совокупность правил типа «Если (условие), то (действие)»

3.3 Классическое исчисление предикатов 1-го порядка

3.4 Ориентированный граф, вершины которого понятия, а дуги — отношения между ними

4. Как называются знания, которые нужны для работы самой экспертной системы?

5. К моделям представления знаний не относятся:

5.3 Логические выражения

Источник: topuch.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru