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

1.6.Механізм логічного виведення і керування пошуком.

Найчастіше , програма на Пролозі є послідовністю процедур, кожна з яких реалізує конкретний предикат. Процедура будується із речень, які мають форму:

А: -В1, В2,..., Вn.

Наше речення інтерпретується наступним чином: “А є істинним, якщо В12,...,Вn є істинними”.

Кажуть, що А є заголовком цього речення, а В12,...,Вn його тіло. Якщо n=0, тоді таке речення визначає деякий факт і записується “А”.

Речення А і Ві є прикладами цілей або ж викликами процедур, які складаються із предикату і його аргументів R(x,y).

Якщо отримано запит (іншими словами ціль, яку необхідно задовільнити), Пролог пробує визначити його істинність двома способами. По перше, тому що факти завжди є істинними, тоді ціль успішно задовільняється, якщо вона співставляється з існуючим фактом. По друге, ціль вважається істинною, якщо вона співпадає з деяким заголовком “А” всі підцілі якого “В12,...,Вn” можуть бути успішно завершені. Якщо спроба співставлення підцілей і фактів закінчується невдало, а залишаються альтернативні і ще не використані правила та факти, тоді Пролог-система буде здійснювати повернення і використовувати ці альтернативи. Якщо всі альтернативи перебрані і закінчились невдало, тоді кажуть що початкова ціль незадовільна.

Порядок оцінки цілей в самому реченні - зліва направо.

Вправи.

1.1.Базуючись на принципі силлогізму, довести:

а)Якщо задані дві посилки:

Всі українці люблять пісні.

Всі кияни - українці.

Тоді буде коректним висловлення:

Всі кияни люблять пісні.

б)Якщо задані дві посилки:

Всі програмісти люблять жувальну гумку.

Деякі програмісти живуть в Києві.

Тоді буде коректним висловлення:

Деякі люди з Києва люблять жувальну гумку.

1.2.За область знань візьмемо арифметику, а областю інтерпретації будуть натуральні числа. Область інтерпретації в цьому випадку нескінченна. Побудуйте теорію цієї області, розробивши задання довільного числа в вигляді терму.

1.3.Маємо наступну множину фраз

Р(а) Q(a,b)

Q(x,y) R(x,y)

S(b)

R(a,b)

Потрібно вияснити, чи є фраза Р(а), наслідком існуючої множини фраз.

2.Основні концепції прологу.

2.1.Факти та правила.

При побудові речень Прологу використовується той же підхід що й в предикатних логіках. Спочатку відкидаємо всі несуттєві слова. Потім трасформуємо речення, виставляючи на перше місце відношення.

Наприклад, наступні речення трансформуються в синтаксис предикатної логіки:

Китайська авторучка зручна.

зручна(китайська_авторучка).

Вані подобається авторучка, якщо вона зручна.

подобатись(ваня,авторучка) if зручна(китайська_авторучка).

Програміст визначає об'єкти і відношення. Потім формулює правила про те, коли ці відношення справджуються. Наприклад, речення:

Ваня любить автомобілі

ілюструє відношення між об'єктами Ваня і автомобілі; зв'язком є любить. Правило, яке визначає, коли речення:

Ваня любить автомобілі

буде істинним, має вигляд:

Ваня любить автомобілі, якщо вони швидкі.

Факти.

В Пролозі зв'язок між об'єктами називається фактом. Факти можуть виражати як властивості, так і відношення. Так речення:

Прапор червоний. Валя - студентка.

можуть бути задані наступними фактами:

червоний(прапор) студентка(Валя).

Правила визначають, які висновки можна зробити із даних фактів.

Запити.

Враховуючи, що Пролог складається з множини фактів, ми можемо задавати йому питання про ці відношення у вигляді запитів. Пролог будує відповідь і виводить її до друку.

Наприклад, речення Що любить Ваня може бути трасформоване в запит любить(ваня, Що). Важливо відмітити, що перший аргумент запиту починається з маленької букви (константа), а другий аргумент починається з великої букви (Що виступає в ролі змінної). Змінні Прологу дозволяють вам записувати загальні факти і правила, а також задавати загальні питання.

Узагальнення.

1.Програма на Пролозі будується із двох типів фраз (речень): фактів і правил.

Факти - це відношення, або ж властивості, про які ви, програміст, знаєте, що вони істинні.

Правила - це залежні відношення; вони дозволяють Прологу робити виведення, порівнюючи одну частину інформації з іншою.

2.Правила Прологу складаються з трьох частин: голови, символу, тіла.

Голова - це факт, який буде вірним, якщо деяка кількість умов виконається. Голову ще іноді називають заключенням, або ж відношенням залежності.

Символ - відділяє голову правила від тіла; може бути текстовим типу or або ж if.

Тіло - це множина умов (або список файлів), котрі повинні бути істинними, для того щоб Пролог міг довести, що голова правила вірна.

Розглянемо наступну програму:

predicates

can_buy(symbol, symbol)

person(symbol)

car(symbol)

likes(symbol, symbol)

for_sale(symbol)

clauses

can_buy(X, Y) :-

person(X),

car(Y),

likes(X, Y),

for_sale(Y).

person(kelly).

person(judy).

car(lemon).

car(hot_rod).

likes(kelly, hot_rod).

likes(judy, pizza).

for_sale(pizza).

for_sale(lemon).

for_sale(hot_rod).

Можна задати такі питання:

Що можуть купити judy i kelly? can_buy(judi,X) can_buy(kelly,X).

Хто може купити бутерброд з гарячою сосискою? can_buy(X,hot_rod).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]