Научная статья на тему 'Реализация механизма поддержки принятия решений с использованием фреймовой модели на примере задачи Эйнштейна'

Реализация механизма поддержки принятия решений с использованием фреймовой модели на примере задачи Эйнштейна Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
507
67
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Нечаев Н. П., Рогозин О. В.

В системах, использующих механизм логического вывода решения основную роль играет способ представления знаний. Наиболее распространены логическая, продукционная, фреймовая модели представления знаний, а так же семантическая сеть. Рассмотрим применение фреймовой модели на примере разработки программного модуля решения задачи Эйнштейна

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Реализация механизма поддержки принятия решений с использованием фреймовой модели на примере задачи Эйнштейна»

Реализация механизма поддержки принятия решений с использованием фреймовой модели на примере задачи Эйнштейна

Нечаев Н.П., Рогозин О.В.

МГТУ им. Н.Э. Баумана

В системах, использующих механизм логического вывода решения основную роль играет способ представления знаний. Наиболее распространены логическая, продукционная, фреймовая модели представления знаний, а так же семантическая сеть. Рассмотрим применение фреймовой модели на примере разработки программного модуля решения задачи Эйнштейна 1. Фреймовая модель представления знаний

Определим фреймовую модель представления знаний следующим образом: о знание организовано в виде совокупности взаимосвязанных описаний - классов

данной предметной области; о формальная структура для такого описания названа фреймом. Это дает возможность упаковать знания в структуры, организованные подходящим образом, сохраняя их обозримость на всех уровнях; о фреймы организуются в иерархии по уровню абстракции; конкретным объектам соответствуют экземпляры фреймов; свойства общих понятий наследуются конкретным понятием в иерархии. Наследование представляет собой особый вид дедукции, что дает выигрыш в эффективности и, что более важно, облегчает построение системы фреймов - базы знаний. Такие описания выглядят гораздо более близким к мыслительным структурам человека, нежели формализмы типа исчисления предикатов; о структурное описание предполагает содержание ссылок на другие фреймы, что позволяет описывать различные отношения между понятиями данной предметной области. Указанные ссылки могут иметь вид фрейма - прототипа со значениями его свойств-слотов. Сопоставление с прототипом также является механизмом, частично заменяющим обычную дедукцию, и, в то же время, более адекватным механизму мышления человека; о с фреймами связываются процедуры, описывающие те или иные специализированные для данной предметной области процессы (проблемно-логический подход, поддержка целостности базы знаний, учет взаимосвязей

экземпляров различных понятий и т.п.) Таким образом, фрейм представляет собой декларативно-процедурный модуль, включающий собственно предметную область, а также дополнительную информацию о способе его интерпретации.

Между различными концептуальными объектами существуют некоторые аналогии, в результате чего и фреймы, представляющие такие образы, выстраиваются в иерархическую систему с классификационными и обобщающими свойствами. При этом сложные объекты представляются комбинацией нескольких фреймов (вложенными фреймами). Свойством сети фреймов, заимствованным из семантических сетей, является наличие АКО-связей («А-Ктё-ОБ»), которые связывают фреймы с фреймами, находящимися на уровень выше в иерархии, откуда неявно наследуются (переносятся) значения слотов. Каждый фрейм имеет уникальное имя (идентификатор) в пределах системы фреймов.

Пример

ЧЕЛОВЕК

АКО Млекопитающее

УМЕЕТ Мыслить

ЛЕКТОР

АКО Человек

ОБРАЗОВАНИЕ Высшее

ВОЗРАСТ 23-60

В данном случае представлено одно звено иерархии (ЧЕЛОВЕК-ЛЕКТОР). Здесь фрейм «ЧЕЛОВЕК» является обобщающим для фрейма «ЛЕКТОР». Таким образом, фрейм «ЛЕКТОР» наследует от фрейма «ЧЕЛОВЕК» значение слота «УМЕЕТ» (а также других слотов, не показанных в примере). Цепочка наследования может быть продолжена вплоть до, например, фрейма «ЖИВОЕ СУЩЕСТВО».

Такая структура позволяет систематизировать большой объем информации, оставляя ее при этом максимально удобной для использования. Кроме того, система фреймов способна отражать концептуальную основу организации памяти человека.

2. Рассмотрим реализацию фреймовой модели представления знаний на примере решения задачи Эйнштейна.

Условия задачи следующие:

1. Есть пять домов, каждый разного цвета.

2. В каждом доме живет один человек, отличающийся от соседнего по национальности: немец, англичанин, швед, датчанин, норвежец.

