Студопедія
рос | укр

Головна сторінка Випадкова сторінка


КАТЕГОРІЇ:

АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія






Задача 8.


Дата добавления: 2015-10-18; просмотров: 512



name, name1, name2 = symbol

weight = integer

 

Примеры составных объектов из области определения article можно использовать в утверждениях, определяющих отношение owner:

 

owner(«Боря», friend(«Монморенси»)).

owner(«Боря», dog(«Монморенси»)).

owner(«Боря»,book(«Монморенси»,«Марс», «Мерседесов»)).

owner(«Боря», boat).

owner(«Боря», potato(10)).

 

При введении цели:

owner(«Боря», Have).

Будет получен ответ:

Have = friend(«Монморенси») Have = dog («Монморенси»)

Have = book («Монморенси», «Марс», «Мерседесов»)

Have = boat Have = potato(10)

Таким образом, описание домена в случае использования составного объекта имеет вид:

compDom = f1(d1_1, d1_2,..., d1_n);

F2(d2_1, d2_2,..., d2_m); ...;

FM(dM_1, dM_2, ..., dM_k),

где fi - функтор i-ой альтернативы,

{di_j} – множество компонентов i-й структуры.

 

Составные объекты могут сравниваться с использованием предиката «равенство» (пример 1.1).

 

/*Пример 1.1.*/

Domains

d = pair(integer, integer); single(integer); none

Predicates

Equal(d, d)

Clauses

Equal(X, X).

 

При вводе следующих целей имеем:

Equal(single(1), pair(1,2)). ложно,

Equal(pair(3,4)), pair(3,4)). истинно,

Equal(none, none). истинно.

 

Однако, equal(5, 4). - дает ошибку, так как имеется несоответствие доменов.

 

Для удовлетворения последней цели необходимо добавить следующее описание предиката equal:

Equal(integer, integer),

Тогда equal(5,4). - ложно,

Equal(5,5) - истинно.

 

При сравнении объектов типа real нужно быть особенно осторожным (точное сравнение во многих случаях невозможно). Однако, можно, видимо, ввести следующий вариант предиката

equal:

equal(X,Y):- X/Y < 1.1, X/Y >0.9.

 

 

Инструменты: компьютер IBM PC с любой операционной системой, в которой реализован язык PDC Prolog.

 

Вопросы для защиты лабораторной работы:

1. Какое назначение предиката random(RandomReal)?

2. Как использовать язык Prolog в режиме калькулятора?

3. Перечислире основные правила установления соответствия между левой и правой частями выражения при выполнении операции «=».

3.

 

Литература:

  1. Петухов О.А. PDC Prolog - язык систем искусственного интеллекта. / Петухов О.А. - Учебн. пособие. - СПб.: СЗПИ, 1999, - с.
  2. Экспертные системы: Инструментальные средства разработки./ Под ред. Ю.В. Юдина.- Учебн. пособие., СПб.: Политехника, 1996. - 220 с.
  3. Бакаев А.А. Экспертные системы и логическое программирование./ Бакаев А.А., Гриценко В.И., Козлов Д.Н.- Киев: Наукова думка, 1992.- 220 с.
  4. Ин Ц. Использование Турбо-Пролога/ Ин Ц., Соломон Д. - Пер. с англ. - М.: Мир, 1993. - 608 с.

 

 


ЛАБОРАТОРНАЯ РАБОТА № 2

 

По дисциплине: СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

Тема занятия: РЕАЛИЗАЦИЯ АРИФМЕТИЧЕСКИХ И ЛОГИЧЕСКИХ ОПЕРАЦИИ

Цель занятия: Изучение способов реализации арифметических вычислений и логических операций.

Количество часов: 4

Содержание работы: Разработать программы, в которых реализованы арифметические и логические операции

 

Методические указания по выполнению:

 

Язык Prolog обладает всеми арифметическими возможностями, присущими другим языкам программирования (Pascal, С). Для этого используется мощный набор математических функций и стандартных предикатов.

 

Реализация арифметических операций

 

Выполнение четырех основных арифметических операций с указанием соответствия типов операндов и результатов выполнения приведены в табл. 2.1.

