No Solutions

В качестве простых целевых запросов могут использоваться также операции сравнения или вычислительные операции.

Составные запросы

Составные запросы образуются из нескольких простых целевых запросов, соединенных между собой логическим И (в Турбо-Прологе обозначается знаком запятой). Каждый из простых целевых запросов называется подцелью. Для того чтобы составной целевой запрос был истинным, каждая из его подцелей должна быть истинна.

Пример: Требуется найти пары, которым нравится один и тот же вид спорта.

GOAL: likes(X, S), likes(Y, S), X< >Y.

X=”Аня” Y=”Женя” S=”футбол”

X=”Лена” Y=”Олег” S=”теннис”

Solutions

Различают внутрипрограммные и внешние целевые запросы.

Внутрипрограммный целевой запрос описывается в программе между разделами PREDICATES и CLAUSES и выполняется без вывода на экран результатов поиска, поэтому разработчику программы необходимо использовать предикаты печати для вывода результата. При использовании внутрипрограммного целевого запроса будет выдано только одно, первое найденное решение. Для поиска всех возможных решений следует использовать предикат fail.

Внешний целевой запрос вводится пользователем после запуска программы в специальном окне Dialog после запроса GOAL и выводит все найденные решения на экран, как описано в предыдущих примерах.

Правила

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

Пример. С помощью отношений meat (мясо) и fish (рыба), выражающих то, что их аргумент является вторым мясным или рыбным горячим блюдом, определить отношение hot_dish ( горячее_блюдо ), пользуясь следующим определением: ”Горячее блюдо – это второе мясное или рыбное блюдо”.

predicates /* описание предиката горячее_блюдо*/

Hot_dish (name)

clauses /*правила, задающие определение

отношения горячее_блюдо*/

Hot_dish (Y):- meat(Y).

Hot_dish (Y):- fish(Y).

Последовательность двух правил означает их дизъюнкцию и читается так: ” Y является горячим блюдом, если Y – второе мясное блюдо”, или “ Y является горячим блюдом, если Y – второе рыбное блюдо”. Область действия переменной ограничена правилом, в котором она определена. Поэтому переменная из первого правила никак не связана с переменной Y из второго.

Пример. Сформулировать на Прологе запрос ”Что является горячим блюдом? ” и привести примеры возможных ответов.

Запрос:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: