Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример 1.






Рассмотрим задачу поиска девушкой жениха, который должен удовлетворять определенным ее требованиям. Если ввести предикат

man (symbol, symbol, integer),

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

ideal(X): - man(X, C, A), C=blue, A< =30.

Обычно количество требований-аргументов можно увеличивать практически неограниченно и, кроме того, возможна ситуация, когда какой-либо из аргументов имеет несколько свойств. Например, автомобиль характеризуется маркой, мощностью двигателя, цветом и т.д. В таких случаях применяются сложные структуры данных, которые формируются с помощью стандартных типов Пролога. Эти структуры называются функторами и имеют следующий формат записи

имя_функтора (свойство1, свойство2,, свойство )

Поставим в нашей задаче дополнительное требование, чтобы идеальный друг имел некоторую собственность. Каждую возможную форму собственности можно изобразить в форме функтора, а их многообразие записать с помощью альтернативного задания типов.

Например, введем предикат владеть(объект) или have(object), и пусть к собственности будет принадлежать автомобиль, книга, и конь и каждый из этих функторов имеет разное количество свойств, которые принадлежат к разным типам Пролога. Тогда запись решения задачи приобретет вид

 

domains object=book(symbol, symbol, integer);

horse(symbol);

avto(symbol, integer).

predicates man(symbol, integer, integer, object).

ideal(symbol).

сlauses man(“Stas”, 28, 186, have(book(“Куприн”, ”Поединок”, 1902))).

man(“Vlad”, 27, 183, have(avto(“Volvo”, 350))).

ideal(X): - man(X, A, H, have(book(“Куприн”, _, _))), A< =30, H> =180.

или

ideal(X): - man(X, A, H, have(avto(M, _))), A< =30, H> =180, M=”Volvo”.

 

Итоговое содержание файла main.pro имеет вид

implement main
open core
domains object=book(symbol, symbol, integer); horse(symbol); avto(symbol, integer).

property=have(object).
class facts
man: (symbol, integer, integer, property).
class predicates
ideal: (symbol) nondeterm(o).
clauses
man(" Stas", 28, 186, have(book(" Куприн", " Поединок", 1902))).
man(" Vlad", 27, 183, have(avto(" volvo", 350))).
ideal(X): - man(X, A, H, have(book(" Куприн", _, _))), A< =30, H> =180.
run(): - console:: init(), ideal(X), stdio:: write(X), stdio:: nl, fail.

run(): - stdio:: write(" fail"), succeed().

end implement main
goal mainExe:: run(main:: run).

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.