Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компютерні системи штучного інтелекту_методичні...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
521.73 Кб
Скачать

2. Практична частина

Приклад 1.

domains

per=symbol

predicates

fa(per,per)

mo(per,per)

parents(per,per)

grandfa(per,per)

sister(per,per)

brother(per,per)

male(per)

famale(per)

uncle(per,per)

clauses

mo("Olya","Svyatoslav").

fa("Igor","Svyatoslav").

fa("Svyatoslav","Jaropolk").

fa("Svyatoslav","Oleg").

fa("Svyatoslav","Vladimir").

fa("Vladimir","Jaroslav").

fa("Vladimir","Svyatopolk").

male("Svyatoslav").

male("Igor").

male("Jaropolk").

male("Oleg").

male("Izyaslav").

male("Jaroslav").

male("Vladimir").

male("Svyatopolk").

famale("Olya").

parents(X,Y):-fa(X,Y);mo(X,Y).

grandfa(X,Y):-fa(X,Z),parents(Z,Y).

brother(X,Y):-male(X),parents(D,X),parents(D,Y),X<>Y.

sister(X,Y):-famale(X),parents(F,X),parents(F,Y),X<>Y.

uncle(X,Y):-fa(Z,Y),brother(X,Z),X<>Z.

Приклад 2.

domains

x=real

z=symbol

predicates

fn(x,x,x,x,x,x,z)

goal

write("Input x1"), readreal(X1), write("Input y1"), readreal(Y1),

write("Input x2"), readreal(X2), write("Input y2"), readreal(Y2),

write("Input x3"), readreal(X3), write("Input Y3"), readreal(Y3),

fn(X1,Y1,X2,Y2,X3,Y3,Z), write("Z=",Z).

clauses

fn(X1,Y1,X2,Y2,X3,Y3,Z):-(Y2-X2*(Y1-Y2)/(X1-X2))>0,

(Y3-X3*(Y2-Y3)/(X2-X3))>0, (Y1-X1*(Y3-Y1)/(X3-X1))>0,Z="No";Z="Yes".

2.1. Програма роботи та завдання.

2.1.1. Створити в середовищі Turbo Prolog програму подібну прикладу 1 та дослідити її.

2.1.2. Задати різні варіанти цілей та проаналізувати отримані результати.

2.1.3. Дослідити програму прикладу 2 з подальшою модифікацією за вибором студента.

2.1.4. Зафіксувати у звіті вихідні коди створених програм та логіку їх роботи.

2.1.5. Відповісти письмово на контрольні питання.

Контрольні питання:

  1. Які є основні розділи програми в Turbo Prolog?

  2. Які є домени?

  3. Які розділи використовують найчастіше?

  4. Яка є характерна особливість в Turbo Prolog визначення роботи програми?

Лабораторне заняття № 3

Тема: Дослідження вбудованих предикатів та анонімних змінних

Мета роботи. Проілюструвати особливості використання вбудованих предикатів та анонімних змінних на прикладі простої експертної системи; зафіксувати висновки у звіті; проаналізувати отримані результати.

1. Теоретичні відомості

Анонімні змінні використовуються у випадку, коли потрібна часткова інформація із запиту. За допомогою анонімних змінних ігноруються не потрібні значення. Продемонстру-ємо на прикладі використання анонімних змінних.

predicates

male(symbol)

female(symbol)

parent(symbol, symbol)

clauses

male(bill).

male(joe).

female(sue).

female(tammy).

parent(bill, joe).

parent(sue, joe).

parent(joe, tammy).

Анонімна змінна може бути використана на місці будь-якої змінної. Відмінність полягає в тому, що анонімна ніколи не отримає значення.

Наприклад, якщо вам потрібна інформація тільки про батьків, тоді можна використати запит

Goal:parent(Who, _),

де символ «_» позначає анонімну змінну. Система видасть результат:

Who=bill

Who=sue

Who=joe

3 Solution.

Анонімні змінні можуть також використовуватись і у фактах:

owns(_,shoes).

eats(_).

У цьому випадку анонімна змінна зрівнює все.