Студопедия

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

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

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






  • Пример 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.