Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
49
Добавлен:
05.03.2016
Размер:
1.28 Mб
Скачать

Лабораторна робота №3 Пролог-програми як найпростіші бази даних і знань

Ціль роботи:

1. Знайомство з організацією баз даних як сукупності фактів.

2. Одержання навичок організації явних і неявних баз даних.

3. Вивчення способів побудови універсальних запитів до баз даних.

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

3.1 Вступ

Система понять для представлення знань трохи відрізняється від понять для представлення даних. Разом з тим база знань (БЗ) здатна зберігати дані і як простий різновид знань у вигляді бази даних (БД). Відповіді на запити, що формує користувач до бази, реалізуються одним із двох можливих способів:

– повідомленням, що є відповіддю на запит, зберігаються в явному виді в БД, і процес одержання відповіді являє собою виділення із БД підмножини значень, що задовольняють запитові;

– відповідь не існує в явному виді в БД і формується в процесі логічного висновку на підставі наявних даних.

Останній випадок принципово відрізняється від технологій використання БД і розглядається в рамках представлення знань, тобто інформації, необхідної в процесі отримання нових фактів. У Пролог-програмах виведення нових фактів можливе на підставі набору правил, що включаються в програму і являють собою спрощений варіант БЗ. Представлення знань у виді набору правил має наступні переваги:

– простота створення і розуміння окремих правил;

– простота механізму логічного висновку.

До недоліків цього способу організації БЗ відноситься її відмінність від людської структури знань.

3.2 Запити до бази даних

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

Розглянемо приклад. Нехай для збереження інформації про службовців і місця їхньої роботи необхідно створити БД з наступною структурою відношення Працює(Ім’я, Відділ). При цьому атрибут Ім’я описує домен даних типу рядок символів, а атрибут Відділ – домен цілочисельних даних.

Для рішення поставленої задачі в Пролог-програмі:

– вихідне відношення описується предикатом аналогічної структури;

– у секції domains задаються області зміни кожного аргументу предикату;

– кожен кортеж даного відношення представляється в секції clauses у вигляді факту.

Одним із прикладів програми, що реалізують дану задачу, може бути програма 3.1.

/* Програма 3.1 */

domains

namе=string

office=integer

predicates

work(name, office)

clauses

work(„Грищенко”, 101).

work(„Кардаш”,111).

work(„Петренко”, 101).

3.2.1 Прості запити

Простий запит складається з імені предиката, за яким розташовується список аргументів.

Якщо в запит входять тільки константи (тобто атоми і числа), то такий запит називається запитом з константами і на нього система видає тільки одину із двох відповідей – True(Yes) або False(No). Відповідь True свідчить про те, що система довела істинність запиту відповідно до множини фактів, завантажених у неї в даний момент. Відповідь False – про неможливість системи довести істинність запиту. В цьому випадку, наприклад, наступні запити можна трактувати наступним чином

Goal: work(„Грищенко”, 101).

Yes

“чи працює Грищенко у 101 відділі?”, а відповідь на нього можна трактувати наступним чином: “Так, працює Грищенко у 101 відділі”.

Goal: work(„Грищенко”, 111)

False

“чи працює Грищенко у 111 відділі?", відповідь “Ні, не працює Грищенко у 111 відділі”

Однак застосування запитів з константами досить обмежено, тому найбільше часто застосовуються запити, що використовують змінні – запити з змінними.

Змінна – це вид терму, що починається з заголовної латинської букви. У запиті, що містить змінну, неявно запитується про те, чи існує хоча б одне значення змінної, при якому запит буде щирим. Тобто змінні в запитах квантифіковані екзістенціально. Якщо мати це на увазі, то наступний діалог з програмою

Goal: work(Who, 101).

Who=„Грищенко”,

Who=„Петренко”,

можна прочитати так “чи існує хоча б одна людина, що працює в 101-му відділі?”. Запит буде щирим, якщо хоча б одну особу буде знайдено в поточній базі.

Система намагається уніфікувати (тобто погодити) аргументи запиту з аргументами фактів, що входять у базу даних work”. Запит виявиться успішним при його зіставленні з першим же фактом, оскільки атом 101” у запиті уніфікується з атомом „101” першого факту, а змінна Who” уніфікується з атомом Грищенко”, що входить у цей факт. У результаті даного процесу змінна Who” прийме значення атому Грищенко”, повідомлення про що і виводиться у вікні діалогу.

Далі відбувається зіставлення запиту з іншими фактами БД і інформація про всі успішні уніфікації та їх кількість виводиться у вікні діалогу. Говорять, що змінна конкретизується, коли при виконанні запиту вона уніфікується з деяким значенням.