Основы построения и функционирования интеллектуальных информационных систем. Былкин В.Д - 134 стр.

UptoLike

134
Прологе, решающие довольно сложные задачи, отличаются краткостью и ясностью, но лучше
все-таки один раз увидеть эту краткость своими глазами. Если же наше изложение идей Пролога
подтолкнет читателя к более углубленному изучению языка для практического применения его в
своей области деятельности, эти примеры, возможно, помогут ему в освоении языка.
Итак, вот вариант программы «найти-путь» с запоминанием найденных решений. Здесь
asserta встроенный предикат, добавляющий новое правило в базу данных;
найти_ путь (Начальная, Текущая, Пройденные)>
длина (Пройденные, 8),
asserta ( найти_ путь (Начальная, Текущая, Пройденные):-
write (Пройденные)),
write (Пройденные).
найти_ путь (Начальная, Текущая, Пройденные):-
ребро (Ребро, Текущая, Новая),
не_является элеметом (Ребро, Пройденные),
найти_ путь (Начальная, Новая, [РеброI Пройденные ]):-
Разумеется, ясно, что в нашей сверхпростой задаче о построении домика применение этого
приема бессмысленно, так как существуют всего две допустимые вершины, с которых можно
начинать построение. Однако представим себе, что мы разрабатываем на Прологе справочную
систему «как проехать по Москве» для обслуживания пассажиров городского транспорта. Легко
увидеть, что эта задача того же класса: поиск кратчайшего пути в графе. Здесь множество
различных запросов, огромно и запоминание готовых ответов на запросы вида; «как проехать от
ГУМа к универмагу «Московский?» или «... от универмага «Москва» к Казанскому вокзалу?»
можно значительно сократить среднее время ожидания пользователем ответа системы. Понятно,
что запоминание всех ответов на все запросы в данном случае быстро переполнило бы любой объем
памяти системы. Видно, здесь необходимо было бы учитывать частоту появления тех или иных
запросов и удалять из базы данных ответы на редко встречающиеся запросы. Пролог обеспечивает
и эту возможность.
Почему мы уделили столько внимания задачам поиска путей в графах, решаемых Прологом
перебором всех вариантов. Дело в том, что этот класс задач тесно связан с задачами, возникающими
при построении систем искусственного интеллекта. В теоретических задачах, связанных с этой
областью, было показано, что способностью
Прологе, решающие довольно сложные задачи, отличаются краткостью и ясностью, но лучше
все-таки один раз увидеть эту краткость своими глазами. Если же наше изложение идей Пролога
подтолкнет читателя к более углубленному изучению языка для практического применения его в
своей области деятельности, эти примеры, возможно, помогут ему в освоении языка.
      Итак, вот вариант программы «найти-путь» с запоминанием найденных решений. Здесь
asserta — встроенный предикат, добавляющий новое правило в базу данных;

      найти_ путь (Начальная, Текущая, Пройденные)>
     длина (Пройденные, 8),
      asserta ( найти_ путь   (Начальная, Текущая, Пройденные):-
      write (Пройденные)),
      write (Пройденные).
      найти_ путь (Начальная, Текущая, Пройденные):-
      ребро (Ребро, Текущая, Новая),
      не_является элеметом      (Ребро, Пройденные),
      найти_ путь (Начальная, Новая, [РеброI Пройденные ]):-

      Разумеется, ясно, что в нашей сверхпростой задаче о построении домика применение этого
приема бессмысленно, так как существуют всего две допустимые вершины, с которых можно
начинать построение. Однако представим себе, что мы разрабатываем на Прологе справочную
систему «как проехать по Москве» для обслуживания пассажиров городского транспорта. Легко
увидеть, что эта задача того же класса: поиск кратчайшего пути в графе. Здесь множество
различных запросов, огромно и запоминание готовых ответов на запросы вида; «как проехать от
ГУМа к универмагу «Московский?» или «... от универмага «Москва» к Казанскому вокзалу?»
можно значительно сократить среднее время ожидания пользователем ответа системы. Понятно,
что запоминание всех ответов на все запросы в данном случае быстро переполнило бы любой объем
памяти системы. Видно, здесь необходимо было бы учитывать частоту появления тех или иных
запросов и удалять из базы данных ответы на редко встречающиеся запросы. Пролог обеспечивает
и эту возможность.
     Почему мы уделили столько внимания задачам поиска путей в графах, решаемых Прологом
перебором всех вариантов. Дело в том, что этот класс задач тесно связан с задачами, возникающими
при построении систем искусственного интеллекта. В теоретических задачах, связанных с этой
областью, было показано, что способностью




                                               134