3. Каждый пьет только один напиток, выращивает определенное растение и держит определенное животное.

4. Никто из 5 человек не пьет одинаковые с другими напитки, не выращивает одинаковое растение и не держит одинаковое животное.

Цель решения: определить кому принадлежит рыба? При этом дополнительные условия включают:

1. Англичанин живет в красном доме.

2. Швед держит собаку.

3. Датчанин пьет чай.

4. Зеленый дом стоит слева от белого.

5. Жилец зеленого дома пьет кофе.

6. Человек, который выращивает ячмень, держит птицу.

7. Жилец из среднего дома пьет молоко.

8. Жилец из желтого дома выращивает томаты.

9. Норвежец живет в первом доме.

10. Тот, кто держит кошку, живет около того, кто выращивает свеклу.

11. Человек, который содержит лошадь, живет около того, кто выращивает томаты.

12. Тот, кто выращивает пшеницу, пьет сок.

13. Норвежец живет около голубого дома.

14. Немец выращивает капусту.

15. Тот, кто выращивает свеклу, живет по соседству с человеком, который пьет воду.

Если трактовать условие (4) как «зеленый дом стоит непосредственно слева от белого», то задача имеет единственное решение. Причем под решением в данном случае понимается не только определение того, кому принадлежит рыба, но и полное распределение дом - человек - напиток - растение - животное, охватывающее все объекты, описанные в условии. Попробуем представить предметную область задачи с

помощью набора фреймов. В условии фигурируют объекты 5 классов: «дом», «человек», «напиток», «растение» и «животное». Каждому классу принадлежит 5 объектов. Таким образом, наиболее логичным решением в данном случае будет создание для каждого класса абстрактного фрейма, описывающего этот класс, а для каждого объекта, принадлежащего классу, создание конкретного фрейма, наследуемого от абстрактного и описывающего этот объект. На рис. 2.1 представлены фреймовые диаграммы классов «Дом» и «Человек». Диаграммы классов «Напиток», «Растение» и «Животное» не показаны, поскольку представляющие их фреймы достаточно тривиальны (не содержат ни одного слота).

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

Другая часть информации может быть заложена в модель с помощью процедур, задаваемых для фрейма и вызываемых при изменении значения его слотов. Эта информация носит характер проверяемых условий. Например, условие «жилец желтого дома выращивает томаты» может быть проверено процедурой, вызываемой при изменении значения слота «РАСТЕНИЕ» фрейма «ЖЕЛТЫЙ ДОМ». Сложнее обстоит дело с условиями типа «тот, кто держит кошку, живет около того, кто выращивает свеклу». Для проверки таких условий каждый дом должен располагать информацией о соседних домах и их обитателях. В программе, которая будет рассмотрена в главе 3, связь домов друг с другом реализована путем введения списка домов, учитывающего их расстановку, причем каждый «дом» имеет доступ к этому списку.

ДОМ

Цвет

Позиция

Жилец Ссылка на фрейм <ЧЕЛОВЕК>

КРАСНЫЙ дом

АКО ДОМ

Цвет Красный

ЗЕЛЕНЫЙ дом

АКО ДОМ

Цвет Зеленый

БЕЛЫЙ ДОМ

АКО ДОМ

Цвет Белый

ЖЕЛТ] ЫЙ ДОМ

АКО ДОМ

Цвет Желтый

ГОЛУБОЙ дом

АКО ДОМ

Цвет Голубой

ЧЕЛОВЕК

Нац-ность

Дом Ссылка на фрейм <ДОМ>

Напиток Ссылка на фрейм <НАПИТОК>

Растение Ссылка на фрейм <РАСТЕНИЕ>

Животное Ссылка на фрейм <ЖИВОТНОЕ>

АНГЛИЧАНИН

АКО ЧЕЛОВЕК

Нац-ность Англичанин

Дом Красный

ШВЕД

АКО ЧЕЛОВЕК

Нац-ность Швед

Животное Собака

ДАТЧАНИН

АКО ЧЕЛОВЕК

Нац-ность Датчанин

Напиток Чай

НОР] ВЕЖЕЦ

АКО ЧЕЛОВЕК

Нац-ность Норвежец

НЕМЕЦ

АКО ЧЕЛОВЕК

Нац-ность Немец

Растение Капуста

Рис 2.1. Фреймовая диаграмма классов «Дом» и «Человек»

3. Программная реализация решения задачи Эйнштейна

