Cтраница 1
Двухвходовые вершины используют метки для того, чтобы определить, как модифицировать их внутреннюю память. При признак запоминается во внутренней памяти, а при - информация, идентичная содержимому признака, устраняется из внутренней памяти. [1]
Двухвходовые вершины используют метки для того, чтобы определить подходящие метки для признаков, которые они создают. Когда создается некоторый выход, он получает метку, соответствующую метке входного признака. [2]
В простой Rete-сети вся информация о состоянии сети запоминается в двухвходовых вершинах. Каждая такая вершина содержит внутренную память в виде двух списков, называемых левым и правым. Левый список содержит копии признаков, которые прибыли на левый вход, а правый список - копии признаков, прибывших на правый вход вершины. Признаки запоминаются до тех пор, пока они не потребуются. Ниже будет показано как вершины определяют что признаки более не нужны. [3]
ОБЪЕД указывает, что данная макрокоманда соответствует двухвходовой вершине, не содержащей отрицаний. Последовательность, щущая за ОБЪЕД, указывает, что вершина вычисляет предикат от значения по адресу 1 левого элемента и значения по адресу 2 правого элемента. [4]
![]() |
Сеть для правил Умножить и Сложить. [5] |
Корневая вершина сети образцов ( верхняя вершина на рис. 6.5) является входной вершиной. Эта вершина первой анализирует признаки, поступившие на вход алгоритма и передает их всем своим преемникам. Преемниками корневой вершины являются вершины, выполняющие проверку внутренних характеристик. Каждая вершина этого типа проверяет одну внутренную характеристику и передает признаки, которые прошли проверку, своим преемникам. Двухвходовые вершины сравнивают признаки из различных путей и объединяют их, если они удовлетворяют ограничениям внешней характеристики. [6]
Некоторые из явных связок между вершинами будут устранены путем размещения связанных вершин друг за другом в линейной последовательности. РАЗВ используется для того, чтобы указать, что вершина имеет более одного преемника. В этом случае РАЗВ указывает адрес ( идентификатор) одного из преемников. Отметим, что РАЗВ может изображать и корневую вершину. Команда СЛИЯН применяется тогда, когда в сети использована двухвходовая вершина. СЛИЯН подобна команде безусловного перехода. [7]
Итак, на очередном цикле этапа сопоставления интерпретатор, выполняющий Rete-алгоритм, осуществляет следующее. На вход линеаризованной сети подаются в виде набора признаков изменения рабочей памяти, произошедшие в результате выполнения предыдущего цикла работы интерпретатора. Задача интерпретатора состоит в том, чтобы провести исходные признаки через все возможные разветвления сети и получить на выходе изменения конфликтного набора. Rete-алгоритм рассчитан на последовательную обработку изменений рабочей памяти, т.е. за раз обрабатывается один элемент. Необходимо подчеркнуть, что при интерпретации линеаризованной сети используется стек. Во-первых, стек позволяет при обработке разветвлений ( команда РАЗВ) запомнить тот путь, который в текущий момент не обрабатывается. Затем при достижении конца некоторого пути из стека выталкивается адрес пути, который был запомнен. Во-вторых, стек позволяет запоминать информацию, связываемую с двухвходовыми вершинами ( командами), на то время, пока эти вершины перешли в состояние ожидания. Форги [1982] приводит пример записи интерпретатора сети, выполняющего Rete-алгоритм. [8]