Материал: Алгебра_кортежей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Преобразуем условия правил 1 и 2 в АК-объекты, приведя их к единой схеме отношения [XYZ]. Тогда получим:

Условие правила 1: R1

{c} {b}

 

,

=

 

 

 

 

 

 

{c}

 

Условие правила 2: R2

{b}

 

 

.

 

=

 

 

 

 

 

 

{b}

 

Покажем, как используются

эти

правила в АК. Пусть поступила

информация: "Основные источники вышли из строя в одном эшелоне, аварийные источники в строю и канализация энергии нарушена частично". Эта информация преобразуется в C-кортеж T = [{b} {a} {b}]. Применим правило 1, для чего найдем пересечение T R1 = . Следовательно, ситуация не соответствует этому правилу. Применим правило 2:

T R2 = [{b} {a} {b}].

Поскольку пересечение не пусто, то W = b.

Проанализируем корректность указанных правил средствами АК. Вопервых, проверим неоднозначности, то есть определим, содержат ли разные

условия какие-либо общие ситуации. Для

этого

вычислим

пересечение

R1 R2

{c}

{b} {b}

. Анализ показывает,

что

все общие

для данных

=

 

 

 

{b}

{c}

 

 

 

 

условий ситуации соответствуют состоянию W = c. Но в самой ЭС неоднозначности не возникают, так как приоритет правила 1, в котором предусмотрено это состояние, более высок, и эта ситуация распознается правильно. Возможен и другой вид некорректности, когда некоторые критические состояния не включены ни в одно из условий для аварийных ситуаций. Для анализа вычислим множество таких состояний с помощью формулы R1 R2 .

 

 

 

 

 

{c} {b}

 

 

 

 

R1 R2

=

 

{b}

 

 

 

 

 

 

 

{c} {b} {c} = {b} {b}

{b,c} ,

200

{a,b}

R1 R2 = {a,c}

{a}

{a} .

Получилась D-система. Преобразуем ее в ортогональную C-систему:

{a,b}

{a}

 

 

{a}

{a}

 

 

 

 

 

 

 

 

 

 

 

 

{a}

= {c}

{a} {a} .

{a,c}

 

 

 

 

 

 

 

 

 

 

 

 

Для специалиста понятно, что из 3-х возможных ситуаций одна (а именно [{c} {a} {a}]) является аварийной и соответствует состоянию W = c. Но она не включена ни в одно из условий, поэтому правила нужно откорректировать. В данном случае корректировка заключается в добавлении C-кортежа [{c} {a} {a}] в условие R1. В результате получим:

 

 

 

 

 

 

 

{c} {b}

 

 

 

 

 

 

 

R1 =

 

{c} .

 

{c} {a} {a}

 

 

 

 

 

 

Используя средства АК, можно также заменить комплект правил одним АК-объектом. Для этого объединим созданные в системе АК условия в один АК-объект и добавим атрибут, характеризующий состояние всей системы, в который запишем соответствующие состояния. Тогда получим АК-объект, позволяющий распознать все возможные ситуации. В частности, для рассмотренного примера таким АК-объектом будет C-система

 

 

 

 

 

{c}

{b}

{c}

 

 

 

{c}

{c}

 

 

 

 

 

{c}

{a} {a} {c}

R[XYZW] =

 

 

 

 

{b}

{b}

 

 

 

{b} {b}

 

 

 

 

 

{a}

{a} {a}

Допустим, на вход поступила информация X = b, Z = c. Она преобразуется в C-кортеж T[XYZW] = [{b} {c} ], и находится пересечение T R. В данном случае после выполнения операции получим C-систему

 

 

 

 

 

{b}

{c}

{c}

= [{b} {c} {c, b}]

 

 

 

 

{b}

{c}

{b}

 

 

 

 

 

201

снеоднозначным результатом в атрибуте W. Однако эту неоднозначность можно устранить, если использовать правило приоритета. Приоритет здесь определяется порядком расположения C-кортежей в R: первый полученный непустой результат пересечения является окончательным. С учетом этого для заданного входа получается результат W = c.

Из приведенного примера видно, что на основе АК можно создавать "прозрачные" и сравнительно простые в реализации интерпретаторы экспертных систем и к тому же проверять корректность правил на этапе проектирования системы. В последние годы по мере усложнения прикладных ЭС стало ясно, что для их разработки явно недостаточно средств, которые используются в "интеллектуальных" языках программирования (Пролог, Лисп и др.). Поэтому разработчики вынуждены переходить на программирование ЭС

