Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
здесь ВСЁ.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
317.44 Кб
Скачать

102. Классификация Constraint систем логического программирования

Например, CLP(B) означает возможность решать уравнения с булевыми переменными. CLP(Q) - уравнения в рациональных числах, а CLP(R) - в вещественных. Причем последние могут решаться приближенно CLP(Rfloat), а могут с применением интервальной арифметики CLP(Rint). Но наиболее популярны решатели задач на конечных доменах CLP(FD), то есть на конечных множествах целых чисел. 

103. Стандартные предикаты Constraint систем программирования

Обычные знаки арифметических отношений, которые имеют префикс #, указывают на их особый статус. Арифметические ограничения можно комбинировать с помощью  логических связок (#\, #/\, #\/, #=> и #<=>).

предикат indomain(X), который возвращает все значения из области определения ограниченной переменной. indomain может выдать очень много значений. Как правило каждая переменная вводится с явным описанием домена, который представляет собой либо диапазон целых чисел, либо список все тех же целых чисел. Выполнение

domain(X,1,100)- ограничивает значения X диапазоном от 1 до 100. То же самое можно сделать посредством

104. Множественные предикаты. Описание компонентов

Возможность получение различных ответов на вопрос путем отката полезна, но бывает недостаточной. Иногда требуется получить все ответы сразу. Для этого предназначены "множественные" предикаты findall, bagof и setof.

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

Предикат bagof(Object,Goal,List) порождает список List всех объектов Object, отвечающих цели Goal. Очевидно, что Goal и Object должны содержать общие переменные.

В случае отсутствия решения предикат неуспешен

Предикат setof(Object,Goal,List) отличается от предыдущего предиката в следующем:

•  список List будет упорядочен;

•  из всех повторяющихся элементов в список войдет только один. Упорядочение происходит по алфавиту или по возрастанию, если элементы списка числа.

Предикат findall(Object,Goal,List) отличается от bagof тем, что он не обращает внимание на различные конкретизации тех переменных из Goal, которых нет в Object. В случае отсутствия решения предикат все равно будет успешен со значением [].

105. Металогические предикаты

Металогические конструкции позволяют повысить выразительность программирования в любой среде. Металогические предикаты служат для анализа структуры доказательства. Поскольку данный вид предикатов выходят за рамки логики первого порядка, их применение весьма ограничено в реализациях Пролога со строгой типизацией данных. Основное назначение таких предикатов – анализ структуры доказательства. Метапре­дикаты в языке PROLOG служат для реализации (как минимум) пяти целей:

  1. Определение "типа" выражения.

  2. Добавление ограничений "типа" в логические приложения.

  3. Построение, разделение и оценка структур PROLOG.

  4. Сравнение значений выражений.

  5. Преобразование предикатов, передаваемых в виде данных, в исполняемый код.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]