ВУЗ:
Составители:
133 
Пронумеруем  участки  суши  и каждый  обозначим  одной  точкой  (вершиной  графа),  тогда  легко 
будет увидеть, что эта задача полностью  аналогична рассмотренной выше задаче о построении 
домика. Отличается от нее только отношение «ребро», описывающее граф, и количество  ребер. 
Набор фактов Пролога, описывающих данный граф, теперь будет выглядеть так: 
Ребро (а, 1,2). Ребро (а, 2, 1). 
Ребро (6, 1, 2). Ребро (б, 2, 1). 
Ребро (в, 1,3). Ребро (в, 3, 1). 
Ребро (г, 2, 3). Ребро (г, 3, 2). 
Ребро ( д, 2, 4). Ребро (д, 4, 2). 
Ребро (е, 2, 4). Ребро (е, 4, 2). 
Ребро (ж, 3, 4). Ребро (ж, 4, 3). Изменив в программе «найти__ путь*- 
количество ребер с восьми на семь, введем запрос: 
?- найти_ путь (Начальная, []). 
Ответом Пролога будет: Нет. К сожалению, наша программа подтверждает, 
что решения этой задачи не существует, что и было впервые строго доказано Эйлером в 1736 г. 
Еще  одна  интересная  особенность  языка  Пролог:  в  процессе  работы программы  ее  база 
может  изменяться.  Какие-то  факты  могут  удаляться  из  нее,  а  другие  добавляться.  Причем  это 
относится не только к фактам, но и к правилам. Это позволяет строить на языке Пролог программы 
с элементами «самообучения». Например, к программе, рисующей домик, можно было бы добавить 
еще одну подцель для того, чтобы она запоминала в своей базе данных каждое найденное решение. 
Если впоследствии пользователь введет запрос на решение задачи с теми же исходными данными 
(т.е. для той же начальной вершины), Пролог выдаст ему заранее заготовленное решение, уже не 
проводя поиска. Такой вариант программы представлен ниже. 
Следует предупредить читателя, чтобы он не огорчался, если ему не во всех деталях понятно 
функционирование приводимых примеров на языке Пролог. Приведенных выше сведений о работе 
Пролога для этого просто недостаточно. Мы преследуем цель не изучить язык, а изложить в самом 
общем виде основные идеи логического программирования. Конкретные примеры приводятся ис-
ключительно по тому соображению, что лучше один раз увидеть, чем сто раз услышать. Можно сто 
раз услышать, что программы на 
Пронумеруем участки суши и каждый обозначим одной точкой (вершиной графа), тогда легко
будет увидеть, что эта задача полностью аналогична рассмотренной выше задаче о построении
домика. Отличается от нее только отношение «ребро», описывающее граф, и количество ребер.
Набор фактов Пролога, описывающих данный граф, теперь будет выглядеть так:
                             Ребро (а, 1,2). Ребро (а, 2, 1).
                             Ребро (6, 1, 2). Ребро (б, 2, 1).
                             Ребро (в, 1,3). Ребро (в, 3, 1).
                             Ребро (г, 2, 3). Ребро (г, 3, 2).
                             Ребро ( д, 2, 4). Ребро (д, 4, 2).
                             Ребро (е, 2, 4). Ребро (е, 4, 2).
                       Ребро (ж, 3, 4). Ребро (ж, 4, 3). Изменив в программе «найти__ путь*-
количество ребер с восьми на семь, введем запрос:
                             ?- найти_ путь (Начальная, []).
                       Ответом Пролога будет: Нет. К сожалению, наша программа подтверждает,
что решения этой задачи не существует, что и было впервые строго доказано Эйлером в 1736 г.
       Еще одна интересная особенность языка Пролог: в процессе работы программы ее база
может изменяться. Какие-то факты могут удаляться из нее, а другие добавляться. Причем это
относится не только к фактам, но и к правилам. Это позволяет строить на языке Пролог программы
с элементами «самообучения». Например, к программе, рисующей домик, можно было бы добавить
еще одну подцель для того, чтобы она запоминала в своей базе данных каждое найденное решение.
Если впоследствии пользователь введет запрос на решение задачи с теми же исходными данными
(т.е. для той же начальной вершины), Пролог выдаст ему заранее заготовленное решение, уже не
проводя поиска. Такой вариант программы представлен ниже.
      Следует предупредить читателя, чтобы он не огорчался, если ему не во всех деталях понятно
функционирование приводимых примеров на языке Пролог. Приведенных выше сведений о работе
Пролога для этого просто недостаточно. Мы преследуем цель не изучить язык, а изложить в самом
общем виде основные идеи логического программирования. Конкретные примеры приводятся ис-
ключительно по тому соображению, что лучше один раз увидеть, чем сто раз услышать. Можно сто
раз услышать, что программы на
                                                133
Страницы
- « первая
- ‹ предыдущая
- …
- 131
- 132
- 133
- 134
- 135
- …
- следующая ›
- последняя »
