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

        принадлежит( X, [гепард, тигр, пингвин, альбатрос]).

можно_спросить( _ 'кормит детенышей'_,


        'Животное' 'кормит детенышей' 'Чем').

можно_спросить( _ летает, 'Животное' летает).

можно_спросить( _ откладывает яйца,


        'Животное' откладывает яйца).

можно_спросить( _ ест _, 'Животное' ест 'Что').

можно_спросить( _ имеет _,'Животное' имеет 'Нечто').

можно_спросить( _ 'не может' _,


        'Животное' 'не может' 'Что делать').

можно_спросить( _ плавает, 'Животное' плавает).

можно_спросить( _ летает хорошо,


        'Животное' летает хорошо).


Рис. 14. 5.  Простая база знаний для идентификации животных.


Заимствовано из Winston (1984). Отношение "можно_спросить"


определяет вопросы, которые можно задавать пользователю.


Операторы  еслитои,   или  определены на рис. 14.10.


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

        если


                лампа1 включена  и


                лампа1 не работает  и


                предохранитель1 заведомо цел


        то


                лампа1 заведомо неисправна.

Вот другой пример правила:

        если


                радиатор работает


        то


                предохранитель1 заведомо цел.

Эти два правила опираются на некоторые факты (относящиеся к нашей конкретной схеме), а именно что лампа1 соединена с предохранитель1 и что лампа1 и радиатор имеют общий предохранитель. Для другой схемы нам понадобится еще один набор правил. Поэтому было бы лучше сформулировать правила в более общем виде (используя прологовские переменные) так, чтобы они были применимы к любой схеме, а затем уже дополнять их информацией о конкретной схеме. Например, вот одно из полезных правил: если прибор включен, но не работает, а соответствующий предохранитель цел, то прибор неисправен. На наш

Рис. 14. 6.  Соединения между предохранителями и приборами в


простой электрической схеме.

формальный язык это транслируется так:

правило_поломки:


                        если


                                Прибор включен и


                                не (Прибор работает) и


                                Прибор соединен с Предохранитель и


                                Предохранитель заведомо цел


                        то


                                Прибор заведомо неисправен.

База знаний такого рода показана на рис. 14. 7.

Упражнения

14. 1.    Рассмотрите "если-то"-правила рис. 14.2-14.4 и транслируйте их в нашу систему обозначений для правил. Предложите расширение нотации, чтобы, при необходимости, можно было работать с оценками уверенности.

% Небольшая база знаний для локализации неисправностей в


% электрической схеме

% Если прибор включен, но не работает, и предохранитель цел,


% то прибор неисправен.

        правило_поломки:


                                        если


                                                вкл( Прибор) и


                                                прибор( Прибор) и


                                                не работает( Прибор) и


                                                соед( Прибор, Предохр) и


                                                доказано( цел( Предохр) )


                                        то


                                                доказано( неиспр( Прибор) ).

% Если устройство работает, то его предохранитель цел

        правило_цел_предохр:


                                        если


                                                соед( Прибор, Предохр)


                                                и работает( Прибор)


                                        то


                                                доказано( цел( Предохр) ).

% Если два различных прибора подключены к одному и тому же


% предохранителю, оба включены и не работают, то предохранитель


% сгорел.


% ЗАМЕЧАНИЕ: предполагается, что из двух приборов неисправных -


% не более одного!

            правило_предохр:


                                        если


                                                соед( Прибор1, Предохр) и


                                                вкл( Прибор1) и


                                                не работает( Прибор1) и


                                                общ_предохр( Прибор2, Прибор1) и


                                                вкл( Прибор2) и


                                                не работает( Прибор2)


                                        то


                                                доказано( сгорел( Предохр) ).

        правило_общ_предохр:


                                        если


                                                соед( Прибор1, Предохр) и


                                                соед( Прибор2, Предохр) и


                                                различны( Прибор1, Прибор2)


                                        то


                                                общ_предохр( Прибор1, Прибор2).

        факт:  различны( X, Y) :- not (X=Y).

        факт:  прибор( радиатор).


        факт:  прибор( лампа1).


        факт:  прибор( лампа2).


        факт:  прибор( лампа3).


        факт:  прибор( лампа4).

        факт:  соед( лампа1, предохр1).


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

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

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