Студопедия

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

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

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






Составные цели






1. Напишите следующий программный код:

PREDICATES

car(symbol, long, integer, symbol, long)

truck(symbol, long, integer, symbol, long)

nondeterm vehicle(symbol, long, integer, symbol, long)

CLAUSES

car(chrysler, 130000, 3, red, 12000).

car(ford, 90000, 4, gray, 25000).

car(datsun, 8000, 1, red, 30000).

truck(ford, 80000, 6, blue, 8000).

truck(datsun, 50000, 5, orange, 20000).

truck(toyota, 25000, 2, black, 25000).

vehicle(Make, Odometer, Age, Color, Price): -

car(Make, Odometer, Age, Color, Price);

truck(Make, Odometer, Age, Color, Price).

2. Попробуйте следующую цель, затем запустите программу.

GOAL

car(Make, Odometer, Age, Color, 25000).

Здесь цель задается найти автомобиль, описанный в разделе предложений, который стоит точно 25 000 $. На что Пролог выдаст следующий ответ (рис. 5):

 
 

Рис. 5. Результат цели1

 

Но эта цель немного неестественна, если задать вопрос:

Is there a car listed that costs less than $25 000 (Есть ли машины, стоящие меньше 25 000 $)?

Вы можете организовать Visual Prolog для поиска решения, задав следующую составную цель:

1. Измените цель на нижеприведенную. Не забудьте в разделе предикатов задать множество решений для данного предиката.

car(Make, Odometer, Age, Color, Cost), Cost < 25000.

2. Протестируйте новую цель и Пролог выдаст Вам ответ (рис. 6):

 

Рис. 6. Вывод результата цели2

 

В данном примере представлены конъюнктивные подцели. Для выполнения этой составной цели, Пролог будет пробовать решить каждую подцель по порядку. Сначала первую -

car(Make, Odometer, Age, Color, Cost),

а потом вторую -

Cost < 25000

с переменной Cost, имеющей одно и то же значение в обеих подцелях.

Замечание: Подцель Cost < 25000 использует отношение меньше чем (<), которое уже встроено в систему Visual Prolog. Отношение меньше чем не отличается от других отношений, характеризующих отношение двух числовых объектов, но просто более удобно использовать «<».

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

Is there a car listed that costs less than $25 000? or is there a truck listed that costs less than $20 000?

Для этого используем составную цель, включающую дизъюнктивные подцели.

3. Добавьте ещё одну цель к той, которая уже имеется.

truck(Make, Odometer, Age, Color, Cost), Cost < 20000.

Пролог выдаст 2 решения (рис. 7):

 

Рис. 7. Результат цели3

 

Здесь эти две подцели устанавливаются как альтернативы, больше того так если бы они были двумя предложениями для одного правила. Пролог тогда найдет решение, которое удовлетворяет любую из подцелей. Чтобы решить эту составную цель, Пролог будет пробовать решить первую подцель нахождения автомобиля, стоящего меньше 25000, которая в свою очередь состоит тоже из двух подцелей:

car(Make, Odometer, Age, Color, Cost) и Cost < 25000.

Если автомобиль найден, цель выполнена; в противном случае Пролог будет пробовать выполнить вторую составную цель нахождения грузовика, стоящего меньше 20000, состоящую тоже из двух подцелей:

truck(Make, Odometer, Age, Color, Cost) и Cost < 20000.

 

Контрольное задание:

1. Напишите программу на языке Пролог с использованием целей согласно варианту, выданному преподавателем:

Вариант 1. Есть ли пылесосы, которые стоят меньше 10000?

Вариант 2. Найти ноутбук, который стоит 50000.

Вариант 3. Найти платье за 5000 и костюм, стоящий меньше 5000.

Вариант 4. Есть ли телефоны, стоящие более 30000?

Вариант 5. Найти пылесосы, которые стоят 7000.

Вариант 6. Найти ноутбук, который стоит меньше 50000.

Вариант 7. Найти конфеты, стоящие меньше 100 рублей, и шоколад, который стоит больше 30 рублей.

Вариант 8. Есть ли телефоны Sony Ericsson за 15000?

Вариант 9. Найти студентов, которым меньше 22 и больше 22 лет.

2. Перепишите следующие правила, сформулированные на языке Пролог, на естественном языке согласно варианту, выданному преподавателем:

Вариант 1. eats(Who, What): - food(What), likes(Who, What).

Вариант 2. pass_class(Who): - did_homework(Who), good_attendance(Who).

Вариант 3. does_not_eat(toby, Stuff): - food(Stuff), greasy(Stuff).

Вариант 4. owns(Who, What): - bought(Who, What).

Вариант 5. play(Who, What): - football(What), likes(Who, What).

3. Напишите правила на языке Пролог, которые передают значение этих предложений согласно варианту выданному преподавателем:

Вариант 1. A person is hungry if that person's stomach is empty.

Вариант 2. Everybody likes a job if it's fun and it pays well.

Вариант 3. Sally likes french fries if they're cooked.

Вариант 4. Everybody owns a car who buys one, pays for it, and keeps it.

Вариант 5. Everybody likes a meal if it's palatable and it tacky.

Контрольные вопросы:

 

1. Дайте понятие цели.

2. Как называется цель, состоящая из двух или более частей?

3. Как называется каждая часть составной цели?

4. Дайте понятие конъюнктивной и дизъюнктивной подцелей.

5. Сформулируйте понятие условия.

6. Какие типы фраз составляют язык Пролог?

7. Из чего основана программа, написанная на языке Пролог?

8. Должен ли Prolog искать или выводить подтверждения факта?

9. Сформулируйте понятие и приведите пример правила.







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