Фреймовая модель очень удобна с точки зрения программной реализации, поскольку она напрямую соответствует парадигме объектно-ориентированного программирования. С точки зрения ООП, фреймы представляют собой ни что иное, как классы. Слоты являются аналогом полей классов. Иерархия фреймов соответствует иерархии классов, которая строится с помощью механизма наследования. Процедуры фреймов, выполняемые при определенных условиях, можно реализовать с помощью обработчиков соответствующих событий, определенных для полей классов. Горизонтальные связи реализуются путем добавления в класс ссылок на объекты других классов, с которыми планируется взаимодействие.

На рис. 3.1 представлена диаграмма классов, реализующих фреймовую модель предметной области (далее просто «Модель»), описанную в главе 2. Ключевыми являются классы «House» и «Man», от которых наследуются классы, описывающие уже конкретные дома и конкретных людей. Классы, представляющие напитки, растения и животных, в силу своей тривиальности реализованы в виде перечислений.

Программный модуль состоит из двух основных частей: набора классов, реализующих фреймовую модель, и внешнего модуля, который осуществляет генерацию наборов данных, наблюдением за «реакцией» модели и принятием необходимых решений. Вся предметная область разбита на 5 уровней:

1) уровень домов 2)уровень людей 3)уровень напитков 4)уровень растений ->5) уровень животных.

Мап

а™

и

- Fields

