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

може містити наступний набір предикатів.

Цей набір специфікацій має очевидну інтерпретацію або відображення на "світ" Джорджа і його друзів. Цей світ є моделлю для бази даних. Потім інтерпретатору можна ставити питання

Відзначимо декілька моментів в цих прикладах. По-перше, при обробці запиту likes (george, X) користувач послідовно вводить запрошення;, тому інтерпретатор повертає всі терми із специфікації бази даних, які можна підставити замість X. Вони повертаються в тому порядку, в якому були знайдені в базі даних: спочатку kate, потім susie і нарешті wine. Хоча це противорічить філософії непроцедурних специфікацій, детермінований порядок — це властивість більшості інтерпретаторів, реалізованих на послідовних машинах. Програміст на мові PROLOG повинен знати порядок пошуку елементів в базі даних.

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

Приведені вище приклади також ілюструють допущення замкнутості світу (closed world assumption) або заперечення як брехню (negation as failure). У мові PROLOG передбачається, що будь-який вираз є помилковим, якщо не можна довести істинність його заперечення. При обробці запиту likes (george, beer) інтерпретатор шукає предикат likes (george, beer) або деяке правило для отримання likes (george, beer). Оскільки пошук не завершується успіхом, запит вважається помилковим. Таким чином, в мові PROLOG передбачається, що всі знання про світ представлені в базі даних

Допущення замкнутості світу приводить до численних практичних і філософських складнощів в мові. Наприклад, неможливість включити деякий факт в базу даних часто означає, що його істинність невідома. Проте через допущення замкнутості світу цей факт трактується як помилковий. Якщо деякий предикат був упущений або при його введенні була допущена друкарська помилка на зразок likes (george, beeer), то відповіддю на даний запит буде nо. Аспект трактування заперечення як брехні — дуже важливе питання в області штучного інтелекту. Хоча це припущення забезпечує простій спосіб вирішення проблеми незаданих знань, складніші підходи, зокрема багатозначні логіки (істина, брехня, невідомо) і немонотонні міркування забезпечують набагато багатший контекст для інтерпретації.

Вирази PROLOG, використані в приведеній вище базі даних, є прикладами специфікації фактів (fact). PROLOG також дозволяє визначати правила (rule), що описують взаємозв'язки між фактами з використанням логічної імплікації: -. При створенні правила на мові PROLOG зліва від символу: - може розташовуватися тільки один предикат. Цей предикат повинен бути позитивним літералом (positive literal), тобто не повинен бути символом із запереченням. Всі вирази логіки предикатів, що містять відносини імплікації або еквівалентності (<, > і -), повинні бути приведені до цієї форми, яка отримала назву хорновської (Horn clause). У хорновській диз'юнктивній формі в лівій частині імплікації (висновку) повинен міститися єдиний позитивний літерал. Логіка хорновських диз’юнктів (Horn clause calculus) еквівалентна повній теорії предикатів першого порядку, вживаній для доказів на основі спростування.

Допустимо, до специфікацій приведеної вище бази даних потрібно додати правило, що визначає двох друзів. Його можна описати таким чином.

Цей вираз можна інтерпретувати так. "X і Y — друзі, якщо

1 2 3 4 5 6 7 8

Схожі роботи

Реферати

Курсові

Дипломні