Управление процессом решения задачи
Схема управления решением задачи может быть либо формализована в самой модели знаний, либо являться внешней по отношению к ней. В первом случае мы имеем дело с процедурными знаниями, во втором - с декларативными.
Рассмотрим модель процедурных знаний, известную как рекурсивная сеть переходов (recursive transition network (RTN)). Каждой дуге RTN приписан некоторый предикат (функция), истинное значение которого необходимо для разрешения перехода по данной дуге. На каждом такте функционирования сети производится оценка всех предикатов. При этом порядок просмотра предикатов не имеет значения. В результате определяется множество маршрутов, соединяющих начальное и конечное состояния, переходы вдоль всех дуг которых разрешены. Рассмотрим RTN на рис. 3. 1.
Рис. 3.1
Вершины сети соответствуют состояниям системы и образуют множество {начало, S2, S3, конец}. Переходы между состояниями помечены TR1, TR2, TR3, TR4 и TR5.Переходу TRiприписан предикат Ti ( ). Кроме того, с некоторыми из переходов связываются операторы Ai, которые выполняются при активации перехода. Допустим, что все предикаты T1, ..., T5 оказались истинными. В этом случае все маршруты, связывающие вершину-начало и вершину-конец, будут разрешены и все операторы А2, А3, А4, А5 будут выполнены. При этом оговаривается, что порядок выполнения операторов устанавливается согласно возрастанию их индексов. С другой стороны, если, например, ложен предикат Т2, то будет активирован единственный маршрут (TR1, TR5) и возможно единственное действие A5. Таким образом, управление выводом в RTN реализуется посредством включения управляющей структуры в модель знаний.
Сеть RTN является примером модели знаний со встроенной детерминированной процедурой управления. В графе И-ИЛИ процедура управления является недетерминированной. Пусть x1, x2, ..., xN - объекты некоторой предметной области, причем для каждого объекта xi известна одна или несколько процедур его вычисления через другие объекты. Обозначим через ji (xi1, xi2, ..., xit) процедуру вычисления объекта i через объекты xi1, xi2, ..., xit. Каждый из объектов xi1, xi2, ..., xit в свою очередь вычисляется аналогичным образом через другие объекты и т.д. Таким образом, имеется следующее функциональное отношение
xi = ji (xi1, xi2, ..., xit) (3.3)
Очевидно, что если процедура ji не имеет входных данных, то объект хi представляет некоторое фиксированное значение, или запрашивается у пользователя. В этом случае
xi = ji ( ) (3.4)
Соотношению (3.3) соответствует графический фрагмент, представленный на рисунке 3.3. Двойная дужка на рис. 3.3 соответствует конъюнктивной связке вершин (связке типа "И"). Очевидно, что вполне допустимо более одной процедуры вычисления объекта xi, причем в процедуре jj могут участвовать иные аргументы, чем в процедуре ji; графически это соответствует рис. 3.4.
Рис. 3.3 Рис. 3.4
Множество аргументов процедуры ji и jj, образуют дизъюнктивные связки (связки типа "ИЛИ"). Для вычисления объекта достаточно процедуры над одним альтернативным множеством объектов, входящих в одну общую конъюнктивную связку.
Формализуем задачу управления на функциональном "И - ИЛИ" графе. Пусть x1, x2, ..., xN - множество объектов предметной области. Пусть даны процедуры
вычисления одних объектов через другие с числом аргументов, равным соответственно n1, n2, ..., nk.
Определим состояние системы Si как множество переменных, значения которых известны на шаге i. Пусть S0 - начальное состояние, Se - конечное состояние, причем конечное состояние в общем случае будет обозначаться как
Se = {xe1, xe2, ..., xez, *}, (3.5)
где * - любое, заранее не оговариваемое множество переменных (возможно пустое), а xe1, xe2, ..., xez - множество переменных, которые обязательно должны быть определены в конечном состоянии.
Говорим, что процедура jk (xk1, xk2, ..., xkm) валидна (применима) в состоянии Sj, если
(xk1, xk2, ..., xkm) Í Sj. (3.6)
Кратко тот факт обозначается как
Sj |¾ . (3.7)
В интересах общности далее положим, что каждая процедура ji вычисляет в целом более одной переменной. Ясно, что применение ji - процедуры в состоянии Sj, в котором она валидна, приводит в общем случае к новому состоянию Sj+1, содержащему результирующие переменные процедурыji.
Задача управления заключается в построении цепочки процедур C = <ji0, ji1, ..., jiz > такой, которая обеспечивает достижение конечного состояния Se из начального состояния S0 в результате последовательного выполнения процедур из С в указанном порядке.
Рассмотрим решение этой задачи на конкретном примере. Предварительно договоримся, что обозначение
ji <xi1, xi2, ..., xin|xin+1, xi+2, ..., xim> (3.8)
означает, что xi1, xi2, ..., xin - это входные объекты-переменные процедуры, на основании которых вычисляются выходные объекты-переменные xin+1, xin+2, ..., xim.
Пусть задана следующая система функций:
j1: <x1, x3|x4>,
j2: <|x1, x2, x5>,
j3: <x1, x3|x4, x6>,
j4: <x2, x5|x4, x6>,
j5: <x2, x7|x4>,
j6: <x1, x3, x4|x6, x8>,
j7: <x3, x6|x5, x7>,
j8: <x5, x6|x9>.
Поставим в соответствие ей функциональный граф "И - ИЛИ", показанный на рис. 3.5. Вершины графа соответствуют объектам предметной области, а дуги маркированы таким образом, что над дугой, исходящей из вершины xi и заходящей в вершину xj, стоят индексы функций, в которых xi является входным аргументом, а xj выходным результатом. Например, дуга (x1, x4) помечена j1, j3, поскольку в этих функциях x1 является входным аргументом, а x4 - выходным. Пусть S0 = <x1, x3, x5>,аSe = <x7, x9, *>. Построение цепочки функций С, выполняющей переход
(3.10)
осуществляется в два этапа.
Этап 1. Нормализация функционального графа.
Нормализация заключается в выполнении в произвольном порядке следующих операций, пока это возможно.
(О1) удаление пометок всех тех функций, для которых удалены одна или более входных вершин-переменных;
(О2) удаление всех входных дуг, инцидентных вершинам из S0;
(О3) удаление вершин xi и инцидентных им дуг таких, что xi Ï Se, и не имеют выходных дуг;
(О4) удаление тех функций, которые потеряли все свои результирующие вершины-переменные. Удалению функции соответствует удаление идентификатора функции из числа пометок дуг. Если при этом некоторая дуга оказывается непомеченной, то эта дуга удаляется;
(О5) если удалена дуга, помеченная j, входящая в вершину x, то пометка j снимается со всех дуг, входящих в x, если таковые есть;
(О6) удаление (последовательное) альтернативныхвершин и инцидентных им дуг. Эта операция - основная. Вершина x является альтернативной, если в результате ее удаления и инцидентных ей дуг каждая вершина, в которую заходила дуга из х, может быть вычислена некоторой цепочкой Сi из состояния S0.
Рис. 3.5.
Рассмотрим рис.3.5. Так, удаляем вершину х8 согласно операции O3. Удаляем далее входные дуги вершины x5 Î S0. Получаем граф на рис.3.6, а. Вершина х2 альтернативная и может быть удалена вместе с инцидентными ей дугами. Получаемый в итоге граф на рис. 3.6, б. В нем вершина х4 также альтернативная. Это последнее удаление приводит к полностью нормализованному графу на рис 3.6, в.
Рис. 3.6, а Рис. 3.6, б
Рис. 3.6, в
Этап 2. Построение уровней L0, L1, ..., Lk. В L0 войдут все вершины, которые не имеют входных дуг.
В уровень Li (i > 0) войдут все те и только те вершины хi, которые не вошли в уровни L0, L1, ..., Li-1 и которые вычислимы произвольной функцией (ями) jz, выполнимой в состоянии Si = L0ÈL1È...ÈLi-1, т.е.
Si |¾ jz. (3.11)
Так, из рис. 3.6, в устанавливаем непосредственно, что
L0 = {x1, x3, x5},
L1 = {x6},
L2 = {x7, x9}.
Теперь в каждом уровне, исключая L, каждую вершину заменяем на ту процедуру, с помощью которой она вычислялась. Это дает следующий результат
Окончательно интересующая нас цепочка С строится так, чтобы любая функция jt, принадлежащая уроню Lm,стояла левее любой функции jq, принадлежащей Ln, если m < n; если m = n, то взаимный порядок расположения функций jt и jq в С роли не играет. Из этого правила, устанавливаем, например, что
C = <j3, j7, j8>
суть интересующая нас цепочка.
Завершим этот параграф рассмотрением моделей знаний с алгоритмом вывода, управляемым по данным. Поскольку структура управления выводом в таких моделях явно не представлена, то нужны некоторые специальные механизмы: механизм недетерминированного выбора альтернативы (альтернативной продукции), механизм возврата (бэктрекинга) и механизм унификации. Последние два механизма рассмотрены в разделе 1.4 при описании основных понятий языка Пролог.
Механизм недетерминированного выбора альтернативы базируется на моделях, использующих так называемую эвристическую функцию оценки, введенную Н. Нильсоном. К рассмотрению этого вопроса мы приступаем в следующем параграфе.
Дата добавления: 2016-03-05; просмотров: 635;