Если видом просмотра является просмотр вперед, применимое правило имеет вид a®b, где b=t1,…,tk, то при применении этого правила активной вершиной очередного состояния становится такая вершина nnÎ{ni,…,nj}, что метка tn вершины nn является нетерминальным символом языка, т.е. tnÎN. Если применимое правило имеет вид a®b, где b=t1|…|tk, то при применении этого правила активной вершиной в очередном состоянии становится вершина n. Областью видимости в каждом состоянии при просмотре вперед являются активная вершина с меткой a и ее прямые потомки в дереве исходных данных. Если в качестве действия просмотра выбран просмотр назад, то при использовании применимого правила активной в следующем состоянии становится вершина g‘ с меткой a‘. Областью видимости при просмотре назад являются активная вершина с меткой a и его прямые предки в дереве исходных данных.
Если способом выполнения правила является редактирование, метка активной вершины g есть aÎN, и применяемое правило имеет вид a®b, где b= t или bi= t1|…|tk, то в этом случае под удалением будем понимать удаление вершины n, являющейся прямым потомком активной вершины g, ребра, соединяющего g и n, а также всего поддерева, корнем которого является n. Формирование очередного состояния процесса редактирования (удаления) происходит следующим образом: из дерева исходных данных удаляется поддерево с корнем n и ребро, соединяющее вершину n с предком этой вершины – вершиной g. В этом случае активная вершина g становится листом дерева. Если в текущем состоянии метка активной вершины g есть aÎN и применимое правило имеет вид a®b, где b= t1,…,tk,то под удалением будем понимать удаление всех вершин nf,…,nj, являющихся прямыми потомками активной вершины g. Формирование очередного состояния процесса редактирования происходит следующим образом: из дерева исходных данных удаляется множество всех поддеревьев, с корнями nf,…,nj и множество ребер, соединяющих вершины nf,…,nj с предком этих вершин – вершиной g. Активная вершина g становится листом дерева.
Порождающий процесс может быть завершен только в том случае, если он достиг терминального состояния.
В модели диалога пользователь может выбрать способ выполнения правила – генерацию, просмотр или редактирование.
Так, если способом выполнения правила является генерация исходных данных, то задача пользователя в диалоге состоит в разрешении всех неоднозначностей. Неоднозначности в процессе порождения исходных данных могут состоять в следующем.
1. Каждый шаг порождающего процесса характеризуется множеством применимых на данном шаге правил порождения очередного состояния, которое может содержать более одного применимого правила. Пользователь имеет возможность выбрать любое правило для получения очередного состояния процесса порождения среди множества применимых в данном состоянии правил.
2. Если в некотором состоянии применяется правило вида a®b, aÎN, где b=t1|…|tn, причем tjÎNÈTÈF, то в этом случае неоднозначно определяется посылка tiÎ{t1,…,tn}, где 1<=i<=n. Пользователь в процессе порождения имеет возможность выбрать любую посылку в пределах указанных ограничений.
3. Если в некотором состоянии применяется правило вида a®b, aÎN, где b=t1,…,tn, причем tjÎNÈTÈF, то в этом случае неоднозначно определяется посылка, являющаяся подмножеством {ti,…,tj} Í {t1,…,tn}, где i<>j, 1<=i<=n, 1<=j<=n. Пользователь в процессе порождения имеет возможность выбрать любую посылку в пределах указанных ограничений, а также активную вершину.
4. Если в некотором состоянии применяется правило вида a®b, aÎN, bÎF, то пользователь в процессе порождения выбирает возможное значение, которое принадлежит типу b.
При просмотре исходных данных пользователь может проводить следующие действия.
1. Выбирать вид просмотра, т.е. определять в каком направлении просматривать дерево исходных данных. В зависимости от своих потребностей и условий применимости правил в данном состоянии пользователь может выбрать просмотр вперед или просмотр назад.
2. Определять в каком состоянии завершить просмотр исходных данных.
3. Разрешать неоднозначность процесса просмотра исходных данных. Неоднозначность процесса просмотра исходных данных состоит в том, что каждый шаг процесса просмотра характеризуется множеством вершин, допустимых в текущем состоянии в качестве активных в следующем состоянии. Данную неоднозначность порождающего процесса пользователь разрешает путем выбора активной вершины следующего состояния из множества вершин, допустимых в текущем состоянии.
Рассмотрим вторую составляющую интерфейса – объяснение результатов ЭС. Под моделью объяснения будем понимать вычислительную модель[7], универсальный рецепт которой на основе формального задания объяснения и результатов ЭС формирует текст объяснения.
Будем считать, что текст объяснения T состоит из последовательности элементов объяснения t1,…, tn, а результаты ЭС x представлены в виде конечной совокупности отношений, причем каждое отношение P – это конечное множество кортежей P = {<a1,…, an>}, где a1,…, an – элементы кортежей. Будем также считать, что формальное задание объяснения W – есть составной оператор. Под составным оператором будем понимать последовательность элементов описания объяснения w1,…, wn. Каждый элемент описания wi – текстовая конструкция, которая определяет содержание текста объяснения в зависимости от результатов работы ЭС. Текстовыми конструкциями в модели объяснения являются конструкции строка, выводимое множество, цикл и альтернатива. Конструкции цикл и альтернатива в свою очередь содержат составной оператор в качестве компоненты.
Каждой конструкция wi составного оператора может быть присвоен свой позиционный номер i. Позиционные номера определяют лексикографический порядок конструкций в формальном задании объяснения.
Cледует отметить, что, с одной стороны, одно и то же формальное задание объяснения W может соответствовать различным результатам ЭС – x, но с другой стороны, формальное задание W должно быть согласовано с результатами ЭС x. Текст объяснения T, создаваемый на основе W получается различным, в зависимости от x.
Рассмотрим текстовые конструкции формального задания объяснения и дадим их содержательную трактовку.
Текстовая конструкция строка – это последовательность символов заданного алфавита. Как правило, текст объяснения содержит фиксированные (не зависящие от результатов ЭС) фразы, принятые в данной предметной области. Это могут быть заголовки, пояснения каких-либо заключений ЭС, вводные фразы и др. Текстовая конструкция строка в формальном задании объяснения предназначена для представления таких фиксированных фраз. Примером таких текстовых конструкций могут быть: «Фамилия, имя, отчество», «диагноз при поступлении», «лечащий врач» и т.д.
Прежде, чем перейти к рассмотрению других конструкций языка, введем вспомогательную конструкцию описание переменной. Конструкция описание переменной необходима для того, чтобы задать имя переменной и связать его с именем отношения P из x и номером j его аргумента. Описание переменной имеет вид: P(c1,…, cj*,…, cn), где P – имя отношения, представляющего результаты ЭС, c1,… сj-1, cj+1,…, cn- имена вспомогательных переменных, cj*- имя описываемой переменной. Под значением cj* переменнной будем понимать множество всех j-ых элементов кортежей отношения P из x. Значениями вспомогательных переменных c1,… сj-1, cj+1,…, cn является множество кортежей с номерами 1,…, j-1, j+1,… n соответственно.
Текстовая конструкция выводимое множество указывает, что в тексте объяснения необходимо перечислить в определенном (в соответствии с условием) порядке все значения некоторой переменной. Данная конструкция имеет вид <g:усл >, где g – описание переменной, усл – условие, которое накладывается на ее значения (условие может отсутствовать). Условие определяет, в каком порядке значения переменной должны быть помещены в текст объяснения, – либо алфавитном порядке, либо в порядке, который определен в этом условии.
Часто текст объяснения должен содержать повторяющиеся части, и при каждом повторении эти части несколько отличаются друг от друга, причем эти отличия должны определяться результатами ЭС. Текстовая конструкция цикл служит для представления таких повторяющихся частей и имеет вид: <s:усл,a>. Здесь s – описание переменной, усл – условие, которое накладывается на ее значения (условие может отсутствовать), a – тело цикла. Описание переменной необходимо для того, чтобы задать условия выполнения тела цикла: количество повторений тела цикла в объяснении, а также содержание изменяемых частей в теле цикла. Тело цикла – составной оператор. Содержание изменяемой информации при каждом выполнении тела цикла зависит от значений параметра цикла и вспомогательных переменных. При каждом выполнении тела цикла параметру цикла соответствует некоторое новое значение из множества ее значений, определяемое результатами ЭС и условием усл, которое накладывается на значения переменной. Каждому значению переменной соответствуют подмножества значений вспомогательных переменных.