Таблица 2.1.

Операнд 1 Оператор Операнд 2 Результат

integer +,-,* integer Integer

integer +,-,* real Real

real +,-,* integer Real

real +,-* real Real

integer integer

или / или Real

real real

 

Необходимо отметить, что числа можно представлять в различных системах счисления: десятичной или шестнадцатиричной. Последние начинаются со знака доллара ($), например:

$2ЕА = 2*16*16+14*16+10 =746.

 

В простом примере 3.1 осуществляется сложение двух чисел, представленных в различных системах счисления.

 

/* Пример 2.1.*/

Goal

write("AA="),readint(AA),nl,

A=-$2EA+AA, write("A=",A).

 

Математические функции языка приведены в табл. 2.2. Причем аргумент X этих функций является арифметическим

выражением.

 

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ, такие, например, как 4, W или X = (cos(Y) - 1.5) / 3 + 2.5, это константа, или переменная, или конструкция, построенная из них путем использования операторов, функций, или скобок и предиката равенства (=).

Таблица 2.2.

Предикат Описание

abs(X) Абсолютное значение числа Х

X

exp(X) Вычисляется число е в степени Х (е )

ln(X) Натуральный логарифм Х

lg(X) Десятичный логарифм (X)

sqrt(X) Квадратный корень из Х

sin(X)

cos(X) Тригонометрические функции

tan(X) (Х – число, выражающее угол в радианах)

arctan(X) Арктангенс действительного числа Х

random(X) Устанавливает Х, как псевдослучайное вещественное число с равномерным распределением: 0<=X<1

random(Y,X) Cлучайное целое число Х с равномерным распределением 0<=X<Y

round(X) Округляет значение Х

trunc(X) Усекает Х (отбрасывает младшие разряды)

X mod Y Выдает остаток от деления X на Y

X div Y Выдает частное от деления X на Y

 

Использование функции random(RandomReal) позволяет получать последовательность величин RandomReal, равномерно распределенных в интервале 0<= RandomReal <1. А для установления правого граничного значения для случайных величин используется функция randominit(Y). Функция же random(MaxValue,Randomint) выдает последовательность псевдослучайных величин равномерно распределенных в интервале 0<=Randomint<MaxValue.

 

При необходимости получить случайные вещественные числа Z в диапазоне от А до В включительно, нужно воспользоваться следующей целью:

random(X), Z = A + X * (B-A+1).

 

Для получения случайных целых чисел Z в диапазоне от А до В включительно можно воспользоваться целью:

random(Y,X), Z = A + Y +1.

 

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

- вычисляются выражения в скобках,

- во всем выражении реализуются слева направо операции

умножения и/или деления,

- выполняются слева направо операции сложения и/или

вычитания.

 

В примере 2.2. реализуется вычисление значений арифметического выражения. При A=2 и B=0,3 X будет равен - 2,1815545036. Это пример, демонстрирующий программу на языке Prolog, содержащую лишь один раздел (раздел goal). Использование предикатов ввода-вывода будет пояснено ниже.

 

/*Пример 2.2.*/

Goal

write(«A=»), readint(A), nl,

write(«B=»), readreal(B),nl,

X = -A + ((cos(B) - 1.5) / 3),

write("X=",X).

 

Примеры 2.1 и 2.2 показывают, что язык Prolog может использоваться просто в режиме калькулятора. Для этого, не вводя никакой программы, необходимо войти в окно диалога и набрать то арифметическое выражение, значение которого необходимо вычислить.

 

Пусть необходимо написать программу (пример 2.3), реализующую арифметические операции сложения, вычитания, умножения и деления. Величины, над которыми производятся операции имеют тип real, т.е. они могут быть представлены в любой форме записи целой или вещественной. Запись самой операции имеет тип symbol. Тогда предикат ОПЕРАЦИЯ (operation) имеет, например, следующий вид:


<== предыдущая лекция | следующая лекция ==>
Задача 3. | Варіант №3
<== 1 ==> | 2 | 3 |
Studopedia.info - Студопедия - 2014-2024 год . (0.261 сек.) російська версія | українська версія

Генерация страницы за: 0.261 сек.
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7