информационно-новостной портал
Главная / Статьи / Информатика / Программирование /

repeat, отсечение, 3 случая использования отсечения

Предикат repeat/0 обеспечивает повторное согласование уже выполн.

целей в процессе возврата. Обычно испол. для зацикливания преди-

катов, не имеющих альтернатив, например, в правиле

Процесс док-ва в Прологе основывается на поиске в глубину. Сначала

выбирается 1-я по порядку альтернатива, кот. м.б. исп. для док-ва цели.

Если неуспех, т.е. происх-т  возврат в точку выбора и выбирается след

альтернатива и т.д. Процесс продолжается пока не будет доказан запр.

Предикат отсечения !  позволяет уменьшить простр-во поиска и сократ.

перебор, отбрасывая неиспольз. альтернативы.

Рез-ты отсечения:

1)отбрас. все предл-я для согл. цели, расп. после правила, содерж. !

2)отбрас. все альтернат. решения конъюнкции целей, располож. в

предлож. левее !

3)! не влияет на цели, расположенные правее него. В случае возврата

они могут порождать альтерн. решения. Если док-во этих целей будет

неуспешным,  происходит возврат к последнему выбору, сделанная

перед выбором предложения, содерж отсечение.

3 случая использования отсечения:

1)подтверждение правильности выбора правила: отсечение фиксир.

выбор правила, повышает эффект-ть программы за счет отбрасывания

неподходящих альтернатив.

2)прекращение док-ва цели: предикат м.б. заведомо ложным для некоторых аргументов или м.б. неприменим к аргументам опред. вида. Удобно выделять такие исключ. в отдельн. правила, уменьшая т.о. сложность определ-я. Это можно сделать с пом. комбинации «отсеч-е-

неудача».

3)завершение последоват-ти порождения и проверки вариантов:

цели в Прологе м.б. согласованны множ-ом различных способов и порождают много возможных решений при возврате. С пом-ю отсеч-я

можно завершить порождение альтерн. решений, если в них нет необходимости, или существуют только единств. решение.

8. Встроенные предикаты для классификации термов.

Логические предикаты, особенности использования отрицания.

1)var(X) проверяет является ли X неконкретизир-й переем-ой.

nonvar(X) X конретизир-я перем-я.

atom(X) является ли X атомом.

integer(X)-целое число, float(X)-веществ. число, number(X)-число,

atomic(X)-X- число или атом.

2)Простейшие логич. предикаты- true и fail. Для конъюнкции целей исп

‘,’, для дизъюнкции ‘;’.

Для отрицания используется not(X). Т.к. запятая служит для кон. целей,

так и для раздел-я аргументов, требуются доп. скобки, если аргумент в

not не явл. элемнент. выражением. (not((A,B))!!!).

IF THEN ELSE-> (A,B;not(A),C) или (A,B;C). IF THEN-> (A,B:true).

:-op(1160,fx,если). :-op(1150,xfx,то). :-op(1155,xfx,иначе).

Просмотров: 630 | Дата добавления: 08.02.2016