спомощью языков высокого уровня, таких как C++, Object Pascal, Perl и т.д., где используются и средства управления базами данных, и методы объектноориентированного программирования. Вызвано это необходимостью совмещения структур данных и знаний. Использование АК позволяет более просто решить эту проблему, так как в ней данные и знания органично выражаются в одних и тех же структурах и обеспечены соответствующими алгоритмами.

Семантические сети. Покажем, как в АК осуществляется вывод на семантических сетях [Kulik, 2010]. Каждую семантическую сеть можно представить как совокупность бинарных отношений. Правила вывода в семантической сети записываются в виде продукций, в левой части которых содержится какой-либо фрагмент семантической сети (соединения или композиции некоторых из исходных отношений), а в правой части – фрагмент, заменяющий левую часть или добавляемый в семантическую сеть как новое отношение при срабатывании правила. Например, отношение "быть внуком" появляется в результате композиции отношения "быть сыном" с самим собой.

При реализации продукционного правила средствами АК в общем случае необходимо выполнить следующую последовательность шагов:

1)получить соединение или композицию отношений, стоящих в левой части правила;

2)исключить из получившегося отношения P все кортежи, не удовлетворяющие заданным ограничениям;

202

3)получить соединение (композицию) отношений T, стоящих в правой части продукции, при необходимости с учетом множества кортежей, получившихся при вычислении левой части правила;

4)если в правиле предусматривается замена левой части на правую, то из исходной базы знаний удалить все связи, содержащиеся в P;

5)добавить в базу знаний все связи из отношения T.

Рассмотрим пример из книги Д.А. Поспелова [Поспелов, 1989].

Исходная семантическая сеть изображена на рис. 5.6, правило вывода на этой сети на рис. 5.7, а результат применения правила – на рис. 5.8.

Рис. 5.6. Исходная семантическая сеть

Рис. 5.7. Продукция

Рис. 5.8. Результат применения продукции

Сначала выразим в структурах АК исходную сеть. Ее на языке АК можно записать в виде совокупности C-систем и С-кортежей:

 

 

 

 

 

 

R1[XY] = {A}

{B}

 

{A}

{D}

 

; R2[ZY] = {D}

{E} ;

{D}

{C,F,G,H}

{K}

{F,G,H,I}

 

 

 

 

 

 

R3[VY] = [{K} {L}]; R4[ZW] = [{A} {A}].

В левой части продукции предусматривается соединение отношений R1 и

203

R2 при условии, что значением атрибута X в R1 является D, а в R2 – K. Процедура выполнения продукции осуществляется в соответствии с уже описанным алгоритмом, за исключением того, что фильтрация отношений производится перед их соединением (иногда это более эффективно).

Шаг 1. Сначала отношения R1 и R2 приводятся в соответствие с ограничениями.

P1[XY] = R1[XY] [{D} ] = [{D} {C, F, G, H}];

P2[ZY] = R2[ZY] [{K} ] = [{K} {F, G, H, I}].

Шаг 2. Далее выполним перестановку атрибутов в отношении P2[ZY] и вычислим соединение полученных отношений:

P[XYZ] = P1[XY] P2[YZ] = [{D} {C, F, G, H} ] [ {F, G, H, I} {K}] = = [{D} {F, G, H} {K}].

Шаг 3. Отсутствует.

Шаг 4. Теперь, когда определено значение атрибута Y, можно вычислить правую часть продукции: P3[VY] = [{M} {F, G, H}].

Шаги 5 и 6. Остается откорректировать базу знаний. Для этого отношение R3 объединим с отношением P3 и откорректируем отношения R1 и R2 с учетом

проекций

отношения

P:

P4[XY] = P[XY] = [{D} {F, G, H}]

и

P5[ZY] = P[ZY] = [{K} {F, G, H}],

соответственно. Для этого с помощью

алгоритмов

АК вычислим

разности R1[XY] \ P4[XY] = R1[XY]

 

[XY]

и

P4

R2[ZY] \ P5[ZY] = R2[ZY] P5 [ZY]. Теперь добавим к R3[VY] кортежи отношения P3[VY] и получим сеть, изображенную на рис. 5.8:

R1[XY] =

R3[VY] =

 

 

{A} {D}

 

 

{A} {B}

 

 

; R2[ZY] = {D}

{E} ;

{D} {C}

{K}

{I}

 

 

 

 

{K}

{L}

; R4[ZW] = [{A} {A}].

 

 

{M}

{F,G,H}

 

Фреймы. Каждый фрейм состоит из набора слотов. Имя фрейма соответствует имени некоторого отношения, а имя слота внутри фрейма – имени какого-либо атрибута этого отношения. Таким образом, в простейшем случае фрейм есть своеобразное представление обычных файлов базы данных (таблиц или АК-объектов). Фрейм может иметь более разветвленную структуру, когда значениями некоторых слотов являются не элементы

204