_inimsi ft (tint

V _house > _№nt

^ Properties ^ Animal J? Prink ^ OwnlfctEe F'lartt

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

- Methods

сиескэгм^еаг

CtieckPlantlsNear v GfitNatlnnality v oniiiirnaichanged ^ OnDrinkC hanged

V OnHouseC hanged * DnPlarttChenged

=> Evaite

4 AnimalChangeJ f Drlnk£hanged / HoiEeChangeJ / f'lartbClianged

EnglishMan

□as -H^n

s

/ . Л

Swede Mail и

□н

-t-r-un

DancHan □ш а

Honvcg ia п Ma n

Gas -»Man

S бегтипмап

Gas

-tMan

v

Mouse ftl

ant

Ы Fields ft „position f HauseList it OwnerMan в РгарегИеА

'^f Ptjsibon Ы Methods v GetCotor V House (+ L overt... v OnPtisitionChanged Ы Events

f PcisitioinChe<4ed 7T

f af|

Red House

QM$

"^Hcww

V j

White House j

□дм

-+ Нале

V -J

Green Mouse Ml

□дм

■+ Нцке

V -J

f Dj

YellowMousc

Gas

-r-HOuii

L -J

Э

Gas

-t-HOuii

V- J

drinks

Emm

wilnwn

ttd

coffee

milk

lulti

water

plants .41

Bun

unknown

barley

tomato

beet

wheat

cabbage

я rim* Ь :!niJ~1

unknown

tat 1

dog

poultry

horse

na

Рис. 3.1. Диаграмма классов предметной области задачи

Такой порядок следования уровней означает, что сначала определяется позиция дома, затем для данного дома определяется его жилец, после чего для жильца определяются его напиток, растение и животное. В общем случае порядок уровней не играет решающей роли, но для конкретной реализации он должен быть фиксирован. Программа действует методом проб и ошибок. На самом верхнем уровне генерируется перестановка домов. Каждому дому присваиваются позиция, соответствующая его номеру в перестановке. При этом программа наблюдает за «реакцией» модели. Допустим, что в перестановке зеленый дом оказался справа от белого (по условию, зеленый дом стоит слева от белого). При присвоении зеленому дому его позиции он проверит, где в данный момент находится белый дом. Если позиция белого дома уже определена, и он не стоит слева от зеленого, объект, представляющий зеленый дом, выбросит исключение, сигнализирующее о том, что произошел конфликт с условием задачи. Внешняя программа перехватит исключение, произведет откат перестановки на текущем уровне (обнулит позиции всех домов) и

перейдет к генерации следующей перестановки. Если же текущая перестановка не вызвала конфликт условий, программа спустится на уровень ниже. На следующем уровне генерируется перестановка людей. После генерации каждому человеку присваивается дом из текущей перестановки домов, номер которого соответствует номеру данного человека в перестановке людей. При этом модель автоматически присваивает значения определенным атрибутам объектов в соответствии с условиями задачи. Допустим, внешняя программа пытается «поселить» датчанина в желтый дом, стоящий на позиции «3». Объект, представляющий датчанина, проверяет позицию желтого дома и, обнаружив, что дом стоит посередине, присваивает атрибуту «напиток» значение «молоко», т.к. по условию жилец из среднего дома пьет молоко. При этом этот же объект проверяет, не связано ли молоко с каким-либо другим человеком. Если оказывается, что молоко уже используется для кого-то в качестве напитка, генерируется исключение. Таким образом, модель самостоятельно проверяет соблюдение всех условий задачи. Внешней программе остается лишь генерировать перестановки и следить за реакцией модели.

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

На рис 3.2 показана работа программы в процессе решения задачи. Имеется возможность вывести на консоль ход «рассуждений» программы. При этом, как уже было сказано, предположения относительно расположения и принадлежности объектов делаются внешней программой, а проверка условий и генерация исключений (включая формирование текста ошибки) осуществляются моделью. Индикаторы в нижней правой части окна приложения показывают процент сгенерированных перестановок от общего числа перестановок на каждом уровне (максимальное число перестановок на одном уровне равно 5! = 120). На рис. 3.3 показаны результаты работы программы: таблица, отображающая полное решение

задачи, а также статистика - время, затраченное на решение, и число сделанных перестановок на каждом уровне.

Рис. 3.2. Программа в процессе решения задачи

ешенне задачи Эйнштейна с не пользован нем фреймовой модели

г Результаты решения задачи

ЗАДАЧА РЕШЕНА ттмя РЕШЕНИЯ: НСЕК

СГЕНЕРИРОВАНО ПЕРЕСТАНОВОК:

Е0И

домов -2

ЛЮДЕЙ ■66

НАПИТКОВ -62

РАСТЕНИЙ ■9

ЖИВОТНЫХ ■57

Запустить процесс решения

Позиция Дом 1 Ц Желтый дом Голубой дом 3. 4 Красный дом Зеленый дом 5 Белый дом

Человек Норвежец Датчанин Англичанин Немец Швек

Нап:тток Ёода Чай Молоко Кофе Сок

Растение Томаты Свекла Ячмень Капуста ¡Пшеница

Животное Кошка Пошедь Птица Рьйа Собака

Закрыть

Выводить логику на экран 0 0станов1тться после получения первого решения

Решить задачу полностью

Догма Люди

Напитки

Растения

Животные

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

---------------

[¡■а

¡«ищтщтщтии'»'

Рис. 3.3. Результаты работы программы

Метод решения задачи полным перебором вариантов имеет некоторую особенность. Если программа останавливается после получения первого решения (т.е. происходит перебор только части вариантов), то время решения сильно зависит от того, насколько хорошо «угаданы» начальные перестановки объектов, которые задаются в коде программы. На рис. 3.3 видно, что программа решила задачу, сделав только 2 перестановки домов, т.е. начальная перестановка была очень близка к той, которая дала положительный результат. А проверка одной перестановки домов (не вызвавшей конфликта на уровне домов) требует наибольших временных затрат, поскольку под ней находятся еще 4 уровня генерации и проверок. При этом, предметная область задачи состоит из 5 уровней по 5 объектов в каждом, т.е. количество всех возможных перестановок составляет (5!)5 = 24 883 200 000. Для каждого уровня существуют условия, которые позволяют «забраковать» перестановку еще до спуска на уровень ниже. Для уровня домов это условие «Зеленый дом стоит слева от белого», которое сразу отбрасывает больше половины всех возможных перестановок домов. На уровне людей имеются 2 условия: «Англичанин живет в красном доме» и «Норвежец живет в первом доме». Вероятность того, что программа «попытается поселить» англичанина именно в красный дом составляет 1/5, вероятность того, что красный дом окажется не 1-м по порядку, равна 4/5, и, наконец, вероятность того, что норвежец будет «поселен» именно в 1-й дом, равна 1/4 (в одном доме уже «живет» англичанин). Таким образом, вероятность того, что сгенерированная на уровне людей перестановка будет удовлетворять условиям задачи, не превышает 1/25. Учитывая то, что одновременно с «расселением» людей модель будет расставлять и проверять атрибуты более низкого уровня (например, при «поселении» человека в зеленый дом, ему, согласно условию, будет приписано кофе в качестве напитка, а если этим человеком окажется датчанин, который по условию пьет чай, расстановка будет забракована), вероятность заметно уменьшается. Таким образом, уже после применения условий для 1-го и 2-го уровней, от исходных 25 миллиардов остаются не более 500 миллионов перестановок, проверка которых требует спуска на нижние уровни модели.

i Надоели баннеры? Вы всегда можете отключить рекламу.