Большинство известных сейчас методов формирования моделей САПР, используемых в инструментальных оболочках для создания экспертных систем, обладают серьезными недостатками. Эти недостатки не позволяют применять создаваемые экспертные системы в качестве проблемно-ориентированных САПР или интеллектуальных надстроек над ними. Устранение значительного количества таких проблем возможно в результате использования семиотической модели - как формы представления модели САПР[1].
В рассматриваемой модели имеются два компонента - целевое пространство систем (ЦПС), т.е. множество решений-прототипов и пространство обликов систем (ПОС), т.е. множество технических заданий. Соответственно, имеются две различные контекстно-зависимые грамматики - грамматика ЦПС и грамматика ПОС.
Для реализации семиотической модели существует алгоритм выполнения теоретико-множественных операций над контекстно-свободными грамматиками в среде специализированной оболочки для создания интеллектуальных САПР[2]. В данном случае грамматика является аналогом И-ИЛИ дерева, т.е. не имеет циклов и рекурсий.Рассмотрим основные определения, используемые в описании алгоритма:
1. Терм – элементарный символ множества.
2. Синтерм - имя множества, которое может раскладываться. Элементами разложения могут быть как термы, так и синтермы, соединенные посредством операции "И" (&) или "ИЛИ" (V).
3. Если два множества совпадают по имени, то это означает, что они эквивалентны и по структуре, т.е. одно и то же имя означает одно и то же множество.
4. Если два множества совпадают по структуре, то это значит, что имена у них разные, а подмножества и способ их объединения одинаковый, т.е. одна и та же структура может иметь много разных форм записей, но при полном разложении этих форм записи мы в результате получим одно и то же.
Необходимо разработать алгоритм выполнения теоретико-множественных операций над контекстно-зависимыми грамматиками, т.е. контекстно-свободными грамматиками, над которыми определены продукции семантической зависимости (явные и неявные). Неявные продукции предполагают наличие списков прототипов у термов и синтермов контекстно-свободной грамматики, призванных обеспечить выбор только семантически возможных решений. Явные продукции вводятся пользователем над прямо введенными контекстно-свободными порождающими грамматиками. Они призваны зафиксировать возможные и невозможные комбинации альтернатив в ИЛИ-синтермах.
Ниже приведены основные инструментальные средства и структуры данных, необходимые для реализации рассматриваемого алгоритма.
Очевидно, что правила вывода синтермов удобнее всего задавать при помощи списков, оперирующих текстовыми значениями. Основными структурами данных, используемыми в алгоритме будут классы, списки и строки, из чего вытекает, что для реализации алгоритма следует использовать язык программирования, имеющий хорошо продуманную работу со списками и строками, и использующий объектно-ориентированный подход.
Наиболее гибкой и логически обоснованной для рассматриваемого алгоритма структурой данных является класс. Кроме того, что в одной переменной можно компактно хранить несколько разнородных свойств объекта, класс позволяет определить внутренние и внешние действия, применимые к объекту в качестве его методов. Для базовых структурных объектов мы определим такие классы: ГРАММАТИКА (для грамматики), СИНТЕРМ (для синтерма) и ТЕРМ (для терма).
Класс ТЕРМ является наиболее простым и содержит только одно свойство – значение.
Класс СИНТЕРМ введен для представления синтерма. Его основные свойства: имя синтерма, знак операции и список составляющих определение синтерма объектов – термов и синтермов. Для этого класса определен ряд методов, основными из которых являются:
- получить_следующий_элемент_из_определения_синтерма: в случае, если на вход методу передан аргумент, он пытается найти следующий за ним объект в определении синтерма и возвращает его, если объект не найден, то возвращается признак того, что список определения синтерма закончился. Если аргумент на входе метода отсутствует, то возвращается первый элемент в определении синтерма;
- пустой – возвращает истину в случае, если определение синтерма не содержит элементов, то есть синтерм пустой, ложь – в противном случае.
Класс ГРАММАТИКА определяет непосредственно грамматику, и имеет следующие свойства: вершина – имя главного синтерма (корня грамматики), правила – словарь, содержащий описания всех синтермов, которые были использованы для определения грамматики в форме «имя = значение», где значение является объектом класса СИНТЕРМ. Приведем классификацию методов класса ГРАММАТИКА по реализуемой функциональности:
- методы, осуществляющие создание, загрузку и сохранение граматики;
- методы, реализующие функциональность описываемого алгоритма;
- методы, реализующие общую функциональность;
- метод, реализующий выделение новой грамматики из исходной. Корнем новой грамматики, будет являться синтерм, который был передан данному методу в качестве аргумента;
- метод, который возвращает язык данной грамматики в виде множества строк(всех слов языка).
Используя данные три класса и их методы, можно реализовать алгоритм выполнения теоретико-множественных операций над грамматиками, что позволит породить из грамматики пространства обликов систем и грамматики целевого пространства систем новую, объединенную грамматику, с помощью которой и будет осуществляться вывод новообразованной системы.
[1] Поспелов Д.А. Ситуационное управление: теория и практика. М.: Наука, 1986.
[2] Григорьев А.В. Алгоритм выполнения теоретико-множественных операций над грамматиками в среде специализированной оболочки для создания интеллектуальных САПР. Донецк: ДонНТУ, 2002.