Читаем 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.    Заключительные замечания

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

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

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

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

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT