База данных представляет собой набор отдельных рабочих правил (production rule), которые иногда называют также операторами (operator). Эти правила имеют следующий вид.
IF <условие> THEN <операция>
Первая часть правила представляет собой набор булевых выражений, который называют заголовком (head) правила, антецедентом или вводом (antecedent clause). Вторая часть правила — это набор операций, которые манипулируют символами в рабочей памяти. Эту часть называют также телом (body), консеквентом или выводом (consequent clause) правила. Обе части обычно представляются в виде комбинаций простых символов (например, "А and В", "С or В"ит.п.)
Структура данных
Основным аспектом базы правил является структура внутреннего хранения данных. При использовании процедурного подхода повысить эффективность за счет автоматической реорганизации рабочих правил нельзя — это можно сделать только путем модификаций исходного кода с последующей его перекомпиляцией.
Если же правила хранятся отдельно от системы, как это происходит при использовании декларативного подхода (declarative approach), их можно подгружать по мере необходимости прямо во время выполнения программы (это и есть управление кодом на основе данных). Например, если база правил представляет собой простой массив, для поиска условия, которое является в конкретной ситуации истинным, нужно применить линейный поиск соответствующего элемента массива.
В более развитых системах организации правил для моделирования взаимосвязей между условиями используются древовидные структуры. Такой метод организации позволяет сгруппировать рабочие правила в виде логических блоков и тем самым значительно повысить эффективность программного кода, выполняющего поиск правил, подходящих к той или иной конкретной ситуации. В этом случае поиск выполняется путем перемещения по ветвям дерева, каждый узел которого соответствует проверке одного символа. Если алгоритм проверки доходит до "листа" дерева, поиск завершается, а соответствующее значение возвращается в качестве результата.
Такое дерево строится в два этапа: на первом выполняются проверки вида "истина-ложь" и в соответствии с полученными результатами организуется дерево, а на втором отдельные ветви ибъсциняюФся в виде общей структуры. Эта процедура во многом похожа на то, как создается дерево решений, о котором подробно рассказывается в главе 26, "Деревья классификации и регрессии". Если вы не хотите ждать, пока мы дойдем до обсуждения этих вопросов, обратитесь к работе , в которой ахггвстствук^щая тема освещена достаточно полно.
Использование древовидных структур позволяет добиться значительной оптимизации временных затрат, необходимых для поиска правил. В основном, это объясняется тем, что в случае возрастания количества правил для рещения задачи в тот же период времени уже не возникает линейного роста требуемой вычислительной мощности. Таким образом, при использовании древовидных структур можно создавать очень большие RBS-системы, не заботясь о производительности.