Програмне забезпечення основане на використанні агентів

існує таке Z, що X любить Z і Y любить Z". Тут важливо відзначити два моменти. По-перше, оскільки ні в логіці предикатів, ні в самій мові PROLOG не визначені глобальні змінні, то шкала (область визначення) змінних X, Y і Z обмежена правилом friends. По-друге, змінні, що уніфікуються або зв'язувані з X, Y і Z узгоджені по всьому виразу. Обробку правила friends інтерпретатором мови PROLOG можна проілюструвати на наступному прикладі.

Якщо до набору специфікацій з попереднього прикладу додано правило friends, то інтерпретатору можна передати запит.

Для відповіді на цей запит PROLOG здійснює пошук в базі даних за допомогою алгоритму з поверненням, представленого в розділах 3 і 5. Запит friends (george, susie) уніфікується (перевіряється на відповідність) з висновком правила friends (X, Y):- likes (X, Z), likes (Y, Z). При цьому змінній X відповідає значення george, а Y — susie. Інтерпретатор шукає значення змінної Z, для якого вираз likes (george, Z) істинно. Це виконується за допомогою першого факту в базі даних, в якому Z відповідає kate.

Потім інтерпретатор намагається визначити, чи істинний вираз likes (susie, kate). Якщо воно виявиться помилковим, то на основі допущення замкнутості світу дане значення для Z (kate) відхиляється. Тоді інтерпретатор повертається для пошуку другого значення Z у виразі likes (george, Z).

Потім перевіряється відповідність виразу likes (george, Z) другому диз’юнкту в базі даних, при цьому змінна Z зв'язується із значенням susie

Після цього інтерпретатор намагається знайти відповідність для виразу likes (susie, susie). Якщо ця спроба теж завершується невдачею, то інтерпретатор знову переходить до бази даних (повертається) у пошуках наступного значення для Z. Цього разу в третьому предикаті буде знайдено значення wine, і інтерпретатор постарається показати, що likes (susie, wine) істинно. В даному випадку значення wine є зв'язкою для значень george і susie. Інтерпретатор PROLOG перевіряє відповідність цілей шаблонам в тому порядку, в якому ці шаблони були введені в базу даних.

Важливо відзначити взаємозв'язок між кванторами загальності і існування в логіці предикатів і обробкою змінних в програмі PROLOG. Якщо змінна міститься в специфікації бази даних PROLOG, то передбачається, що вона зв'язана квантором загальності. Наприклад, вираз likes (susie, Y) згідно семантиці попередніх прикладів означає "Сьюзі любить кожного". В процесі інтерпретації деякого запиту будь-який терм, список або предикат може бути пов'язаний з Y. Аналогічно в правилі friends (X, Y):- likes (X, Z), likes (Y, Z) допускаються будь-які зв'язані змінні X, Y і Z, що задовольняють специфікації цього виразу.

Для уявлення на мові PROLOG змінної, зв'язаної квантором існування, можна використовувати два підходи. По-перше, якщо відоме конкретне значення змінної, то його можна ввести в базу даних безпосередньо. Так, likes (george, wine) — це екземпляр виразу likes (george, Z), і його можна ввести в базу даних, як це було зроблено в попередніх прикладах.

По-друге, для пошуку екземпляра змінної, що доставляє виразу значення "істина", можна поводитися із запитом до інтерпретатора. Наприклад, щоб визначити, чи існує таке значення Z, при якому вираз likes (george, Z) істинно, цей запит можна передати інтерпретатору. Він перевірить, чи існує таке

1 2 3 4 5 6 7 8

Схожі роботи

Реферати

Курсові

Дипломні