Читаем Prolog полностью

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

% Процедура


% рассмотреть( Цель, Трасса, Ответ)


%


% находит степень правдоподобия утверждения "цель это правда".


% Оценка правдоподобия содержится в объекте Ответ. Трасса - это


% цепочка целей-предшественников и правил, которую можно


% использовать в объяснении типа "почему"

        рассмотреть( Цель, Трасса, ( Цель: Вер) было


                                    'выведено по' ПравОтв) :-


                bagof( Прав: если Условие то Цель с Сила, Правила),


                                    % Все правила, относящиеся к цели


                априори( Цель, Вер0),


                                    % Априорная вероятность цели


                модиф( Вер0, Правила, Трасса, Вер, ПравОтв).


                                    % Модифицировать априорные вероятности

        рассмотреть( Цель1 и Цель2, Трасса,


                                ( Цель1 и Цель2 : Вер было 'выведено из'


                                ( Ответ1 и Ответ2) ) :-


                !,


                рассмотреть( Цель1, Трасса, Ответ1),


                рассмотреть( Цель2, Трасса, Ответ2),


                вероятность( Ответ1, В1),


                вероятность( Ответ2, В2),


                мин( В1, В2, Вер).

        рассмотреть( Цель1 или Цель2, Трасса,


                                ( Цель или Цель2:Вер) было 'выведено из'


                                ( Ответ1 и Ответ2) ) :-


                !,


                рассмотреть( Цель1, Трасса, Ответ1),


                рассмотреть( Цель2, Трасса, Ответ2),


                вероятность( Ответ1, В1),


                вероятность( Ответ2, В2),


                макс( В1, В2, Вер).

        рассмотреть( не Цель, Трасса,


                        ( не Цель:Вер) было 'выведено из' Ответ) :-


                !,


                рассмотреть( Цель, Трасса, Ответ),


                вероятность( Ответ, В),


                обратить( В, Вер).

        рассмотреть( Цель, Трасса, ( Цель: Вер) было сказано) :-


                ответпольз( Цель, Трасса, Вер).


                                    % Ответ, выведенный пользователем

% Отношение


%


% модиф( Вер0, Правила, Трасса, Вер, ПравОтв)


%


% Существует Цель с априорной вероятностью Вер0. Правила имеют


% отношение к утверждению Цель; суммарное влияние этих правил


% (точнее, их условных частей) на Вер0 приводит к тому,


% что Вер0 заменяется на апостериорную вероятность Вер;


% Трасса - список целей-предков и правил, использовавшихся


% при выводе утверждения Цель;


% ПравОтв - результаты анализа условных частей


% правил из списка Правила.

        модиф( Вер0, [ ], Трасса, Вер0, [ ]).


                                    % Нет правил - нет модификации

        модиф( Вер0,


                        [ Прав : если Усл то Цель с Сила | Правила],


                        Трасса, Вер, [Прав из Ответ | ПравОтв] ):-


                рассмотреть( Усл, [Цель по Прав | Трасса], Ответ),


                                    % Условие из первого правила


                априори( Усл, В0),


                вероятность( Ответ, В),


                импликация( В0, В, Сила, Вер0, Вер1),


                                    % "Мягкая" импликация


                модиф( Вер1, Правила, Трасса, Вер, ПравОтв).

Рис. 14. 16.  Определение степени правдоподобия гипотезы при помощи


распространения информации об оценке уверенности по сети вывода.


Назад | Содержание | Вперёд

Назад | Содержание | Вперёд

14. 7.    Заключительные замечания

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

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

Перейти на страницу:

Похожие книги

Слово о полку Игореве
Слово о полку Игореве

Исследование выдающегося историка Древней Руси А. А. Зимина содержит оригинальную, отличную от общепризнанной, концепцию происхождения и времени создания «Слова о полку Игореве». В книге содержится ценный материал о соотношении текста «Слова» с русскими летописями, историческими повестями XV–XVI вв., неординарные решения ряда проблем «слововедения», а также обстоятельный обзор оценок «Слова» в русской и зарубежной науке XIX–XX вв.Не ознакомившись в полной мере с аргументацией А. А. Зимина, несомненно самого основательного из числа «скептиков», мы не можем продолжать изучение «Слова», в частности проблем его атрибуции и времени создания.Книга рассчитана не только на специалистов по древнерусской литературе, но и на всех, интересующихся спорными проблемами возникновения «Слова».

Александр Александрович Зимин

Литературоведение / Научная литература / Древнерусская литература / Прочая старинная литература / Прочая научная литература / Древние книги