Суббота, 20.04.2024, 11:21
Приветствую Вас Гость | RSS

Язык программирования ПРОЛОГ

Отсечение, отрицание.

Отсечение

   В процессе достижения цели Пролог-система осуществляет автоматический перебор вариантов, делая возврат при неуспехе какого-либо из них. Такой перебор – полезный программе механизм, так как он освобождает пользователя от необходимости производить этот перебор самому. С другой стороны ничем не ограниченный перебор может быть источником неэффективности программы. Поэтому требуется его ограничить или исключить вовсе. Для этого предусмотрено специальное целевое утверждение «!,», называемое отсечением. Отсечение реализуетяс следующим образом: после согласования ЦУ, стоящего перед отсечением, все предположения с тем же предикатомрасположенные после отсечения не рассматриваются. предположим, что надо вычислить число родителей кого-нибудь.

число_родителей (адам, 0):-,!

число_родителей (ева, 0):-,!

число_родителей (_, 2).

   Можно выделить три основных функци отсечения:

1.      Для устранения бесполезного цикла ( вычисление суммы 1+2+…+N)

сумма (1, 1):-,!

сумма (N, K):- N1=N-1, сумма (N1, K1), K=K1+N.

Если граничное условие будет записано в виде сумма (1, 1). , то сопоставление головы правила с запросом будет происходить успешно и при n=0, то есть будет предпринята попытка доказать цель сумма (0, К), что в свою очередь приводит к цели сумма (-1, К) и т.д.

2.      При программировании взаимоисключающих утверждений.

max (X, Y, Max)

max (X, Y, X):- X>=Y.

max (X, Y, Y).

Или

max (X, Y, X):- X>=Y,!

max (_, Y, Y).

3.      При необходимости неудачного завершения цели.

категория (Кр, _):- Кр>100,!, fail; Кр<0, !, fail.

категория (Кр, ‘A’):- Кр>80, !

категория (Кр, ‘В’):- Кр>40, !

категория (Кр, ‘С’).

Отрицание (NOT)

   Встроенный предикат not имеет один аргумен. Этим аргументом являетяс отношение, значение истинности которого (после обработки этого отношения) заменяется на противоположное.
Меню сайта
Форма входа
Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Long Time Ago © 2024
Сделать бесплатный сайт с uCoz