
- •4.1. Знання і деякі підходи до їх подання
- •4.2. Вербально-дедуктивне визначення знань
- •4.3. Експертні системи
- •4.4. Дані та знання
- •4.5. Зв'язки між інформаційними одиницями
- •4.6. Проблема винятків
- •4.7. Властивості знань
- •4.8. Неоднорідність знань. Області і рівні знань
- •4.9. База знань як об'єднання простіших одиниць
- •4.10. Бінарні предикати і тріада
- •4.11. Проблема неточних і неповних знань
- •5Л. Визначення та класифікація семантичних мереж
- •5.2. Семантичні мережі в пам'ті людини
- •5.3. Трирівнева архітектура семантичних мереж
- •5.4. Асиміляція нових знань на основі семантичних мереж
- •5.5. Різні способи задання семантичних мереж
- •5.6. Логічне виведення на семантичних мережах
- •5.7. Процедурні і роздалені семантичні мережі
- •Фрейми та слоти: базові поняття
- •Конкретизація, ієрархія та наслідуваніїя фреймів
- •6.3. Поповнення первинних описів на основі фреймових моделей
- •0.10 * (Кількість_уроків - 1)), (Коли, _ ), (Хто,_),
- •0.10 * (Кількість_уроків - 1)), (Коли, вчора), (Хто, Петро),
- •6.4. Мережі подібностей і відмінностей
- •6.5. Фрейми та об'єктно-орієнтоване програмування
- •6.6. Поняття про мову uml
- •7Л. Логічні побудови та логічні моделі
- •7.2. Короткий вступ до числення предикатів
- •7.3. Фразова форма запису логічних формул
- •7.4. Аналіз і доведення теорем
- •7.5. Побудова теорії певної області знань
- •7.6. Від формальної логіки до логічного програмування
- •Будь-який терм зіставляється сам з собою. Наприклад, дві фрази
- •Різні константи не зіставляються одна з одною, тому фрази
- •Змінна може бути замінена константою або іншим термом. Так, фрази
- •7.7. Мова Пролог і логічне програмування
- •7.8. Основні ідеї Прологу
- •7.9. Як працює Пролог
- •8.1. Характеристика продукіцйиих моделей
- •8.2. Продукції та мережі виведення
- •8.3. Типова схема роботи експертної системи на базі продукцій
- •8.4. Пряме та зворотне виведення
- •8.5. Типові дисципліїш виконання продукцій
- •8.6. Основні стратегії вирішешія конфліктів у продукіцйііих системах
7.9. Як працює Пролог
Потужність Прологу безпосередньо пов'язана з використанням інтерпретації логіки за допомогою процедур, тобто представленні знань за допомогою визначення процедур, після чого міркування стає простим процесом виклику необхідної процедури. Щоб зрозуміти, яким чином це відбувається, розглянемо такі два набори інформації:
Для будь-якого X, якщо Xв Чернігівській_ області, тоді Xв Україні
Остер в Чернігівській_ області,
Такі набори називають базою знань. Будемо називати елемент (1) правилом, оскільки він дає нам можливість логічно вивести з однієї порції інформації іншу, а елемент (2) — фактом, оскільки він не залежить від іншої інформації. Зверніть увагу, що правило містить "якщо", а факт — ні. Факти і правила — два типи речень. Факт не обов'язково має бути істиною з реального життя. Якщо ви скажете, що місто Остер є на Полтавщині, Пролог вам повірить.
Припустимо, ми хочемо знати, чи знаходиться місто Остер в Україні. Зрозуміло, що (1) і (2) можна зв'язати і відповісти на це запитання. Але як це зробити на комп'ютері? Треба виразити (1) і (2) як визначення процедур:
(Ґ) Щоб довести, що X в Україні, треба довести, що X в Чернігівській області.
(2') Щоб довести, що Остер в Чернігівській_ області, нічого не треба робити.
Поставимо запитання у вигляді такої команди:
Довести, що Остер в Україні.
Це викликає процедуру (Ґ), яка, в свою чергу, викликає процедуру (2'). Остання повертає відповідь "так".
Пролог має власні позначення для представлення знань. Наша проста база знань може бути представлена у Пролозі таким чином:
в_україні (.¥):- в чернігівській області (X)
вчернігівськійобласті (остер)
Тут вукраїні та в чернігівській області — предикати, які визначають окремі особливості. Предикат може мати будь-яку фіксовану кількість аргументів (параметрів). Одномісний предикат показує властивість одного поняття, тоді як двомісні описують взаємозв'язок між двома поняттями.
Кількість аргументів, які має предикат, називається арністю (від таких термінів як унарність, бінарність, тернарність та інших подібних). Два різних предикати можуть мати однакову назву, якщо вони різної арності, але бажано намагатись уникати такої практики, оскільки вона призводить до непорозумінь.
На сьогоднішній день є багато різних реалізацій Прологу. Прикладом можуть служити Турбо Пролог, Мікро Пролог, Arity Prolog і ALS Prolog на IBM PC та Quintus Prolog на робочих станціях Sun, SWI Prolog, LPA Prolog, Cogent (Amzi) Prolog та Expert Systems Limited's Public Domain Prolog-2.
Протягом багатьох років стандартом де-факто для Прологу була мова, описана КлоксіномХСІоскзіп) та Меллішом (Mellish) в їх популярному підручнику "Програмування на Пролозі" ("Programming in Prolog"). Це, практично, мова, яку вживав ще на DEC-10 Уорен та його колеги наприкінці 70-х років, яку часто називають единбурзькою, або Edinburg Prolog, або DEC-10 Prolog. Більшість комерційних версій Прологу розробляються так, щоб бути сумісними з цією версією.
У 1995 р. Міжнародна організація стандартизації (ISO) опублікувала міжнародний стандарт для мови Пролог (Scowen 1995). ISO Пролог дещо схожий на Edinburg Prolog, але з дещо розширеними можливостями.
Нагадаємо також, що такі версії, як Turbo Prolog (PDC Prolog), Colmerauer's Prolog-II та Prolog III, Turbo Prolog мають можливість декларувати типи даних. Як результат — програми можуть виконуватись швидше, але це дуже заважає їм перевіряти та модифікувати себе. Colmerauer's Prolog-II та Prolog-Ill — мови обмеженого логічного програмування, тобто вони дозволяють накладати обмеження на значення змінних перед тим, як присвоювати їм якісь значення. Це робить доступним використання нової техніки.
КОНТРОЛЬНІ ЗАПИТАННЯ
Сформулюйте задачу автоматичного доведення теорем.
Дайте визначення логічної моделі.
Дайте визначення предиката.
Які основні елементи використовуються в численні предикатів?
Що таке квантори узагальнення та існування?
Дайте визначення атомарної формули.
Дайте визначення диз'юнкта.
Що таке фраза Хорна?
Поясніть зв'язок фраз Хорна з імплікаціями.
Дайте визначення пренексної нормальної форми.
Яким чином можна усунути квантори узагальнення та існування?
Що таке константи і функції Сколема?
Перелічіть основні дії, необхідні для приведення логічних формул до стандартної фразової форми.
Сформулюйте правило резолюцій. Наведіть власні приклади застосування цього правила.
Що означає виведення пустого диз'юнкта? Яким чином він може бути отриманий?
Опишіть алгоритм перевірки тверджень на основі методу резолюцій.
Що означає поняття повноти для методу резолюцій?
З чим пов'язана необхідність модифікації загального методу резолюцій?
Охарактеризуйте лінійну і вхідну резолюції. Покажіть, що вони не усувають бектрекінгового перебору.
Чи є вхідна резолюція повною? Наведіть клас диз'юнктів, для яких вона є повною.
Охарактеризуйте поняття логічного програмування.
Назвіть найпоширенішу мову логічного програмування.
Поясніть взаємозв'язок прологівських фактів і правил з фразами Хорна.
ТЕМИ ДЛЯ ОБГОВОРЕННЯ
Розберіть вбудований прологівський механізм логічного виведення. Поясніть його зв'язок з бектрекінговими алгоритмами.
Наведіть приклади застосування логічного програмування для вирішення конкретних практичних задач.
Порівняйте Пролог з процедурними та об'єктно-орієнтованими мовами програмування.
ЗАДАЧІ І ВПРАВИ
Доведіть тотожності, які встановлюють зв'язок імплікацій з фразами Хорна:
а) (х -» у) = х v у;
б) ((х &у & і) -> и) = х v yw z v и.
Дана база знань:
Вовк їсть м 'ясо. Заєць їсть моркву.
Якщо хтось їсть м 'ясо, то він є хижаком.
Запишіть ці знання у вигляді фраз Хорна та перевірте методом резолюцій, чи є хижаками вовк і заєць.
Маємо базу знань: будь-яка людина може успадкувати майно від іншої людини тільки, якщо вона є її родичем або якщо стосовно неї було складено заповіт. Іванов успадкував майно від Петрова, але Петров не складав заповіту.
Запишіть ці знання у вигляді фраз Хорна та доведіть методом резолюцій, що Джиннер є родичем Джонса.
Дана база знань: Сніг буває тільки тоді, якщо температура є нижчою 5 °С. У липні температура ніколи не падає нижче 5 °С.
Запишіть ці знання у вигляді фраз Хорна і доведіть методом резолюцій, що в липні ніколи не буває снігу.
Усі студенти Києво-Могилянської академії знають англійську мову. Серед програліістів, які поїхали на роботу до Лондона, ніхто не знав англійської мови.
Запишіть ці знання у вигляді фраз Хорна і доведіть методом резолюцій, що серед програмістів, які поїхали на роботу до Лондона, не було жодного студента Києво-Могилянської академії.
Усі жінки красиві. У всіх відділах компанії "Рожева мрія " є жінки. Запишіть ці знання у вигляді фраз Хорна та доведіть методом резолюцій, що у кожному відділі компанії "Рожева мрія " працює хоча б один красивий співробітник.
Розділ 8
ПРОДУКЦІЙНІ МОДЕЛІ
— ІЦо буде, якщо щось буде?
— Буде черга, а потім знову нічого не буде.
Анекдот епохи розвинутого соціалізму