Архитектура, управляемая шаблонами

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

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

1. Шаблон предварительного условия.

2. Действие, которое должно быть выполнено, если среда определения данных согласуется с этим шаблоном.

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



Среда □пределен денных

 


Рис. 23.2. Система, управляемая шаблонами. В виде прямоуголь­ников показаны модули, управляемые шаблонами, а стрелки по-называют, как активизируются модули при обнаружении шаб­лонов о данных

576 Часть II. Применение рзыка Prolog e области искусственного интеллекта


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

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

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

Рассмотрим дополнительное уточнение основной схемы функционирования сис­тем, управляемых шаблонами, с точки зрения их реализации. Изучение схемы, при­веденной на рис. 23.2, позволяет сделать вывод, что для таких систем наиболее под­ходящей является параллельная реализация. Но предположим, что такая система должна быть реализована на обычном последовательном процессоре, В таком случае при возникновении ситуации одновременной активизации в базе данных шаблонов нескольких модулей возникает конфликт, связанный с определением того, какой из всех этих потенциально активных модулей должен быть фактически вызван на вы­полнение. Такое множество потенциально активных модулей называется конфликт­ным множеством. Для фактической реализации схемы (см. рис. 23.2) на последова­тельном процессоре требуется дополнительный программный модуль, называемый управляющим модулем. Управляющий модуль разрешает конфликт, выбирая и акти­визируя только один модуль из конфликтного множества. Процедура разрешения конфликтов может быть основана на простом правиле, которое предусматривает за­ранее определенное, постоянное упорядочение модулей.

Таким образом, основной жизненный цикл систем, управляемых шаблонами, со­стоит из трех описанных ниже этапов.

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

2. Разрешение конфликта. Выбрать один из модулей в конфликтном множестве.

3. Выполнение. Вызвать на выполнение модуль, который был выбран на этапе 2.
Такая схема реализации показана на рис, 23.3.


Глава 23. Метапрограммирование



Конфликтное множество


Модуль 1 Условие 1