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

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

database

xpositive(symbol,symbol)

xnegative(symbol,symbol)

predicates

run

animal_is(symbol)

it_is(symbol)

positive(symbol,symbol)

negative(symbol,symbol)

clear_facts

remember(symbol,symbol,symbol)

ask(symbol,symbol)

goal

run.

clauses

run:-animal_is(X),!,write(“\n Your animal may be a”,X),nl,nl,clear_facts

run:-write(“\n t/n able to determinate what”), write(“your animal_is\n\n”),clear_facts.

positive(X,Y):-xpositive(X,Y),!.

positive(X,Y):-not (negative(X,Y)),!,ask(X,Y).

negative(X,Y):-xnegative(X,Y),!.

ask(X,Y):-write(X,” it “,”|n”),readln(Reply),remember(X,Y,Reply).

remember(X,Y,yes):-asserta(xpositive(X,Y)),facts.

remember(X,Y,no):-asserta(xnegative(X,Y)),facts.

clear_facts:-retract(xpositive(_,_)),fail.

clear_facts:-retract(xnegative(_,_)),fail.

clear_facts:-write(“\n\n Please press the space bar to Exit”),readchar(_).

animal_is(chectah):- it_is(manual), it_is(carnivore), positive(has,tawny_color), positive(has,black_spots),!.

animal_is(tiger):- it_is(manual), it_is(carnivore), positive(has,tawny_color), positive(has,black_stripes),!.

animal_is(girraffe):- it_is(ungulate), positive(has,long_nick), positive(has,long_legs), positive(has,dark_spots),!.

animal_is(zebra):- it_is(ungulate), positive(has,black_stripes),!.

animal_is(astrich):-it_is(bird), not (positive(does,fly)),positive(has,long_neck), positive(has,long_legs),!.

animal_is(penguin):-it_is(bird), not (positive(does,fly)), positive(has,black_and_white_color),!.

animal_is(albatros):-it_is(bird),positive(does,fly), positive(does,fly_well),!.

it_is(manual):-positive(has,hair), positive(does,give_milk),!.

it_is(carnivore):-it_is(manual), positive(does,eat_meat), positive(has,pointed_teeth), positive(has,claus),!.

it_is(ungulate):-it_is(manual), positive(has,hooves), positive(does,chew_end),!.

It_is(bird):-not (positive(has,hair)), not (positive(does,give_milk)), positive(has,feathers), positive(does,lay_eggs),!.

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

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

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

2.1.3. Зафіксувати результати. Створити свою експертну систему на основі даної.

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

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

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

1) Позначення анонімної змінної?

  1. Суть використання анонімних змінних?

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

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

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

Мета роботи. Дослідити основні об’єкти даних і функтори із застосуванням складних об’єктів; у звіті зафіксувати логіку роботи досліджуваних програм; проаналізувати отримані результати.

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

Простими даними виступають змінні або ж константи. Константа може бути символьною (char), числовою (integer, real) або атомарною (symbol, string).

Змінна позначається ідентифікатором. Ідентифікатор починається з великої букви у діапазоні від А до Z, або ж символом підкреслювання (_). Як вже зазначалося, єдиний символ підкреслювання позначає анонімну змінну. У Пролозі змінна може зв’язуватись з будь-яким аргументом або об’єктом даних. Зазначимо, що змінні Прологу є локальними, а не глобальними. Іншими словами, якщо два пункти мають змінну Х, тоді ці Х є різними змінними.

Складні об’єкти даних дозволяють вам взяти декілька частин інформації в єдиний пункт. Наприклад, дата 2 квітня 1994 складається з 3 частин. Але іноді їх корисно з’єднати воєдино:

date("April",2,1989)

Так виглядає факт Прологу, у даному випадку - просто об’єкт даних. Він починається з імені або ж функтора (у нашому прикладі date). Функтор не символізує якесь обчислення, яке повинно бути виконаним. Це просто ім’я об’єкту. Аргументи складного об’єкту самі можуть бути складними.

Складний об’єкт може уніфікуватись або з простою змінною, наприклад, data(''April'',2,1981) зрівнюється з X і зв’язує X з date(“April”,2,1981), або ж зі складним об'єктом, який збігається з ним структурно: так, data(''April'',2,1981) порівнюється з date(Mo,Da,Yr).

Використання знаку дорівнює (=) для уніфікації складних об’єктів.

Пролог проводить уніфікацію у двох місцях. По перше, уніфікація проходить, коли є виклик співставлення голови фрази. Інший спосіб виконання уніфікації - це використання знаку (=). У цьому випадку Пролог буде ототожнювати об’єкти, які знаходяться по обидві сторони знаку. Цей підхід є корисним для знаходження значень аргументів складного об’єкту. Наприклад, наступна програма виконує такі дії. Якщо дві особи мають одне й те саме прізвище, тоді другій особі приписується адреса першої.