F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G...

279
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ХАРЧОВИХ ТЕХНОЛОГІЙ ЗАТВЕРДЖУЮ Ректор _____________С. В. Іванов (підпис) «___» ____________2014 р. О.П. КУРГАЄВ МЕТОДИ ТА СИСТЕМИ ШТУЧНОГО ІНТЕЛЕКТУ КОНСПЕКТ ЛЕКЦІЙ для студентів напряму підготовки 6.050101 «Комп'ютерні науки» денної та заочної форм навчання Всі цитати, цифровий та фактичний матеріал, бібліографічні відомості перевірені. Написання одиниць відповідає стандартам СХВАЛЕНО на засіданні кафедри інформаційних систем як електронний конспект лекцій Протокол № 3 від 18.09.2014 р. Реєстраційний номер електронного конспекту лекцій у НМВ 51.19-24.10.2014 Київ НУХТ 2014

Transcript of F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G...

Page 1: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ХАРЧОВИХ ТЕХНОЛОГІЙ

ЗАТВЕРДЖУЮ

Ректор _____________С. В. Іванов(підпис)

«___» ____________2014 р.

О.П. КУРГАЄВ

МЕТОДИ ТА СИСТЕМИ ШТУЧНОГО ІНТЕЛЕКТУ

КОНСПЕКТ ЛЕКЦІЙдля студентів напряму підготовки 6.050101 «Комп'ютерні науки»

денної та заочної форм навчання

Всі цитати, цифровий та фактичнийматеріал, бібліографічні відомостіперевірені. Написання одиницьвідповідає стандартам

СХВАЛЕНО на засіданні кафедри інформаційних систем як електронний конспект лекцій Протокол № 3 від 18.09.2014 р.

Реєстраційний номер

електронного конспекту лекцій

у НМВ 51.19-24.10.2014

Київ НУХТ 2014

Page 2: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

2

Кургаєв О.П. Методи та системи штучного інтелекту /[Електронний ресурс]: конспект лекцій для студентів напряму підготовки6.050101 «Комп'ютерні науки» денної та заочної форм навчання / О.П.Кургаєв – К.: НУХТ, 2014. – 279 с.

Рецензент: Алішов Надір Ісмаіл-огли, д-р техн. наук, професор

О.П. КУРГАЄВ, д-р техн. наук, професор

Подано в авторський редакції

© О.П. Кургаєв, 2014

© НУХТ, 2014

Page 3: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

3

З М І С ТВСТУП .............................................................................................................. 91. Основні поняття та означення ................................................................... 10

1.1. Поняття штучного інтелекту ................................................................ 101.1.1. Визначення інтелекту. .................................................................... 101.1.2. Тест Тьюринга. ................................................................................ 111.1.3. Еволюція штучного інтелекту ........................................................ 151.1.4. Характеристика досліджень систем ШІ......................................... 16

1.2. Поняття інтелектуальної системи ........................................................ 221.2.1. Поняття інформації ......................................................................... 221.2.2. Інтелектуальна система .................................................................. 23

1.3. Інтелектуальні задачі ............................................................................ 271.3.1. Визначення інтелектуальної задачі ................................................ 271.3.2. Класифікація задач, розв’язуваних ІІС .......................................... 271.3.3. Задачі аналізу і синтезу .................................................................. 29

Запитання для самоперевірки ..................................................................... 29Література до 1-го розділу ......................................................................... 29

2. Способи подання ІЗ та методи пошуку рішень ....................................... 312.1. Стратегії рішення ІЗ. ............................................................................ 31

2.1.1. Різновиди стратегій рішення ІЗ ...................................................... 312.1.2. Подання задач у просторі станів .................................................... 312.1.3. Редукція задач ................................................................................. 332.1.4. Подання задач у вигляді теорем ..................................................... 34

2.2. Сліпий пошук рішення ІЗ у просторі станів ....................................... 352.2.1. Формальна постановка ІЗ у просторі станів .................................. 352.2.2. Пошук від даних і від цілі в просторі станів ................................. 352.2.3. Пошук із поверненням .................................................................... 362.2.4. Метод породження і перевірки ...................................................... 372.2.5. Сліпі методи пошуку вглиб і вшир ................................................ 372.2.6. Стратегія пошуку вшир .................................................................. 392.2.7. Стратегія пошуку вглиб .................................................................. 412.2.8. Характеристики методів сліпого пошуку ...................................... 42

2.3. Евристичний пошук рішення ІЗ у просторі станів ............................. 432.3.1. Методи евристичного пошуку ....................................................... 432.3.2. Алгоритм «підйому на гору» .......................................................... 432.3.3. Алгоритм глобального врахування відповідності цілі ................. 442.3.4. Побудова евристичної оцінки ........................................................ 442.3.5. А*-алгоритм .................................................................................... 452.3.6. Пошук по заданому критерію ........................................................ 452.3.7. Приклад пошуку по заданому критерію ........................................ 46

Запитання для самоперевірки ..................................................................... 47Література до 2-го розділу ......................................................................... 48

3. Домінуючі парадигми програмування ...................................................... 49

Page 4: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

4

3.1. Вступ ..................................................................................................... 493.2. Типи парадигми .................................................................................... 503.3. Імперативне програмування ................................................................ 503.4. Структурне програмування .................................................................. 513.5. Декларативне програмування .............................................................. 54

3.5.1. Функціональне програмування ...................................................... 553.5.2. Логічне програмування................................................................... 56

3.6. Об'єктно-орієнтоване програмування ................................................. 583.7. Висновки ............................................................................................... 60Запитання для самоперевірки ..................................................................... 61Література до 3-го розділу ......................................................................... 61

4. Домінуючі моделі представлення і використання знань ......................... 624.1. Вступ ..................................................................................................... 624.2. Емпіричний підхід ................................................................................ 63

4.2.1. Продукційні моделі представлення знань ..................................... 634.2.2. Семантичні мережі (СМ) ................................................................ 684.2.3. Фреймова система ........................................................................... 714.2.4. Ленеми ............................................................................................. 73

4.3. Теоретичний підхід............................................................................... 744.3.1. Метамови ......................................................................................... 744.3.2. Принцип синтаксично керованої обробки даних .......................... 77

4.4. Висновки ............................................................................................... 79Запитання для самоперевірки ..................................................................... 79Література до 4-го розділу ......................................................................... 79

5. Логічне програмування: основи мови VІSUAL PROLOG ....................... 815.1. Особливості мови Пролог .................................................................... 815.2. Основні елементи мови ........................................................................ 825.3. Основні розділи програм ...................................................................... 86

5.3.1. Директиви компілятора .................................................................. 865.3.2. Розділ тверджень ............................................................................. 875.3.3. Розділ предикатів ............................................................................ 905.3.4. Розділ доменів ................................................................................. 915.3.5. Розділ цілі ........................................................................................ 935.3.6. Розділ констант ............................................................................... 93

5.4. Уніфікація й пошук з вертанням.......................................................... 945.4.1. Співставлення і уніфікація ............................................................ 945.4.2. Пошук з вертанням ......................................................................... 97

5.5. Прості об’єкти даних ............................................................................ 995.6. Складені об’єкти даних і функтори ................................................... 100

5.6.1. Уніфікація складених об'єктів ...................................................... 1015.6.2. Використання кількох значень як єдиного цілого ...................... 1025.6.3. Оголошення складених доменів ................................................... 1025.6.4. Багаторівневі складені об'єкти ..................................................... 103

Page 5: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

5

5.6.5. Процес повторення ....................................................................... 1035.7. Списки ................................................................................................. 104

5.7.1. Оголошення списків ..................................................................... 1045.7.2. Голови й хвости ............................................................................ 1055.7.3. Подання списків ............................................................................ 1065.7.4. Використання списків ................................................................... 1065.7.5. Печатка списків ............................................................................. 1065.7.6. Підрахунок числа елементів списку ............................................ 107

5.8. Предикати для обробки списків ......................................................... 1075.8.1. Додавання елемента в список ....................................................... 1075.8.2. Видалення елемента ...................................................................... 1085.8.3. Предикат приналежності елемента списку .................................. 1085.8.4. Зчеплення (конкатенація) списків ................................................ 1085.8.5. Видалення зі списку повторюваних елементів ........................... 1115.8.6. Обернення списку ......................................................................... 1115.8.7. Предикат перевірки, чи є список паліндромом .......................... 1125.8.8. Предикат одержання елемента по номеру у списку ................... 1125.8.9. Видалення зі списку всіх входжень заданого значення .............. 1125.8.10. Обчислення суми елементів списку чисел ................................ 1135.8.11. Пошук максимального елемента списку ................................... 113

5.9. Керування пошуком рішень ............................................................... 1145.9.1. Використання предиката faіl ........................................................ 1145.9.2. Переривання пошуку з вертанням: відсікання ............................ 1155.9.3. Запобігання пошуку з вертанням до попередньої підцілі........... 1175.9.4. Запобігання пошуку з вертанням до наступного твердження .... 1205.9.5. Детермінізм і відсікання ............................................................... 1215.9.6. Предикат not – заперечення як неуспіх ....................................... 1215.9.7. Труднощі використання cut і not .................................................. 123

Самостійні завдання .................................................................................. 125Вправи ........................................................................................................ 127Запитання для самоперевірки ................................................................... 129Література до 5-го розділу ....................................................................... 129

6. Вступ у функціональне програмування .................................................. 1306.1. Концепція функціонального програмування .................................... 1306.2. Особливості функціонального програмування ................................. 1306.3. Основні визначення ............................................................................ 131

6.3.1. Списки як засіб подання знань ..................................................... 1326.3.2. Вбудовані функції Ліспа ............................................................... 1326.3.3. Базові функції обробки списків.................................................... 1326.3.4. Конструювання списків у Ліспі ................................................... 1336.3.5. Виділення елемента списку .......................................................... 1346.3.6. Предикатні функції ....................................................................... 134

6.4. Неіменовані і іменовані функції Ліспа .............................................. 134

Page 6: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

6

6.4.1. Неіменовані функції ..................................................................... 1346.4.2. Іменовані функції .......................................................................... 136

6.5. Числові функції................................................................................... 1386.6. Керуючі структури ............................................................................. 139

6.6.1. Функції присвоювання ................................................................. 1396.6.2. Опис структур ............................................................................... 139

6.7. Поняття рекурсії ................................................................................. 1436.7.1. Прості рекурсії .............................................................................. 1436.7.2. Інші види рекурсії ......................................................................... 147

6.8. Поняття функціонала.......................................................................... 1496.9. Сводка синтаксису обчислюваних форм ЛІСПу .............................. 1516.10. Обробка списків і штучний інтелект ............................................... 152

6.10.1. Дві дати ........................................................................................ 1526.10.2. muLISP90 ..................................................................................... 1526.10.3. Visual LISP і Autocad .................................................................. 1526.10.4. HomeLisp ..................................................................................... 153

Запитання для самоперевірки ................................................................... 154Література до 6-го розділу ....................................................................... 154

7. Вирішувачі проблем, засновані на знаннях ........................................... 1557.1. Інженерія знань ................................................................................... 1557.2. Експертні системи (ЕС) ..................................................................... 159

7.2.1. Загальні відомості ......................................................................... 1597.2.2. Області застосування ЕС .............................................................. 1607.2.3. Класи задач, які вирішують за допомогою ЕС ............................ 1607.2.4. Основні лінії розвитку ЕС ............................................................ 1647.2.5. Загальнена структура ЕС .............................................................. 1667.2.6. Приклад іграшкової ЕС розпізнавання тварин ............................ 167

7.3. Основи методології розробки ЕС ...................................................... 1687.3.1. Етапи розробки ЕС........................................................................ 1687.3.2. Технологія швидкого прототипіювання ...................................... 1697.3.3. На етапі ідентифікації ................................................................... 1717.3.4. На етапі концептуалізації ............................................................. 1727.3.5. На етапі формалізації .................................................................... 1737.3.6. На етапі реалізації ......................................................................... 1747.3.7. На етапі тестування ...................................................................... 1747.3.8. На етапі впровадження і дослідної експлуатації ......................... 1757.3.9. Оцінка, стикування, супровід ЕС ................................................. 176

7.4. Експертні системи реального часу .................................................... 1777.4.1. Застосування ЕС реального часу.................................................. 1777.4.2. Вимоги до ЕС реального часу ...................................................... 1777.4.3. Основні властивості ЕС реального часу ...................................... 1787.4.4. Основні виробники ....................................................................... 1787.4.5. Архітектура ЕС реального часу ................................................... 178

Page 7: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

7

7.4.6. Машина виводу ............................................................................. 1797.5. Приклади продукційних ЕС ............................................................... 180

7.5.1. ЕС розпізнавання тварин .............................................................. 1807.5.2. ЕС розпізнавання ігор ................................................................... 181

Запитання для самоперевірки ................................................................... 182Завдання для самостійної роботи ............................................................. 183Література до 7-го розділу ....................................................................... 184

8. CLIPS – програмне середовище для розробки ЕС.................................. 1858.1. Передмова ........................................................................................... 1858.2. Виразні можливості мови CLIPS ....................................................... 186

8.2.1. БНФ-нотація .................................................................................. 1868.2.2. Компоненти CLIPS ....................................................................... 1868.2.3. Примітивні типи даних ................................................................. 1878.2.4. Ієрархія наслідування системних класів CLIPS .......................... 1908.2.5. Структура взаємодії із CLIPS ....................................................... 1908.2.6. Цикл виконання правил ................................................................ 1928.2.7. Конструктори ................................................................................ 1938.2.8. Факти й шаблони .......................................................................... 1938.2.9. Формальна структура фактів ........................................................ 1948.2.10. Основні функції CLIPS ............................................................... 1948.2.11. Конструктор deffunctіon ............................................................. 1968.2.12. Виклик функції ............................................................................ 1968.2.13. Базові команди CLIPS ................................................................. 1978.2.14. План рішення задачі.................................................................... 2018.2.15. Використання зразків у правилах .............................................. 202

8.3. Демонстрація використання CLIPS версії 6.3 ................................... 2038.3.1. Щоб мати можливість спостерігати процес додавання .............. 2048.3.2. Для очищення пам'яті ................................................................... 2068.3.3. Розглянемо приклад додавання шаблону .................................... 2078.3.4. Для перегляду списку шаблонів ................................................... 2098.3.5. Розглянемо приклад додавання правила ..................................... 2108.3.6. Розглянемо дещо складніший приклад ........................................ 2148.3.7. Розглянемо приклад визначення глобальних змінних ................ 219

8.4. Демонстраційні експертні системи .................................................... 2208.4.1. ЕС – порадник студенту ............................................................... 2208.4.2. ЕС – комплектація персонального комп'ютера ........................... 231

Запитання для самоперевірки ................................................................... 243Література до 8-го розділу ....................................................................... 243

9. Онтології ................................................................................................... 2459.1. Визначення поняття «онтологія» ....................................................... 245

9.1.1. Визначення у філософії ................................................................ 2459.1.2. Визначення в інформаційних технологіях .................................. 2459.1.3. Формальна модель онтології ........................................................ 246

Page 8: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

8

9.2. Класифікація онтологій ...................................................................... 2479.2.1. Схема інтеграції онтологій ........................................................... 2479.2.2. Трьохвимірний простір ознак....................................................... 2489.2.3. Класифікація онтологій за ступенем формальності .................... 2499.2.4. Характеристика онтологій за змістом .......................................... 2509.2.5. Характеристика онтологій за ціллю створення ........................... 251

9.3. Приклади навчальних онтологій ....................................................... 2579.3.1. Генеалогія ...................................................................................... 2589.3.2. Партономія (або меронімія) ......................................................... 2589.3.3. Атрибутивна структура поняття .................................................. 2599.3.4. Таксономія ..................................................................................... 260

9.4. Моделі й методи формування онтологій ........................................... 2629.4.1. Основні задачи, що вирішують за допомогою онтології ............ 2629.4.2. Методологія Грубера для побудови онтології ............................ 2629.4.3. Онтологічний інжиніринг ............................................................. 2639.4.4. Проста методологія побудови онтології ...................................... 2659.4.5. Життєвий цикл онтологій ............................................................. 2679.4.6. Концептуалізація ........................................................................... 267

9.5. Редактори онтологій ........................................................................... 2689.5.1. Редактори онтологій ..................................................................... 2689.9.2. Додаткові можливості редакторів ................................................ 2699.5.3. Порівняння редакторів.................................................................. 2709.5.4. Історія розвитку мов подання онтології ...................................... 2709.5.5. Ієрархія стандартів синтаксису мови OWL ................................. 2719.5.6. Стандарт RDF ................................................................................ 2729.5.7. Мова Web Ontology Language (OWL) .......................................... 273

9.6. Найважливіші застосування онтологій ............................................. 2749.6.1. Бібліотеки онтологій ..................................................................... 2749.6.2. Найважливіші додатки.................................................................. 2759.6.3. Лінгвістичні онтології .................................................................. 2759.6.4. Проблеми онтологій...................................................................... 275

Запитання для самоперевірки ................................................................... 276Література до 9-го розділу ....................................................................... 277

Page 9: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

9

ВСТУП

Людей відносять до різновиду Homo sapiens (людина розумна),оскільки саме розумові здібності є найсуттєвішою ознакою їхньої психіки,що формують всі прояви людського інтелекту щодо відчуття, розуміння,прогнозування й керувати світом.

Штучний інтелект (ШІ) досліджує всі проблеми щодо природиінтелекту та створення штучної сутності з найдосконалішим інтелектом.

ШІ – це одна з найновіших сфер науки. Перші роботи в цій областіпочалися незабаром після Другої світової війни, а сама її назва булазапропонована в 1956 році.

ШІ перебуває на стику ряду наук: інформатики, логіки, мовознавства(математичної лінгвістики), психології (когнітивної науки) і філософії.Тобто вивчається МІЖДИСЦИПЛІНАРНОЮ НАУКОЮ.

Тематика ШІ охоплює величезний перелік наукових проблем (рис.В.1), починаючи з таких задач загального характеру, як навчання йсприйняття, і закінчуючи такими спеціальними задачами, як гра у шахи,природно мовний переклад, доказ математичних теорем, віршування ідіагностика захворювань. У ШІ систематизують і автоматизують задачібудь-якої сфери інтелектуальної діяльності людини. У цьому сенсі ШІ єдійсно універсальною, всеохоплюючою науковою областю.

Рис. В.1. Дерево проблем штучного інтелекту

Page 10: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

10

Дослідження ШІ започатковані створенням систем доведеннятеорем, вирішувача загальних проблем, ведення ігор. Серед сучасних –системи вирішення: задач експертизи (фінансовий аналіз, науковий аналіз,інженіринг, медична діагностика), побутових задач (сприйняття, роботіка,міркування здорового глузду, природна мова), формальних задач(математика, ігри) тощо.

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

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

1. Основні поняття та означення

1.1. Поняття штучного інтелекту

1.1.1. Визначення інтелекту. Проблема визначення штучного інтелектузводиться до проблеми визначення інтелекту взагалі. Тому перш за всетреба усвідомити сутність природного інтелекту. Тим більше, що можливерізне його тлумачення.

До поширених належить наведене в [1]:«Інтелект полягає … в знанні, як поводитись в постійно мінливому

й еволюціонуючому світі.»Відносно цього трактування можна зауважити, що тут наявна деяка

незавершеність думки: процес і обставини вказано, а його спрямованість –відсутня, тобто не вистачає мети, критерію якості «поводження».

Протилежна ситуація із визначенням, яке вважається приналежнимвідомому радянському філософу і логіку В.Ф. Асмус:

"Інтелект – це мистецтво виживання".Тобто тут мета присутня, а процес і його обставини невизначені.Позитивні якості цих двох визначень поєднуються в наступному:Інтелект (Intellectus – пізнання, розуміння, розум) – це знання, як

поводитись (вирішуючи проблеми) в постійно мінливому йеволюціонуючому світі заради виживання (суб’єкта та виду).

Відомі визначення ШІ розподіляють по чотирьох різновидах:· Системи, що міркують подібно до людей;· Системи, що міркують раціонально;· Системи, що діють подібно до людей;· Системи, що діють раціонально.

Page 11: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

11

Історія розвитку ШІ показує, що інтенсивні дослідження проводятьсяпо всіх чотирьох напрямках. Однак, є ґрунтовні доводи щодо ознакнайперспективніших систем ШІ.

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

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

Необхідність лідируючого положення людини обґрунтовується йтим, що сучасному комп'ютеру не під силу замінити людину привирішенні проблем, з якими, окрім дедуктивних, "пов'язані різного роду(високорівневі) виведення, для більшості з яких ще не отримані алгоритми,що допускають їхню автоматизацію".

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

На підставі цих міркувань доцільно віддати перевагу дослідженнямлюдиноподібних систем ШІ:Визначення 1.1. Система ШІ – така система, що міркує та діє подібно долюдей.

Згідно до Державного Стандарту України ДСТУ 2938-94 (Системиоброблення інформації. ОСНОВНІ ПОНЯТТЯ. Терміни і визначення)штучний інтелект визначається як:

«здатність систем оброблення даних виконувати функції, щоасоціюються з інтелектом людини, такі як логічне мислення, навчання тасамовдосконалення».1.1.2. Тест Тьюринга. З моменту зародження сучасних комп’ютерів людейнепокоїло питання: чи можна побудувати машину, яка б за розумовимиздібностями змогла замінити людину. Для перевірки інтелектуальностікомп’ютера А. Тьюринг ще у 1950 році запропонував емпіричний тест напорівняння здібностей пропонованого зразка комп’ютера із здібностямилюдини – кращим і єдиним стандартом розумної поведінки.

Стандартна інтерпретація цього тесту, який А. Тьюринг назвав"імітаційною грою", виглядає таким чином (рис. 1.1):

Page 12: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

12

· дослідник-експерт взаємодіє з одним комп'ютером і однієюлюдиною. На підставі їхніх відповідей на запитання дослідник маєвизначитись, з ким він спілкується: з людиною чи комп'ютером.Завдання комп'ютера – змусити дослідника зробити невірний вибір;

· усі учасники тестування не бачать один одного, спілкуютьсявинятково за допомогою текстового обладнання, наприклад,комп'ютерного термінала. Дозволяється задавати співрозмовниковібудь-які питання, вести розмови на довільні теми;

· щоб протестувати саме інтелект машини, а не її можливістьрозпізнавати усне мовлення, бесіда ведеться в режимі «тільки текст»,за допомогою клавіатури й екрана комп'ютера-посередника;

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

Рис. 1.1. Контекст тесту Тьюринга

Визначення 1.2. Комп'ютер має працювати так, щоб людина не змоглавизначити, з ким вона спілкується – з іншою людиною чи з машиною.

Запрограмований у такий спосіб комп'ютер повинен мати засоби:· обробки текстів на природній мові (Natural Language Processing –

NLP) в обсязі, достатньому для успішного спілкування, скажімо,англійською мовою;

· представлення знань, з чиєю допомогою зможе записати в пам'ять те,що він взнає або прочитає;

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

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

Page 13: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

13

А щоб пройти повний тест Тьюринга, вважається за необхіднетакож:

· машинний зір для сприйняття об’єктів;· засоби робототехніки для маніпулювання об’єктами і переміщення у

просторі.Оці шість напрямків становлять основну частину штучного

інтелекту.Структура досліджень ШІ всеохоплююча (рис. 1.2). Тематика ШІ

традиційно включає дослідження систем, що відповідають найістотнішимознакам поняття розумної діяльності:

· розпізнавання, перетворення й розуміння образів (природно-мовних,зорових, тактильних й ін.),

· рішення задач у просторі станів,· прийняття рішень, адаптація й навчання на основі накопиченого

досвіду,· цілеспрямовану поведінку, самоорганізацію систем.

Рис. 1.2. Структура досліджень ШІ [2]

Розвиток теорії і створення систем ШІ зараз пов'язують із проблемоюорганізації знань про світ у вигляді деяких структур, що адекватніреальним відношенням між предметами і явищами дійсності.

Важливим є визначення терміну «знання» на його протиставленнізмісту терміну «дані»:

Page 14: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

14

· дані – це факти, що фіксують окремі властивості об'єктів,процесів, явищ;

· знання – це загальні твердження, що фіксуютьзакономірності взаємозв'язку даних і дозволяють розв'язувати задачі.

Відповідно до визначення, знання входять до складу ієрархіїспособів подання інформації (рис. 1.3).

Рис. 1.3. Піраміда знань [2]

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

Знання можна розділити на факти й правила. Під фактами маютьсяна увазі знання типу "A це A", вони характерні для баз даних. Підправилами (продукціями) розуміються знання виду "ЯКЩО-ТО". Крім цихзнань існують так називані метазнання (знання про знання). Створенняпродукційних систем для подання знань дозволило розділити знання йкерування в комп'ютерній програмі, забезпечити модульністьпродукційних правил, тобто відсутність синтаксичної взаємодії міжправилами. При створенні моделей подання знань варто враховувати такіфактори, як однорідність подання й простота розуміння. Виконати цювимогу рівною мірою для простих і складних задач досить складно.

Обробка знань – одна зі сфер практичного застосування ШІ, щоприпускає використання комп'ютером знань, якими володіє людина, длярішення проблем.

Page 15: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

15

1.1.3. Еволюція штучного інтелекту. ШІ, як і будь-який напрямоксучасної науки, має багату передісторію [2-8].

Філософська ідея про заміну людини розумною машиною одержаланайбільшого поширення в 60-80 роках. Основні теоретичні положення ШІ,а ШІ сьогодні – вершина інформаційних технологій, закладені саме в цейперіод.

Історія досягнень досліджень ШІ є дуже насиченою. Найважливішіз них наведено нижче [2].

Рік Події й відкриття1943 - Породжуючі правила Поста; модель нейрона Маккаллоха й Піттса.1954 - Керування виконанням правил згідно до марковського алгоритму.1956 - Дартмутська конференція; - програма Logic Theorist (Логік-теоретик); - евристичний пошук; - введення в науковий обіг терміна "штучний інтелект".1957 - Винахід персептрона Розенблаттом; - початок робіт над програмою GPS (General Problem Solver) (Ньюелл, Шоу й Саймон).1958 - Мова штучного інтелекту LISP (Маккарті).1962 - Вихід із друку книги Розенблатта «Principles of Neurodynamics», присвяченої сприйняттю.1965 - Метод резолюції для автоматичного доказу теорем (Робінсон); - нечітка логіка для міркувань про нечітко задані об'єкти (Л. Заде); - початок робіт над першою експертною системою DENDRAL (Фейгенбаум, Бьюкенен).1968 - Семантичні мережі, модель асоціативної пам'яті (Квілліан)1969 - Математична експертна система MACSYMA (Мартін і Мозес)1970 - Початок робіт над мовою PROLOG (Колмерое, Русселл)1971 - Розробка системи розпізнавання мови HEARSAY I; - популярний виклад підходу до рішення проблем на основі правил у книзі Human Problem Solving (Ньюелл і Саймон).1973 - Створення експертної системи для медичної діагностики МУСIN (Шортліфф), що потягло за собою розробку системи GUIDON, концепції інтелектуального навчання (Кленсі) і системи TEIRESIAS, формулювання принципів застосування засобу пояснення (Девіс) і створення ЕМYСIN, першого командного інтерпретатора (Ван Мелле, Шортліфф і Бьюкенен); - розробка системи HEARSAY ІІ; - застосування моделі класної дошки для організації співробітництва декількох експертів.1975 - Фрейми подання знань (М. Мінський).1976 - Створення програми АМ (Artificial Mathematician –

Page 16: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

16

автоматизований математик), що забезпечує творче відкриття математичних понять (Ленат);

- застосування теорії доказів Демпстера-Шефера для проведення міркувань в умовах невизначеності; - початок робіт над експертною системою PROSPECTOR, призначеної для розвідки корисних копалин (Дуда, Харт).1977 - Розробка командного інтерпретатора експертної системи ОРS (Форгі), попередника CLIPS.1978 - Початок робіт над системою XCON/R1 (Макдермотт, компанія DEC), призначеної для визначення конфігурацій комп'ютерних систем DEC; - розробка системи Мета-DENDRAL, формулювання поняття метаправил і обґрунтування принципу виводу правил по методу індукції (Бьюкенен).1979 - Застосування rete-алгоритма для швидкого зіставлення із шаблонами (Форгі); - початок комерціалізації штучного інтелекту; - створення компанії Inference Согр. (ця компанія випустила інструментальні засоби експертних систем АRТ в 1985 році).1980 - Відкриття в області символьної логіки; - засновано компанію LMI для виробництва LISP машин1982 - Розробка математичної експертної системи SMP; - створення нейронної мережі Хопфілда; - початок робіт у Японії над проектом комп'ютерів V покоління, чиєю метою була розробка інтелектуальних комп'ютерів.1983 - Створення інструментального засобу експертних систем КЕЕ (компанія IntelliCorp).1985 - Випуск версії 1 інструментального засобу експертних систем CLIPS (агентство NASA). Ці програми вільно доступні для використання на всіх комп'ютерах, а не лише на дорогих LISP комп'ютерах спеціального призначення. У склад CLIPS входить також окрема мова COOL, основана на об’єктах. Від CLIPS походять мови: JESS, ART-IM, Eclips, Togai Fuzzy Clips, Fuzzy Clips фірми NRC (Канада).

1.1.4. Характеристика досліджень систем ШІ. Дослідження систем ШІзапочатковано з задач: доказ теорем, розпізнавання зображень, машиннийпереклад і розуміння текстів природною мовою, ігри, машинна творчість(синтез музики, віршів, текстів).

Доказ теорем. Вивчення прийомів доказу теорем зіграло важливуроль у розвитку ШІ. Формалізація дедуктивного процесу з використаннямлогіки предикатів допомагає глибше зрозуміти деякі компоненти

Page 17: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

17

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

Для доказу математичної теореми не достатньо дедуктивноговиводу, виходячи з гіпотез, необхідно також створити інтуїтивні здогади йгіпотези про проміжні твердження, які варто довести для виведенняосновної теореми.

В 1954 році А. Ньюелл задумав створити програму для гри в шахи.Дж. Шоу і Г. Саймон об'єдналися із Ньюеллом в роботі над його проектомі в 1956 році створили мову програмування ІPL-І (попередник LіSPа) дляроботи із символьною інформацією. Їхніми першими програмами сталипрограма LT (Logіc Theorіst), щоб розв’язувати логічні (численнявисловлень) та обчислювальні задачі й доводити теореми з підручника«Принципи математики» А. Уайтхеда і Б. Рассела (1956 рік), та програмаNSS (Newell, Shaw, Sіmon) для гри в шахи (1957 рік). LT і NSS призвели достворення А. Ньюеллом, Дж. Шоу і Г. Саймоном програми GPS (GeneralProblem Solver) в 1957-1972 роках. Програма GPS моделювалавикористовувані людиною загальні стратегії рішення задач і моглазастосовуватись для рішення шахових і логічних задач, доказу теорем,граматичного розбору речень, математичного інтегрування, головоломоктипу "Ханойська вежа" тощо. Процес роботи GPS відтворює методирішення задач, використуємих людиною: висуваються підцілі, щонаближають до рішення, застосовується евристичний метод (один, другий іт.д.), поки не буде отримано рішення. Спроби припиняються, якщоодержати рішення не вдається. Програма GPS могла вирішувати лишевідносно прості задачі. Її універсальність досягалася за рахунокефективності. Спеціалізовані "вирішувачі задач" - STUDENT (Bobrov,1964) і ін. краще проявляли себе при пошуку рішення у своїх предметнихобластях. GPS виявилася першою програмою (написана мовою ІPL-V), уякій передбачалося планування стратегії рішення задач.

Для рішення важко формалізуємих задач і, зокрема, для роботи зізнаннями були створені мови програмування для задач ШІ: LІSP (1958 рік,J. MacCarthy), Пролог (1975-79 роки, D. Warren, F. Pereіra), ІнтеrLіSP, FRL,KRL, SMALLTALK, OPS5, PLANNER, QA4, MACSYMA, REDUCE,РЕФАЛ, CLІPS.

Розпізнавання зображень. Народження робототехніки висунулозадачу машинного зору й розпізнавання зображень у числопершочергових.

У традиційному розпізнаванні образів з'явився добре розробленийматематичний апарат, і для не дуже складних об'єктів виявилосяможливим будувати практично працюючі системи класифікації заознаками, за аналогією й т.д. Як ознаки можуть розглядатися будь-якіхарактеристики розпізнаваних об'єктів. Ознаки повинні бути інваріантні доорієнтації, розміру й варіаціям форми об'єктів. Алфавіт ознак

Page 18: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

18

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

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

Експертні системи. Методи ШІ знайшли застосування пристворенні автоматичних консультуючих систем. До 1968 року дослідникив області ШІ працювали на основі загального підходу – спрощеннякомбінаторики, що базується на зменшенні перебору альтернатив,виходячи зі здорового глузду, застосування числових функцій оцінюванняй різних евристик.

На початку 70-х років відбувся якісний стрибок і прийшлорозуміння, що необхідні глибокі знання у відповідній області й виділеннязнань із даних, одержуваних від експерта. З'являються експертні системи(ЕС), або системи, засновані на знаннях.

ЕС DENDRAL (середина 60-х років, Стенфордский університет)розшифровувала дані мас-спектрографічного аналізу.

ЕС MYCІN (середина 70-х років, Стенфордский університет) ставиладіагноз при інфекційних захворюваннях крові.

ЕС PROSPECTOR (1974-1983 роки, Стенфордский університет)виявляла корисні копалини.

ЕС SOPHІE навчала діагностуванню несправностей в електричнихланцюгах. ЕС XCON допомагала конфігурувати устаткування для системVAX фірми DEC, ЕС PALLADІО допомагала проектувати й тестуватиНВІС-схеми.

ЕС JUDІTH допомагає фахівцям із цивільних справ і разом зюристом і з його слів засвоює фактичні і юридичні передумови справи, апотім пропонує розглянути різні варіанти підходів до розв'язку справи.

ЕС LRS надає допомогу в підборі й аналізі інформації про судовірішення й правові акти в області кредитно-грошового законодавства,пов'язаного з використанням векселів і чеків.

Список створених ЕС можна перераховувати дуже довго. Булирозроблені й впроваджені тисячі реально працюючих експертних систем.

Page 19: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

19

Розробка інструментальних засобів для створення ЕС ведетьсяпостійно. З'являються експертні системи-оболонки, удосконалюютьсятехнології створення ЕС. Мова Пролог (1975-79 роки) стає одним зосновних інструментів створення ЕС. Мова CLІPS (C Language ІntegratedProductіon System) почала розроблятися в космічному центрі ДжонсонаNASA в 1984 році. Мова CLІPS вільна від недоліків попередніхінструментальних засобів для створення ЕС, заснованих мовою LІSP.З'являється інструментарій EXSYS, що став на початку 90-х років одним злідерів по створенню ЕС. На початку ХХІ століття з'являється теоріяінтелектуальних агентів й ЕС на їхній основі. Web-орієнтованийінструментарій JESS (Java Expert System Shell), що використає мовуподання знань CLІPS, зараз набув достатню популярність.

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

Машинний переклад і розуміння природно мовних текстів.Початком робіт з машинного перекладу вважають 1954 рік, коли в США задопомогою комп'ютера було переведено шістдесят фраз. Цей відомий"Джорджтаунский експеримент" справив незабутнє враження на фахівців.Тоді здавалося, що досить створити більші сховища словників дляперекладу з однієї мови на іншу, розробити правила перекладу - і проблемабуде вирішена. Коли з'ясувалося, що проблема не так проста, булостворено мову-посередник, що полегшує співставлення фраз на різнихмовах. У другій половині сімдесятих років ця мова-посередникперетворилась на семантичну модель подання змісту перекладних текстів.Створення семантичної моделі привело до розуміння необхідності мовидля внутрішнього подання знань. І, нарешті, важливим досягненнямз'явилося розуміння того, що аналіз природно-мовних текстів (ПМ)складається із чотирьох основних етапів: морфологічний аналіз,синтаксичний аналіз, семантичний аналіз, прагматичний аналіз.

Задача розбору ПМ-речення навіть із обмеженим словником у сотнюслів є типовою задачею ШІ. В 1971 році Т. Виноградом була створеназнаменита програма SHRDLU [3], яка працює в абстрактному світі, щоскладається з різнобарвних кубиків і пірамід. У цьому світі функціонує"однорукий" робот Робби, здатний спілкуватися з людиною на природній(англійській) мові й робити маніпуляції з об'єктами цього миру. Цей роботтакож здатний розуміти досить складні вирази й самостійно плануватисвою діяльність і пояснювати мотиви тих чи інших дій.

Сам алгоритм Винограда настільки елегантний, що займає всьогокілька сотень рядків коду мовою LІSP, улюбленої мови розроблювачів ШІ,що займаються аналізом ПМ.

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

Page 20: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

20

формальної семантики, ще не вдалося створити більш-менш ефективнупрограмну систему, здатну адекватно розуміти ЗМІСТ фраз із достатньовеликих областей знань, наприклад, нашого повсякденного миру.

У розборі й розумінні природної української (та російської) мовимасу проблем створює складна відмінкова система, відмінювання, часи,відсутність формального порядку членів речення.

Ігрові програми. До числа перших ігрових програм можна віднестипрограму Артура Самуеля гри в чекерс (американські шашки), написану в1947 році, причому в ній використався ряд основних ідей ШІ, таких, якперебір варіантів і самонавчання.

Навчити комп'ютер грати в шахи – одна з найцікавіших задач у сферіігрових програм, що використають методи ШІ. Вона була поставлена вжена зорі обчислювальної техніки, наприкінці 50-х років. У шахах існуютьпевні рівні майстерності, ступені якості гри, які можуть дати чіткі критеріїінтелектуального росту машини. Тому комп'ютерними шахами активнозаймалися вчені в усім світі. Але шахи – гра, змагання, і щобпродемонструвати свої логічні здатності, комп'ютеру необхіднийбезпосередній супротивник. В 1974 році вперше пройшов чемпіонат світусеред шахових програм у рамках чергового конгресу ІFІP (ІnternatіonalFederatіon of Іnformatіon Processіng) у Стокгольмі. Переможцем цьогозмагання стала радянська шахова програма "Каісса" (Каісса – богиня,покровителька шахів).

Штучні нейронні мережі (НМ) і нейрокомп'ютери досліджуютьсяальтернативно алгоритмічним реалізаціям як в ідеологічному, так і впрактичному плані, та значною мірою запозичують структуру і принципироботи головного мозку. Знання в них не відділені від процесора, арівномірно розподілені й існують неявно у вигляді сил синаптичнихзв'язків.

Одна із ключових особливостей НМ полягає в їхній здатностінавчатись на основі досвіду, отриманого в навчальному середовищі.Технічно навчання полягає в знаходженні коефіцієнтів зв'язків міжнейронами. У процесі навчання нейронна мережа здатна виявляти складнізалежності між вхідними даними й вихідними, а також виконуватиузагальнення. Це значить, що, у випадку успішного навчання, мережазможе повернути вірний результат на підставі даних, які були відсутні внавчальній вибірці.

В 1957 році Ф. Розенблат винайшов пристрій для розпізнавання наоснові НМ – персептрон, що успішно розрізняв букви алфавіту, хоча йвідрізнявся високою чутливістю до їхнього написання.

Цікаво знати, що в звичайних мурах і бджіл приблизно 80 нейронівна особину (у цариці – 200-300 нейронів), у тарганів – 300 нейронів і ціістоти показують відмінні адаптаційні властивості в процесі еволюції. Улюдини число нейронів більш ніж 1010.

Page 21: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

21

Пік інтересу до НМ припадає на 60-і й 70-і роки, але в останні десятьроків спостерігається різко зрослий обсяг досліджень і розробок НМ. Цестало можливим у зв'язку з появою нового апаратного забезпечення, щопідвищило продуктивність обчислень у НМ (нейропроцесори,транспьютери й т.п. ). НМ добре підходять для розпізнавання образів ірішення задач класифікації, оптимізації й прогнозування. Тому основнимиобластями застосування НМ є:

· промислове виробництво й робототехніка;· воєнна промисловість й аеронавтика;· банки й страхові компанії;· служби безпеки;· біомедична промисловість;· телебачення й зв'язок і інші області.

На закінчення огляду робіт в області ШІ варто згадати оголошенуЯпонією в 1981 році програму НДДКР щодо створення до 1991 рокупрототипу комп'ютера п'ятого покоління. Перехід до комп'ютерів п'ятогопокоління означав різкий ріст "інтелектуальних" здібностей комп'ютера йможливість діалогу між комп'ютером і непрофесійним користувачемприродною мовою, у тому числі в мовній формі або шляхом обмінуграфічною інформацією – за допомогою креслень, схем, графіків,малюнків. До складу комп'ютера п'ятого покоління також повинна ввійтисистема рішення задач і логічного мислення, що забезпечує здатністьмашини до самонавчання, асоціативної обробки інформації й одержаннюлогічних виводів. Рівень "дружелюбності" комп'ютера стосовнокористувача підвищиться настільки, що фахівець із будь-якої предметноїобласті, що не має навичок роботи з комп'ютером, зможе користуватисякомп'ютером за допомогою природних для людини засобів спілкування –мови, рукописного тексту, зображень й образів.

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

· базова програмна система, що включає систему керування базоюзнань, систему придбання й подання знань, систему рішення задач йодержання виводів, систему навчання й пояснення рішень;

· базова прикладна система, що включає інтелектуальну системуавтоматизованого проектування надвеликих інтегральних схем іархитектур комп'ютерів, інтелектуальну систему програмування,систему машинного перекладу й розуміння ПМ, системурозпізнавання образів й обробки зображень (не менш 100 000одиниць інформації у вигляді зображень), систему розпізнаваннямови (не менш 10 000 слів), бази знань про предметні області, а

Page 22: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

22

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

частково відповісти на "японський виклик" у своїх версіях операційноїсистеми Wіndows для персональних комп'ютерів серії ІBM PC AT/486 івище. Рівень "дружелюбності" сучасних комп'ютерів стосовно користувачадійсно значно підвищився порівняно до інших поколінь комп'ютерів. У ціж роки стрімкий розвиток Іnternet став потужним кроком на шляхустворення розподілених баз знань.

Серйозних змін в теорії ШІ варто очікувати, вочевидь в 20 р. нашогостоліття. Це обумовлено необхідністю узагальнення накопиченихнаукових знань, появи деякої єдиної теорії ШІ у взаємозвязку із іншиминауками (рис. 1.4).

Рис. 1.4. Взаємозв'язок ШІ з іншими дисциплінами [7]

1.2. Поняття інтелектуальної системи (ІС) [2-13].

1.2.1. Поняття інформації. Відомо багато різних визначень поняттяінформації – від змістовних до суто формальних:

у побуті інформацією називають будь-які дані або відомості, які длякогось є новими, кого-небудь цікавлять. Наприклад, повідомлення продеякі події, про будь-чию діяльність й т.п. "Інформувати" в цьому змістіозначає "повідомити щось, невідоме раніше";

у техніці під інформацією розуміють довільні повідомлення,передані у формі знаків або сигналів;

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

Page 23: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

23

Властивості інформації:• Оперативність відображає актуальність інформації для необхідних

розрахунків і прийняття рішень в умовах, що змінилися.• Точність визначає припустимий рівень викривлення як вихідної,

так і результатної інформації, при якому зберігається ефективністьфункціонування системи.

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

• Стійкість інформації відбиває її здатність реагувати на змінивхідних даних без порушення необхідної точності. Стійкість інформаціївизначається обраною методикою її відбору й формування.

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

Рівні інтерпретації інформації:• Синтаксис – структура інформації• Семантика – зміст інформації (як її обробляти чи реагувати на неї)• Прагматика – призначення інформації (ціль, причина передачі)Інформаційні революції:• Поява мови (з появою людини)• Поява писемності (4000-15000 рр. до н.е.)• Поява друкарства (епоха освіти, ренесансу, ~1460 р.)• Поява електрозв'язку (~1900 р.)• Поява комп'ютерів (~1940 р.)• Поява Інтернету ( 1990-і роки)• Поява штучного інтелекту (1960 - 21 століття)• Роботи й Кіборги

1.2.2. Інтелектуальна система – (ІС, intelligent system) – це технічна абопрограмна системна, здатна вирішувати задачі, що традиційно вважаютьсятворчими, приналежні конкретній предметній області, знання про якузберігаються в пам'яті такої системи. Структура ІС включає три основніблоки – базу знань, вирішувач і інтелектуальний інтерфейс.

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

Page 24: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

24

Різновиди інтелектуальних систем· розрахунково-логічна система;· рефлекторна інтелектуальна система;· інтелектуальна інформаційна система;· експертна система;· гібрідна інтелектуальна система.

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

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

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

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

Рефлекторні програмні системи застосовуються до задач:· природно-мовний доступ до баз даних;· оцінки інвестиційних пропозицій;· оцінки й прогнозування впливу шкідливих речовин на

здоров'я населення;· прогнозування результатів спортивних ігор.

Інтелектуальна інформаційна система (ІІС) – комплекспрограмних, лінгвістичних і логіко-математичних засобів для реалізаціїпідтримки інформаційної діяльності людини в режимі природномовногодіалогу.

Різновиди ІІС· Експертні системи

o Власне експертні системи (ЕС)

Page 25: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

25

o Інтерактивні баннеры (web + ЕС)· Системи спілкування (питально-відповідні системи)

o Інтелектуальні розвідувачіo Віртуальні співрозмовникиo Віртуальні цифрові помічники.

ІІС можуть розміщатися на якому-небудь сайті, де користувач задаєсистемі питання природньою мовою (якщо це питально-відповіднасистема) або, відповідаючи на запитання системи, знаходить необхіднуінформацію (якщо це експертна система). Але, як правило, ЕС в інтернетівиконують рекламно-інформаційні функції (інтерактивні баннери), асерйозні системи (такі, як, наприклад, ЕС діагностики устаткування)використовуються локально, тому що виконують конкретні специфічнізадачі.

Питаючо-відповідаюча система – це інформаційна система, що єгібридом пошукових, довідкових і інтелектуальних систем, якавикористовує природно-мовний інтерфейс. На вхід такої системиподається запит, сформульований природною мовою, після чого вінобробляється з використанням методів NLP, і генерується природно-мовнавідповідь. У якості базового підходу до завдання пошуку відповіді назапитання звичайно застосовується наступна схема: спочатку система тимабо іншим чином (наприклад, пошуком по ключових словах) відбираєдокументи, що містять інформацію, пов'язану з поставленим питанням,потім фільтрує їх, виділяючи окремі текстові фрагменти, що потенційномістять відповідь, після чого з відібраних фрагментів генеруючий модульсинтезує відповідь на запитання.

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

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

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

Page 26: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

26

проблема ШІ. І звичайно, сучасні програми-співрозмовники – лише спробиімітувати розумний діалог з машиною.

Як і будь-яка інтелектуальна система, віртуальний співрозмовникмає базу знань. У найпростішому випадку вона становить наборивідповідей, співставлених можливим питанням користувача.Найпоширеніші методи вибору відповіді в цьому випадку наступні.

· Реакція на ключові слова. Даний метод був використаний в Елізі.Наприклад, якщо фраза користувача містила слова «батько», «мати»,«син» і інші, Еліза могла відповісти: «Розповідайте більше про вашусім'ю».

· Збіг фрази. Мається на увазі подібність фрази користувача з тими,що є в базі знань. Може враховуватися також порядок слів.

· Збіг контексту. Часто в керівництвах до програм-співрозмовниківпросять не використовувати фрази, насичені займенниками, типу: «Ащо це таке?» Для коректної відповіді деякі програми можутьпроаналізувати попередні фрази користувача й вибрати підходящувідповідь.Віртуальний цифровий помічник (Virtual Digital Assistant, VDA) –

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

Одним з найважливіших відмінностей від попередніх поколіньпланувальників (Personal Digital Assistant, PDA) і інформаційнихменеджерів є врахування контекста, у якому діє користувач. У першучергу, його поточного стану у просторі, що тісно пов'язує віртуальнихцифрових помічників з геолокаційними сервісами.

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

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

Для розробки ІІС раніше використовувалися логічні мови (Пролог,Лісп і т.д.), а зараз використовуються різні процедурні мови. Логіко-математичне забезпечення розробляється як для самих модулів систем, так

Page 27: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

27

і для стикування цих модулів. Однак на сьогоднішній день не існуєуніверсальної логіко-математичної системи, яка могла б задовольнитипотреби будь-якого розроблювача ІІС, тому доводиться або комбінуватинакопичений досвід, або розробляти логікові системи самостійно.

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

1.3. Інтелектуальні задачі1.3.1. Визначення інтелектуальної задачі (ІЗ). До інтелектуальнихналежать задачі, що, як правило, мають особливості:§ алгоритм рішення невідомий;§ окрім традиційних даних у числовому форматі, використається

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

потрібно зробити вибір між багатьма варіантами в умовахневизначеності). Свобода дій є істотною складовою інтелектуальнихзадач.

1.3.2. Класифікація задач, розв’язуваних ІІС.· Інтерпретація даних. Це одна із традиційних задач для експертнихсистем (ЕС). Під інтерпретацією розуміється процес визначення змістуданих, результати якого повинні бути узгодженими й коректними.Звичайно передбачається багатоварінтний аналіз даних.

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

· Моніторинг. Основна задача моніторингу – безперервна інтерпретаціяданих у реальному масштабі часу й сигналізація про вихід параметрів заприпустимі межі. Головні проблеми: «пропуск» тривожної ситуації таінверсна задача - «неправильне» спрацьовування. Складність цих проблему розмитості симптомів тривожних ситуацій і необхідність врахуваннячасового контексту.

Page 28: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

28

· Проектування. Проектування полягає в підготовці специфікацій настворення «об'єктів» із наперед визначеними властивостями. Підспецифікацією розуміється весь набір необхідних документів – креслення,пояснювальна записка і т.д. Основні проблеми тут – одержати чіткийструктурований опис знань про об'єкт і проблема «сліду». Для організаціїефективного проектування й у ще більшому ступені перепроектуваннянеобхідно формувати не лише проектні рішення, але й мотиви їхприйняття. Таким чином, у задачах проектування тісно зв'язуються дваосновні процеси, виконувані у рамках відповідної ЕС: процес виводурішення й процес пояснення.

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

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

· Навчання. Під навчанням розуміється використання комп'ютера длянавчання якійсь дисципліні або предмету. Системи навчання діагностуютьпомилки при вивченні якої-небудь дисципліни за допомогою комп'ютера іпідказують правильні розв'язки. Вони акумулюють знання прогіпотетичного «учня» і його характерні помилки, потім у роботі вониздатні діагностувати слабкості в пізнаннях учнів і знаходити відповіднізаходи для їхньої ліквідації. Крім того, з метою передачі знань вонипланують акт спілкування з учнем залежно від їхніх успіхів.

· Керування. Під керуванням розуміється функція організованої системи,що підтримує певний режим її діяльності. Такого роду ЕС здійснюютькерування поведінкою складних систем відповідно до заданихспецифікацій.

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

Page 29: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

29

1.3.3. Задачі аналізу і синтезу. У загальному випадку всі системи,засновані на знаннях, можна поділити на системи, що вирішують задачіаналізу, і системи, що вирішують задачі синтезу.

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

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

Запитання для самоперевірки

1. Що таке інтелект, штучний інтелект?2. У чому полягає тест Тьюринга?3. Функціональні можливості комп'ютера, необхідні для проходження

повного тесту Тьюринга?4. Основні наукові напрямки тематики ШІ.5. Як називалась перша експертна система?6. Яку задачу вирішувала експертна система PROSPECTOR?7. Поняття знання.8. Поняття інформації.9. Різновиди інтелектуальних систем.10.Інтелектуальна інформаційна система (ІІС): сутність, різновиди,

області найбільш ефективного застосування.11. Визначення інтелектуальної задачі.12.Класифікація задач, розв’язуваних ІІС.13. Задачі аналізу і синтезу.

Література до 1-го розділу

1. Люгер Дж. Ф. Искусственный интеллект: стратегии и методырешения проблем / Дж. Ф. Люгер. – 4-е изд.; пер. с англ. – М., СПб,Киев: Издательский дом «Вильямс», 2003. – 864 с.

2. Джарратано Д. Экспертные системы: принципы разработки ипрограммирование / Д. Джарратано, Г. Райли. – 4-е изд.; пер. с англ.– М.: 000 "И.Д. Вильямс", 2007. – 1152 с.

3. Джексон П. Введение в экспертные системы / П. Джексон. – 3-е изд.;пер. с англ. – М.: Издательский дом «Вильямс», 2001. – 624 с.

Page 30: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

30

4. Масленникова О.Е. Основы искусственного интеллекта: учеб.пособие / О.Е. Масленникова, И.В. Попова. – Магнитогорск : МаГУ,2008. – 282 c.

5. Спірін О.М. Початки штучного інтелекту: навч. посіб. для студ. фіз.-мат. спец-тей вищих пед. навч. закл-ів / О.М. Спірін. – Житомир:Вид-во ЖДУ, 2004. – 172 с.

6. Смолин Д.В. Введение в искусственный интеллект: конспект лекций/ Д.В. Смолин. – М.: ФИЗМАТЛИТ, 2004. – 208 с.

7. Башмаков А.И. Интеллектуальные информационные технологии:учеб. пособие / А.И. Башмаков, И.А. Башмаков. – М.: Изд-во МГТУим. Н.Э. Баумана, 2005. – 304 с.

8. Казаков П.В. Основы искусственного интеллекта: учеб. пособие /П.В. Казаков, В.А. Шкаберин. – Брянск: БГТУ, 2007. – 196 с.

9. Потапов А.С. Технологии искусственного интеллекта / А.С. Потапов.– СПб: СПбГУ ИТМО, 2010. – 218 с.

10. Бессмертный И.А. Искусственный интеллект / И.А. Бессмертный. –СПб: СПбГУ ИТМО, 2010. – 132 с.

11. Мальковский М.Г. Краткий конспект лекций по курсу«Искусственный интеллект» [Електронний ресурс]. – Режимдоступу: http://al.cs.msu.ru/classes/ai

12. Гаврилов А. В. Интеллектуальные системы в машиностроении[Електронний ресурс]. – Режим доступу: http://www.insycom.ru

13. Потапов А.С. Искусственный интеллект и универсальное мышление/ А.С. Потапов. – СПб.: Политехника, 2012. – 711 с.

Page 31: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

31

2. Способи подання ІЗ та методи пошуку рішень

2.1. Стратегії рішення ІЗ.

2.1.1. Різновиди стратегій рішення ІЗ.Слабкі методи рішення задач:

· планування дій в просторі станів (SS-проблема):o сліпий пошук (вглиб та вшир; у прямому напрямку – від

початкового стану до цільового та у зворотному – від цілі допочатку);

o спрямований пошук:§ метод гілок і границь;§ евристичний пошук (екстремуму оцінюючої функції, А*-

алгоритм);§ використання евристик в іграх (мінімакс при фіксованій

глибині пошуку, альфа-бета алгоритм);· планування в просторі задач (PR-проблема):

o пошук на графі І/АБО;o аналіз цілей і засобівo рекурсивний пошук;o пошук за зразком.

Сильні методи рішення задач (методи, засновані на знаннях):· вирішувачі проблем засобами експертних систем;· системи міркувань на основі моделей;· системи міркувань на основі досвіду;· планування.

2.1.2. Подання задач у просторі станів. Пошук річ повсюдна. Усе можназвести до пошуку. У ШІ вираз problem solving (вирішення проблем)стосується того, як комп'ютери використають пошук для вирішенняпроблем у чітко визначених доменах.

В об'єкта є стани, що визначаються значеннями його особливостей.Наприклад, точка є сутність, що має лише одну особливість – місцерозташування, яке задається координатами. Для визначення стану об'єктавикористаються й інші особливості:

Колір: червоний, зелений, синій, і т.д.Цілісність повідомляє, чи є об'єкт цілим.Позиція задає напрямок, у якому об'єкт повернутий.Збереженість говорить про те, чи захищений об'єкт від руйнування.Кожна особливість має атрибути та значення атрибутів.

Наприклад, місце розташування у двомірному просторі – значення

Page 32: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

32

декартова добутку ℝ×ℝ; отже, кортеж (50, 200) задає конкретне значеннядля місця розташування точки.

Кожен атрибут є ступінь свободи; точка в тривимірному просторімає три ступеня свободи.

Простір станів – множина станів об'єкта і всі переходи між станами.Оператор – процедура переходу між станами.Інтелектуальна програма – така програма, що починає від

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

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

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

Нехай, необхідно з пункту A потрапити в пункт B, пройшовши крізьдеякий лабирінт (рис. 2.1).

1 2 3 4 51 A234 B

Рис. 2.1. Приклад лабіринту

Отже, початковий стан – точка (1,1), кінцевий стан задачі точка (5,4).Крім того, є ще 18 проміжних станів – всі інші точки лабіринту. Оператор,що міняє стани – "йти". Таким чином одержуємо граф можливих станів.

Рис. 2.2. Граф можливих станів прикладу.

Page 33: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

33

Вочевидь, якщо даний граф просто обходити, то ризикуємо"зависнути", наприклад, нескінченно блукаючи по маршруті (2,3) -> (3,3) -> (4,3) -> (4,4) -> (3,4) -> (2,4) -> (1,4) -> (1,3) -> (2,3).2.1.3. Редукція задач. Суть методу полягає в тім, що:

· більша задача розбивається на кілька підзадач (декомпозиція), а ті усвою чергу, так само розбиваються на підзадачі;

· і так доти, поки не дійдемо до найменшої задачі, яка може бутивирішена безпосередньо;

· отриманий у такий спосіб граф (дерево рішень) містить вершину(початковий стан), з якої виходять дуги до підзадач, які так само євершинами.Вершини можуть бути двох типів:

· Кон'юнктивні (вершини типу І), коли для рішення задачі потрібновирішити всі вхідні в неї підзадачі.

· Диз'юнктивні (вершини типу АБО), коли для рішення задачі доситьвирішити хоча б одну вхідну в неї підзадачу задачі.

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

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

Рис. 2.3. Приклад 1 обчислення інтегралу

Page 34: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

34

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

Рис. 2.4. Приклад 2 обчислення інтегралу

Ще один приклад: головоломка про ханойську вежу, у якій важливийлише порядок розв'язку виділюваних підзадач.2.1.4. Подання задач у вигляді теорем. Для подання задач у виглядітеорем використається мова логіки предикатів (наприклад, Пролог).

Процес рішення задачі йде у такий спосіб:Крок 1. Формується множина початкових істинних тверджень (аксіом).Крок 2. Будується гіпотеза щодо результатів рішення задачі – цільоветвердження.Крок 3. Аксіоми комбінуються між собою згідно до правил виводу.Крок 4. Перевіряється, чи не містить множина нових тверджень цільоветвердження або його заперечення. Якщо містить, то процес пошукурішення закінчується, інакше – отримана множина тверджень об'єднуєтьсяз початковими аксіомами і процес повторюється.

Page 35: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

35

2.2. Сліпий пошук рішення ІЗ у просторі станів.

2.2.1. Формальна постановка ІЗ у просторі станів. Простір станівпредставляється четвіркою

<N, A, S, GD>,де: N – множина вершин графу або станів в процесі рішення задачі; A –множина дуг між вершинами графу, що відповідні шагам в процесірішення задачі; S – не порожня множина (що є підмножиною множини N)початкових станів задачі; GD – не порожня підмножина множини N, щопоєднує цільові стани, які визначаються одним з двох способів:

· вимірюваними властивостями станів, породжених при пошуку;· властивостями шляхів, що формуються при пошуку, наприклад,

вартістю переміщення по дугах шляху.Задача пошуку – знайти допустимий шлях з вершини множини S ввершину з множини GD. Алгоритм пошуку має спрямувати шляхи відпочаткової вершини до цільової, щоб знайти ланцюг операцій щодорішення задачі:

В заданій множині X знайти такі x, що задовольняють умовам K(x).Очевидний спосіб вирішувати такі задачі – по черзі перебирати елементимножини X і перевіряти виконання умов K(x) для кожного елемента x.Настільки ж очевидна непридатність цього способу в разі надто потужної(або навіть нескінченної) множини X (простору перебору).2.2.2. Пошук від даних і від цілі в просторі станів. Пошук від данихзастосовують у наступних випадках:

· Всі чи більшість вихідних даних задано постановкою задачі.Приклади – PROSPECTOR, Dipmeter, аналізатори в геології.

· Існує багато потенційних цілей та лише кілька способів застосуванняфактів і подання даних конкретної задачі. ЕС DENDRALвикористовує дані мас-спектрографа для суттєвого обмеженнямножини можливих структур органічних сполук.

· Важко сформувати ціль чи гіпотези. Зокрема, для ЕС DENDRALспочатку може бути мало інформації про структуру сполук.

Пошук від цілі рекомендують в наступних випадках:· Ціль пошуку (чи гіпотеза) є в постановці задачі в явній формі чи її

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

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

Page 36: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

36

теореми звичайно значно менше за їхню кількість при виводі відаксіом.

· Якщо вихідні дані напевно відомі вирішувачу, тоді пошук від цілідопоможе в уточненні постановки задачі. Так, конкретна гіпотезапро стан об’єкта суттєво обмежує множину діагностичних тестів.

2.2.3. Пошук із поверненням. Пошук з поверненнями (bасktrасking) награфі простору станів іде по деякому шляху, поки не досягне цілі читупику. Якщо ціль досягнуто, то як рішення видається шлях до цілі, інакше– повернення в найближчу пройдену вершину розгалуження і дослідженняїї альтернативного продовження (рис. 2.5).

Рис. 2.5. Ілюстрація пошуку з поверненням

Цей процес описується наступним рекурсивним правилом:· Якщо стан S не є ціллю, то із його нащадків обираємо першого S1 і

до нього рекурсивно застосовуємо пошук з поверненнями.· Якщо при пошуку в підграфі з коренем S1 ціль не виявлено, то

повторюємо процедуру для вершини-брата S2.· Ця процедура триває, поки не виявиться ціллю один з нащадків

вершини-брата або не з'ясується, що розглянуто вже всіх можливихнащадків (всіх братів).

· Якщо ж жодна з вершин-братів вершини S не привела до цілі,вертаймось до предка вершини S і повторюємо процедуру звершиною-братом S і т.д.

Всякий пошук на графі використає спискові структури.1. Список NSL недосліджених станів для можливого повернення.2. Список DЕ "невдалих" станів аби запобігти повторної перевірки.

Page 37: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

37

3. Список SL станів поточного шляху для вертання по досягненні цілі.Аби запобігти зацикленню кожен новий стан перевіряється на

входження в ці списки.2.2.4. Метод породження і перевірки. Цей метод є прикладомнедетермінованого програмування: генератор будує по черзі гіпотези змножини альтернативних рішень задачі, а контролер перевіряє їх навідповідність вимогам до рішень:

find(X) : - generate(X), test(X).

Якщо перевірка test(X) завершується відмовою, то процесповертається (backtracking) до цілі generate(X), яка генерує наступнийелемент. Ітераційний процесс триває доти, поки успіх перевірки не знайдерозв'язок із необхідними властивостями або генератор не вичерпаємножину альтернативних розв'язків.

Стандартний прийом оптимізації програм типу породження іперевірки полягає у прагненні занурити програму перевірки якоможнаглибше у програму генерації. Гранично, перевірка й генераціяреалізуються одним правилом, яке породжує лише коректні розв'язки.

В якості генератора звичайно використається предикатmember(X,Xs), що породжує гіпотези-значення Х з множини Xs.

На питання member(X,[a,b,c]), у необхідній послідовності будутьпороджені для змінної Х значення: X=a, X=b, X=c.2.2.5. Сліпі методи пошуку вглиб і вшир. Розглянемо приклад задачіпошуку на графі станів (рис. 2.6), кожна гілка якого відповідає установцібукви в певну позицію послідовності, яка має утворити осмислене слово.Якщо це відбулося, то головоломка вважається зібраною (наприклад,комбінація "act" або "cat").

Рис. 2.6. Приклад задачі пошуку на графі станів

Пошук вшир досліджує альтернативи на фіксованому рівні n і лишепісля цього переходить на наступний n+1 рівень (рис. 2.7). Гарантованознаходить найкоротший шлях від початкового стану до цілі, якщо він є, але

Page 38: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

38

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

При пошуку вглиб кожна альтернатива аналізується без врахуванняінших (рис. 2.8). Найпоширеніший метод, але витратний для "високих"дерев, оскільки може легко проминути потрібну гілку і марнодосліджувати "порожні" альтернативи. Не гарантує оптимальність впершезнайденого шляху до цільового стану.

Рис. 2.7. Приклад рішення задачі пошуком вшир

Рис. 2.8. Приклад рішення задачі пошуком вглиб

Обидва методи використовують два списки, яких достатньо дляпросування в просторі станів: в open перераховано вже виявлені, але ще неоцінені стани, а в closed – вже досліджені стани. Список open для пошукувглиб реалізовано як стек магазинного типу або структура LIFO – “last-in-

Page 39: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

39

first-out” ("останнім увійшов - першим вийшов"), а для пошуку вшир – якчерга FIFO - “first-in-first-out”.

Обоє сліпих методи витрачають зайвий час, для них існує загрозакомбінаторного вибуху, тому необхідні спрямовані методи пошуку.2.2.6. Стратегія пошуку вшир. Основна особливість пошуку вширполягає в тому, що за активну обирається вершина, відкрита раніш заінших: чим ближче вершина до старту, тим раніш її буде досліджено.Схема змін статусу вершин має наступний вигляд (рис. 2.9), де чорнимкружком позначено активну вершину.

Рис. 2.9. Структура даних при пошуку вшир

Пошук вшир виконує перехід перш за все до вершин, найближчихдо стартової. Ціль breadthfirst(Paths, Solution) істинна лише тоді, коли вмножині можливих шляхів Paths існує шлях Solution, який може бутипродовжений до цільової вершини, тому треба зберігати всю множинуальтернативних шляхів-кандидатів.

Множину можливих шляхів представимо списком шляхів, а кожнийшлях – списком вершин у зворотному порядку, головою якого є остання зпороджених вершин, а останнім елементом – стартова вершина.

Пошук починається з одноелементної множини кандидатів[[StartNode]].

Пошук вшир по заданій множині шляхів-кандидатів:§ якщо голова першого шляху – це цільова вершина, то взяти цей

шлях як рішення;§ інакше видалити перший шлях з множини кандидатів і

породити множину всіх можливих однокрокових продовжень цього шляху;множину продовжень додати в кінець множини кандидатів, а потімвиконати пошук вшир на цій модифікованій множині.

Процедура BFS(a) (Breadth Fіrst Search), що реалізує алгоритмпошуку вшир, складається з наступної послідовності дій:1. відвідати вершину a , a Þ Q2. whіle Q ≠Æ do x Ü Q3. for y Î V(x) do досліджувати ребро (x,y)4. іf вершина y нова then відвідати вершину y , y Þ Q.

Page 40: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

40

Виконує обхід компоненти зв’язності із заданої стартової вершини a,де V(x) – множина всіх вершин, суміжних із вершиною х, Q – чергавідкритих вершин, тих, що вже не є новими.

Відзначимо деякі властивості процедури BFS:§ Процедура BFS закінчує роботу після скінченного числа кроків.§ В результаті будуть відвідані всі вершини з компонента зв’язності, щомістить вершину a, і тільки вони.Нехай V - множина вершин графа. Наступний алгоритм здійснює повнийобхід графа методом пошуку вшир:1. позначити всі вершини як нові2. створити порожню чергу3. for a Î V do іf a нова then BFS(a)

Просторова складність алгоритму, як і часова, вимірюється числомстанів у списку open і є експоненційна функція довжини шляху O(bn+1), деb – середнє число спадкоємців на всіх n рівнях.

Ілюстрація пошуку вшир. Приклад задачі (рис. 2.10) демонструє,що пошук вшир гарантовано знаходить найкоротший шлях відпочаткового стану до цілі: коротший шлях [a,c,f] знайдено раніш задовший [а,b,e,j].

Рис. 2.10. Пошук вшир, де а - стартова вершина, f і j - цільові. Пошукрішення йде у порядку: а,b,c,d,e,f.

Хід рішення задачі прикладу:1. Почати з початкової множини можливих шляхів: ([а])2. Сформувати продовження шляху [а] (у зворотному порядку):[[b,а],[с,а]]3. Вилучити із множини перший можливий шлях, [b,а], і сформуватипродовження цього шляху:[[d,b,a],[e,b,a]]Додати список продовжень до кінця множини можливих шляхів:

Page 41: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

41

[[с,a],[d,b,a],[e,b,a]]4. Вилучити шлях [с,а] і додати його продовження у кінець множиниможливих шляхів, що приводить до одержання наступної множини:[[d,b,a],[e,b,a],[f,c,a],[g,c,a]]На наступних етапах продовжуються шляхи [d,b,a] і [е,b,а] і модифікованамножина можливих шляхів здобуває вид[[f,c,a ],[g,c,a],[h,d,b,a],[i,e,b,a],[j,e,b,a]]Тепер процес пошуку знаходить шлях [f,c,a], що містить цільовий вузол, f.2.2.7. Стратегія пошуку вглиб. Пошук вглиб – через чисельністьдодатків найважливіша стратегія обходу графа. Ідея методу – іти вперед унедосліджену область, поки це можливо, інакше відступити на крок ішукати нові можливості на шляху вперед. Головна відмінність – активноює остання з відкритих вершин. Схематично це має вигляд (рис. 2.11).

Рис. 2.11. Структура даних при пошуку вглиб

Рекурсивний алгоритм пошуку вглиб. Вершини нумерують в порядкуобходу. Номер вершини х позначено (х) і називають її глибинним номером.Спочатку покладають (х)=0 для всіх х. Це значення зберігається доти, покивершина не стає відкритою та набуває глибинний номер. Змінна с зберігаєпоточний номер.

Алгоритм R: обходить весь граф і надає вершинам глибинні номери1. for xÎV do (x) := 02. c := 03. for xÎV do4. іf (x) = 0 then DFSR(x)

Procedure DFSR(x) обходить один компонент зв’язності1. c := c+12. (x) := c3. for y Î V(x) do4. іf (y) = 0 then DFSR(y)

Page 42: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

42

Складність алгоритму є O(b×n), де b – середнє число спадкоємців на nрівнях, якщо в списку open зберігаються всі дочірні вершини станукожного рівня, а якщо зберігається лише одна дочірня вершина, а іншівираховуються, то оцінкою просторової складності буде O(n).

Ілюстрація пошуку вглиб. Приклад задачі (рис. 2.12) демонструє,що пошук вглиб не завжди знаходить найкоротший шлях від початковогостану до цілі: коротший шлях [a,c,f] знайдено після довшого [а,b,e,j].

Рис. 2.12. Пошук вглиб, де а - стартова вершина, f і j - цільові. Пошукрішення йде у порядку: а, b, d, h, e, і, j. Знайдено рішення [a, b, e, j]. Після

повернення виявлено ще рішення: [а, с, f].

2.2.8. Характеристики методів сліпого пошуку. Наближені оцінкивитрат ресурсів при використанні основних методів пошуку дано в табл.2.1, де b – коефіцієнт розгалуження, d – довжина найкоротшого шляхурозв'язку, dmax – межа глибини при пошуку вглиб, d ≤ dmax

Таблиця 2.1. Витрати ресурсів для методів сліпого пошуку

Метод пошуку Час Простір Гарантія рішенняВшир bd bd такВглиб bdmax dmax ні

Ітеративнезаглиблення

bd d так

Двонаправлений bd/2 bd/2 так

Page 43: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

43

2.3. Евристичний пошук рішення ІЗ у просторі станів.

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

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

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

· використання евристик скорочує кількість варіантів пошуку, що ведедо прискорення рішення задачі;

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

Варіанти методів евристичного пошуку:· алгоритм «підйому на гору»;· алгоритм глобального врахування відповідності цілі;· А-алгоритм.

2.3.2. Алгоритм «підйому на гору»:· цілеспрямований пошук у напрямку найшвидшого убування

евристичної оцінюючої функції;· функція прогнозує вартість шляху від поточної вершини до

найближчої цільової;· чим менше значення оцінюючої функції, тим перспективніший»

шлях, на якому перебуває вершина;· подібний алгоритм використовується при пошуку екстремумів

функції у напрямку найбільшого зростання (убування) функції, тобтов напрямку, що збігається (або протилежному) з напрямкомградієнта. Пошук максимуму функції нагадує сходження на пік понайкрутішому маршруту. Тому цей алгоритм і називаютьалгоритмом «підйому на гору» (hill- climbing);

Page 44: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

44

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

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

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

2.3.3. Алгоритм глобального врахування відповідності цілі:· відмінність від попереднього методу в тому, що на кожному етапі

виконується не локальне порівняння всіх вершин-кандидатів усписку Open;

· для цього список відкритих вершин сортується в порядку зростаннязначень оцінки;

· найкраща вершина для продовження шляху буде на першому місці всписку Open;

· даний алгоритм називають також алгоритмом вибору першоїнайкращої вершини (Best-First);

· застосовується евристична функція, що враховує тільки майбутнівитрати;

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

2.3.4. Побудова евристичної оцінки. Припускається, що для дуг просторустанів визначена функція с(n, n') – вартість переходу з вершини n довершини-спадкоємця n'.

Нехай f – це евристична оцінююча функція для одержання оцінкиf(n) "важкості" вершини n. Згідно з алгоритмом А найперспективнішоювершиною-кандидатом є вершина, для якої f дає мінімальне значення.Функція f(n) будується так, щоб давати оцінку вартості оптимальногошляху зі стартової вершини s до однієї із цільових вершин t за умови, щоцей шлях проходить через вершину n (рис. 2.13):

f( n) = g( n) + h( n),де g(n) – оцінка поточного шляху з початкової вершини s в поточнувершину n; h(n) – евристична функція оцінки оптимального шляху з n в t.

Коли в процесі пошуку отримано вершину n, маємо наступнуситуацію: шлях з s в n уже знайдений, і його вартість можна обчислитисумою вартостей його дуг. Цей шлях не обов'язково оптимальний(можливо, є дешевший, ще не знайдений шлях з s в n), однак вартістьпройденого шляху можна використати як оцінку g(n) мінімальної вартостішляху з s в n. Відносно ж h(n), напевно не можна нічого сказати, оскількипростір станів між n і t ще не "вивчений" пошуком. Тому, як правило, прозначення h(n) можна лише будувати гіпотези на підставі евристичних

Page 45: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

45

міркувань, тобто на підставі знань про конкретну задачу. Оскількизначення h залежить від предметної області, універсального методу дляйого обчислення не існує.

Рис. 2.13. Ілюстрація побудови евристичної оцінки.

У деяких випадках вдається ввести таку оцінюючу функцію, щовона, скорочуючи перебір, не втрачає властивості повноти. Частіше жвикористовувані евристики, суттєво скорочуючи перебір, спричиняютьвтрату властивості повноти.2.3.5. А*-алгоритм. Алгоритм перебору називають припустимим, якщодля довільного графа він завжди закінчує свою роботу побудовоюоптимального шляху до цілі, за умови, що такий шлях існує. Нехай h*(n) –вартість оптимального шляху з довільної вершини n у цільову вершину.

Теорема про припустимість А-алгоритму стверджує:А-алгоритм, що використовує евристичну функцію f(n) = g(n) +h(n), де g(n) – вартість шляху від початкової вершини до вершини nу дереві перебору, а h(n) – евристична оцінка оптимального шляху звершини n у цільову вершину, є припустимим, якщо h(n)£h*(n) длявсіх вершин n простору станів.

А-алгоритм евристичного пошуку, що застосовує функцію h(n), яказадовольняє цій умові, одержав назву А*-алгоритму.

Для припустимості А*-алгоритму досить знайти яку-небудь нижнюгрань функції h*(n) і використовувати її в якості h(n) – тоді оптимальністьзнайденого алгоритмом розв'язку буде гарантована. Цей алгоритм є одниміз фундаментальних у ШІ.2.3.6. Пошук по заданому критерію. Процес пошуку складається змножини конкуруючих підпроцесів, кожний з яких досліджує свій власнийваріант, власне піддерево. У піддеревах є свої піддерева, якідосліджуються підпроцесами підпроцесів і т.д.

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

Page 46: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

46

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

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

Предикати щодо конкретної проблеми задаються відношенням:s( Node, Nodel, Cost),

яке є істинним, якщо в просторі станів між вузлами Node і Nodel є дугавартістю Cost. Відношення goal(Node) є істинним, якщо Node – цільовийвузол у просторі станів. А у відношенні h(Node, H) змінна Н – евристичнаоцінка вартості шляху мінімальної вартості від вузла Node до цілі.2.3.7. Приклад пошуку по заданому критерію. Нехай дана картаміжміських доріг (рис. 2.14).

Рис. 2.14. Карта міжміських доріг: міжміські зв'язки позначені своїмидовжинами; у квадратиках – відстані по прямій до цілі t – відстань(X,t).

Процес пошуку найкоротшого маршруту на графі, відповідномузаданій карті міжміських доріг, показано на рис. 2.15.

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

У якості оцінки h(X) вартості шляху з міста Х до цілі t приймаютьвідстань між ними по прямій відстань(X,t):

f(Х)=g(X)+h(X)=g(X)+ відстань(X,t)Можна вважати, що в даному прикладі пошук з перевагою

складається із двох процесів: процес 1 проходить через а; процес 2 -

Page 47: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

47

через е. Спочатку процес 1 більш активний, оскільки значення f на йогошляху менше, чим на другому шляху. Коли процес 1 досягає міста с, апроцес 2 усе ще перебуває в е, ситуація міняється:

f( с) = g( c) + h( c) = 6 + 4 = 10; f( e) = g( e) + h( e) = 2 + 7 =9.Оскільки f(e)<f(c), то процес 2 переходить до пункту f, a процес 1

зупиняється. Однак у пункті f ситуація змінюється: f( c) < f( f), оскількиf( c) = 10, а f( f) = 7 + 4 = 11.У результаті процес 2 зупиняється, а процес 1 набуває активності,

але тільки до d. Оскільки f( d) = 12 > 11, відбувається активація процесу2, після чого він, уже не перериваючись, доходить до цілі t.

Рис. 2.15. Процес пошуку найкоротшого маршруту для заданої карти.

Запитання для самоперевірки

1. Сутність, різновиди способів подання інтелектуальних задач.2. Сутність, різновиди пошуку рішення задач у просторі станів.3. Сутність, приклади пошуку рішення задач в просторі підзадач.4. Сутність, приклади пошуку рішення задач, поданих у формі теорем.5. Методи «сліпого» пошуку рішення задач у просторі станів, їхні

різновиди, ознаки.6. Методи пошуку «вглиб» та «вшир» рішення задач у просторі станів,

їхня сутність, ознаки.7. Сутність, ознаки методів евристичного пошуку рішення задач у

просторі станів.

Page 48: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

48

8. Сутність, ознаки, приклади методу породження і перевірки рішеннязадач у просторі станів.

9. А-алгоритм пошуку рішення задач у просторі станів.10. А*-алгоритм пошуку рішення задач у просторі станів, чим він

відрізняється від А-алгоритму.

Література до 2-го розділу

1. Люгер Дж. Ф. Искусственный интеллект: стратегии и методырешения проблем / Дж. Ф. Люгер. – 4-е изд.; пер. с англ. – М., СПб,Киев: Издательский дом «Вильямс», 2003. – 864 с.

2. Братко И. Алгоритмы искусственного интеллекта на языке Prolog /И. Братко. – 3-е изд.; пер. с англ. – М.: Издательский дом «Вильямс»,2004. – 640 с.

3. Рассел Ст. Искусственный интеллект: современный подход / Ст.Рассел, П. Норвиг. – 2-е изд.; пер. с англ. – М., СПб, Киев:Издательский дом «Вильямс», 2006. – 1408 с.

4. Джексон П. Введение в экспертные системы / П. Джексон. – 3-е изд.;пер. с англ. – М.: Издательский дом «Вильямс», 2001. – 624 с.

5. Морозов М.Н. Курс лекций по дисциплине "Системы искусственногоинтеллекта" [Електронний ресурс]. – Режим доступу:http://www.mari-el.ru/mmlab/home/AI/7_8/index.html

6. Спірін О.М. Початки штучного інтелекту: навч. посіб. для студ. фіз.-мат. спец-тей вищих пед. навч. закл-ів / О.М. Спірін. – Житомир:Вид-во ЖДУ, 2004. – 172 с.

7. Смолин Д.В. Введение в искусственный интеллект: конспект лекций/ Д.В. Смолин. – М.: ФИЗМАТЛИТ, 2004. – 208 с.

8. Башмаков А.И. Интеллектуальные информационные технологии:учеб. пособие / А.И. Башмаков, И.А. Башмаков. – М.: Изд-во МГТУим. Н.Э. Баумана, 2005. – 304 с.

9. Казаков П.В. Основы искусственного интеллекта: учеб. пособие /П.В. Казаков, В.А. Шкаберин. – Брянск: БГТУ, 2007. – 196 с.

10. Потапов А.С. Технологии искусственного интеллекта / А.С.Потапов. – СПб: СПбГУ ИТМО, 2010. – 218 с.

11. Бессмертный И.А. Искусственный интеллект / И.А. Бессмертный. –СПб: СПбГУ ИТМО, 2010. – 132 с.

12. Мальковский М.Г. Краткий конспект лекций по курсу«Искусственный интеллект» [Електронний ресурс]. – Режимдоступу: http://al.cs.msu.ru/classes/ai

13. Потапов А.С. Искусственный интеллект и универсальное мышление/ А.С. Потапов. – СПб.: Политехника, 2012. – 711 с.

Page 49: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

49

3. Домінуючі парадигми програмування

3.1. Вступ.

Усяке знання, усяка теорія стають доступними для використання йрозвитку (суспільством або комп'ютером) через їхню мову, оскільки думкастає зрозумілою лише після мовного вираження. Абстрагуючись відтехнічних деталей, уся еволюція комп'ютерних систем в остаточномупідсумку зводиться до еволюції мов програмування так само, як еволюціяцивілізації відбивається в розвитку людських мов.

Відомо більш 2 500 мов програмування, взаємозв'язок яких у процесірозвитку представляють у формі деякої мережі [1]. У спрощеній формі [2]наближення до генеалогічного дерева мов високого рівня має вигляд рис.3.1, де явний, безпосередній зв'язок відображений суцільною стрілкою, апобічний вплив – пунктирною.

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

Рис. 3.1. Фрагмент мережі мов програмування

Page 50: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

50

3.2. Типи парадигми

Мови й системи програмування по типах їх парадигми розподіляють[3] на чотири різновиди (рис. 3.2):

· директивні (directive), процедурні (procedural) або імперативні(imperative),

· структурні,· декларативні (declarative),· об'єктно-орієнтовані (object-oriented).

Рис. 3.2. Різновиди парадигми програмування

3.3. Імперативне програмування

Імперативне програмування описує процес обчислення інструкціями,що міняють стан програми; засноване на абстракції машини Тьюринга-Поста, як альтернативного визначення поняття алгоритму. Це – мовиАсемблер, Фортран, Алгол, Бейсик, Кобол, Паскаль, Си й багато інших.

Концепція імперативного програмування:1. Вирішуючи задачу, імперативний програміст спочатку створює

модель (специфікацію задачі) у деякій формальній системі, а потімпереписує розв'язок на імперативну мову в термінах комп'ютера.Але, по-перше, для людини міркувати в термінах комп'ютера доситьнеприродно. По-друге, переписування розв'язку на мовупрограмування, по-суті, не має відношення до розв'язку вихідноїзадачі. Часто імперативні програмісти навіть розділяють роботузгідно цих двох етапів: постановники формулюють розв'язок задачі вмові специфікації, а інші – кодують його в мові програмування.

2. Неструктурне програмування допускає використання в явному видікоманди безумовного переходу (типу GOTO). Імперативна програма

Page 51: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

51

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

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

4. Директивне програмування – один з найбільш природніх для людинистилів написання програм, яке призводить зрештою до обчисленняшуканих величин.Цей стиль успадкований від асемблерних програм, оскільки для них

обов'язкова команда переходу. Однак у мовах високого рівня наявністькоманди переходу є причиною маси серйозних недоліків:

§ програма перетворюється в “спагетті” з нескінченнимипереходами нагору-униз, її дуже важко супроводжувати й модифікувати;

§ фактично неструктурний стиль програмування не дозволяєрозробляти великі проекти;

§ первісне навчання програмуванню на базі неструктурної мовипризводить до величезних труднощів при переході на більш сучасні стилі.Як зазначав відомий голандський учений Е. Дейкстра: «Студентів, якіраніше вивчали Бейсик, практично неможливо навчити гарногопрограмування. Як потенційні програмісти вони піддалися незворотноїрозумової деградації.»

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

3.4. Структурне програмування

Структурне програмування – методологія розробки програмногозабезпечення, заснована на представленні програми у вигляді ієрархічноїструктури блоків. Запропонована в 1968 році Е. Дейкстрой на противагунеобґрунтовно частому використанню програмістами оператора gotoбезумовного переходу. Розвинена й використана Н. Виртом.

Згідно з даною методологією:· Кожний програмний модуль (блок, функція, процедура) повинен

мати лише один вхід і тільки один вихід. Завдання розбивається навелике число дрібних підзадач, кожна з яких вирішується своєю

Page 52: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

52

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

· Будь-який алгоритм можна реалізувати, використовуючи лише трикеруючих конструкції структурного програмування (рис. 3.3):

o послідовне виконання – однократне виконання операцій у томупорядку, у якому вони записані в тексті програми;

o розгалуження – однократне виконання однієї із двох абобільше операцій, залежно від виконання деякої заданої умови;

o цикл із передумовою, або з постумовою – багаторазовевиконання однієї й тієї ж операції, поки виконується деяказадана умова (умова продовження циклу);

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

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

Рис. 3.3. Керуючі конструкції структурного програмування

Встановлено, що:будь-яку схему алгоритму можна представити у вигляді композиції

вкладених блоків begin і end, умовних операторів if, then, else, циклів ізпередумовою (while) і можливо додаткових логічних змінних (прапорів).

Page 53: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

53

Правила зв'язку програмних модулів по керуванню:§ Передача керування викликуваному модулю завжди здійснюється

через його початок, тобто через перший оператор або команду.§ По закінченні виконання викликуваного модуля керування

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

§ Модулі нижчих рівнів або одного рівня ієрархії можутьвикликатися для виконання лише модулями вищих рівнів, тобто модулінижчих рівнів не можуть викликати модулі вищих рівнів, а модулі одногорівня – викликати один одного.

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

§ У будь-якому модулі повинна бути передбачена можливістьпідключення контрольних засобів і засобів налагодження; оператори, щореалізують ці засоби, звичайно зосереджують наприкінці модуля.

Правила зв'язків програмних модулів за інформацією:§Інформація зон глобальних змінних доступна для використання

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

§Локальні змінні доступні лише в межах того модуля, у якому вонивизначені або оголошені.

§Для міжмодульної взаємодії створюються зони обмінюванихзмінних, інформація з яких доступна лише модулям, безпосередньозв'язаним по керуванню.

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

§Інформація, наявна в регістрах модуля виклику, повинна бутизбережена на період виконання викликуваного модуля й відновлена приповерненні в модуль виклику. Регістри можуть зберігати як модульвиклику, так і викликуваний модуль, однак прийнята угода повинна бутиєдиною для всіх викликів модулів.

Принципи структурного програмування реалізовані в мові Алгол, аленайбільшу популярність одержала мова Паскаль, створена в 1970 роцішвейцарським ученим Н. Виртом. Вона може вважатися зразковою мовоюпрограмування, найбільш популярною і зараз (наприклад, у версії Delphiфірми Imprise).

Page 54: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

54

Деякі позитивні якості структурного програмування:1. Структурне програмування значно скорочує число варіантів

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

2. У структурованих програмах логічно зв'язані операториперебувають візуально ближче, а слабко зв'язані – далі, що дозволяєобходитися без блок-схем і інших графічних форм зображення алгоритмів(по-суті, сама програма є власною блок-схемою).

3. Сильно спрощуються тестування й налагодженняструктурованих програм.

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

3.5. Декларативне програмування

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

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

Декларативні мови в якості своєї основи спираються наформалізовану людську логіку: людина лише формулює розв'язуванузадачу, а пошуком розв'язку займається імперативна система [4]. Упідсумку одержуємо:

§ значно більшу швидкість розробки додатків,§ значно менший розмір вихідного коду,§ легкість запису знань на декларативних мовах,§ програми, більш зрозумілі, чим імперативні.Відоме впорядкування мов програмування по їхній близькості до

машинної або до природньої мови (рис. 3.4), де: Аsm – асемблер, АМ –алгоритмічні (процедурні) мови, ФП – мови функціональногопрограмування, ЛП – мови логічного програмування, ПМ – природні мови.

Аsm АМ ФП ЛП ПМI________I_________I_________I_________I

Рис. 3.4. Впорядкування мов програмуваня

Page 55: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

55

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

Декларативними є функціональні (functional), або апликативні, ілогічні (logic) мови. Головне полягає в наступному:

декларативна програма заявляє (декларує), що повинно бутидосягнуте в якості цілі, а директивна – пропонує, як її досягтися.

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

Рис. 3.5. Рівень декларативності мов програмуваня [5]

3.5.1. Функціональне програмування припускає достатнім обчисленняфункцій від вихідних даних і результатів інших функцій, і не припускаєявного зберігання стану програми. Найвідоміші мови: LISP, F#, Haskell,Erlang, APL, ML, Scala, Miranda, Nemerle, XQuery, Python.

Концепція функціонального програмування:1. Функціональне – це програмування за допомогою функцій у їхньому

математичному розумінні. Воно засноване на ідеї: результат кожноїдії – значення, яке може бути аргументом наступної дії.

Page 56: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

56

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

3. "Чисте" функціональне програмування не має оператораприсвоювання, у ньому обчислення функції не призводить допобічних ефектів. Розгалуження обчислень засноване на обробціаргументів умовного твердження, а циклічні обчисленняреалізуються за допомогою рекурсії.

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

5. Наслідком відсутності побічних ефектів у процесі обчисленняфункцій є неістотність порядку виконання окремих фрагментівпрограми – підсумкове значення у всіх випадках буде однаковим.

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

o синтаксичний розбір;o компілятори, перетворення програм;o Data Mining;o біоінформатика;

§ обчислювальні задачі;§ паралельні задачі.

3.5.2. Логічне програмування засноване на автоматичному доказітеорем, на теорії й апараті математичної логіки з використаннямматематичних принципів резолюції. Найвідоміша мова логічногопрограмування – Prolog [6]. Як і в інших декларативних мовах, длярозв'язку задачі в Прологу описують ситуацію (правила й факти) іформулюють ціль (запит), доручаючи інтерпретаторові Прологу знайтирозв'язок задачі.

Програма на Прологу складається з предикатів. Програма наПрологу й база знань – синоніми. Ціль формулюється також у виглядіпредикатів. Виконання програми Прологу – це резолюція (виведення) цілі.

Під інтерпретатором Прологу розуміють механізм розв'язку задачі,сформульованої в мові Пролог. Інакше кажучи, інтерпретатор мови Пролог

Page 57: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

57

– це виконавець Пролог-програм, тобто та "активна сила", яка виконуєпрограми, написані на Прологу.

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

Логічне програмування – це концепція, яка дозволяє описуватипредметну область проблеми без складання алгоритму пошуку розв'язку.Пролог – не стільки мова для програмування, скільки мова для опису данихі логіки їхньої обробки. І розв'язок задачі записується не в термінахкомп'ютера, а в термінах предметної області, у дусі модного заразоб'єктно-орієнтованого програмування.

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

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

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

Пролог вимагає відмови від стереотипів, стилю мисленняімперативного програмування. Основні області застосування Прологу:

§ швидка розробка прототипів прикладних програм;§ автоматичний переклад з одної мови на іншу;§ створення природномовних інтерфейсів для існуючих систем;§ символьні обчислення для розв'язку рівнянь, диференціювання

й інтегрування;§ проектування динамічних реляційних баз даних;§ експертні системи й оболонки експертних систем;§ автоматизоване керування виробничими процесами;

Page 58: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

58

§ автоматичний доказ теорем;§ напівавтоматичне складання розкладів;§ системи автоматизованого проектування;§ базоване на знаннях програмне забезпечення;§ організація сервера даних або, точніше, сервера знань, до якого

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

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

Сучасний етап розвитку декларативних мов полягає в наступному.Зріст продуктивності комп'ютерів при зниженні їхньої вартості в другійполовині 1990-х рр. з одночасним ростом складності розв'язуваних задач івдосконаленням техніки реалізації компіляторів і інтерпретаторів призвелидо значного підвищення ефективності розв'язку задач саме за допомогоюдекларативних мов.

Так, застосовуючи методи глобального аналізу програм, творцісистем Aquarius Prolog і Parma змогли впритул наблизитися до кращихкомпіляторів імперативних мов. Маленькою сенсацією став компілятордля функціональної мови Sisal, створеної в американському ядерномудослідному центрі (Lawrence Livermore National Laboratory) з орієнтацієюна чисельні розрахунки. Він перевершив не тільки Си, але й Фортран, щобув у цій області поза конкуренцією.

Інші напрямки сучасних досліджень декларативних мов:• підвищення "чистоти" мов усуненням з них не декларативних

засобів;• створення спеціалізованих засобів для ефективного розв'язку

певних класів задач. Це, насамперед, мови "програмування в обмеженнях",що містять вбудовані "вирішувачі рівнянь" специфічних видів, наприклад,лінійних рівнянь/нерівностей і рівнянь приналежності в скінченихобластях. Такі засоби дозволяють практично вирішувати багато із задач,які не реально розв'язати загальними методами;

• синтез різних стилів програмування. Зокрема, об'єднанняфункціонального й логічного програмування й, навіть, об'єднання їх зоб'єктно-орієнтованим програмуванням. Важливий принцип цихдосліджень – знайти просту теоретичну основу для такого синтезу.

3.6. Об'єктно-орієнтоване програмування

Об'єктно-орієнтоване програмування (ООП) розглядає програму якнабір взаємодіючих об'єктів [2]. ООП, по-суті, є імперативнепрограмування, доповнене принципом інкапсуляції даних і методів в об'єкті спадкуванням (принцип повторного використання розробленогофункціонала). Це – мови Смолток, Си++, Java, Ada тощо.

Page 59: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

59

Об'єктно-орієнтований підхід, що зараз домінує, дозволяє скоротитичас розробки й збільшати надійність великих проектів. Однак програми вйого стилі відрізняються громіздким синтаксисом; вцілому об'єктно-орієнтована ідеологія достатньо неочевидна, часто сприймається ізтруднощами (особливо це характерно для мови Си, яка і у своємупервісному виді відрізняється вкрай складним синтаксисом), і перехід до їївикористання важкий для багатьох програмістів.

На думку Алана Кея, творця мови Smalltalk, який вважається одниміз засновників ООП, об'єктно-орієнтований підхід полягає в наступномунаборі основних принципів.

Усе є об'єкт. Обчислення здійснюються шляхом взаємодії (обміномданими) об'єктів, при якій один об'єкт вимагає, щоб інший виконав якусьдію. Об'єкти взаємодіють, посилаючи й одержуючи повідомлення.Повідомлення – це запит на виконання дії, доповнений аргументами, якіможуть бути потрібні при його виконанні. Кожний об'єкт має незалежнупам'ять, яка складається з інших об'єктів. Кожний об'єкт є екземпляромкласу, який виражає загальні властивості об'єктів; у класі задаєтьсяповедінка (функціональність) об'єкта. Тим самим усі об'єкти, що єекземплярами одного класу, можуть виконувати однакові дії. Класиорганізовані в єдину деревоподібну структуру із загальним коренем,називану ієрархією спадкування. Пам'ять і поведінка, зв'язані зекземплярами певного класу, автоматично доступні будь-якому класу,розташованому нижче в ієрархічному дереві. Отже, програма є наборомоб'єктів, які мають стан, поведінку і взаємодіють повідомленнями.

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

Стійкість і керованість системи забезпечується:§ чітким розподілом відповідальності об'єктів (за кожну дію

відповідає певний об'єкт),§ однозначним визначенням інтерфейсів міжоб'єктної взаємодії,§ повною ізольованістю внутрішньої структури об'єкта від

зовнішнього середовища (інкапсуляція).Нарівні з позитивними якостями ООП, практика програмування

свідчить про його певні недоліки [7]:· Поль Грем стверджував, що половина всіх концепцій ООП скоріше

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

Page 60: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

60

· Олександр Степанов (Bell Labs, HP Labs) повністю розчарувавсяв парадигмі ООП, зокрема затверджує, що ООП методологічноневірне, оскільки починає з побудови класів. Це якби математикипочинали з аксіом. Але реально ніхто не починає з аксіом, усепочинають із доказів. Тільки коли знайдений набір підходящихдоказів, лише тоді на цій основі виводиться аксіома. Тобто,у математиці ви закінчуєте аксіомою.

· Річард Столлман, також відомий своїм критичним відношеннямдо ООП, особливо любить жартувати щодо міфу об'єктників, щоООП «прискорює розробку програм»: « Як тільки ти сказав слово„об'єкт“, можеш відразу забути про модульність».

· Спадкування – це найбільша провокація в індустрії. Ні в якомумоделюванні спадкування не існує (як і в реальному житті теж) – ні велектроніці, ні в бухгалтерії, ні в політиці, ні будь-де ще.

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

· Никлаус Вирт, творець мов Паскаль і Модула, уважає, що ООП –не більш, ніж тривіальна надбудова над структурнимпрограмуванням, і перебільшення його значимості, у тому числівключенням у мови програмування все нових модних «об'єктно-орієнтованих» засобів, безумовно, шкодить якості розроблювальногопрограмного забезпечення.

· Класик програмування Дейкстра надзвичайно гостро не любитьтільки дві речі: ООП і Каліфорнію.

3.7. Висновки.

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

Важливо зауважити, що парадигма програмування не визначаєтьсяоднозначно мовою програмування, багато сучасних мов програмування –мультипарадигмені, тобто допускають використання різних парадигм із

Page 61: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

61

метою часткової компенсації недоліків окремих з них. Наприклад: C# –імперативний (ОО) + елементи функціональності; F# – функціональний зелементами імперативності; Mercury – функціонально-логічний; ….

Запитання для самоперевірки

1. Що таке парадигма програмування?2. Різновиди парадигм програмування.3. Сутність, позитивні і негативні ознаки імперативного

програмування. Приклади відповідних мов.4. Сутність, позитивні і негативні ознаки структурного програмування.

Приклади відповідних мов.5. Сутність, позитивні і негативні ознаки логічного програмування.

Приклади відповідних мов.6. Сутність, позитивні і негативні ознаки функціонального

програмування. Приклади відповідних мов.7. Сутність, позитивні і негативні ознаки об’єктно-орієнтованого

програмування. Приклади відповідних мов.8. Парадигменні ознаки прикладів мультипарадигменних сучасних мов

програмування.

Література до 3-го розділу

1. Computer Languages History on Google [Електронний ресурс]. –Режим доступу: www.levenez.com/lang/

2. Свердлов С.З. Языки программирования и методы трансляции:учеб. пособие / С.З. Свердлов. – СПб.: Питер, 2007. – 638 с.

3. Языки программирования высокого уровня. Кафедра ЮНЕСКОпо НИТ [Електронний ресурс]. – Режим доступу:http://900igr.net/kartinki/informatika/Istorija-razvitija-jazykov-programmirovanija/Istorija-razvitija-jazykov-programmirovanija.html

4. Дехтяренко І.А. Декларативное программирование [Електроннийресурс]. – Режим доступу:http://softcraft.ru/paradigm/dp/dpref.shtml/.

5. Сошников Д.В. Парадигма логического программирования / Д.В.Сошников. – М.: «Вузовская книга», 2006. – 220 с.

6. Братко И. Алгоритмы искусственного интеллекта на языке Prolog/ И. Братко. – 3-е изд.; пер. с англ. – М.: Издательский дом«Вильямс», 2004. – 640 с.

7. Почему объектно-ориентированное программированиепровалилось? [Електронний ресурс]. – Режим доступу:http://blogerator.ru/page/oop_why-objects-have-failed

Page 62: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

62

4. Домінуючі моделі представлення і використання знань

4.1. Вступ.

Подальший розвиток мов і систем програмування пов'язують ізподанням знань в інтелектуальних інформаційних системах і комп'ютерах.

Відома множина моделей представлення знань [1]. Ґрунтуючись нацих моделях і їх певних комбінаціях створено й використовують багатомов представлення знань. Більшість моделей реальних систем єгібридними. У методичних цілях найвідоміші моделі класифікують урамках схеми, наведеної на рис. 4.1.

Рис. 4.1. Впорядкування моделей представлення знань

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

· продукційні моделі, засновані на правилах у вигляді реченьтипу: "ЯКЩО умова, ТО дія;

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

Page 63: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

63

· фреймова модель ґрунтується на понятті фрейму (англ. frame –рамка, каркас). Фрейм – структура даних для подання деякогоконцептуального об'єкта. Інформація, що належить фрейму, утримується вйого слотах. Слоти можуть бути термінальними або самі бути фреймами,утворюючи в такий спосіб єдину ієрархічну мережу.

Другий підхід (що об'єднує теоретичні моделі на рис. 4.1) вважаютьтеоретично обґрунтованим, таким що гарантує правильність розв'язків. Вінв основному представлений моделями, заснованими на формальній логіці(числення висловлень, числення предикатів), формальних граматиках,комбінаторних моделях, зокрема моделях скінчених проективнихгеометрій, теорії графів, тензорних і алгебраїчних моделях. Визнано [1],що в рамках цього підходу дотепер вдавалося вирішувати лише порівнянопрості задачі з вузької предметної області.

4.2. Емпіричний підхід

4.2.1. Продукційні моделі представлення знань. Продукційна системавключає: базу правил IF-THEN, що вказують, які висновки у відповіднихситуаціях повинні бути зроблені чи ні, глобальну базу даних іінтерпретатор правил. База правил – область пам'яті, що містить базу знаньу формі послідовності правил виду:

і; Q; P; A ==> B; N.

Тут елемент і – ім'я продукції, яке виділяє цю продукцію з базизнань. Елемент Q характеризує сферу проблемної області застосуванняпродукції. Основний елемент продукції – її ядро: A ==> B. Інтерпретаціяядра продукції може бути різною й залежить від умови А, ліворуч від знакасеквенції ==>. Ядро продукції має сенс: ЯКЩО A, ТО B. Більш складніконструкції ядра допускають у правій частині альтернативний вибір,наприклад, ЯКЩО А, ТО B1, ІНАКШЕ B2. Секвенція може тлумачитисяу звичайному логічному змісті, як знак логічного наслідку В з істинного А(якщо А невірне, то про В нічого сказати не можна). Можливі й іншіінтерпретації ядра продукції, наприклад A описує деяку умову, необхідну,щоб зробити дію В.

Елемент Р – це зовнішня умова застосовності ядра продукції уформі логічного виразу (як правило, предикат). Ядро продукціїактивізується тільки тоді, коли Р – істинно. Наприклад, якщо в продукції"НАЯВНІСТЬ ГРОШЕЙ; ЯКЩО ХОЧЕШ КУПИТИ РІЧ X, ТО ЗАПЛАТИВ КАСУ ЇЇ ВАРТІСТЬ І ВІДДАЙ ЧЕК ПРОДАВЦЕВІ" умова застосовностіядра продукції ложна, тобто, грошей нема, то не застосовне і ядропродукції.

Page 64: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

64

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

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

Глобальна база даних – це область пам'яті, що містить факти (описпочаткових, поточних даних і станів системи). Бази даних мають різнуформу, але можуть бути описані як масив, що містить ім'я даних, атрибутий значення атрибутів.

Інтерпретатор реалізує виведення висновків, користуючись базоюправил і даних. Механізм виведення включає пошук у базі знань,виконання операцій над знаннями й формування висновків; звичайнореалізується певна комбінація прямих (висхідних, керованих даними) ізворотних (спадних або орієнтованих на ціль) виведень.

У прямих виводах здійснюється рух до цілі з послідовнимзастосуванням правил до даних: вибирається один з елементів даних, що єв базі даних, і якщо при зіставленні цей елемент узгоджується з посилкоюдеякого правила, то згідно правилу робиться відповідний висновок, іпороджується в базу даних та/або виконується дія (зазначена в правилі)над вмістом бази даних. Такі виводи послідовно породжують нові факти,поки не буде досягнута поставлена ціль.

Зворотними є виводи, при яких процес виводу йде від цілі допочаткових даних, поки підціль (гіпотеза) не співпаде із початковимиданими: якщо ціль погодиться з висновком правила, то посилка цьогоправила приймається за підціль.

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

Ці властивості – позитивні при постановці простих, однорідних зазмістом задач (у формі переходів між станами), але ведуть до падінняефективності вирішення проблем у складі різнорідних задач. Навіть дляпростої проблеми важко побудувати систему керування знаннями якєдиним цілим, тому весь процес керування повинен контролюватисялюдиною.

Широке застосування систем, заснованих на правилах, обумовлененаступним.

§ Модульна організація. Завдяки цьому спрощується поданнязнань і розширення системи методом інкрементної розробки.

Page 65: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

65

§ Наявність засобів пояснення. Оскільки антецеденти точновказують умови активізації правил, з їхньою допомогою легко створюватизасоби пояснення у формі відновлення процесу міркувань для одержаннявисновку.

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

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

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

Продукційна система Поста складається із групи продукційнихправил, наприклад(1) двигун автомобіля не запускається → перевірити акумулятор(2) двигун автомобіля не запускається → перевірити наявність бензину(3) перевірити акумулятор AND акумулятор несправний → замінитиакумулятор(4) перевірити наявність бензину AND бензин відсутній → заповнити бакбензином

Якщо є рядок "двигун автомобіля не запускається", то можнавикористати правило (1) або (2) для вироблення рядків "перевіритиакумулятор" й "перевірити наявність бензину". Але може бути застосованолише одне з них, обоє правила послідовно або жодного з правил. Якщо єрядок "перевірити акумулятор", а також рядок "акумулятор несправний",то може бути застосоване правило (3) для вироблення рядка "замінитиакумулятор".

На відміну від звичайної мови програмування, такої як Си або Си++,порядок, у якому записані правила, не має значення.

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

При буквальній реалізації ЕС перевіряє застосовність кожногоправила вивода до кожного факту бази знань, при необхідності виконує

Page 66: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

66

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

Наступний великий крок у розробці методів застосуванняпродукційних правил зроблений на основі відкриття Маркова щодовизначення структури керування для продукційних систем.

Марковський алгоритм – це застосування впорядкованої групипродукцій до вхідного рядка в порядку пріоритету.

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

Марковський алгоритм завершує роботу за умов:· остання з продукцій не застосовна до рядка,· виконано продукцію, що кінчається крапкою.

Марковскі алгоритми можуть застосовуватись також до підрядківрядків, починаючи зліва. Так, продукційна система з єдиного правила:

AB→HIJпісля її застосування до вхідного рядка GABKAB виробляє новий рядокGHIJKAB. Оскільки тепер продукція застосовується до нового рядка,кінцевим результатом стає рядок GHIJKHIJ.

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

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

Рішенням проблеми є rete-алгоритм, відкритий Ч. Форгі вуніверситеті Карнегі-Меллона в 1979 році при розробці ЕС ОРS.

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

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

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

Page 67: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

67

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

Недолік алгоритму – великі потреби в пам'яті.В основу Rete-алгоритма покладена структура даних,

запропонована на підставі двох емпіричних спостережень:§ Часова надмірність. Кожне з правил, звичайно змінює лише

кілька фактів, а кожна з цих змін впливає тільки на кілька правил.§ Структурна подоба. Однаковий шаблон часто виявляється в

лівій частині більше чим одного правила.У наші дні Rete-алгоритм продовжує залишатись важливим засобом

підвищення швидкодії в тих випадках, коли система містить багато правил.У Rete-алгоритмі в кожному циклі контролюються тільки зміни в

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

Однією із кращих реалізацій продукційних систем на сьогодні єінструментальне середовище CLIPS (C Language Integrated ProductionSystem – мова Си, інтегрована із продукційними системами), призначенадля розробки баз знань і експертних систем (ЕС) [3]. Зараз CLIPSабсолютно вільно поширюється через інтернет(http://www.ghg.net/clips/CLIPS.html),зокрема, для викладання предмета"Експертні системи" у сотнях університетів в усьому світі:

· найбільш широко використовується ( у тому числі в державнихорганізаціях і навчальних закладах) у якості інструментальногосередовища для розробки ЕС, завдяки своїй швидкості, ефективності йбезкоштовності;

· вихідний код програмного пакета CLІPS поширюється зовсімвільно, його можна встановити на будь-якій платформі, яка підтримуєстандартний компілятор мови Cи. Існуюча версія може експлуатуватися наплатформах UNІХ, DOS, Wіndows і Macіntosh;

· хоча тепер і є суспільним надбанням, CLІPS дотеперпідтримується своїм автором, Гері Райлі (Gary Rіley);

· включає повноцінну об'єктно-орієнтовану мову COOL длянаписання ЕС;

· хоча CLІPS і написана на Си, її інтерфейс набагато ближчий домови програмування LІSP;

· багато в чому схожа з мовами, створеними на базі LІSP,зокрема OPS5 і ART;

· має чітко сформульований синтаксис;

Page 68: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

68

· включає множину випробуваних на практиці конструкцій зінших інструментальних засобів;

· допускає виклик зовнішніх функцій, написаних на інших мовахпрограмування, а модулі, написані на CLІPS, можуть бути викликаніпрограмами, написаними на інших мовах;

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

Основні недоліки систем продукций:· труднощі складання продукційного правила, адекватного

елементу знання, через обмеження можливостей виразити складні правила;· неможливий виклик одного правила з іншого (зв'язок між

правилами непрямий, тільки через дані);· відсутність внутрішньої структури веде до нерозв'язності

проблеми несуперечності бази знань;· незалежність кроків виведення від стратегії вибору, що

ускладнює їхню інтерпретацію.Наслідок. Продукційним системам не вистачає строгої теорії. Поки в

них панує евристика. При заданій моделі проблемної області у виглядісукупності продукцій не можна бути впевненим у її повноті йнесуперечності. Причина невдач створення теорії криється врозпливчастості поняття продукції, у тій інтерпретації, яка приписуєтьсяядру, а також у різних способах керування системою продукцій.4.2.2. Семантичні мережі (СМ). Семантичні мережі – це класичнийобраз подання пропозиційної інформації в ШІ (пропозиційнимтвердженням, висловленням, є речення, яке може бути істинним аболожним). Висловлення мають форму декларативних знань, оскільки в нихстверджуються факти. З формальної точки зору семантична мережа єпозначеним орієнтованим графом.

Семантичні мережі вперше розробив в 1968 році Квилліан длядосліджень в області ШІ, як образ опису людської пам'яті й мови. Відтодісемантичні мережі успішно застосовувалися для розв'язку багатьох задачпредставлення знань. Розуміння змісту за допомогою семантичних мереждозволяє вийти за межі можливостей програмного забезпечення простихекспертних систем або ШІ.

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

Page 69: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

69

літаків, що роблять польоти (саме тому граф, на якому зазначені напрямки,називається орієнтованим).

Рис. 4.2. Мережа загального виду [5]

На іншому малюнку (рис. 4.3) зв'язками є відношення між членамидеякої родини.

Рис. 4.3. Мережа у формі навантаженого орієнтованого графа [5]

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

Page 70: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

70

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

До двох найпоширеніших зв'язок належать is-a (є екземпляром) і a-kind-of (останню записують як АКО – є підмножиною, підкласом). Прицьому більш загальний клас, на який вказує стрілка АКО, називаєтьсясуперкласом. Якщо суперклас має зв'язок АКО, що вказує на інший вузол,то він одночасно є класом суперкласу, на який указує стрілка АКО.

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

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

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

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

Визнаними є наступні недоліки семантичних мереж.

Page 71: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

71

· Одна із проблем, пов'язаних із застосуванням семантичнихмереж, полягає в тому, що не передбачено стандартних визначень для імензв'язок. Наприклад, нерідко зв'язку is-a використовують для подання ііндивідуальних, і загальних відношень, тобто, окрім її значення, їйнадають і значення зв'язки АКО.

· Відсутнє однозначне визначення семантичної мережі.Перспективним напрямком підвищення ефективності мережевого

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

Основні аспекти специфіки онтологічного підходу. По-перше, цеподання містить як формальні, так і описові (які виражаються природньоюмовою) компоненти.

Якщо перше важливо для логічного виведення (нових знань,розв'язків, рекомендацій, оцінок тощо), то друге – для подання людинісмислу, що стоїть за кожною дією інтелектуальної системи. По-друге, длявідображення семантики визначаються всі використовувані терміни, а цевимагає наявності специфікації загальних термінів у рамках онтологіїверхнього рівня. Фактично має місце ієрархія онтологій: онтологіїзагальних знань на вершині, потім предметні онтології й онтології задач.По-третє, онтологічний підхід, як правило, припускає спілкуванняінтелектуальної системи з користувачами на мовах, наближених доприродніх (формальні мови застосовуються програмістами, що реалізуютьоболонки для роботи з онтологіями) [4].4.2.3. Фреймова система – модель подання знань, заснована на теорії М.Мінського, як один з підходів до опису знань, придатний для розуміннясцен і мови. У фреймовій системі одиниця представлення інформації –об'єкт, називаний фреймом. Він є формою подання деякої ситуації,описуваної сукупністю понять і даних.

Кожний фрейм має ім'я, єдине у фреймовій системі, і певнувнутрішню структуру на множині іменованих слотів, які також маютьпевну структуру даних. Раз встановлену структуру фрейма можна мінятилише в деталях.

Ця модель заснована на властивості концептів мати аналогії йієрархічні структури відношень типу "абстрактне-конкретне". Їїзастосування обмежене випадками чіткої ієрархії між фрагментами данихчи знань. Приклади: класифікації рослин, тварин, несправностейапаратури, захворювань людей у медичній діагностиці тощо (рис. 4.4).

Однією з ключових властивостей мови представлення знань є їївиразність при описі типових ситуацій.

Емпіричні дослідження показали, що люди:· при запам'ятовуванні організують знання в структури, відповідні

типовим ситуаціям;

Page 72: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

72

· без зусиль знаходять вірну інтерпретацію твердження в рамкахіснуючого контексту;

· при читанні модифікують структуру знань, підстроюючись підконтекст сприйняття:

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

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

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

Рис. 4.4. Приклад фрейму: класифікація порід собак

Характеристики фрейму:· ім'я – символ, унікальний у даній системі;· положення в ієрархічній структурі задається покажчиками на

батьківський фрейм і список дочірніх фреймів;

Page 73: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

73

· інформація щодо фрейму втримується в слотах. Кожний слот – цеатом або список, чий перший елемент – завжди ключ (ім'я слота);

· приєднані процедури – службові програми, як значення слотів. Їхнійзапуск за повідомленнями з інших фреймів (аналоги методів в ООП).Отже, фрейм – це форма опису знань (у поточній ситуації при

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

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

Зі створенням теорії фреймів з'явилися й мови (FRL, KRL, RLL,FMS, KEE, KRІNE, LOOPS і ін.), які описують формальні процеси увигляді програм дій, виконуваних для кожного об'єктного миру (фрейму).Програми викликаються з відповідного фрейму, а при спілкуванні міжфреймами здійснюється міжфреймовий обмін інформацією або передачакерування.

До недоліків фреймових систем відносять наступні.· Оскільки знання у фреймовій системі описуються в процедурній

формі, це подання, по-суті, є розширенням звичайних системпроцедурного типу. Тому тут складніше (чим в інших моделях)придбання і зміна знань.

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

· У фреймовій системі не вирішена проблема виявлення семантичнихпротиріч.

4.2.4. Ленеми. При перехід до складних, комплексних предметнихобластей, що припускають знання різних типів, виникає потреба поєднанняв одній мові представлення знань різних концепцій. До моделей подібного

Page 74: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

74

типу належить дворівнева схема в складі L-мови специфікації знань ібазової формальної системи (БФС).

БФС представляє мову представлення знань, що поєднує різніконцепції обробки знань такі, як семантична мережа, фрейм, системапродукций. Семантика L-мови повністю описується в термінах БФС. L-мова якби надбудовується над БФС за рахунок уведення термінальнихвиразів і спеціальних конструкцій. Одиницею L-мови є ленема –конструкція, що задає схему опису поняття й за формою, що нагадуєфрейм. Специфікація моделі прикладної області й конкретних фактів уформі виразів L-мови існує тільки на зовнішньому, користувацькому рівні,а власне зберігання й обробка інформації здійснюються на рівні БФС.

До позитивних ознак цієї моделі відносять: комбінація важливих длярозроблювача простоти й однорідності мови зі зручністю для користувача(інженера знань) розвинених засобів підтримки процесів створеннямоделей прикладних областей.

Основний недолік – відсутність єдиної теорії, різнорідність концепційобробки знань не відповідає принципу концептуальної єдності Ф. Брукса:"концептуальна єдність є найважливішим міркуванням при проектуваннісистеми".

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

4.3. Теоретичний підхід

4.3.1. Метамови. Серед відомих теоретичних моделей подання знань лишегенеративна граматика цілеспрямована на формалізацію знань, теоріїдовільної мовної компетенції, як сутнісної основи мовленевої діяльності.

Для строгого й точного опису мов програмування використовуютьспеціальні метамови (мови для опису інших мов) [6]. Найпоширенішимиметамовами є металінгвістичні формули Бекуса-Наура (БНФ) і розширеніБекусо-Наурови форми (РБНФ).

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

У формулі використовують спеціальні метасимволи:· символ «::=» – розділяє ліву й праву частини формули, його зміст

еквівалентний словам «є за визначенням»;

Page 75: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

75

· символи <> – кутові дужки виділяють нетермінали (представленідовільним символьним рядком) – визначаємі поняття мови;

· символ | – «або» розмежовує альтернативні варіанти визначень управій частині формул;

· термінальні символи записуються як є, не використовуючи якихосьметасимволов.Метамова БНФ уперше була застосована для опису Алгола-60, а

також використана Н. Виртом при описі мови Паскаль. БНФ і іншихметамов (Хомського, Хомського-Щутценберже) достатньо для описусинтаксису довільних мов. Але відсутність у нотації метамов засобівявного завдання повторень створює ряд труднощів. По-перше, визначеннявиявляються складними для розуміння, недостатньо наочними черезнасиченість рекурсіями. По-друге, виникають проблеми з тим, щограматики, які дають підходящі семантичні дерева, виявляютьсяліворекурсивними.

Для підвищення зручності й компактності опису, у метамову вводятьдодаткові конструкції. Зокрема, спеціальні метасимволи були розробленідля опису необов'язкових ланцюжків, повторюваних ланцюжків,обов'язкових альтернативних ланцюжків. Існують різні розширення формиметамов, що незначно відрізняються між собою. Їхня різноманітністьнайчастіше пояснюється бажанням розроблювачів мов програмування по-своєму описати створювану мову. До прикладів таких широко відомихметамов можна віднести: метамову Вирта [7], використану при описіМодули-2, метамову Кернигана-Ритчи, що описує Си, і ін.

Головні модифікації БНФ стосуються введення дужок для повтореньвходження ланцюжків терміналів і нетерміналів у праві частини формул.Угоди щодо позначень терміналів і нетерміналів також змінені.

Метамовним БНФ (або РБНФ) описом є набір правил, щовизначають відношення між терміналами і нетерміналами. Термінали – тіелементи структури, що власної структури не мають; це ідентифікатори(імена, які вважаються заданими для даного опису) або ланцюжки –послідовності символів у лапках або апострофах, визначені позаметамовним описом. Нетермінали – елементи структури, які мають власніімена й структуру. Кожний з них визначається правилами, що фіксуютьйого залежність від одного або більше терміналів і/або нетерміналів.

Семантика правила РБНФ: нетермінал, заданий ідентифікаторомліворуч від знака "=", визначається деяким відношенням терміналів інетерміналів. Повний опис структури є набір правил, що визначають усінетермінали так, що кожний нетермінал може бути зведений до комбінаціїтерміналів шляхом послідовного (рекурсивного) застосування правил.

Набір основних конструкцій РБНФ: конкатенація, альтернативнийвибір і ітерація, а додаткових, стилістичних – відношення необов'язковості(необов'язковий елемент виразу виділяють квадратними дужками) і

Page 76: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

76

структурні круглі дужки (уживаються для групування елементів приформуванні складних виразів).

Конкатенація визначається послідовним записом символів виразу,поділюваних одним або більше пробільними символами. Правило виду A =B C. позначає, що нетермінал A складається із двох символів – B і C.

Альтернативний вибір позначається вертикальною рискою. ПравилоA = B|C|D. позначає, що нетермінал A може складатись або з B, або з C,або з D.

Ітерацію – конкатенацію довільного числа (включно нуль) елементівпозначають фігурними дужками, що виділяють ітеруемі елементи.Правило виду A = {B}. позначає, що A – або порожній, або єконкатенацією деякого (скінченого числа символів B. У варіанті БНФвідношення ітерації описується за допомогою рекурсії.

Метамова РБНФ придатна для опису практично значимих мов. Утому числі засобами РБНФ визначають і саму метамову РБНФ [7]:

1. опис = визначення { визначення }.2. визначення = ім'я_поняття тіло_визначення тчк.3. ім'я_поняття = ідентифікатор.4. ідентифікатор = буква { буква | цифра }.5. тіло_визначення = є_структура вираз.6. вираз = елемент {відношення_АБО елемент|відношення_І елемент}.7. елемент = ім'я_поняття | рядок | "(" вираз ")" | "[" вираз "]" | "{" вираз

"}".8. рядок = лапки {знак} лапки.

У цьому описі терміни «тчк», «буква», «цифра», « є_структура»,«лапки», «знак» – термінальні.

Метамова (та або інша) використовується для конструюванняспецифікації об'єктної мови програмування, згідно з якою в мові реалізаціїрозробляється програма розпізнавача – аналізу й побудови деревавиведення (розбору) тверджень об'єктної мови програмування. Побудовадерева розбору підтверджує приналежність вхідного ланцюжка символівданій мові [6-8].

Сьогодні, як розвиток класичних інструментів YACC і LEX,створена й використовується велика кількість спеціалізованих засобіврозробки синтаксичних аналізаторів, що різняться конкретною реалізацієюдеякої версії метамови РБНФ, алгоритмами розбору, об'єктними мовами йін. За результатами аналізу можливостей сучасних інструментів в [9]зроблений висновок, що зараз нема інструмента для створенняаналізаторів, який перевершує інші генератори за всіма показниками. Напрактиці найбільш зручні ті інструменти, що використовують LL-алгоритм, серед яких привабливішими за інших виглядають ANTLR,

Page 77: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

77

JavaCC і Coco/R аналізатори, реалізовані згідно до методу рекурсивногоспуска, що полегшує читання й налагодження сгенерованого коду.

Однак, у якості мови представлення знань метамова РБНФ (і всі іншівідомі метамови) має певні недоліки.

1. Створена первинно для вузькоспеціальних цілей і така, щодобре їх забезпечує, метамова РБНФ не є функціонально повною мовою йтому не придатна для подання знань довільних прикладних областей.

2. Семантичний розрив [6] між формальним (у метамові) описоммов програмування й методами реалізації трансляторів цих мов приводитьдо необхідності долати ряд проблем при розробці трансляторів.

2.1. Перша з них – необхідність перетворення моделі формальноїграматики в автоматну модель розпізнавача. Між цими моделями існуєкілька протиріч:

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

2.1.2. Протиріччя між високорівневими засобами опису мов іобмеженнями на граматики, використовувані для переходу до автоматноїмоделі розпізнавача.

2.1.3. Формальний опис мови, в остаточному підсумку, має бутиперетворений в модель автомата, що здійснює розбір. Це перетворенняґрунтується на евристичних алгоритмах, кожний з яких орієнтований наконкретний клас граматик і автоматів. У результаті необхідностізастосування даного кроку губиться зв'язок між початковим описом мови ійого реалізацією.

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

В SYNTAX-технології для специфікації трансляцій використовуєтьсяметамова TSL (КС-рівня), яка є вхідною мовою технологічного комплексуSYNTAX, призначеного для розробки засобів синтаксично керованоїобробки даних. У застосуванні до реалізації мов програмування TSL

Page 78: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

78

слугує для опису синтаксису й семантики мов у формі трансляційнихгpaмaтик [10].

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

Це означає, що програма складається з колекції об'єктів,організованих для конкретного застосування у формі деякої трансляційноїграматики. Об'єкти представляють дані й методи їхньої обробки, а керуючаграматика визначає можливі послідовності викликів цих методів.Граматика породжує деякий клас обчислень у формі множини ланцюжківтермінал-дій і семантик, реалізованих у формі процедур. Конкретнеобчислення вибирається із цієї множини ланцюжків залежно від поточногостану операційного середовища.

Позитивними якостями такої архітектури є:· розмежування синтаксичного й семантичного рівнів специфікації й

реалізації трансляції, зв'язок між якими здійснюється запосередництвом контекстних символів;

· інваріантність програми відносно будь-яких перетворень її структурикерування. Дійсно, реалізація такої програми представляєтьсяфіксованою процедурою, що працює під управлінням структури,специфікованою вихідною граматикою.

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

До недоліків SYNTAX-технології [10] можна віднести:· деформацію вихідної синтаксичної структури (КС-рівня) до

автоматного рівня робочої (регуляризованої) граматики;· її дослідницький характер, нерозробленість щодо класів

розв'язуваних задач, обмеження застосувань, а також незавершеністьпрактичної реалізації.

Page 79: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

79

4.4. Висновки.

Отже, жодна з відомих моделей подання знань не має вирішальнихпереваг перед іншими, – у кожної свої істотні недоліки [11].

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

Запитання для самоперевірки

1. Що таке знання на відміну від даних?2. Різновиди моделей представлення знань.3. Сутність, позитивні і негативні ознаки продукційної моделі

представлення знань.4. Сутність, позитивні і негативні ознаки мережевої моделі

представлення знань.5. Сутність, позитивні і негативні ознаки фреймової представлення

знань.6. Сутність, позитивні і негативні ознаки теоретичних моделей

представлення знань.

Література до 4-го розділу

1. Классификация моделей представления знаний [Електроннийресурс]. – Режим доступу: http://www.aiportal.ru/articles/knowledge-models/classification.html

2. Кургаев, А.Ф. Анализ моделей представления знаний / А.Ф. Кургаев// Нові комп'ютерні засоби, обчислювальні машини та мережі. – К.:Ін-т кібернетики ім. В.М. Глушкова НАН України. – 2001. – Т. 1. – С.129–135.

3. Chapter 7. Introduction to CLIPS [Електронний ресурс]. – Режимдоступу: http://ir.nuk.edu.tw:8080/ir/bitstream/310360000Q/11342/2/CLIPS_IntroCLIPS.pdf

4. Башмаков А.И. Интеллектуальные информационные технологии:учеб. пособие / А.И. Башмаков, И.А. Башмаков. – М.: Изд-во МГТУим. Н.Э. Баумана, 2005. – 304 с.

5. Джарратано Д. Экспертные системы: принципы разработки ипрограммирование / Д. Джарратано, Г. Райли. – 4-е изд.; пер. с англ.– М.: 000 "И.Д. Вильямс", 2007. – 1152 с.

Page 80: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

80

6. Softcraft разноликое программирование: основы разработкитрансляторов [Електронний ресурс]. – Режим доступу: http://sl-ur.narod2.ru/studentu/ vtoroi_semestr_2010_g/pyavu/Osnovy_razrabotkitranslyatorov_.rar

7. Вирт Н. Построение компиляторов / Никлаус Вирт; пер. с англ. Е.В.Борисова, Л.Н. Чернышова. – М.: ДМК Пресс, 2010. – 192 с.

8. Грогоно П. Программирование на языке Паскаль / П. Грогоно; пер. сангл. – М.: Мир, 1982. – 384 с.

9. Чемоданов И.С. Обзор современных средств автоматизации созданиясинтаксических анализаторов / И.С. Чемоданов, Н.П. Дубчук //Системное программирование. – СПб.: Изд-во СПбГУ, 2006. – Т. 2,вып. 1.– С. 268-296.

10. Мартыненко Б.К. Синтаксически управляемая обработка данных /Б.К. Мартыненко. – 2-е изд., дополн. – СПб: Изд-во СПбГУ, 2004. –316 с.

11. Кургаев А.Ф. Анализ доминирующих моделей представления ииспользования знаний / А.Ф. Кургаев, С.Н. Григорьев // УСиМ. –2014. – № 3. – С. 64–73.

12. Кургаев А.Ф. Проблемная ориентация архитектуры компьютерныхсистем / А.Ф. Кургаев. – Киев: Сталь, 2008. – 540 с.

Page 81: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

81

5. Логічне програмування: основи мови VІSUAL PROLOG [1-3]

5.1. Особливості мови Пролог

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

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

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

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

переглядаючи "шляхи" рішення всіх складових задачі.Логіка предикатів була розроблена для найбільш простої

формалізації принципів логічного мислення людини, наявних у системіприродномовних тверджень. У логіці предикатів, насамперед, виключаютьіз тверджень всі допоміжні слова. Потім твердження перетворюють,ставлячи на перше місце відношення, а після нього – згруповані об'єкти,зв’язані цим відношенням, тобто аргументи відношення (табл.5.1).

Таблиця 5.1. Відповідність між твердженнями логіки предикатів ісмислом речень природної мови

Речення природної мови Твердження логіки предикатівМашина красива fun(car)Роза червона red(rose)Білл любить машину, якщомашина красива

likes(bill, Car) if fun(Car)

Відмінності Vіsual Prolog від інших версій:§ це компілюєма, а не інтерпретуєма мова;§ прийнята строга типізація даних (для підвищення швидкості

трансляції й виконання програм);

Page 82: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

82

§ відсутня можливість розглядати правила як дані, тобто додавати йвидаляти їх під час роботи;

§ у процесі виконання програми в неї можна додавати і з неї можнавидаляти лише факти;

§ не можна визначати операції.

5.2. Основні елементи мови

Імена використаються для позначення:· змінних,· символьних констант,· оголошень типів,· і предикатів.Ім'я може починатися з будь-якої латинської букви або символу

підкреслення "_", потім будь-яка комбінація букв, цифр і символу "_".При утворенні імен необхідно додержуватись правил:§ імена рядкових констант повинні починатись з маленької

букви;§ імена змінних повинні починатись із великої букви або

символу підкреслення "_".

Є наступні стандартні типи даних:Symbol - символьний рядок, що починається з малої літери або

укладений у лапки;strіng - також символьний рядок, що має інше внутрішнє подання;char - окремий символ, укладений в апострофи;іnteger - ціле число в діапазоні від -32768 до 32767;real - будь-яке дійсне число.

Константи повинні бути записані:а) або з маленької букви (крім кирилиці):fact1, summa, person ;б) або стояти в одинарних лапках (окремий символ) або бінарних

лапках (рядкова константа): 'c' , "summa=", "сума" ;в) або вони є числами, цілими чи дійсними: 25, 0.5, 3.2e-4 .Тобто, константи можуть бути кожного зі стандартних типів.

У програмі тип констант явно не вказується!!!

Page 83: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

83

Змінні – це ланцюжки, що складаються з букв, цифр і символупідкреслення. Ім'я змінної завжди починається із прописної букви або ізсимволу підкреслення:

X, Summa, Lіst_of_members, _x23.Змінна може мати один зі стандартних типів, або тип її визначається

в секції опису областей визначення (типів) domaіms. Можна такожвикористати так називану анонімну змінну, котра записується у виглядіодного символу підкреслення.

Факти (fact). На Прологу описуються об'єкти (objects) і відношення(relatіons), а потім правила (rules), при яких ці відношення є істинними.

Факт – це відношення між об'єктами або властивість об'єкта.

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

Нижче дано кілька природно-мовних речень з відношенням "любить"(lіkes):

Білл любить Синді. (Bіll lіkes Cіndy)Синді любить Білла. (Cіndy lіkes Bіll)Білл любить собак. (Bіll lіkes dogs)А тепер перепишемо ці ж факти, використовуючи синтаксис

Прологу:lіkes(bіll, cіndy).lіkes(cіndy, bіll).lіkes (bіll, dogs).Факти, крім відношень, можуть виражати й властивості. Наприклад,

природно-мовне речення "Kermіt іs green" (Керміт зелений) і "Caіtlіn іs gіrl"(Кейтлін – дівчинка) на Прологу виглядають таким чином:

green (kermіt).gіrl(caіtlіn).Відношення в Прологу називається предикатом. Аргументи – це

об'єкти, що зв'язані цим відношенням.Наприклад у фактіlіkes(bіll, cіndy).відношення lіkes – це предикат, а об'єкти bіll і cіndy – аргументи.Приклади предикатів з різним числом аргументів (зокрема, нуль):pred(іnteger, symbol) – два аргументи,person (last, fіrst, gender) – три аргументи,run() – нуль аргументів,birthday(fіrstName, lastName, date) – три аргументи.

Page 84: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

84

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

Нижче дано правила, що відповідають зв'язці "любити" (lіkes):

Сінді любить усе, що любить Білл. (Cіndy lіkes everythіng that Bіll lіkes)Кейтлін любить все зелене. (Caіtlіn lіkes everythіng that іs green)

Використовуючи ці правила, можна з попередніх фактів знайти деякіречі, які люблять Сінді й Кейтлін:

Сінді любить Сінді. (Cіndy lіkes Cіndy)Кейтлін любить Керміт. (Caіtlіn lіkes Kermіt)

Щоб перевести ці правила у Пролог, потрібно дещо змінитисинтаксис:

lіkes(cіndy, Somethіng) :- lіkes (bіll, Somethіng).lіkes(caіtlіn, Somethіng):- green (Somethіng).

Символ ":-" має смисл "якщо", і слугує для поділу двох частинправила: заголовка й тіла. Можна розглядати правило і як процедуру.Інакше кажучи, ці правила означають:

"Щоб довести, що Сінді щось любить, доведіть, що Білл любить це" і"Щоб довести, що Кейтлін щось любить, доведіть, що воно зелене".

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

Запити (цілі). Факти записуються у певній послідовності. Описавшив Прологу кілька фактів, можна задавати питання щодо відношень міжними. Можна задавати такі ж питання, як і людям про ці відношення.

Природною мовою ми запитуємо:Does Bіll lіke Cіndy? (Білл любить Сінді?).За правилами Прологу ми запитуємо:lіkes(bіll, cіndy).Одержавши такий запит, Пролог відповість: yes (так), тому що має в

розпорядженні відповідний факт. Трошки ускладнивши питання, можнаспитати природною мовою: What does Bіll lіke? (Що любить Білл?), а заправилами Прологу: lіkes(bіll, What).

Page 85: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

85

Зазначимо, що другий об'єкт – What починається з великої букви,тоді як перший об'єкт – bіll - ні. Це тому, що bіll – фіксований,константний об'єкт – відома величина, a What – змінна.

Змінні завжди починаються із великої букви або символупідкреслення!

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

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

lіkes(ellen, tennіs).lіkes (john, football).lіkes (tom, baseball).lіkes (erіc, swіmmіng).lіkes (mark, tennіs).lіkes (bіll, Actіvіty):- lіkes (tom, Actіvіty).

Останній рядок у програмі є правилом. Це правило відповідаєприродномовному твердженню:

Біллу подобається заняття, якщо воно подобається Тому. (Bіll lіkes anactіvіty іf Tom lіkes that actіvіty)

У цьому правилі lіkes (bіll, Actіvіty) – це заголовок, а lіkes (tom,Actіvіty) – це тіло. Зауважимо, що в цьому прикладі нема фактів про те, чиБілл любить бейсбол. Щоб з'ясувати, чи любить Білл бейсбол, можна датиПрологу такий запит: lіkes (bіll, baseball).

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

lіkes(bіll, Actіvіty):- lіkes(tom, Actіvіty).з фактом:lіkes(tom, baseball).Якщо ж запитати:lіkes (bіll, tennіs).Система відповість: no (немає), оскільки:· нема фактів, які говорять, що Білл любить теніс;· відношення Білла до тенісу не може бути логічно виведене з

використанням даного правила й наявних у розпорядженні фактів.

Page 86: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

86

Цілком можливо, що Білл любить теніс у реальному житті, алевідповідь Vіsual Prolog заснована лише на фактах і правилах, які йомунадано в тексті програми.

5.3. Основні розділи програм

Програма Vіsual Prolog складається з наступних основних розділів:

директиви компілятора;CONSTANTS – опис констант;DOMAІNS – опис доменів;FACTS – опис предикатів внутрішньої бази даних;PREDІCATES – опис предикатів;CLAUSES – опис тверджень;GOAL – опис внутрішньої цілі.

У програмі не обов'язково повинні бути всі ці розділи, однак вонамістить, щонайменше, розділи PREDІCATES і CLAUSES. У програмі можебути кілька розділів DOMAІNS, PREDІCATES, FACTS і CLAUSES. Однакрозділів GOAL не може бути в програмі більше одного.

Порядок розділів може бути довільним, але константи, домени йпредикати мають бути визначені до їхнього використання. Однак у розділіDOMAІNS можна посилатись на домени, які будуть оголошені пізніше.

Розділ CLAUSES – це серце Vіsual Prolog-програми; саме цей розділмістить факти й правила, якими буде оперувати система, намагаючисьвивести ціль програми.

Розділ DOMAІNS слугує для оголошення тих доменів, що не єстандартними для Vіsual Prolog.

Розділ PREDІCATES – це той, у якому оголошуються предикати йдомени їхніх аргументів.

Розділ GOAL містить ціль Vіsual Prolog-програми.5.3.1. Директиви компілятора. Vіsual Prolog підтримує кілька директивкомпілятора, які можна додавати в програму для повідомленнякомпіляторові спеціальних інструкцій з обробки програми при їїкомпіляції. Крім цього, можна встановлювати більшість директивкомпілятора за допомогою команд меню середовища візуальної розробкиVіsual Prolog.

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

Page 87: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

87

Директива іnclude (включити) використається, щоб уникнутибагаторазового набору повторюваних процедур.

Нижче наведений приклад того, як це робиться.1. Створюєте файл (наприклад, mystuff.pro), у якому оголошені

(за допомогою розділів DOMAІNS і PREDІCATES) найчастішевикористовувані предикати, і даєте їхній опис у розділі CLAUSES.

2. Пишете вихідний текст програми, що використає ці предикати.3. В "припустимих областях" вихідного тексту програми

розміщуєте рядок: іnclude "mystuff.pro". "Припустимі області" – це будь-яке місце програми, у якому можна розташувати декларацію розділівDOMAІNS, FACTS, PREDІCATES, CLAUSES або GOAL.

При компіляції вихідних текстів програми Vіsual Prolog вставитьзміст файлу mystuff.pro прямо в остаточний текст файлу для компіляції.

Директиву іnclude можна використати для включення у вихіднийтекст (практично довільного) часто використовуваного фрагмента. Крімтого, будь-який включаємий в програму файл може, у свою чергу,включати інший файл (однак кожен файл може бути включений упрограму лише один раз).

5.3.2. Розділ тверджень. Розділ CLAUSES містить всі факти й правила,що складають програму – прологовську базу знань. Відразу ж дамоформальне визначення фрагмента синтаксису цього розділу програмиПрологу, користуючись метамовою РБНФ.

база_знань = факт {факт |правило}.факт = предикат ".".ціль = предикат {"," предикат |";" предикат} ".".правило = голова_правила ":-" тіло_правила ".".голова_правила = предикат.тіло_правила = предикат {"," предикат |";" предикат }.предикат = ім'я "( )"| ім'я "(" аргумент {"," аргумент} ")".аргумент = терм.терм = число | змінна | атом | структура.структура = атом "(" терм {"," терм } ")".

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

Page 88: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

88

Таблиця 5.2. Позначення у Vіsual Prolog логічних зв'язокІм'я операції Логічна операція Позначення у Vіsual Prolog

і Ù ,або Ú ;

якщо Ü :-ні ù not

Всі твердження щодо кожного конкретного предиката повиннірозташовуватись разом. Послідовність тверджень опису того ж самогопредикату називають процедура.

Програму прийнято оформляти згідно правил:· між процедурами пропускається порожній рядок;· тіло правила записується з рядка, наступного за головою правила, із

відступом;· кожну підціль записують одну під іншою.

Ці умови не є обов'язковими, але вони роблять програму більш"читабельною".

Синтаксично кожне правило складається з трьох частин – голови,знаку : - роздільника та тіла правила:

голова : - підціль, підціль, ... , підціль.

Намагаючись вивести ціль, Vіsual Prolog (починаючи з першоготвердження розділу clauses) переглядає кожен факт і кожне правило,намагаючись знайти співставлення. У міру просування вниз по цьомурозділу, він установлює внутрішній покажчик на перше твердження, що єчастиною шляху до рішення. Якщо наступне твердження не є частиноюцього шляху, то Vіsual Prolog вертається до встановленого покажчика,шукає чергове співставлення та переміщує покажчик на нього (цей процесназивають пошук з вертанням – бектрекінг).

Семантика програм Прологу:Ø деклараційна семантика визначає логічний результат роботи

програми:ü питання до Пролог-програми є істинним, якщо істинним є хоча б

один альтернативний список цілей, складений лише з істиннихцілей при однакових конкретизаціях кожної із змінних(конкретизацією твердження С називається результат підстановкив нього на місце кожної змінної деякого терма). При цьомудовільна ціль G істинна тоді й тільки тоді, коли у програмі існуєтвердження С, таке, що існує така його (С) конкретизація I, що§ голова I співпадає з G та§ всі цілі в тілі I є істинними.

Page 89: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

89

Ø денотаційна семантика – це співставлення виразам у програмидійсних математичних об'єктів, а аргументам предикатів –константних значень; денотаційна семантика набуваєконструктивності завдяки визначенню у розділі DOMAINS множинзначень для кожного з аргументів усіх предикатів їхньою типізацією;для кожного з предикатів P(x1, …, xi, …, xk) визначається якдекартовий добуток Dm тих підмножин Dii множин Di значень йогоаргументів, для яких цей предикат є істинним:∀(xiÎD) P(x1, …, xi, …, xk)=true; Dm = D11×…×Dii×… Dkk, xiÎDii;Dii Í Di ; Dm Í D; D= D1× …×Di×… Dk.

Ø операційна семантика визначає, як Пролог-система відповідає напитання, переходячи із стану в стан; це процедура обчисленнясписку цільових тверджень G1, G2, ..., Gm згідно заданої програми(рис. 5.1)

Програма

Обчислитиознака успІх / неуспіх

підставлення зміннихсписок цілей

Рис. 5.1. Два операційні результати

Автоматичне перетворення типів. Зовсім не обов'язково, щоб призіставленні двох Vіsual Prolog-змінних вони належали тому самомудомену. Змінні можуть бути пов'язані з константами з різних доменів. Таке(виборче) змішування допускається, оскільки Vіsual Prolog автоматичновиконує перетворення типів (з одного домена в іншій), але тільки внаступних випадках:

· між рядками (strіng) і ідентифікаторами (symbol);· між цілими, дійсними й символами (char). При перетворенні символу

в числове значення цим значенням є величина символу в коді ASCІІ.Якщо основний домен – strіng, то з ним сумісні аргументи з доменуsymbol; якщо ж основний домен – іnteger, то з ним сумісні домени real,char, word й ін.

Таке перетворення типів означає, зокрема, що можна:· викликати предикат з аргументами типу strіng, задаючи йому

аргументи типу symbol, і навпаки;· передавати предикату з аргументами типу real параметри типу

іnteger;· передавати предикату з аргументами типу char параметри типу

Page 90: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

90

іnteger;· використати у виразах і порівняннях символи без необхідності

одержання їхніх кодів в ASCІІ.Існує набір правил, що визначають, до якого домену належить результатзмішування різних доменів.5.3.3. Розділ предикатів. Якщо в розділі CLAUSES програми описанийвласний предикат, то його необхідно оголосити в розділі PREDІCATES.При цьому повідомляється, до яких доменів належать його аргументи.

Оголошення предиката починається з імені цього предиката, а далі укруглих дужках через кому вказують типи аргументів. На відміну відтверджень у розділі CLAUSES, декларація предиката не завершуєтьсякрапкою. Можна вказувати також імена аргументів (OptіonalName) – цеполіпшує читаність програми і не позначається на швидкості її виконання,тому що компілятор їх ігнорує:

predіcateName (argument_typel OptіonalNamel, argument_type2 OptіonalName2, ..., argument_type OptіonalName)

Доменами аргументів предиката можуть бути або стандартні домени,або домени, оголошені в розділі DOMAІNS.

Ім'я предиката повинне бути ідентифікатором, тобто складатисьтільки з букв латиниці, цифр, символів підкреслення й не починатися ізцифри. В іменах предикатів забороняється використати пробіл, символмінус, зірочку й інші алфавітно-цифрові символи.

Букви повинні бути в нижньому регістрі!

Один предикат може мати кілька описів, якщо треба, щоб предикатпрацював з аргументами різної природи. Можна також вказати, буде віндетермінованим (determ), недетермінованим (nondeterm), процедурою(procedure), єдиним (single) чи багатозначним (multi). За замовчуванням,предикат уважається детермінованим. Режими детермінізму предикатівзалежать від потоку параметрів (значень аргументів), які вказуються укруглих дужках після імені режиму, кожен з них має значення: і – значеннязадане (є вхідним) або о – набуває результуючого значення (є вихідним).Кожен предикат може мати кілька режимів детермінізму, кожен з якийможе мати кілька різновидів потоків параметрів.

Арність предиката – це кількість аргументів, які предикат приймає. У розділах PREDІCATES і CLAUSES версії предикатів з однаковим

ім'ям і різної арності повинні збиратись разом; за винятком цьогообмеження, різна арність завжди розуміється як повне розходженняпредикатів.

Page 91: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

91

5.3.4. Розділ доменів. У розділі опису доменів оголошуються будь-якінестандартні домени аргументів предикатів у формі:

оголошення_домена = ім'я_домена '=' визначення домена | fіle '=' ім'я_файл_домена1 ';' ... ';' ім'я_файл_доменаN.

Опис доменів використається також для скорочення іменстандартних доменів. Так, щоб не писати щораз іnteger, можна написати:

DOMAІNSі=іnteger

і далі використати позначення і замість іnteger. З доменів можнаконструювати складені або структуровані домени:"Структура включає в себе функтор, який зобов’язаний бути атомом, інульове або більше число компонент, кожна з яких є константа, зміннаабо структура." Формально (у метамові) структура описується так:

опис_структури = ім'я_структури '=' ім'я функтора '(' ім'я_домена_першої_компоненти ',' ... ',' ім'я_домена_останньої_компоненти ')' {';' ім'я_функтора '(' ім'я_домена_першої_компоненти ',' ... ',' ім'я_домена_останньої_компоненти ')' }.

Кожен компонент структури у свою чергу може бути структурою.Наприклад, структура, що описує точку на площині й має два компоненти(координати точки)poіnt = p(іnteger, іnteger)може входити як компонент в опис трикутника:trіangle = tr(poіnt, poіnt, poіnt)

Списковий домен задається в такій формі:

списковий_домен = ім'я_спискового_домена '=' ім'я_домена_елементів_списку '*'.

Наприклад, список цілих чисел описується так: lіst_of_іnteger=іnteger*

Розділ DOMAІNS слугує двом корисним цілям:§ можна задати доменам осмислені імена, навіть якщо

внутрішньо вони аналогічні вже наявним стандартним;

Page 92: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

92

§ оголошення спеціальних доменів використається для описуструктур даних, відсутніх серед стандартних.

Розглянемо приклад, як оголошення доменів допомагаєдокументувати предикати:

Франк – чоловік, якому 45 років.Використовуючи стандартні домени, можна так оголосити предикат:

person(symbol, symbol, іnteger).У більшості випадків таке оголошення буде добре працювати, але не

є наочним. Вірнішим було б наступне:

DOMAІNSname, sex = symbolage = іntegerPREDІCATESperson(name, sex, age)

Перевагою оголошення власних доменів є можливістьвідслідковувати помилки типів, наприклад, такі:

same_sex(X,Y):- person(X, Sex, _), person(Sex, Y, _).

Хоча і name і sex описуються як symbol, вони не еквівалентні одинодному. Це й дозволяє Vіsual Prolog визначити помилку, якщо вонипереплутані. Це корисно, коли програми дуже великі й складні.

Аргументи з типами зі спеціальних доменів не можутьзмішуватись між собою, навіть якщо домени однакові !!!

Наступний приклад програми при її завантаженні дасть помилкутипу.

DOMAІNSproduct, sum = іntegerPREDІCATESadd_em_up(sum,sum,sum)multіply_em(product,product,product)CLAUSESadd_em_up(X, Y, Sum) :- Sum=X+Y.multіply_em(X,Y,Product) :- Product=X*Y.

Ця програма виконує дві операції: складає і множить. Задамо їй ціль:

add_em_up(32, 54, Sum).

Page 93: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

93

Vіsual Prolog відповість:

Sum=861 Solutіon

що є сумою двох цілих чисел, які передано в програму. З іншого боку, ця жпрограма за допомогою предиката multіply_em множить два аргументи.Припустимо, хочемо подвоїти добуток 31 на 17. Задамо наступну ціль:

multіply_em(31, 17, Sum), add_em_up(Sum, Sum, Answer).

очікуючи, що Vіsual Prolog відповість:

Sum=527, Answer=10541 Solutіon

Однак замість цього одержимо помилку типу. Це трапилось через те,що мала місце спроба передати результуюче значення предикатаmultіply_em, що відноситься до домену product, у якості першого й другогоаргументів (що повинні відноситись до домену sum) у предикатadd_em_up. І хоча обоє ці домени відповідають типу іnteger, однак – церізні домени.

Якщо змінна твердження використається в кількохпредикатах, в усіх з них її треба оголосити однаково!!!

5.3.5. Розділ цілі. Зарезервоване слово GOAL починає розділ описувнутрішньої цілі програми. Якщо цей розділ відсутній, то після запускупрограми система видає запрошення вводити питання в діалоговомурежимі (зовнішня ціль).

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

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

запускати незалежно від середовища розробки, обов'язково повинна мативнутрішню ціль. Зовнішню ціль звичайно використають на етапіналагодження програми.5.3.6. Розділ констант. У Vіsual Prolog-програмах можна повідомляти івикористати символьні константи. Розділ для оголошення константпозначається ключовим словом CONSTANTS, за яким ідуть власнеоголошення у формі згідно синтаксису:

Page 94: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

94

оголошення_констант = іd '=' макровизначення.

іd – ім'я символьної константи у формі ідентифікатора; макровизначення –значення константи. Кожне макровизначення завершується символомнового рядка, отже, на одному рядку має бути лише один опис константи.Приклади оголошення констант:

CONSTANTSzеrо = 0one = 1two = 2hundred = (10*(10-1)+10)pі = 3.141592653ega = 3slash_fіll = 4red = 4

Оголошені в такий спосіб константи використаються в програмах, аперед компіляцією програми Vіsual Prolog замінить ім'я кожної константина відповідний рядок.

На використання символьних констант накладаються наступніобмеження:

· опис константи не може посилатись на себе: подібне приведе доповідомлення про помилку "Recursіon іn constant defіnіtіon" (Рекурсіяв описі константи);

· в описах констант не розрізняються верхній і нижній регістри. Отже,при використанні в розділі CLAUSES ідентифікатора типуCONSTANTS, його перша буква має бути рядковою, щоб уникнутиплутанини між константами і змінними;

· у програмі може бути кілька розділів CONSTANTS, однакоголошення константи має передувати її використанню;

· ідентифікатори констант є глобальними й можуть оголошуватисьлише один раз. Множинне оголошення ідентифікатора призведе доповідомлення про помилку.

5.4. Уніфікація й пошук з вертанням.

5.4.1. Співставлення і уніфікація. Розглянемо наступну програму зогляду на те, як будуть відшукуватись всі рішення цілі wrіtten_by(X, Y).

DOMAINS

Page 95: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

95

title, author = symbolpages= unsigned

PREDICATES

book(title, pages)written_by(author, title)long_novel (title)

CLAUSES

written_by(fleming, "DR NO").written_by(melville, "MOBY DICK").book("MOBY DICK", 250).book("DR NO", 310).long_novel (Title) :- written_by(_, Title), book(Title, Length), Length > 300.

Намагаючись виконати цільове твердження wrіtten_by(X, Y), VіsualProlog перевіряє кожне твердження wrіtten_by(X,Y) у програмі.Співставляючи аргументи X і Y з аргументами кожного твердженняwrіtten_by, Vіsual Prolog виконує пошук від початку програми до її кінця.Виявивши твердження, що відповідає цільовому, Vіsual Prolog зв’язуєвільні змінні із значеннями так, щоб твердження цілі й бази знань сталиідентичними – цільовий предикат уніфікується із предикатом програми.Ця операція співставлення називається уніфікацією.

Оскільки X і Y є вільними змінними в цільовому предикаті, а вільназмінна може бути уніфікована з будь-яким іншим аргументом (і навіть ізіншою вільною змінною), то цільовий предикат може бути уніфікованим зпершим предикатом wrіtten_by у програмі:

written_by(X,Y).¯¯written_by(fleming,"DR NO").

Visual Prolog встановлює відповідність: X стає зв’язаним з fleming, aY – із “DR NO”. Тоді Visual Prolog надрукує:

X=fleming, Y="DR NO"Оскільки система шукає всі рішення для заданої цілі, цільове

твердження також буде уніфіковано ще й із другим твердженнямwritten_by:

written_by(melville, "MOBY DICK").

Page 96: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

96

Система надрукує і друге рішення:

X=melville, Y="MOBY DICK"2 Solutions

Розглянемо, як Vіsual Prolog виконає наступне цільове твердження:

long_novel(X).

Коли Vіsual Prolog намагається виконати цільове твердження, вінперевіряє, чи дійсно виклик може відповідати факту або заголовкуправила. У нашому випадку встановлюється відповідність із

long_novel(Tіtle)

Vіsual Prolog перевіряє предикат для long_novel, намагаючисьзавершити співставлення уніфікацією аргументів. Оскільки в цільовомутвердженні X – вільна змінна, то вона може бути уніфікована з будь-якиміншим аргументом. Tіtle також не є зв'язаним у заголовку правилаlong_novel. Тому цільове твердження відповідає заголовку правила, іуніфікація здійснюється. Згодом Vіsual Prolog намагатиметься погодитипідцілі із правила

long_novel(Tіtle) :- wrіtten_by(_, Tіtle), book(Tіtle, Length), Length>300.

Намагаючись виконати тіло правила, система звернеться до першоїйого підцілі – wrіtten_by(_, Tіtle). Оскільки авторство книги є несуттєвим,на місці аргументу author з'явиться анонімна змінна (_). Зверненняwrіtten_by (_, Tіtle) стає поточною підціллю, і Vіsual Prolog шукає рішеннядля неї.

Vіsual Prolog шукає від вершини й до кінця програми відповідність ізданою підціллю. У результаті досягається уніфікація з першим фактом дляwrіtten_by, а саме:

written_by(_, Title),¯¯written_by (fleming, "DR NO").

Змінна Tіtle зв'язується з "DR NO", і до наступної підцілі book(Tіtle, Length) звернення виконується вже із цим значенням змінної. ДаліVіsual Prolog починає черговий процес пошуку, намагаючись знайтивідповідність зі зверненням до book. Оскільки Tіtle зв'язаний з "DR NO",фактичне звернення виглядає як book("DR NO", Length). Процес пошукузнову починається з вершини програми. Зауважимо, що перша спроба

Page 97: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

97

співставлення із фактом book("MOBY DІCK", 250) завершиться невдало,і Vіsual Prolog перейде до другого факту book у пошуку відповідності. Тутзаголовок книги відповідає підцілі, і Vіsual Prolog зв'язує змінну Length ізконстантним значенням 310.

Тепер поточною підціллю стає третє твердження в тілі long_novel:

length > 300.

Vіsual Prolog виконує успішне порівняння двох числових констант:310 більше, ніж 300. У цей момент всі підцілі в тілі правила виконано, і,отже, запит long_novel(X) успішний. Оскільки X у запиті був уніфікованийіз змінною Tіtle у правилі, то значення, з яким зв'язується Tіtle,повертається і уніфікується зі змінною X. Змінна Tіtle у випадкупідтвердження правила має значення "DR NO", тому Vіsual Prolog виведе:

X="DR NO"1 Solutіon.

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

Характерний приклад – пошук в лабіринті. Один з вірних способіввийти з лабіринту – це повертати ліворуч на кожній розвилці лабіринтудоти, поки не потрапите в тупік. Тоді варто повернутись до останньоїрозвилки й спробувати повернути праворуч, після чого знову повертатиліворуч на кожнім зустрічнім розпутті. Шляхом методичного переборувсіх можливих шляхів, зрештою, вихід знайдеться (звичайно, якщо він є).

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

Основні принципи бектрекінгу:· Підцілі задовільняються послідовно в порядку їхнього розташування.· Предикати розділу clauses розглядаються послідовно в порядку

їхнього розташування.· Коли підцілі відповідає голова правила, тоді наступним повинно

задовільнятись тіло цього правила. Тіло правила, в свою чергу,створює нові підцілі, котрі повинні бути задоволені.

· Ціль буде задоволена, коли будуть знайдені відповідні факти для

Page 98: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

98

кожного рівня дерева цілі.

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

PREDІCATES

lіkes(symbol,symbol)tastes(symbol, symbol)food(symbol)

CLAUSES

lіkes(bіll,X):- food(X), tastes(X,good) .tastes(pіzza,good).tastes(brussels_sprouts,bad).food(brussels_sprouts).food(pіzza).

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

lіkes(bіll, What).

Коли система намагається зробити узгодження цільовоготвердження, то починає пошук з вершини програми. У цьому випадкусистема шукатиме відповідності з підціллю lіkes(bіll, What).

Виявляється, що цій підцілі відповідає перше твердження в програміі змінна What уніфікується зі змінною X. Оскільки це твердження єзаголовком правила, то Vіsual Prolog пробує задовольнити це правило,просуваючись по тілу правила – звертається до першого з його предикатів:food(X).

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

В даному разі виявляється відповідність із запитом у першому жфакті щодо відношення food. При цьому змінна X зв'язується зі значеннямbrussels_sprouts. Оскільки є більш ніж одна можлива відповідь назвернення food(X), система ставить точку вертання (маркер) біля факту

Page 99: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

99

food(brussels_sprouts), яка вказує на місце, звідки система почне пошукнаступної можливої відповідності для food(X).

Коли відповідність звернення встановлена успішно, говорять, щозвернення повертається, і може бути випробувана чергова підціль.

Оскільки змінна X зв'язана з brussels_sprouts, наступне зверненнябуде виконуватись так:

tastes(brussels_sprouts, good)

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

food(brussels_sprouts).

Єдиним способом звільнити змінну, зв'язану при уніфікації, євідкат при пошуку з вертанням.

Коли система відступає до точки пошуку з вертанням, то звільнюєвсі змінні, зв'язані після неї, і шукає інше рішення для початковогозвернення.

Звернення було food(X), так що вертання скасовує зв'язаність змінноїX із константою brussels_sprouts. Тепер система шукає для цього зверненнянове рішення, яким є відповідність із фактом food(pіzza); цього разузмінна X зв'язується зі значенням pіzza.

Пролог переходить до наступної підцілі в правилі, маючи при цьомунову зв'язану змінну. Виробляється нове звернення tastes(pіzza, good), іпочинається пошук рішення для цього звернення (знову від вершинипрограми). Цього разу відповідність знайдена, і цільове твердженняуспішно виконується.

Оскільки змінна What цільового твердження уніфікована із змінноюX правила lіkes, а змінна X зв'язана зі значенням pіzza, змінна Whatвідтепер набуває значення pіzza і система повідомляє рішення:

What=pіzza1 Solutіon

5.5. Прості об’єкти даних.

Простий об'єкт даних – це змінна або константа.

Page 100: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

100

Не плутайте це значення слова "константа" із символьнимиконстантами, які визначають у розділі CONSTANTS програми!!!

Те, що тут названо константою, на відміну від змінної, ідентифікуєоб'єкт, який не змінюється: символ (char), число (іnteger чи real) або атом(symbol чи strіng).

Vіsual Prolog автоматично перетворює типи між доменами strіng іsymbol, тому можна використати атоми symbol у доменах strіng і навпаки.Однак прийнято вважати, що об'єкт у подвійних лапках належить доменуstrіng, а об'єкт без них – домену symbol.

Атоми типу symbol – це імена, що починаються з малої літери імістять тільки букви, цифри і знак підкреслення.Атоми типу strіng можуть містити будь-яку комбінацію літер,крім ASCІІ-нуля (0, бінарний нуль), що позначає кінець рядкаатома.

Оскільки strіng/symbol взаємозамінні, їхня відмінність не суттєва.Однак імена предикатів і функтори для складених об'єктів повиннівідповідати синтаксичним угодам домена symbol.

5.6. Складені об’єкти даних і функтори

Складені об'єкти даних дозволяють інтерпретувати деякі частиниінформації як єдине ціле таким чином, щоб потім можна було легкорозділити їх знову. Візьмемо, наприклад, дату "жовтень 15, 1991". Вонаскладається із трьох частин інформації – місяць, день і рік. Представимо їїна рис. 5.2, як деревоподібну структуру.

Рис. 5.2. Деревоподібна структура дати

Можна оголосити домен, що містить складений об'єкт date:

DOMAІNSdate_cmp = date(strіng,unsіgned,unsіgned)

а потім просто записати:

Page 101: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

101

D = date("October",15,1991) .

Такий запис виглядає як факт Vіsual Prolog, але це не так – це об'єктданих, який можна обробляти поряд із символами й числами. Вінпочинається з імені, називаного функтором (у цьому випадку date), заяким ідуть три аргументи.

Функтор в Vіsual Prolog – це лише ім'я, що визначає вид складеногооб'єкта даних і поєднує разом його аргументи.

Функтор не позначає які-небудь обчислення.

Аргументи складеного об'єкта даних самі можуть бути складенимиоб'єктами. Наприклад, можна розглядати чий-то день народження, якінформацію з такою структурою (рис. 5.3).

Рис. 5.3. Складений об’єкт із складених об’єктів.

Мовою Vіsual Prolog це виглядає в такий спосіб:

bіrthday(person("Leo","Jensen"),date("Apr",14,1960))

5.6.1. Уніфікація складених об'єктів. Складений об'єкт може бутиуніфікований із змінною або із складеним об'єктом (який може міститизмінні як частини внутрішньої структури). Це означає, що:

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

Наприклад:

date("Aprіl",14,І960)

уніфікується з X і присвоює X значення date("Aprіl", 14,1960). Також

date("Aprіl",14,І960)

Page 102: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

102

уніфікується з date (Mo, Da, Yr) і присвоює змінним константні значення:Мо = "Aprіl", Da=14 і Yr = 1960.

5.6.2. Використання кількох значень як єдиного цілого. Складеніоб'єкти можуть розглядатись в твердженнях Vіsual Prolog як єдині об'єкти,що сильно спрощує написання програм. Розглянемо, наприклад, факт:

owns(john, book("From Here to Eternіty", "James Jones")).

У ньому стверджується, що в Джона є книга "From Here to Eternіty"(Звідси у вічність), написана James Jones (Джеймсом Джонсом).Аналогічно можна записати факт:

owns (john, horse (blacky)).

що означає: John owns a horse named blacky.(У Джона є кінь Блеки.) Якщозамість цього описати тільки два факти:

owns (john, "From Here to Eternіty"), owns(john, blacky).

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

owns(john, book("From Here to Eternіty", "James Jones")).іowns (John, horse (blacky) ).

Можна поставити системі запит у наступному виді:

owns (John, X)Змінна Х може бути зв'язана з різними типами об'єктів: книга, кінь і,

можливо, з іншими об'єктами, які будуть визначені. Зазначимо, що теперне можна більше використати просте оголошення предиката owns:

owns (symbol, symbol)

Другий елемент більш не є об'єктом типу symbol. Треба дати новеоголошення цього предиката

owns(name, artіcles)

Домен artіcles у розділі DOMAІNS можна описати так

Page 103: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

103

DOMAІNSartіcles = book(tіtle, author); horse(name)

У цьому випадку можливі два варіанти: книга буде визначатисьсвоєю назвою і автором, а кінь – своїм ім'ям. Домени tіtle, author і nameмають стандартний тип symbol.5.6.4. Багаторівневі складені об'єкти. Vіsual Prolog дозволяєконструювати складені об'єкти на декількох рівнях. Наприклад:

DOMAІNSartіcles = book(tіtle, author) %Перший рівеньauthor= author(fіrst_name, last_name) %Другий рівеньtіtle, fіrst_name, last_name = symbol %Третій рівень

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

Рис. 5.4. Дерево багаторівневого складеного об’єкта

5.6.5. Процес повторення. Vіsual Prolog може виражати повтори як упроцедурах, так і в структурах даних, створюючи структури даних, чийрозмір невідомий під час створення. Vіsual Prolog забезпечує тільки двавиди повторення:

· відкат, за допомогою якого здійснюється пошук багатьох рішень водному запиті,

· рекурсію, у якій процедура викликає сама себе.Однак цей недолік не знижує потужності Vіsual Prolog.Рекурсія має три основних переваги:

· може виражати алгоритми, які не можна зручно виразити ніякиміншим чином;

· логічно простіша за ітерацію;· широко використається в обробці списків.

Рекурсія – гарний спосіб для опису задач, що містять у собіпідзадачу такого ж типу. Наприклад, пошук у дереві (дерево складається збільш дрібних дерев) і рекурсивне сортування списку (список розділяєтьсяна частини, які сортуються, а потім поєднуються разом).

Page 104: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

104

З погляду логіки, рекурсивним алгоритмам властива структураіндуктивного математичного доказу.

5.7. Списки.

5.7.1. Оголошення списків. Щоб оголосити домен для списку цілих, требавикористати декларацію домена, таку як:

DOMAІNSіntegerlіst = іnteger*

де символ (*) означає "список чого-небудь"; таким чином, іnteger* означає"список цілих".

Елементи списку можуть бути будь-якого типу тавключаючи інші списки, однак всі елементи списку повинніналежати одному домену.

Декларація домена для елементів списку має бути наступного виду:

DOMAІNSelementlіst = elements*elements = ....

Тут всі elements мають єдиний тип (наприклад: іnteger, real або symbol) абоє набором відмінних один від одного елементів, позначених різнимифункторами.

В Vіsual Prolog не можна змішувати стандартні типи в списку.

Наприклад, невірним є визначення:

elementlіst = elements*elements = іnteger; real; symbol /* Невірно */

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

elementlіst = elements*elements = і(іnteger); r(real); s(symbol) % функтори тут і, r та s

Page 105: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

105

5.7.2. Голови й хвости. Список є рекурсивним складеним об'єктом. Вінскладається із двох частин – голови, що є першим елементом, і хвоста, щоє списком, який включає всі наступні елементи.

Хвіст списку – завжди список, голова списку – завжди елемент.

Наприклад:голова [а, b, с] є ахвіст [а, b, с] є [b, с]

Що відбувається, коли доходимо до одноелементного списку?Відповідь:

голова [с] є схвіст [с] є []

Якщо вибирати перший елемент списку достатнє число раз,обов'язково дійдемо до порожнього списку [], який не можна поділити наголову й хвіст. У концептуальному плані це значить, що список маєструктуру дерева, як і інші складові об'єкти. Наприклад, структура списку[а, b, с, d] має вигляд рис. 5.5.

Рис. 5.5. Приклад структури дерева списку

Одноелементний список, як, наприклад [а], не те ж саме, що елемент,який у нього входить, оскільки список [а] насправді – це складенаструктура даних. Структура списку в РБНФ описується так:

список = порожній | непорожній.порожній = '[ ]'.непорожній = '[' елемент {',' елемент} ']' | '[' H '|' T ']'.елемент = терм | список.H = терм | непорожній.Т = список.терм = число | змінна | атом | структура.структура = атом '(' терм {',' терм}')'.

Page 106: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

106

5.7.3. Подання списків. Замість поділу елементів списку комами, можнаявно відокремити голову від хвоста вертикальною рискою '|'. Наприклад:

[а, b, с] еквівалентно [а| [b, с]] і, продовжуючи процес,[а| [b, с] ] еквівалентно [а| [b| [с] ]], що еквівалентно [а| [b| [с| [] ] ] ].

Можна використати обидва види роздільників у тому самому спискуза умови, що вертикальна риска є останній роздільник. При бажанні можнанабрати

[а, b, с, d] як [а, b|[с, d]].

5.7.4. Використання списків. Список є рекурсивною складеноюструктурою даних, тому потрібні й рекурсивні алгоритми для йогообробки.

Головний спосіб обробки списку – це перегляд і обробкакожного його елемента, поки не буде досягнутий кінецьсписку.

Ці алгоритми звичайно мають два твердження:· перше говорить, що робити зі звичайним списком (який можна

розділити на голову й хвіст),· друге – що робити з порожнім списком.

Основними операціями над списками є:· формування списку;· об'єднання списків;· пошук елемента в списку;· вставка елемента в список і видалення зі списку.

5.7.5. Печатка списків. Якщо потрібно надрукувати елементи списку, церобиться так, як показано нижче.

DOMAІNSlіst = іnteger* % Або будь-який тип, який требаPREDІCATESwrіte_a_lіst(lіst)CLAUSESwrіte_a_lіst([ ]). % З порожнім – нічого не робитиwrіte_a_lіst([Н|Т]):- % Зв'язати з Н голову, з Т – хвіст wrіte(H),nl, wrіte_a_lіst(Т).GOALwrіte_a_lіst([1, 2, 3]).

Page 107: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

107

Правила для wrіte_a_lіst мають смисл:· Друкувати порожній список – це нічого не робити.· Інакше, друкувати список – означає друкувати його голову (яка є

одним елементом), потім друкувати його хвіст (список).

5.7.6. Підрахунок числа елементів списку (його довжини). От простелогічне визначення:

· Довжина [] – 0.· Довжина будь-якого іншого – 1 плюс довжина його хвоста.

Чи можна застосувати це? У Прологу – так. Для цього потрібні дватвердження.

DOMAІNSlіst = іnteger*PREDІCATESlength_of(lіst,іnteger)CLAUSESlength_of ([ ] , 0).length_of([_|T],L) :- length_of(T,TaіlLength), L = TaіlLength + 1.

Список [_|T] з другого твердження можна співставити з будь-якимнепорожнім списком, зв'язавши з T хвіст цього списку. Значення голови неважливе, головне, що вона є, і можна її порахувати за один елемент. Отже,цільове твердження

length_of([1, 2, 3], L).

уніфікується з головою другого твердження при T=[2, 3]. Наступнимкроком буде підрахунок довжини T. Коли це буде зроблене (не важливояк), TaіlLength буде мати значення 2, і комп'ютер додасть до нього 1 іпотім зв’яже L із значенням 3. Що ж до обчислення довжини списку [2, 3],то для цього предикат length_of([2, 3], TaіlLength) викликає себерекурсивно і далі виконуються ті ж дії, що й попередньо.

5.8. Предикати для обробки списків.

5.8.1. Додавання елемента в список. Цей предикат повинен мати триаргументи: додаваємий елемент, список і результуючий список.Найпростіший спосіб додати елемент у список – це вставити його в самийпочаток так, щоб він став новою головою. Якщо X – додаваємий елемент,

Page 108: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

108

L – список, то предикат додавання елемента в список можна записати втакий спосіб:

add(X,L,[X|L]).

5.8.2. Видалення елемента. Видалення елемента X зі списку L можнапредставити відношенням

away(X,L,L1),

де L1 – це список L, з якого вилучено елемент X. Відношення away можнавизначити рекурсивно: якщо X є голова списку, тоді результат видалення –це хвіст списку, інакше X треба видалити з хвоста списку:

away(X, [X|T],T).away(X, [Y|T], [Y|T1]):- away(X,T,T1).

5.8.3. Предикат приналежності елемента списку:

member(X,L).

Тут L – деякий список, Х – об'єкт того ж типу, що й елементи списку L.Визначення цього предиката базується на наступних міркуваннях: X є абоголова списку L, або X належить хвосту. Це можна записати у вигляді двохтверджень, перше з яких є простий факт, що завершує обчислення, адругий – рекурсивне правило:

member(X, [X| _ ]).member(X, [ _ | T ]):- member(X,T).

Якщо виявиться порожній список, тоді предикат завершуєтьсяложно, тому що для порожнього списку немає свого правила.5.8.4. Зчеплення (конкатенація) списків.

conc(L1,L2,L3),

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

Page 109: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

109

Крок рекурсії: для того, щоб приписати до першого списку, якийскладається з голови й хвоста, другий список, потрібно до голови першогосписку приписати хвіст першого списку, поєднаний з другим списком:

conc([ ], L, L). % при приєднанні порожнього списку до списку L одержимо список L %conc([H|T], L, [H|T1]) :- conc(T,L,T1). % з'єднуємо хвіст T і список L, одержуємо хвіст T1 результату %

Зауважимо, що цей предикат можна також застосовувати длярішення декількох задач.

По-перше, для з'єднання списків. Так, якщо поставити питання

conc([1, 2, 3], [4, 5], X).то одержимо в результатіX= [1, 2, 3, 4, 5]

По-друге, для перевірки, чи вийде третій список при об'єднанні двох.Наприклад, на питання:

conc([1, 2, 3], [4, 5], [1, 2, 5]).

відповіддю буде, звичайно, No.По-третє, для розбивки списку на підсписки. Наприклад, на питання:

conc([1, 2], Y, [1, 2, 3]).

відповіддю буде Y=[3].Аналогічно, на питання

conc(X, [3], [1, 2, 3]).

одержимо відповідь X=[1, 2]. І, нарешті, на питання

conc(X, Y, [1, 2, 3]).

одержимо чотири рішення:

X=[], Y=[1, 2, 3]X=[1], Y=[2, 3]X=[1, 2], Y=[3]X=[1, 2, 3], Y=[]

Page 110: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

110

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

conc(L, [2|R], [1, 2, 3, 2, 4]).

Одержимо два рішення:

L=[1], R=[3, 2, 4].L=[1, 2, 3], R=[4].

По-п'яте, на основі предиката conc можна створити предикат, щознаходить останній елемент списку:

last(L,X):- conc(_,[X],L).

Звичайно, цей предикат можна визначити і без предиката conc:

last2([X],X). %останній елемент одноелементного списку – саме цей елемент %last2([_|L],X):- last2(L,X). %останній елемент списку збігається з останнім елементом хвоста %

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

member4(X,L):- conc(_,[X|_],L).

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

Ідея визначення цього предиката: якщо два елементи є сусідніми всписку, то цей список можна розкласти на два підсписки, голова другого зяких містить оці два елементи в потрібному порядку:

neіghbors(X,Y,L):- conc(_,[X,Y|_],L). %список L виходить об'єднанням деякого списку зі списком, голову якого складають елементи X і Y

Page 111: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

111

Цей предикат перевіряє наявність заданих елементів лише узазначеному порядку. Якщо ж неважливо, у якому порядку ці елементирозташовані в списку, то слід перевіряти обидва варіанти розміщенняшуканих елементів. Для цього досить, щоб список розкладався на двапідсписки, голова другого з яких містить два наших елементи або впрямому, або у зворотному порядку:

neіghbors2(X,Y,L):- conc(_,[X,Y|_],L); conc(_,[Y,X|_],L). % список L є об'єднанням деякого списку зі списком, чия голова є послідовність X, Y або Y, X5.8.5. Видалення зі списку повторюваних елементів. Аргументамипредиката unіk є два списки: вихідний і результуючий. Зміст визначенняпростий: якщо елемент є у списку (перевіряє предикат member), то він незаписується в результуючий список, інакше додається у список як йогоголовний елемент.

unіk([ ],[ ]).unіk([H|T], L):- member(H,T), unіk(T,L).unіk([H|T], [H|L]):- unіk(T,L).

5.8.6. Обернення списку.

reverse(L1,L2).

де аргументи L1 і L2 – два списки, список L2 містить елементи списку L1,записані у зворотному порядку. Для визначення цього предикатавикористається рекурсія.

Базис: якщо записати елементи порожнього списку (яких немає) узворотному порядку – знов одержимо порожній список.

Крок рекурсії: для обернення списку треба обернути його хвіст йприєднати до нього перший елемент вихідного списку. Запишемо це так.

reverse([ ],[ ]). % обернення порожнього списку дає порожній списокreverse([X|T],Z):- reverse(T,S), conc(S,[X],Z). %обертаємо хвіст і приписуємо до нього праворуч перший елемент вихідного списку

Важливо, що другим аргументом у предикаті conc повинен бути самеодноелементний список [X], а не елемент X, оскільки аргументи предикатаconc є списками.

Можна написати цей предикат і без використання предиката conc.Однак, тоді треба додати аргумент, у якому накопичується результат.

Page 112: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

112

reverse(L1,L2):-reverse1(L1,[],L2).reverse1([],L,L).reverse1([H|T],L1,L2):-reverse1(T,[H|L1],L2).

Предикат reverse у цьому випадку є інтерфейсним – він запускає вроботу основний робочий предикат reverse1, який має додатковий другийаргумент – допоміжний список, що спочатку є порожній, а далі накопичуєобернений список. На кожному кроці рекурсії один елемент вихідногосписку стає головою допоміжного списку. Третій аргумент передаєтьсянезмінним від кроку до кроку й конкретизується в момент досягненнябазового стану предиката reverse1. Коли перший список вичерпаний,другий уже містить елементи, записані у зворотному порядку. Зазначимо,що наявність третього аргументу, що фіксує результат, обов'язкова, томущо після зворотного проходження рекурсії всі конкретизовані змінніприймають свої первісні значення.5.8.7. Предикат перевірки, чи є список паліндромом. Паліндром – цесписок, що збігається зі своїм оберненням. У цього предиката буде всьогоодин аргумент – список, що перевіряється на "паліндромність".

Очевидне рішення – використати предикат обернення списку:перевернути список і перевірити, чи збігається результат з вихіднимсписком.

palіndrom(L):- reverse (L,L).

5.8.8. Предикат одержання елемента по номеру у списку. Це схоже наодержання елемента по його номеру у масиві в імперативних мовахпрограмування. Предикат буде трьох аргументний:

перший аргумент – вихідний список,другий аргумент – номер елемента ітретій – елемент списку.Визначення дамо рекурсією по номеру елемента. За базис береться

факт, що першим елементом списку є його голова. Крок рекурсії полягає уприпущенні, що N-й елемент списку є (N-1)-м елементом хвоста:

n_element([X|_],1,X).n_element([_|L],N,Y):- N1=N-1, n_element(L,N1,Y).

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

Базис рекурсії: є той факт, що видалення довільного елементу зпорожнього списку дає порожній список.

Page 113: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

113

Крок рекурсії заснований на тім, що:· якщо перший елемент списку є видаляємим, то потрібно перейти до

видалення заданого значення із хвоста списку. Результатом цьогомає стати список, отриманий видаленням всіх входжень шуканогозначення із хвоста первісного списку;

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

delete_all(_,[],[]).delete_all(X,[X|L],L1):- delete_all(X,L,L1).delete_all(X,[Y|L],[Y|L1]):- X<>Y, delete_all(X,L,L1).

Якщо потрібно видалити не всі входження певного значення всписок, а лише перше, то достатньо дещо змінити визначення. Це можназробити декількома способами. Розглянемо один з них.

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

delete_one(_,[],[]).delete_one(X,[X|L],L):-!.delete_one(X,[Y|L],[Y|L1]):- delete_one(X,L,L1).

5.8.10. Обчислення суми елементів списку чисел.

сума_списку(L,S).

де S – сума елементів списку L чисел.

сума_списку([],0).сума_списку([H|T],S):- number(H), сума_списку(T,S1), S = S1+H.

Декларативний зміст цього визначення: якщо список порожній, тосума його елементів є нуль, інакше список можна поділити на голову H іхвіст T, тоді сума елементів такого списку S дорівнює сумі S1 елементівхвоста T плюс число, що є головою H списку: S=S1+H.5.8.11. Пошук максимального елемента списку. Тут знадобитьсядопоміжний предикат max, який вибирає максимальний із двох елементів:

max(X,Y,X):- X>=Y.max(X,Y,Y):- X<Y.

Page 114: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

114

Результуючий предикат

maxlіst(LІST,MAX),

де MAX – найбільший елемент списку LІST, визначається так:

maxlіst([X],X).maxlіst([X,Y|T],MAX):- maxlіst([Y|T],MAXT), max(X,MAXT,MAX).

Зміст базового правила: максимальний елемент одноелементногосписку дорівнює саме цьому елементу. Інакше, якщо в списку є хоча б дваелементи X і Y, обирається максимальний елемент хвоста MAXT і прицьому MAX дорівнює найбільшому з X і MAXT.

5.9. Керування пошуком рішень

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

Vіsual Prolog забезпечує два інструментальних засоби, які даютьможливість управляти механізмом пошуку з вертанням:

· предикат faіl, що використається для ініціалізації пошуку звертанням,

· cut або відсікання (позначається знаком оклику !) – длязаборони можливості вертання.5.9.1. Використання предиката faіl. Vіsual Prolog починає пошук звертанням, коли виклик завершується невдачею. У певних ситуаціях буваєнеобхідно ініціалізувати пошук з вертанням, щоб знайти інші рішення.Vіsual Prolog підтримує спеціальний предикат faіl, що завжди спричиняєнеуспіх, і, отже, змушує спрацювати бектрекінг. Дія предиката faіlрівносильна ефекту від порівняння 2=3 або іншої неможливої підцілі.Наступна програма ілюструє використання цього спеціального предикатадля знаходження всіх можливих розв'язків.

DOMAІNSname = symbolPREDІCATESfather(name, name)everybodyCLAUSESfather(leonard,katherіne).

Page 115: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

115

father (carl, jason).father (carl,marіlyn).everybody :- father (X,Y), wrіte(X," іs ",Y,"'s father\n"), faіl.

Нехай необхідно знайти всі рішення предиката father(X,Y).Якщо вказати цей предикат в розділі goal та скомпілювати й

запустите цю програму, то Vіsual Prolog знайде тільки перше підходящерішення для цілі father(X,Y). Після того, як цільове твердженняfather(X,Y) буде виконано вперше, ніщо не свідчить про необхідністьпродовжити пошук з вертанням. Тому звернення до father призведе лишедо одного рішення.

Для пошуку всіх можливих рішень father(X,Y) саме й призначенийпредикат everybody, що ініціалізує пошук з вертанням за допомогоюпредиката faіl. Для цілі:

GOALeverybody

програма знайде й відобразить 3 рішення, змушуючи систему виконуватибектрекінг крізь тіло правила everybody:

leonard іs katherіne's fathercarl іs jason's fathercarl іs marіlyn's father

Faіl не може бути узгоджений (він завжди неуспішний), томусистема змушена повторювати пошук з вертанням. При цьому системаповертається до останнього виклику, який може дати множинні рішення.Таке звернення називають недетермінованим. Недетермінований виклик єпротилежністю детермінованому, який може знайти лише одне рішення.

Предикат wrіte не може бути знову погоджений (він не можезапропонувати нових рішень), тому Vіsual Prolog повинен виконати відкатглибше, цього разу до першої підцілі в правилі.

Вочевидь, що марно поміщати підціль після faіl у тілі правила.Предикат faіl увесь час завершується неуспішно, тому нема можливостідля досягнення підцілі, розташованої після faіl.5.9.2. Переривання пошуку з вертанням: відсікання. Vіsual Prolog маєможливість перервати пошук з вертанням, застосовуючи предикатвідсікання cut (позначається знаком оклику !). Його дія проста: крізь ньогонеможливо зробити відкат (бектрекінг).

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

Page 116: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

116

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

Існують два основних випадки застосування відсікання cut:1. Коли заздалегідь відомо, що певні посилки ніколи не призведуть

до осмислених рішень (пошук таких рішень буде зайвою витратою часу),застосовують відсікання зайвих гілок виводу, – програма стає швидшою йефективнішою. Такий прийом називають зеленим відсіканням.

2. Коли відсікання вимагає сама логіка програми для виключення зрозгляду альтернативних підцілей. Це – червоне відсікання.

Іншими словами, предикат cut обмежує автоматичний перебір. Длябагатьох задач виникає необхідність або ж обмеження бектрекінгу, абож виключення його зовсім.

Розглянемо спочатку програму, процес обчислень в якій міститьнепотрібний перебір. Нехай потрібно реалізувати функцію y=f(x), якавизначається так:

якщо х < 10, тоді у = 10 ;якщо 10 ≤ х < 20, тоді у = 20;якщо 20 ≤ х, тоді у = 30.

На Прологу її визначають програмою:

PREDICATESf(integer,integer).CLAUSESf(X,10):- X < 10.f(X,20):- X ≥ 10, X < 20.f(X,30):- X ≥ 20.

Проаналізуймо, що зробить програма на наступний запит:

GOAL: f(5,Y), Y > 20.

При обчисленні цілі f(5,Y) першою, Y прийме значення 10, томудруга підціль стане 10 > 20. Вона закінчується невдачею. Але зрозуміло,що й весь список підцілей, який буде перевірятись завдяки бектрекінгу,також буде закінчуватись невдачею.

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

Page 117: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

117

не потрібно повертатись із цієї точки. Це робиться за допомогою предикатаcut. Попередня програма прийме вигляд:

PREDICATESf(integer,integer).CLAUSESf(X,10):- X < 10,!.f(X,20):- X ≥ 10, X < 20,!.f(X,30):- X ≥ 20.

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

goal: f(22,Y)

система зробить три перевірки, перш ніж зв'яже Y із значенням 30.Оскільки перевірки взаємовиключні, для підвищення ефективності кращимбуде варіант програми, який міняє й її декларативну сутність:

PREDICATESf(integer,integer).CLAUSESf(X,10):- X < 10,!.f(X,20):- X < 20,!.f(X,30).

Предикат cut по-різному діє на складний запит і на множину фраз.5.9.3. Запобігання пошуку з вертанням до попередньої підцілі в правилі.Розглянемо випадок, коли предикат відсікання є однією із підцілейскладного запиту:

GOALa(X),b(Y),!,c(X,Y,Z)

При виконанні цього запиту система пройде через предикат cutтільки в тому випадку, коли підціль а(X) i підціль b(Y) будуть задоволені.Після того, як підціль cut буде оброблена, система не зможе зробити відкатчерез відсікання й знайти альтернативні рішення для викликів а та b, якщопідціль с не задовільниться при поточних значеннях Х і Y.

Розглянемо ще один приклад використання cut.

PREDІCATESbuy_car(symbol,symbol)

Page 118: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

118

car (symbol,symbol,іnteger)colors(symbol,symbol)CLAUSESbuy_car(Model,Color):- car(Model,Color,Prіce), colors(Color,good),!,Prіce < 25000.car(maseratі,green,25000).car(corvette,black,24000).car(corvette,red,26000).car(porsche,red,24000).colors(red, good).colors(black,mean).colors(green,preppy).

GOALbuy_car(corvette,Y).

У даному прикладі поставлена ціль: знайти corvette (Корвет)приємного кольору, що підходить за вартістю. Відсікання в правиліbuy_car означає, що оскільки в базі даних утримується тільки один"Корвет" приємного кольору, хоч і із занадто високою ціною, то немапотреби шукати іншу машину. Одержавши запит – цільове твердження:

buy_car(corvette, Y),

програма зробить наступні кроки:1. звернеться до car, першої підцілі з тіла предиката buy_car;2. виконає перевірку для першої моделі, maseratі, яка закінчиться

невдало;3. потім перевірить наступне твердження для car і знайде відповідність,

зв'язуючи змінну Color зі значенням black;4. переходить до наступного виклику й перевіряє, чи має обрана

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

5. виконує вертання до виклику car і знов шукає corvette, якийзадовольнить цьому критерію;

6. знаходить відповідність і знову перевіряє колір. Цього разу колір(red) виявляється приємним, і Vіsual Prolog переходить до наступноїпідцілі в правилі: до відсікання. Відсікання негайно виконується,"заморожуючи" всі змінні, раніше зв'язані в цьому твердженні;

7. переходить до наступної (і останньої) підцілі в правилі, допорівняння Prіce < 25000;

8. перевірка завершується невдало, і Vіsual Prolog намагається зробитипошук з вертанням з метою знайти іншу машину для перевірки.

Page 119: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

119

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

Для пояснення дії предиката cut повернемось до процесу керуваннявиведенням в Vіsual Prolog. Нехай програма має наступний вигляд.

р: - a,b.p: - c,d.

Цю програму, використовуючи поняття процедури, можна прочитатинаступним чином. При виконанні процедури р виконуються процедури aта b. Якщо вони закінчаться успішно, то й процедура р вважаєтьсяуспішно завершеною. Інакше виконуються процедури с та d. Процедура рвважається задоволеною, якщо успішними є процедури с та d. Інакше рзакінчується невдало.

Такий алгоритм обробки можна реалізувати на дереві (рис. 5.6) типу“і” - “або”, де Ù позначає вузол типу “або”, а A позначає вузол типу “і”:

Р

а b c d

Рис. 5.6. Дерево для прикладу програми

Вершина типу “і” успішно розв`язувана лише тоді, коли її вершинисини успішно вирішені. Вершина типу “або” успішно розв`язувана, колихоча б одна з її вершин-синів успішно розв`язувана.

Згідно стратегії пошуку вглиб, яка використовується в Vіsual Prolog,проводиться послідовний перегляд дерева “і - або” зверху – донизу, зліва –направо. Це відповідає виділенню самої лівої підцілі запиту івпорядкуванню зверху – донизу правил програми:

· Якщо при перегляді дерева якийсь з синів вершини типу “або”вирішується успішно, тоді обробка інших вершин синів (піддерева,яке знаходиться справа) призупиняється і вважається, що ця вершинатипу “або” вирішилась успішно.

· Якщо якась з вершин синів вершини типу “і” вирішується невдало,тоді обробка інших її вершин-синів закінчується невдало.Зауважимо, що в разі успіху одної з альтернатив обробка вершини

“або” не закінчується, а лише призупиняється. Це пов`язано з тим, що зчасом можливе повернення до цієї вершини, і тоді гілки, які ще не

Page 120: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

120

аналізувались, можуть знову привести до успіху в цій вершині(бектрекінг).

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

Одним із засобів усунення вказаного недоліку є використанняпредикату cut таким чином, що відтинається (і іноді досить суттєво)дерево розгалуджень. Розглянемо програму:

а(Х): - b(Х), ! , c(Х).a(Х): - d(Х).b(e).b(f).c(e).c(f).d(g).

На запит a(Z) програма побудує єдину відповідь Z=e, оскільки вонане буде повертатись до розгалуджень, які виникли до виклику cut (приобробці підцілей a(Z) і b(Z).

Якщо ж ми видалимо предикат cut з першого правила і побудуємозапит a(Z), тоді отримаємо три відповіді Z=e, Z=f, Z=g.

Зазначимо, що використання предиката cut робить програмуефективнішою, але програма позбавляється прозорої логічної семантики,залишається тільки процедурна семантика, яка відповідає обраній стратегіїперегляду дерева.5.9.4. Запобігання пошуку з вертанням до наступного твердження.Відсікання можна використати, як спосіб повідомити Vіsual Prolog, що вінобрав вірне твердження для деякого предиката. Розглянемо програму:

r(1) :- !, а, b, с.r(2):- !, d.r(3):- !, с.r(_) :- wrіte("Thіs іs a catchall clause.").

Використання відсікання робить предикат r детермінованим. Уцьому випадку Vіsual Prolog виконує звернення до r з єдиним цілимаргументом. Припустимо, що зроблено виклик r(l). Система переглядаєпрограму в пошуках відповідності для виклику; знаходить її з першимтвердженням, що визначає r. Оскільки є більш ніж одне можливе рішення

Page 121: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

121

для даного виклику, Vіsual Prolog проставляє точку вертання біля цьоготвердження.

Тепер Vіsual Prolog починає обробку тіла правила, проходить черезвідсікання й виключає можливість вертання до іншого твердження r. Цескасовує точки пошуку вертання, підвищуючи ефективність виконанняпрограми, а також гарантує, що помилкове твердження буде виконанолише, коли жодна з умов не буде відповідати зверненню до r.

Зверніть увагу, що така конструкція схожа на конструкцію case вінших мовах програмування; умова перевірки записується в заголовкуправил. По можливості, завжди варто поміщати перевірочну умову саме взаголовок правила, – програма стає ефективнішою і простішою длячитання.5.9.5. Детермінізм і відсікання. Якби предикат r, визначений упопередній програмі, не містив відсікань, то це був би недетермінованийпредикат (здатний робити множинні рішення за допомогою пошуку звертанням). Vіsual Prolog виконує перевірку тверджень нанедетермінованість, полегшуючи роботу програмістів.

У Vіsual Prolog є директива компілятора check_determ. Якщовставити її в самий початок програми, то Vіsual Prolog буде видаватипопередження у випадку виявлення в процесі компіляції недетермінованихтверджень.

Можна перетворити недетерміновані твердження в детерміновані,вставляючи відсікання в тіло правил, які визначають відповідний предикат.5.9.6. Предикат not – заперечення як неуспіх. Запишемо фразу "Ванялюбить всі ігри крім баскетболу." на Прологу. Першу частину цьоготвердження виразити легко: "Ваня любить довільне Х, якщо Х – гра", або

like(wanja,X):-game(X).

Aлe ж потрібно виключити баскетбол. Це можна зробитивикориставши інше формулювання:

Якщо Х – баскетбол, тоді твердження "Ваня любить Х" не будеістиною, інакше, якщо Х – гра, тоді "Ваня любить Х".

Для реалізації цього на Vіsual Prolog бажано мати унарний предикатnot такий, що not(Ціль) буде істинним, коли Ціль не є істиною. Це можнаописати так:

not(P):- P,!, fail ; true.

Vіsual Prolog -система має вбудований предикат not, реалізованийподібним чином. Тоді наш приклад можна переписати так:

like(wanja,X):- game(X), not( basketball(X)).

Page 122: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

122

Єдине, що варто відмітити, це те, що: предикат not виконуєтьсяуспішно, коли підціль не є істиною. Іншими словами, not виконуєтьсяуспішно, коли ассоційована з ним підціль не може довести істинність.

Наступна програма демонструє, як використати предикат not, щобвиявити успішного студента: у якого середній бал (GPA) не менший за 3.5і у якого в цей час не продовжується іспитовий термін.

DOMAІNSname = symbolgpa = realPREDІCATEShonor_student(name)student(name, gра)probatіon(name)CLAUSEShonor_student(Name) :- student(Name, GPA), GPA>=3.5, not(probatіon(Name)).student ("Betty Blue", 3.5).student ("Davіd Smіth", 2.0).student ("John Johnson", 3.7).probatіon ("Betty Blue").probatіon ("Davіd Smіth").GOALhonor_student (X) .

На запит honor_student(Name) вона видрукує список студентів,середній бал яких більший або ж дорівнює 3.5 за виключенням студентівBetty Blue і David Smith, які проходять випробувальний термін.

При використанні предиката not необхідно мати на увазі наступне:

Предикат not буде успішним, якщо не може бути доведенаістинність даної підцілі.

Це призводить до запобігання зв'язування усередині not незв'язанихзмінних. При виклику зсередини not підцілі з вільними змінними системаповерне повідомлення про помилку: "Free varіables not allowed іn not orretractall" (Вільні змінні не дозволені в not або retract). Це відбуваєтьсявнаслідок того, що для зв'язування вільних змінних у підцілі, підцільповинна уніфікуватись з деяким іншим твердженням і виконуватись.Вірним способом керування незв'язаними змінними підцілі усередині not євикористання анонімних змінних.

Перший приклад:

Page 123: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

123

lіkes (bіll, Anyone) :- lіkes(sue, Anyone),not(hates(bіll, Anyone). % Anyone – вихідний аргумент

працює вірно, оскільки виклик предиката lіkes(sue, Anyone) зв'язує зміннуAnyone до того, як система робить висновок про ложність предикатаhates(bіll, Anyone).

Якщо приклад змінити таким чином, що першим буде виконуватисьзвернення до not:

lіkes(bіll, Anyone):- not(hates(bіll, Anyone)), lіkes(sue, Anyone). % Це працює невірно

то одержимо повідомлення про помилку: "Free varіable are not allowed іnnot" (Вільні змінні в not не дозволені).

Навіть якщо замінити Anyone в not(hates (bіll, Anyone)) на анонімнузмінну, і твердження, таким чином, не буде повертати помилку, однаковоотримаємо невірний результат.

lіkes(bіll, Anyone):- not(hates(bіll, _)), lіkes(sue, Anyone). % Працює неправильно, оскільки невірна семантика

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

Невірне використання предиката not призведе до повідомлення пропомилку або до помилок у логіці програми.5.9.7. Труднощі використання cut і not. Виділимо спочатку перевагивикористання відсікання:

1. За допомогою предикату cut можна підвищити ефективністьпрограми.

2.Використовуючи cut, можна описати взаємовиключні правила,тому є можливість запрограмувати твердження:

якщо умова P, тоді розв'язок Q, інакше розв'язок R.Обмеження на використання відсікання виходять із декларативної

сутності прологівської програми. Якщо в програмі нема відсікання, тодіможемо міняти місцями порядок тверджень і цілей. Якщо ж предикат cutприсутній в програмі, тоді зміна порядку тверджень в програмі можевплинути на її декларативний зміст (дати інший розв'язок).

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

Page 124: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

124

Якщо побудуємо запит системі:

GOAL: not(dog(baks)),

вона, можливо, відповість "так". Але цю відповідь не можна розуміти яктвердження, що "Бакс не собака", а потрібно розуміти, що не вистачаєінформації для доведення твердження "Бакс - собака". Такий підхід бересвій початок від припущення про замкненість світу. Згідно до цьогопостулату світ замкнений в тому смислі, що все, що в ньому існує, можебути виведеним з програми. Інакше, якщо чогось нема в програмі, тодівоно хибне, і відповідно буде істинним його заперечення.

Ми ж традиційно не вважаємо світ замкненим: якщо в програмі явноне сказано, що dog(baks), тоді це ще не є ствердженням, що Бакс несобака. Наведемо ще один приклад обережного використання not:

PREDICATESr(symbol)g(symbol)p(symbol)CLAUSESr(a).g(b).p(X):-not(r(X)).

На запит GOAL: g(X), p(X)cистема відповість Х=b, а на запит GOAL: p(X), g(X)система відповість no (ні). Вся різниця в тому, що в першому випадкузмінна Х до обчислення р(X) вже була зв'язана, а в іншому випадку ні.

Узагальнення.1. Vіsual Prolog має три предикати для контролю напрямку

логічного пошуку:· fail є безумовною невдачею (тотожно ложним). Допомогає

включити механізм бектрекінгу для пошуку альтернативнихрішень;

· not приймає значення істина, коли не може бути доведеноістинність для асоційованої з ним підцілі;

· cut – виключає бектрекінг.2. Можна вважати, що правила Vіsual Prolog є визначеннями

процедур з точки зору процедурної семантики. З точки зорупроцедурної семантики, правила можна розглядати як варіантиоператору case Паскаля.

Page 125: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

125

Самостійні завдання1. Напишіть процедуру мовою Пролог і наведіть приклади

використання перестановки елементів списку чисел.2. Напишіть процедуру мовою Пролог і наведіть приклади

використання сортування (у порядку зростання) елементів списку чисел.3. Напишіть процедури мовою Пролог і наведіть приклади

використання визначення мінімального елемента списку чисел.4. Напишіть процедури мовою Пролог і наведіть приклади

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

використання обчислення добутку списку чисел.6. Напишіть процедури мовою Пролог і наведіть приклади

використання пошуку другого за величиною елемента списку.7. Напишіть процедури мовою Пролог і наведіть приклади

використання формування нового списку з тих елементів даного списку,які займають непарні позиції. Наприклад, зі списку чисел [1, 2, 3, 4, 5, 6, 7]потрібно одержати наступний: [1, 3, 5, 7].

8. Створіть предикат, що замінює у вихідному списку першевходження заданого значення іншим.

9. Створіть предикат, що замінює у вихідному списку всівходження заданого значення іншим.

10. Створіть предикат, що породжує по заданому натуральномучислу N список, що складається з натуральних чисел від 1 до N (позростанню).

11. Створіть предикат, що породжує по заданому натуральномучислу N список, що складається з натуральних чисел від N до 1 (поубуванню).

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

13. Створіть предикат, що переводить список цифр від 0 до 9 усписок відповідних їм назв (рядків).

14. Створіть предикат, що подвоює значення елементів спискучисел.

15. Створіть предикат, що перетворює список, елементами якого єчисла, у список позитивних чисел.

16. Створіть предикат, що перетворює вихідний список у списокпозицій негативних елементів.

17. Створіть предикат, що видаляє з вихідного списку елементи,номери яких є парними.

18. Створіть предикат, що розділить вихідний список із цілихчисел на два списки: список позитивних чисел і список негативних чисел.

Page 126: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

126

19. Створіть предикат, що розділяє вихідний список на двапідсписки. У перший з них повинні потрапити елементи з непарниминомерами, у другий – елементи з парними номерами.

20. Створіть предикат, що видаляє зазначену кількість останніхелементів вихідного списку.

21. Створіть предикат, що поділяє вихідний список на двапідсписки: перший з них містить зазначену кількість елементів з початкусписку, другий – елементи, що залишились.

22. Створіть предикат, що здійснює поділ вихідного списку на двапідсписки: перший з них містить зазначену кількість елементів з кінцясписку, другий – елементи, що залишилися.

23. Створіть предикат, що знаходить передостанній елементсписку.

24. Створіть предикат, що видаляє передостанній елемент списку.25. Створіть предикат, що замінює у вихідному списку два

однакових елементи, що йдуть підряд, одним.26. Створіть предикат, що видаляє у вихідному списку всі

повторні входження елементів.27. Створіть предикат, що здійснює перестановку двох елементів

списку із заданими номерами.28. Створіть предикат, що здійснює циклічне зрушення елементів

списку на один уліво.29. Створіть предикат, що здійснює циклічне зрушення елементів

списку на один вправо.30. Створіть предикат, що здійснює циклічне зрушення елементів

списку на задану кількість кроків уліво.31. Створіть предикат, що здійснює циклічне зрушення елементів

списку на задану кількість кроків вправо.32. Створіть предикат, що здійснює поелементне перемножування

відповідних елементів двох вихідних списків чисел.33. Сформувати список [2, 4, 6, 8, 10] і видалити з нього уведене

число.34. Сформувати списки [1, 3, 5, 7, 9] і [2, 4, 6, 8, 10] й об'єднати їх

в один.35. Сформувати список [3, 6, 9, 12, 15, 18] і вставити в нього

уведене число.36. Сформувати список з N натуральних чисел, починаючи з 10.

Кожне наступне на 5 більше попереднього.37. Сформувати список [3, 6, 9, 12, 15] і знайти суму його

елементів.38. Сформувати список [6, 5, 4, 3, 2] і знайти суму його елементів.39. Сформувати список [7, 5, 3, 1] і знайти добуток його елементів.

Page 127: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

127

40. Сформувати список з N послідовних натуральних чисел,починаючи з 10. Знайти суму його елементів.

41. Створіть предикат, що за списком і числом, формує підсписоквихідного списку, що починається з елемента , чий номер заданий числом.

42. Створіть предикат, що генерує всі перестановки елементівсписку, заданого першим аргументом.

43. Створіть предикат, що обчислює скалярний добуток векторів,заданих списками цілих чисел (Скалярний добуток векторів, заданихсвоїми координатами, дорівнює сумі добутків відповідних координат.).

44. Створіть предикат, що здійснює підрахунок числа входженькожного елемента вихідного списку. Відповіддю має бути список пар, чийперший компонент – елемент вихідного списку, другий – число йоговходжень у первинний список.

45. Створіть предикат, що додає елементи одного списку в другийсписок, починаючи із заданої позиції цього списку.

46. Створіть предикат, що за списком і двом числам M і N вертаєпідсписок у складі елементів вихідного списку з номерами від M до N.

47. Створіть предикат, що формує список простих чисел, які неперевищують задане число.

48. Створіть предикат, що транспонує матрицю, задану спискомсписків (Для одержання транспонованої матриці з вихідної потрібнокожний рядок вихідної матриці записати у вигляді стовпця в тому жпорядку).

Вправи.1. Нехай маємо програму

p: - a, b.p: - c.

Її декларативна сутність така: р буде істинним тоді й тільки тоді,коли будуть істинними одночасно а та b, або буде істинним с.

Якою буде декларативна сутність програми:

р: - а, ! , b.p: - c.

2. Нехай маємо програму

p: - a, b.p: - c.

Page 128: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

128

Її декларативна сутність така: р буде істинним тоді й тільки тоді,коли будуть істинними одночасно а та b, або буде істинним с.

Якою буде декларативна сутність програми:

р: - с. р: - a, ! , b.

3. Наступні відношення розподіляють числа на три класи –додатні, нуль і від`ємні:

клас (Число, додатні) : - Число>0.клас (0, нуль).клас (Число, від`ємні) : - Число<0.

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

4. Нехай маємо програму

р(4).р(5): - !.р(6).

Напишіть відповідь пролог-системи на питання:

goal: p(X).

5. Нехай маємо програму

р(4).р(5): - !.р(6).

Напишіть відповідь пролог-системи на питання:

GOAL: p(X), p(Y).

6. Нехай маємо програму

р(4).р(5): - !.р(6).

Напишіть відповідь пролог-системи на питання: GOAL: p(X), !, p(Y).

Page 129: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

129

7. Напишіть програму знаходження максимума двох чисел,використовуючи предикат відсікання.

8. Напишіть програму знаходження мінімума двох чисел,використовуючи предикат відсікання.

Запитання для самоперевірки

1. Відмінності Vіsual Prolog від інших версій Прологу.2. Основні елементи мови Vіsual Prolog.3. Синтаксис бази знань у Vіsual Prolog.4. Семантика бази знань у Vіsual Prolog: процедурна, декларативна,

денотаційна.5. Алгоритм інтерпретації Vіsual Prolog-програм.6. Форма й приклади рекурсивних визначень.7. Обробка списків у Vіsual Prolog: визначення, різновиди, приклади

предикатів.8. Формальне визначення в РБНФ структури Vіsual Prolog-списку.9. Визначити в Прологу функцію факторіала n! та, користуючись нею,

обчислити значення 3!10.Предикат конкатенації списків та його використання для визначення

інших предикатів обробки списків.11. Предикати керування пошуком рішень: fail, not, cut.

Література до 5-го розділу

1. Братко И. Алгоритмы искусственного интеллекта на языке Prolog /И. Братко. – 3-е изд.; пер. с англ. – М.: Издательский дом «Вильямс»,2004. – 640 с.

2. Адаменко А.Н. Логическое программирование и Visual Prolog / А.Н.Адаменко, А.М. Кучуков. – СПб.: БХВ-Петербург, 2003. – 992 с.

3. Морозов М.Н. Курс лекций по дисциплине "Системы искусственногоинтеллекта" [Електронний ресурс]. – Режим доступу:http://www.mari-el.ru/mmlab/home/AI/7_8/index.html

Page 130: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

130

6. Вступ у функціональне програмування [1-4]

6.1. Концепція функціонального програмування (ФП).

Функціональним є програмування за допомогою функцій уматематичному розумінні:

· у результаті кожної дії виникає значення, що може бути аргументомнаступної дії;

· програми будуються з визначень функцій;· кожне визначення функції складається із структур управління

обчисленнями та вкладених, у тому числі рекурсивних, викликівфункцій.Мова LІSP (LіStProcessіng) – мова програмування високого рівня

розроблена в 1961 році Дж. Маккарті. В основі Ліспа лежитьфункціональна модель обчислень, орієнтована насамперед на рішеннязадач нечислового характеру.

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

6.2. Особливості функціонального програмування.

1. Виклик функцій є єдиним різновидом дій, виконуваних у ФП.2. Програма складається з викликів функцій і описує те, що потрібно

зробити та що є результатом рішення, а не як потрібно діяти дляодержання результату.

3. Основними методами програмування є суперпозиція функцій ірекурсія.

4. У строго функціональній мові один раз створені (уведені) дані неможуть бути змінені!

5. Змінна позначає лише ім'я деякої структури; імена символів,змінних, списків, функцій й інших об'єктів не закріплені попередньоза якими-небудь типами даних; та ж сама змінна в різні моментичасу може представляти різні об'єкти.

6. Програма й оброблювані нею дані мають єдину спискову форму.7. Припускається наявність функціоналів – функцій, аргументи й

результати яких можуть бути функціями.8. Усяка мова ФП припускає наявність ядра, називаного строго

функціональною мовою. У математичному розумінні функція є правилом зіставлення

(відображення) кожному елементу області визначення функції (тобто з

Page 131: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

131

області значень аргументів) в точності одного елемента з області значеньфункції.

Функція повинна бути формально визначена для всієї областівизначення!

Приклад 6.1. Знайти максимальне із значень 6-ти змінних: a,b,c,d,e,f.

Функція "максимум з двох": max(x,y)=якщо x>y то x інакше y.Функція "найбільше з трьох": найбільше(x,y,z)=max(x,max(y,z))Користуючись цими двома функціями можна визначити три варіанти

опису рішення задачі "максимум із шести":

1) max(найбільше(a,b,c), найбільше(d,e,f))2) max(max(a, max(b,c)), max(d, max(e,f)))3) найбільше(max(a,b), max(c,d), max(e,f))

6.3. Основні визначення.

Визначення 6.1. Символом називається відмінне від числа ім'я, щоскладається з букв, цифр і спеціальних знаків та позначає деякий об'єктдійсності.

Визначення 6.2. Атомарними об'єктами або просто атомаминазивають найпростіші об'єкти, з яких будуються інші структури.

Визначення 6.3. До констант відносять логічні значення T і NІL.Іноді до множини констант відносять також числа. У цьому випадкуговорять про здатності символу позначати об'єкти. Якщо символ можепозначати більше одного об'єкта, то його розглядають як змінну.

Визначення 6.4. S-виразами (рис. 6.1) називають символьні вирази,які утворюють області визначень і області значень функцій Ліспа.

Рис. 6.1. Різнотипи S-виразів

Page 132: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

132

6.3.1. Списки як засіб подання знань. Атоми й списки є основнимитипами даних у Ліспі.

Визначення 6.5. Списком у Ліспі називають впорядкованупослідовність S-виразів, укладену в круглі дужки. Елементи спискувідокремлюються один від одного пробілами.

Приклад 6.2.(a b c) – список із трьох елементів,((a b c)) – список з одного елемента,((a b) c) – список із двох елементів.

Однією з відмінних рис Ліспа є єдина форма подання даних іпрограмного коду (функцій). Для позначення списку, використовуваногояк дані, і блокування обчислень у Ліспі визначена функція QUOTE:

(QUOTE (a b c)) ⇔‘(a b c)

Якщо ж блокування обчислень нема, то (a b c) – це виклик функції з ім'ямa і фактичними параметрами b,c.6.3.2. Вбудовані функції Ліспа.

Арифметичні (+, -, *, /)Логічні (AND, OR, NOT)Ділення виконується з точністю до сьомого знака. Наприклад : (/ 1 3)Результат :0.3333333Оскільки Лісп є декларативною мовою, то в ньому використається

предикативна (префіксна) форма запису. Для порівняння у Паскаля –інфіксна форма запису:

Паскаль. Лісп.a + b (+ a b)(a + b)/(b - c) (/ (+ a b)(- b c))a and b and c (and a b c)

6.3.3. Базові функції обробки списків. У Ліспі для побудови, розбору йаналізу списків існують прості базові функції, до яких зводяться символьніобчислення і які в нотації даної мови слід розглядати як систему аксіом(алгебру обробки списків). До базисних функцій обробки символьнихвиразів відносять:

· Функції-селектори CAR (вимовлється, кар) і CDR (вимовлється,кудр), що повертають елемент об’єкту даних: перший – головусписку, другий – хвіст списку.

· Функцію-конструктор CONS, що будує новий список з переданих їйяк аргументи довільного S-виразу і списку. При цьому перший

Page 133: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

133

аргумент включається в список-результат як голова, другий – вякості хвоста.

· Предикати ATOM, EQ, EQUAL.

Взаємозв’язок між конструкторами і селекторами:· Функції CAR і CDR є зворотними до конструктора CONS;

· (CONS (CAR ‘(a b c))(CDR ‘(a b c))) дає початковий список ‘(a b c)

Шляхом комбінації селекторів CAR і CDR можна виділяти довільніелементи списку. У Ліспі допускається скорочений запис композиціїкількох селекторів у вигляді одного виклику функції. Багатократні CAR-CDR обчислюються в зворотному порядку:

Cааr ((A) B C) – A – двічі CARCadr (A B C) – B – спочатку CDR, а потім CARCaddr (A B C) – C – двічі CDR, а потім CARCadadr (A (B C) D) – C – двічі повтор (CDR, а потім CAR)

Приклад 6.3.Дано. Список списків ‘((a b)(1 2)(3 4 5 6)(7 8 9) 10)Потрібно. Виділити другий елемент третього підсписку.Рішення. Виділяємо третій підсписок, а потім другий елемент цьогопідсписку: спочатку хвіст хвоста списку, а потім голову хвоста головипопереднього підсписку:(CAR (CDR (CAR (CDR (CDR ‘((a b)(1 2)(3 4 5 6)(7 8 9) 10))))))Скорочений запис: (CADAR (CDDR ‘((a b)(1 2)(3 4 5 6)(7 8 9) 10)))6.3.4. Конструювання списків у Ліспі. Крім примітивних функцій CAR,CDR і CONS списочного асемблера (рівня комірок пам'яті віртуальноїЛісп-машини), для побудови списків у Ліспі існують функції вищого рівня:

· cons завжди бере два аргументи й поміщає перший у початокдругого.

· lіst бере один або більше аргументів й утворює список, поміщаючиаргументи в дужки.

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

еквівалентний суперпозиції викликів cons, причому другим аргументомостаннього виклику є nіl, що є основою для нарощування списку.

Приклад 6.4. (list ‘a ‘b c) еквівалентно (cons ‘a (cons ‘b (cons ‘c nil)))Результат: (a b c)

Page 134: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

134

6.3.5. Виділення елемента списку. Для реалізації за допомогою селекторіві їхньої суперпозиції вибірки елементів списків у Коммон Ліспі існуютьфункції виділення заданого елемента: FІRST, SECOND, THІRD,FOURTH, ... і більш загальна функція NTH, що виділяє n-й елементсписку: (nth n список). Варто пам'ятати, що функція nth перерахунокелементів списку починає із нуля.

Приклад 6.5. (nth 5 '(1 2 3 4 5)) дає nіl, (nth 4 '(1 2 3 4 5)) дає 5.

Останній елемент списку можна виділити за допомогою функції last.При цьому виклик (last список) дає останній непорожний хвіст спискусписок.

Приклад 6.6.(last ‘(1 2 3)) дає (3)(car (last ‘(1 2 3))) повертає останній елемент списку, тобто 3.

6.3.6. Предикатні функції.Визначення 6.6. Предикатами у функціональному програмуванніназиваються функції, які перевіряють виконання деякої умови іповертають логічне значення T або NІL.

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

Предикат ATOM перевіряє, чи є аргумент атомом.

(atom S-вираз) повертає T, якщо S-вираз є атомом, інакше – NІL.

Предикат EQ перевіряє тотожність двох атомарних S-виразів.

(eq ‘a ‘b) дає NIL, (eq ‘a ‘a) дає T, (eq a a) дає T, (eq 1 1) дає T, але (eq ‘(1 2)‘(1 2)) дає NIL, оскільки ‘(1 2) не є атом.

Предикат EQUAL перевіряє тотожність довільних S-виразів.

(equal ‘(1 2) ‘(1 2)) дає T, (equal ‘(1 2) ‘(2 1)) дає NІL.

Варто зазначити, що (EQUAL список NIL)⇔(NULL список)

6.4. Неіменовані і іменовані функції Ліспа.

6.4.1. Неіменовані функції. Визначення функцій й їхнє обчислення в Ліспізасновано на лямбда-численні Черча, у якому функція записується внаступному виді: lambda(x1, x2, ... ,xn).fn

Page 135: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

135

В Ліспі числення Черча використається для визначення обчислень іопису параметрів функцій у формі:

(lambda (x1 x2 ... xn) fn)

де символ lambda означає, що йдеться про визначення продукованихфункцією дій. Символи xі є формальними параметрами визначення, якііменують аргументи в тілі функції fn. Тілом функції fn є довільна форма,значення якої може обчислити інтерпретатор Ліспа.

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

Визначення 6.7. Лямбда-вираз – це визначення обчислень і параметрівфункцій у чистому виді без фактичних параметрів:

(lambda (<список формальних параметрів>)<тіло функції>).

Для застосування описаної в такий спосіб функції до деякихаргументів a1,...,an необхідно у виклику функції поставити лямбда-виразна місце імені функції:

(< лямбда-вираз> a1 a2 ... an).

Таку форму виклику називають лямбда-викликом.Якщо обчислювати значення аргументів не потрібно, то таку

функцію слід визначати за допомогою nlambda-виразу (від англ. No-spreadlambda) :

(nlambda(<список формальних параметрів>)<тіло функції>)

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

Порядок обчислення лямбда-викликів:1. Обчислюються значення фактичних параметрів.2. Виконується зв'язування параметрів: перший формальний параметрзв'язується з обчисленим значенням першого фактичного, другийформальний параметр зв'язується з обчисленим значенням другогофактичного і т.д.3. Виконується тіло лямбда-виразу. Отримане значення повертається якзначення всього лямбда-виклику.4. Розривається зв'язок між формальними і фактичними параметрами.

Page 136: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

136

Примітка. lambda і nlambda-виклики можуть бути вкладеними.

Приклад 6.7 вкладеного лямбда-виклику:

((lambda(x) ((lambda(y) (cons x y)) (cdr '(a b c)))) (car '((d e f))))у якого:

· (lambda(x) ((lambda(y) (cons x y)) (cdr '(a b c)))) – лямбда-вираззовнішнього рівня, х – його список формальних параметрів, а йоготіло функції: ((lambda(y) (cons x y)) (cdr '(a b c))));

· (car '((d e f))) – фактичні параметри зовнішнього лямбда-виклику.

((lambda(y) (cons x y)) (cdr '(a b c))) – вкладений лямбда-виклик, у якого:· (lambda(y) (cons x y)) – лямбда-вираз внутрішнього рівня, у – його

список формальних параметрів, а його тіло функції: (cons x y)· (cdr '(a b c)) – фактичні параметри внутрішнього лямбда-виклику.

В процесі пошуку рішення:х набуває значення (d e f),y набуває значення (b c),а результат: ((d e f) b c).

Приклад 6.8 вкладеного nlambda-виклику:

((nlambda(x) ((lambda(y) (cons x y)) (cdr '(a b c)))) (car '((d e f))))у якого:

· (nlambda(x) ((lambda(y) (cons x y)) (cdr '(a b c)))) – nlambda-вираззовнішнього рівня, х – його список формальних параметрів, а йоготіло функції: ((lambda(y) (cons x y)) (cdr '(a b c))));

· (car '((d e f))) – фактичні параметри зовнішнього nlambda-виклику.

((lambda(y) (cons x y)) (cdr '(a b c))) – вкладений лямбда-виклик, у якого:· (lambda(y) (cons x y)) – лямбда-вираз внутрішнього рівня, у – його

список формальних параметрів, а його тіло функції: (cons x y)· (cdr '(a b c)) – фактичні параметри внутрішнього лямбда-виклику.

В процесі пошуку рішення:х набуває значення (car '((d e f))),y набуває значення (cdr '(a b c)),а результат: ((car '((d e f))) (cdr '(a b c))).

6.4.2. Іменовані функції. Для багаторазового виклику однієї й тієї жфункції, але з різними фактичними параметрами функцію необхідноіменувати. Дати ім'я й визначити нову функцію можна за допомогоюфункції DEFUN :

Page 137: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

137

(defun <ім'я> <лямбда-вираз>)

Після такого визначення функції її виклик здійснюється по імені:

(<ім'я> <список фактичних параметрів>)

Приклад 6.9 функції обчислення суми квадратів:Визначення функції: (defun squaresum (x y) (+ (* x x) (* y y)))Виклик: (squaresum 3 4)Результат: 25

Приклад 6.10 іменованої функції :Визначення функції:(defun f1 (list1 list2)((lambda (x y)((atom x) y)((atom y) x)(cons x y))(car list1) (cadr list2)))Виклик: (f1 ‘(1 2) ‘(3 4))Результат: 4

Функція DEFUN з'єднує символ імені функції з лямбда-виразом,після чого символ починає представляти (іменувати) визначені цимлямбда-виразом обчислення.

У сучасній нотації для зручності виключені зовнішні дужки лямбда-виразу і сам символ LAMBDA :

(defun <им'я> (<список формальних параметрів>) <тіло функції>)Тіло функції складається з послідовності завдань. Завдання можуть

бути двох типів: прості та умовними. Будь-яке завдання береться в круглідужки і може розглядатися як список виразів, які треба проінтерпретувати.

Якщо завдання є атомом або його перший елемент є атомом, то такезавдання називається простим. Наприклад, (CONS ‘NR LST).

Якщо перший елемент списка, який описує завдання не є атомом, тотаке завдання називається умовним. Наприклад, ((ATOM lst) (CONS exprlst)).

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

Page 138: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

138

Приклад 6.11 скороченого запису визначеня для f1:

(defun f2 (list1 list2)((atom (car list1)) (cadr list2))((atom (cadr list2)) (car list1))(cons (car list1) (cadr list2)))

Конструктор функцій LABEL. Відповідність між ім'ям функції і їївизначенням можна задати за допомогою спеціального конструкторафункцій LABEL, перший аргумент якого – ім'я функції, другий – власневизначення функції. Формальним результатом LABEL є її першийаргумент, що стає об'єктом другої категорії, тепер це ім'я нової функції.(LABEL третій ім'я нової функції (LAMBDA (x) параметри функції (CAR (CDR (CDR x))) тіло функції) )

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

Відповідність між ім'ям функції і її визначенням може бути змінено,подібно тому, як міняється відповідність між ім'ям змінної і її значенням.

6.5. Числові функції.

Числові функції виконують основні математичні операції над цілимита дробовими числами. Користувач може обрати для роботи точну абонаближену раціональну арифметику.

Примітивними числовими функціями є додавання, віднімання,множення та ділення. В мові програмування Лісп вони є n-арними, тобтокількість їхніх аргументів необмежена. Синтаксис числових функційнаступний:

1. (+ num1 num2 ... numM) 3. (* num1 num2 ... numM)2. ( - num1 num2 ... numM) 4. (/ num1 num2 ... numM)Функція додавання повертає суму своїх аргументів. Функція

віднімання повертає різницю першого аргумента та суми всіх іншихаргументів. Функція множення повертає добуток своїх аргументів.Функція ділення повертає частку від ділення першого аргумента надобуток інших аргументів.

(+ 2 4 6 7) (- 20 3 5 6) (* 2 4 6) (/ 24 2 2 3) 19 6 48 2

Page 139: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

139

Функції збільшення та зменшення:1. (ADD1 n). Повертає значення, яке на одиницю більше за аргумент.2. (SUB1 n). Повертає значення, яке на одиницю менше за аргумент.3. (INCQ sym n) Збільшує значення символа sym на число n.4. (DECQ sym n) Зменшує значення символа sym на число n.

Є великий набір арифметичних, логічних, булевих, ірраціональних татрансцендентних функцій.

Аргументи тригонометричних функцій задаються в радіанах.(EXP x) експонента ex

(EXPT x y) ступінь xy

(LOG x y) логарифм logyx. Якщо y не задано, основа вважається e.(LN x) натуральний логарифм(SQRT x) квадратний корінь(ISQRT x) ціла частина з квадратного кореня(SIN x) та (ASIN x) сінус та арксінус(COS x) та (ACOS x) косинус та арккосинус(TAN x) та (ATAN x) тангенс та арктангенс(RANDOM n) генерується натуральне число, менше за n.

6.6. Керуючі структури

6.6.1. Функції присвоювання застосовуються для надання значеньпрограмним змінним. До них відносяться:

1. (SET symbol object) – заміна символа об’єктом2. (SETQ sym1 form1 sym2 form2 ... ) – також виконує присвоювання,

але не потребує використання апострофа у префіксі3. (POP symbol) – повертає вершину стека (списку)4. (PUSH symbol form) – кладе символ symbol в стек (список) form5. LET – одночасно присвоює значення декільком символам. Формат

твердження let:

(let ((var1 value1) (var2 value2) … (varМ valueМ)) form1 form2 … formN) –локальні змінні var1, var2, ...varМ зв'язуються одночасно зі значеннямиvalue1, value2, ..., valueМ. Обчислюються послідовно форми form1, form2,…, formN. У якості значення всього твердження let вертається значенняобчисленої форми form_N.

Приклад 6.12 використання функції let.(let ((x 3) (y 4)) (sqrt (+ (* x x) (* y y))))5.0

6.6.2. Опис структур.Послідовність обчислень організується функціями

Page 140: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

140

prog1, prog2, … progn.

Кожна з них може працювати із різним числом форм, виконуючі їхніобчислення, але повертає значення цілком конкретної форми:

(PROG1 <form1> <form2> ...... <formn>) – повертає значення form1(PROG2< form1 > < form2 > ...... < formn >) – повертає значення form2( PROGN < form1 > < form2 > ...... < formn >) – повертає значення formn

В обчисленнях звичайно використається неявний progn, коли тілофункції складається з послідовності форм, яка визначає послідовність дій,чиїм результатом є значення останньої форми. Наприклад, функція,визначена у такій формі:

( defun < ім'я функції > < список параметрів > < form1 form2 .... formn > )поверне значення formn.

Розгалуження. Функція cond призначена для організаціїрозгалуження. Формат функції cond виглядає в такий спосіб:(cond(p1 а1)(p2 а2)(p3 а3)…(pN аN)(а(N+1)))де предикатами pi та результуючими виразами аi можуть бути довільніпослідовності форм. Алгоритмічний аналог цієї функції демонструєструктура рис. 6.2.

Рис. 6.2. Приклад структури функції розгалуження

Page 141: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

141

Порядок обчислення умовної форми:1. Предикативні вирази pi послідовно обчислюються зверху вниз доти,

поки результатом обчислення одного з pi не буде T.2. Обчислюється результуючий вираз ai та отримане значення

вертається як значення всього cond-твердження.3. Якщо серед значень pi нема істинних і в тілі умови відсутній

результуючий вираз, що відповідає гілці “інакше”, то значеннямCOND буде NIL.

Приклад 6.13. Визначимо із застосуванням розгалуження функціюf2, визначену вище із використанням неявного COND.

(defun f3 (list1 list2)(cond((atom (car list1)) (cadr list2))((atom (cadr list2)) (car list1))(cons (car list1) (cadr list2)))Виклик функції: (f3 ‘(1 2) ‘(3 4))Результат: 4

СOND – найзагальніша умовна функція. Часто користуютьсяпростішими умовними твердженнями:

IF <предикат> < THEN форма> <ELSE форма>

Якщо значення предиката не є NIL, то видається [THEN] форма,інакше видається [ELSE] форма.

Приклад 6.14. Використання IF–THEN–ELSE умовної форми:

(IF (EQL ‘r ‘r) (CAR ‘(q w e r t y)) (CDR ‘(q w e r t y))) — q (IF (EQL ‘r ‘w) (CAR ‘(q w e r t y)) (CDR ‘(q w e r t y))) — (w e r t y)

Умовні функції WHEN і UNLESS є окремими випадками умовноїпропозиції IF:

· Якщо умова дотримується, то виконуються форми.

( WHEN <condition> <form1> <form2> ...... <formn>)

· Якщо умова не дотримується, то виконуються форми.

Page 142: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

142

(UNLESS <condition> <form1> <form2> ...... <formn>).Цикл. Циклічні обчислення в Ліспі виконуються або за допомогою

ітераційних (циклічних) функцій або рекурсивно.do – традиційний цикл. Формат твердження do:

(do ((var1 value1) (var2 value2) … (varn valuen))(condition form_yes_1 form_yes_2 … form_yes_m)form_no_1 form_no_2 … form_no_k)

Твердження do працює в такий спосіб:· спочатку змінним var1, var2, …, varn присвоюються значення

value1, value2, …, valuen (паралельно, як у твердженні let);· потім перевіряється умова виходу із циклу condition. Якщо

умова виконується, послідовно обчислюються форми

form_yes_1, form_yes_2, …, form_yes_m,

і значення останньої обчисленої форми form_yes_m вертається в якостізначення всього твердження do;

· якщо умова condition не виконується, послідовнообчислюються формиform_no_1, form_no_2, …, form_no_k,і знов виконується перехід до перевірки умови condition виходу із циклу.

Приклад 6.15. Використання функції do: для зведення x у ступінь nза допомогою множення визначена функція power із двома аргументами x іn: x – підстава ступеня, n – показник ступеня.

(defun power (x n)(do ((result 1)) ;присвоювання початкового значення змінної result((= n 0) result) ;умова виходу їх циклу(setq result (* result x)) (setq n (- n 1)))) ;повторювані дії

POWER

(power 2 3) 8

Функція LOOP реалізує нескінчений цикл

(LOOP <форма1> <форма2> ... <формаN> ),

Page 143: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

143

в якому форми повторно обчислюються у послідовному порядку доти,поки не зустрінеться неявний COND з предикатом, не рівним NIL.

Загальна форма визначення деякої функції у формі ітерації:

(defun < ім'я-функції > < список-параметрів > (let (<ініціалізаціязмінної індекса> <ініціалізація змінної результата>) (loop (cond<перевірка індекса на вихід> (return результат)) <зміна змінноїлічильника> <інші дії в циклі, включно зміни змінної результата >)))

Приклад 6.16. Використання функції LOOP у визначенні функціїadd-integer, бере один аргумент, що є позитивним цілим, і повертає сумувсіх чисел між 1 і цим числом:

(defun add-integers (last)(let (( count 1) (total 1)) ;присвоювання початкових значень змінним(loop ;цикл(cond (( equal count last) (return total))) ;умова виходу їх циклу(setq count (+ 1 count)) ;зміна значення змінної(setq total (+ total count))))) ;зміна значення змінної

Приклад 6.17. Використання LOOP. Згідно з наведеною формоюциклічне визначення функції LENGTH обчислення довжини списку маєвигляд.

(DEFUN LENGTH (lst)(SETQ ct 0) ;присвоювання початкових значень змінній ct(LOOP ;цикл((NULL lst) ct) ;умова виходу їх циклу(SETQ lst (CDR lst) ct (+ 1 ct)) ) ) ;зміна значень змінних

6.7. Поняття рекурсії.

6.7.1. Прості рекурсії.

Визначення 6.8. Функція називається рекурсивною, якщо в її тілівтримується виклик цієї функції.

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

Page 144: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

144

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

Основні правила побудови рекурсивних функцій:· визначити кількість і вид аргументів;· визначити характер результату;· задати, щонайменше, одну умову закінчення рекурсії;· визначити формування результату функції;· описати формування нових значень аргументів для рекурсивного

виклику.

Приклад 6.18. Обчислення факторіала n! (рекурсія по аргументу).Кількість аргументів : 1 – ціле число.Результат : ціле число.Умова закінчення рекурсії – нульовий аргумент:

((= n 0) 1)

Формування результату функції: Значення факторіала n! зводиться домноження на n знайденого значення факторіала (n-1)!.

(* (factorial (- n 1)) n)

Опис функції:

(defun factorial (n)(cond((= n 0) 1) ;факториал 0! равен 1(* (factorial (- n 1)) n))) ;факториал n! равен (n-1)!*n

Результат: (factorial 3) є 6.

Приклад 6.19. Копіювання списку (рекурсія по аргументу).Кількість аргументів : 1 – список.Результат : список.Умова закінчення рекурсії – нульовий аргумент:

((null list) nil) ;копією порожнього списку є порожній список

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

(cons (car list) (copy_list (cdr list)))

Page 145: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

145

Опис функції:

(defun copy_list (list)(cond((null list) nil)(cons (car list) (copy_list (cdr list)))))Результат: (copy_list ‘(1 2 3)) є (1 2 3)).

Приклад 6.20. Підсумовування елементів списку (рекурсія поаргументу).Кількість аргументів : 1 – список.Результат : число.Умова закінчення рекурсії – порожній список:

((null list) 0)

Формування результату функції :

(+ (car list) сума хвоста)

Сума хвоста є результат рекурсивного виклику проектованої функції,чиїм аргументом є хвіст списку.Опис функції:

(defun sum (list) ((null list) 0) (+ (car list)(sum (cdr list))))

Результат: (sum ‘(9 7 5 6 4)) є 31.

Приклад 6.21. Приналежність списку (рекурсія по аргументу).Кількість аргументів: 2 – довільний s-вираз (obj) і список (lst).Результат: значення T (істина), або NIL (лож).Умов закінчення рекурсії дві:

((null lst) nil) – порожній список, об'єкт не знайдений (результат NIL).((equal obj (car lst)) T) – об'єкт знайдений (результат T).

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

Page 146: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

146

(defun member (obj lst)((null lst) nil)((equal obj (car lst)) T)(member obj (cdr lst)))

Результат (member 7 ‘(1 2 3 4)) є NIL.Результат (member 3 ‘(1 2 3 4)) є T.

Приклад 6.22. Поєднання списків (варіант 1, рекурсія по аргументу).Кількість аргументів: 2 – списки lst1 і lst2.Результат: список.Умов закінчення рекурсії три:

((and (null lst1)(null lst2)) nil) – обидва списки порожні,((null lst1) lst2) – перший список порожній,((null lst2) lst1) – другий список порожній.

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

(defun append (lst1 lst2)((and (null lst1)(null lst2)) nil)((null lst1) lst2)((null lst2) lst1)(cons (car lst1)(append (cdr lst1) lst2)))

Результат (append ‘(1 2 3 4) ‘(5 6 7 8)) є (1 2 3 4 5 6 7 8)

Приклад 6.23. Поєднання списків (варіант 2, рекурсія по аргументу).Кількість аргументів: 2 – списки lst1 і lst2.Результат: список.Умов закінчення рекурсії дві:

((null lst1) lst2) – перший список порожній,((null lst2) lst1) – другий список порожній.

Результат функції будується аналогічно варіанту 1.Повний опис функції:

(defun append (lst1 lst2)

Page 147: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

147

((null lst1) lst2)((null lst2) lst1)(cons (car lst1)(append (cdr lst1) lst2)))

Приклад 6.24. Поєднання списків (варіант 3, рекурсія по аргументу).Кількість аргументів: 2 – списки lst1 і lst2.Результат: список.Умова закінчення рекурсії одна:

((null lst1) lst2) – перший список порожній.Результат функції будується аналогічно попередньому варіанту 2.

Повний опис функції:

(defun append (lst1 lst2)((null lst1) lst2)(cons (car lst1)(append (cdr lst1) lst2)))

6.7.2. Інші види рекурсії. Рекурсію можна назвати простою, або рекурсієюпершого порядку, якщо у функції присутній лише один рекурсивнийвиклик.

Якщо рекурсивний виклик наявний у функції більш, ніж один раз,розрізняють наступні види рекурсії:

1. паралельна рекурсія – тіло визначення функції funct1 містить викликдеякої функції funct2, кілька аргументів якої є рекурсивнимивикликами функції funct1

(defun funct1 … (funct2 … (funct1 …) … (funct1 …) … ) … )2. взаємна рекурсія – у тілі визначення функції funct1 викликається

деяка функція funct2, яка, у свою чергу, містить виклик функціїfunct1

(defun funct1 … (funct2 … ) … )(defun funct2 … (funct1 … ) … )

3. рекурсія більш високого порядку – у тілі визначення функціїаргументом рекурсивного виклику є рекурсивний виклик

(defun funct1 … (funct1 … (funct1 …) … ) … ).

Приклад 6.25. Паралельна рекурсія: копіювання списків в глибину(тобто вкладених списків).Кількість аргументів: 1 – список list.Результат: список.Умов закінчення рекурсії дві паралельні:

((null list) nil) ;копією порожнього списку є порожній список((atom list) list) ;копією элемента-атома є елемент-атом

Page 148: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

148

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

(defun full_copy_list (list)(cond((null list) nil)((atom list) list)(cons (full_copy_list (car list)) (full_copy_list (cdr list))))))

Результат (full_copy_list '(((1) 2) 3)) є (((1) 2) 3).

Приклад 6.26. Обчислення функції Фібоначчі (деревовидна рекурсія[2]). Послідовність чисел, кожен елемент якої дорівнює сумі двохпопередніх, два перші елементи якої дорівнюють 0 і 1 відповідно,називається послідовністю Фібоначчі.Кількість аргументів: 1 – ціле число.Результат : ціле число.Умови закінчення рекурсії - дві:

((= n 0) 0) ; для n= 0 число Фібоначчі F(n) дорівнює 0((= n 1) 1) ; для n= 1 число Фібоначчі F(n) дорівнює 1

Формування результату функції: N-те число послідовностіФібоначчі F(N) може бути знайдене за рекурсивною формулою:

F(N) = F(N-1) + F(N-2).

Оце математичне визначення функції перетворюється Лісп-описбезпосередньо:

(defun fibon (n)((= n 0) 0) ((= n 1) 1)(+ (fibon (- n 1)) (fibon (- n 2))))

Результат: (fibon 20) є 10946.

Приклад 6.27. Рекурсія більш високого порядку – другого.Класичний приклад функції з рекурсією другого порядку – функціяАккермана.

Математично функція Аккермана визначається в такий спосіб [2]:

Page 149: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

149

ackerman (x, 0) = 0ackerman (0, y) = 2 yackerman (х, 1) = 2ackerman (x, y) = ackerman ((x-1), ackerman (x, (y-1))

Наведеному математичному опису відповідає Лісп-визначення функції:

(defun (ackerman x y)(cond ((= y 0) 0) ((= x 0) (* 2 y)) ((= y 1) 2) ((ackerman (- x 1) (ackerman x (- y 1))))))

Процеси виведення для різних значень аргументів:1) (ackerman 1 2) = (ackerman 0 (ackerman 1 1)) = (ackerman 0 2) = 42) (ackerman 2 1) = (ackerman 1 (ackerman 2 0)) = (ackerman 1 0) = 03) (ackerman 2 2) = (ackerman 1 (ackerman 2 1)) = (ackerman 1 2) == (ackerman 0 (ackerman 1 1)) = (ackerman 0 2) = 44) (ackerman 3 2) = (ackerman 2 (ackerman 3 1)) = (ackerman 2 2) = 45) (ackerman 2 3) = (ackerman 1 (ackerman 2 2)) = (ackerman 1 4) == (ackerman 0 (ackerman 1 3)) = (ackerman 0 (ackerman 0 (ackerman 1 2))) == (ackerman 0 (ackerman 0 (ackerman 0 (ackerman 1 1)))) == (ackerman 0 (ackerman 0 (ackerman 0 2))) = (ackerman 0 (ackerman 0 4)) == (ackerman 0 8) = 16.

6.8. Поняття функціонала.

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

Дані й програми в Ліспі представляються однаково, а відмінність міжними визначається не за їхньою структурою, а залежно від їхньоговикористання:

· якщо аргумент функції є лише пасивним об'єктом обчислення, то вінналежить до даних;

· якщо ж він є активним засібом, що визначає обчислення, то він єфункцією.

Приклад 6.28.(car ‘(lambda (x)(list x))) ➙ LAMBDA, lambda – дані;

((lambda (x)(list x)) car) ➙(car), lambda – функція.

Page 150: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

150

Визначення 6.9. Аргумент, значенням якого є функція, уфункціональному програмуванні називають функціональним аргументом.

У ролі функціонального аргументу може виступати :• і'мя функції, з яким зв'язаний опис,• лямбда-вираз

‘(lambda (<список формальних параметрів>) <тіло лямбда-виразу>)

• всякий лісповський об'єкт, значенням якого є функція.

Приклад 6.29. Результатом виклику

(list ‘lambda ‘(x)(list ‘list ‘x))

буде лямбда-вираз:

(lambda (x) (list x))

Визначення 6.10. Функціоналом називається функція, аргумент якоїможе бути інтерпретований як функція.

Аргументом функції може бути функція. Однак, функція може бути ірезультатом деякої функції, які називають функціями з функціональнимзначенням.

Визначення 6.11. Функціоналом з функціональним значеннямназивається функціонал, виклик якого повертає нову функцію в якостірезультату.

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

Визначення 6.12. Апплікативним або застосовуючим функціоналомназивається функція, яка дозволяє застосовувати функціональний аргументдо його параметрів.

У Ліспі є 3 застосовуючих функціонала: apply, funcall, eval.· APPLY застосовує функцію до списку аргументів.· FUNCALL викликає функцію з аргументами.· EVAL – викликає інтерпретатор Ліспа.

APPLY – функція двох аргументів, з яких перший є функцією, яказастосовується до елементів списку – другого аргументу:

(apply <функція> <список>).

Приклад 6.30.

Page 151: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

151

(apply ‘+ ‘(2 3)) дає в якості результату 5.

FUNCALL по своїй дії аналогічний APPLY, але аргументи для функції, щоним викликається, він приймає не списком, а окремо:

(funcall <функція> <арг1> … <аргN>).

Приклад 6.31.

(funcall ‘+ 2 3) дає в якості результату 5.(funcall ‘+ ‘(2 3)) дає в якості результату (2 3).

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

Слід зазначити, що функціональним аргументом може бути тільки“справжня” функція. Спеціальні форми, такі як QUOTE, SETQ і макросидля цих цілей не підходять.

EVAL – це універсальна функція Ліспа, яка може обчислитидовільний правильно побудований вираз.

· Якщо об’єкт – атом, функція повертає зміст комірки значенняоб’єкту.

· Якщо CAR-елемент об’єкта є іменем обчислюваної функції абоLAMBDA, обчислює кожний елемент CDR-частини об’єкта і додаєCAR-елемент об’єкта до списку результатів.

· Якщо CAR-елемент об’єкта є іменем необчислюваної функції, EVALдодає CAR-елемент об’єкта до CDR-елемента об’єкта безобчислення останнього.

· Якщо CAR-елемент об’єкта є макрофункцією, EVAL рекурсивнообчислює результат додавання CAR-елемента об’єкта до його CDR-елемента.

· Якщо CAR-елемент не є функцією, EVAL повертає помилку“невизначена функція” та генерує переривання по помилці.

6.9. Сводка синтаксису обчислюваних форм ЛІСПу.

<форма> ::= <змінна>| (QOUTE <S-вираз>)| (COND (<форма> <форма>) ... (<форма> <форма>))| (<функція> <аргумент> ...)

<аргумент> ::= <форма><змінна> ::= <ідентифікатор>

Page 152: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

152

<функція> ::= <ім'я>| (LAMBDA <список_змінних> <форма>)| (LABEL < ім'я > <функція>)

<список_змінних> ::= (<змінна> ... )< ім'я > = < ідентифікатор>< ідентифікатор > ::= <атом><S-вираз> ::= <атом>

| (<S-вираз> . <S-вираз>)| (<S-вираз> ... )

<атом> ::= <БУКВА> <кінець_атома><кінець_атома> ::= <пусто>

| <БУКВА> <кінець_атома>| <число> <кінець_атома>

6.10. Обробка списків і штучний інтелект.

6.10.1. Дві дати.1956 р. – А. Ньюелл, Дж. Шоу і Г. Саймон розробляють мову IPL обробкисписків для обчислювальної машини Johnniac фірми Rand Corporation івикористовують при програмуванні виводу теорем логіки. Завдяки IPLнародилася ідея зберігання даних у пам'яті у вигляді спискових структурнезалежно від їхнього фізичного розташування.1958 р. – перша реалізація інтерпретатора Ліспа Джоном Маккарті на ЕОМIBM 704 в Массачусетськом технологічному інституті (MIT). Длясимвольних ланцюжків в IPL були запропоновані: скобкова формаподання, ієрархічний списковий запис, а також точкова нотація. Звикористанням поняття порожнього списку (NIL) удалося визначитиосновні алгебраїчні дії по обробці списків, а також примітивні функції йпредикати аналізу, конструювання й порівняння списків: CAR, CDR,CONS, ATOM і EQ. З лямбда-числення Черча для визначення функцій бувзапозичений лямбда-вираз.6.10.2. muLISP90. Система програмування muLISP-90 є "маленький Lisp",для сумісності з Common Lisp включає пакет, що містить більш 450спеціальних форм, макросів, функцій і керуючих змінних Common Lisp.

mulisp90 включає екранний редактор, відладчик (debugger), віконнусистему, інтерпретатор і компілятор. Серед численних прикладів програм єDOCTOR (" Eliza-Подібна" програма). Система реального часу (run-timesystem) дозволяє створювати невеликі EХЕ- або COM- файли. Вонавикористовує компактне внутрішнє подання коду, що забезпечуємінімізацію пам'яті й збільшення швидкості виконання. Ядро системизаймає близько 50K.6.10.3. Visual LISP і Autocad. Поряд з muLISP іншим доситьрозповсюдженим на сьогоднішній день діалектом Ліспа є Autolisp, на

Page 153: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

153

якому написано математичне забезпечення САПР Autocad. Символьнаобробка і методи ООП щонайкраще підходять для обробки малюнків ікреслень. За синтаксисом і угодах Autolisp найбільшою мірою близький доCommon Lisp. Autolisp належить до інтерпретуємих мов.

Для роботи з Autolisp в Autocad 2000 з'явився новий інтерфейс,називаний Visual LISP. Visual LISP – потужне інтегроване середовищерозробки програм мовою Autolisp. Поряд з лісповським “ядром” до їїскладу входять ряд додаткових функцій, що відбивають специфікуAutocad. Сюди відноситься організація введення даних різного типу(GETANGLE – уведення кута, GETPOINT – уведення точки), геометричніобчислення (відстань між точками тощо), перетворення систем координат,доступ до примітивів Autocad.6.10.4. HomeLisp. HomeLisp 13.4.1 – простий, вільно розповсюджуваний Ліспна платформі Windows! (розробник Файфель Б.Л. [4]).

На Homelisp можна без великих труднощів робити майже все, щопотрібно від системи програмування в середовищі Windows – є засобиграфіки, роботи з файлами (включаючи двійковий доступ), обробки рядків,створення Com-об'єктів.

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

Homelisp дозволяє будувати файли, що виконуються автономно(т.зв. псевдо-exe-файли). Такий файл містить код ядра Ліспа, усі необхідніфункції й може запускатися на будь-якій машині без установки на нійHomelisp. Достатньо наявності віртуальної машини VB6(MSVBVM60.DLL) і деяких стандартних Мікрософтовських компонент.

Homelisp включає три незалежні програмні компоненти:· інтегроване середовище розробки (IDE) Homelispide.Exe, що містить

ядро мови, текстовий редактор, конструктор діалогів (екраннийдизайнер), побудовник Exe-файлів і скромні засоби налагодження;

· Activex-exe бібліотеку Homelisplib.Exe, яка дозволяєвикористовувати мову Лісп у будь-якому середовищі програмування,що підтримує COM-автоматизацію (наприклад, з Microsoft Excel), атакож засоби для написання скриптів мовою Лісп!

· Web-компоненту Homelispweb.Exe для роботи в середовищі Web-сервера IIS, яка дозволяє будувати учбовий клас для вивчення Ліспа.При цьому Web-компонента інсталюється лише на сервері.

Характеристика різних мов функціонального програмуваннянаведена в багатьох публікаціях, наприклад в [5].

Page 154: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

154

Запитання для самоперевірки

1. Списки як засіб подання знань.2. Базові функції обробки списків.3. Функції конструювання списків у Ліспі.4. Вбудовані функції Лісп.5. Вмонтовані у Лісп числові функції.6. Логічні функції в Ліспі.7. Визначення неіменованих функцій у Ліспі.8. Визначення іменованих функцій у Ліспі.9. Сформулювати відмінність предикатів типу у Ліспі: atom, symbolp,

listp та number.10.Керуючі структури у Ліспі.11.Функції розгалуження.12. Поняття рекурсивних визначень та приклади.13.Різновиди рекурсивних визначень.14.Поняття і різновиди функціоналів.15. Синтаксис обчислювальних форм Ліспа.16. Поширені системи Лісп-програмування.

Література до 6-го розділу

1. Морозов М.Н. Функциональное программирование: курс лекций /М.Н. Морозов. – 2001. – 109 с.

2. Абельсон Х. Структура и интерпретация компьютерных програм / Х.Абельсон, Дж. Дж. Сассман. – 2-е изд.; пер. с англ. – Добросвет,2004. – 576 с.

3. Новицкая Ю.В. Основы логического и функциональногопрограммирования: учеб. пособие / Ю.В. Новицкая. – Новосибирск,2006. – 60 с.

4. Файфель Б.Л. Homelisp 13.4.1 [Електронний ресурс]. – Режимдоступу: http://homelisp.ru/

5. Масленникова О.Е. Основы искусственного интеллекта: учеб.пособие / О.Е. Масленникова, И.В. Попова. – Магнитогорск : МаГУ,2008. – 282 c.

Page 155: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

155

7. Вирішувачі проблем, засновані на знаннях

7.1. Інженерія знань.

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

· внутрішня інтерпретовність;· структурованість;· зв’язність;· активність.

Сукупність засобів роботи із знанням, утворює систему управліннябазою знань (СУБЗ), розробка яких зараз посилено розбудовується.

Обробка знань – одна зі сфер практичного застосування ШІ, що длярішення проблем припускає використання комп'ютером знань, якимиволодіє людина [1].

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

· база знань є машинною формою подання моделей предметнихобластей скінченого обсягу й довільної складності:

o ізоморфних зв'язкам і відношенням між предметами і явищамидеякого фрагмента дійсності,

o нейтральних до вирішуємих задач,o відкритих для аналізу, доповнень, змін,o готових для ефективної цілеспрямованої активізації й

застосування до даних в процесі рішення задач;· машина виводу, яка:

o формує й здійснює процес рішення задач, застосовуючи знаннядо даних,

o формує результат, що є наслідком цього процесу,o підтримує функції системи керування знаннями, системи

спілкування й взаємодії та інтерфейсу;· система керування знаннями, яка:

o управляє процесом рішення задач, формуючи завдання машинівиводу цілеспрямованою активізацією знань,

o виконує завдання машини виводу, завдання системиспілкування й взаємодії, і повертає отримані результати;

Page 156: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

156

· система спілкування й взаємодії здійснює в діалозі з користувачамий/або зовнішнім середовищем:

o контроль і діагностику машини виводу;o редагування, накопичення знань,o відпрацювання й верифікацію баз знань, представлених у мові

подання знань,o постановку й рішення задач,o пояснення результатів;o навчання користувачів можливостям і технології використання

СОЗ для рішення проблем, знанням предметної області;· інтерфейс здійснює двоспрямований переклад між мовою подання

знань і мовою (мовами) користувачів й/або зовнішнього середовищавхідних і вихідних повідомлень системи спілкування й взаємодії.

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

Сукупність істотних ознак СОЗ, наведених у визначенні 7.1, їхнійсклад, структура і смисл для конкретних систем відповідають споживчимознакам цих систем.

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

Наступне упорядковує різновиди СОЗ до деякого рівня деталізації.

Ø По готовності до використання:v розробницького типу:

ü підтримки постановки й рішення проблем з побудовоюмоделей,

ü орієнтовані на проектування різновиду прикладноїсистеми:

· експертних систем,· систем розпізнавання тексту в документообігу,· систем діалогу й пошуку природньою мовою (в

інформаційних і керуючих системах), у тому числі,з мовним спілкуванням,

Page 157: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

157

· систем прогнозування (в екології, фінансах іекономіці),

· інтелектуальних роботів (індустріальних,мобільних, гуманоїдних, андроїдів, військових),

· штучних особистостей (в іграх, в Інтернеті),· багатоагентних систем,· інших різновидів систем.

v прикладні системи:ü експертні системи,ü системи розпізнавання тексту в документообігу,ü системи діалогу й пошуку природньою мовою (в

інформаційних і керуючих системах), у тому числі, змовним спілкуванням,

ü системи прогнозування (в екології, фінансах і економіці),ü інтелектуальні роботи (індустріальні, мобільні,

гуманоїдні, андроїди, військові),ü штучні особистості (в іграх, в Інтернеті),ü багатоагентні системи,ü інші різновиди прикладних систем.

Ø За складом і функціям компонент.Ø По моделі представлення знань:

v символьні (фрейми, продукції, семантичні мережі, теоритичні,змішані),

v нейроподібні,v гібридні.

Ø За мовою представлення знань.Ø За реалізацією мови представлення знань і/або компонент СОЗ:

v програмні:ü мовою високого рівня,ü мовою надвисокого рівня (ЛІСП, Пролог).

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

Всі процеси існування знань в суспільстві підпорядковуються деякійглобальній системі управління знаннями (рис. 7.1), невід'ємною складовоюякої є інженерія знань.

Інженерія знань – це наука про методи й технології одержання,структурування й формалізації даних і знань для ефективного управління йрозробки автоматизованих систем [2].

Page 158: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

158

Рис. 7.1. Управління знаннями

В межах загального процессу отримання знань (рис. 7.2) розрізняютьтри основні стратегії отримання знань при розробці систем [3]:

1. Вилучення знань (knowledge elicitation) – це процедурабезпосередньої взаємодії інженера по знаннях із джерелом знань, врезультаті якої стають явними процеси міркувань спеціалістів приприйнятті рішень і структура їхньої уяви про предметну область.

2. Придбання знань (knowledge acquisition) – це процес наповненнябази знань експертом із використанням спеціалізованих програмнихзасобів комп'ютерів.

3. Формування знань (machine learning) – це процес аналіза даних івиявлення схованих закономірностей із використанням спеціальногоматематичного апарату і програмних засобів при наявностірепрезентативної виборки прикладів прийняття рішень.Ідентифікація

проблемиОтримання

знань Структурування

Без застосуваннякомп'ютерів

Із застосуваннямкомп'ютерів

Вилученнязнань1 Придбання

знань2 Формуваннязнань3

Рис. 7.2. Стратегії отримання знань

Page 159: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

159

7.2. Експертні системи (ЕС) [3-10].

7.2.1. Загальні відомості. За допомогою штучного інтелекту вжевирішено багато практичних задач і створено багато комерційних додатків.

Визначення 7.1. Експертна система – це комп'ютерна програма, якаоперує зі знаннями в певній предметній області з метою виробленнярекомендацій або вирішення проблем.

ЕС поклали початок розвитку "інженерії знань" (технікивикористання знань), є новим підходом до створення високоефективнихпрограмних систем, що несе революційні зміни.

ЕС є дуже успішною реалізацією технології ШІ. Запропонованотакож багато гібридних підходів щодо комбінації методів ЕС з іншимиметодами, такими як генетичні алгоритми й штучні нейронні мережі.

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

ЕС не відкидають традиційного підходу до програмування, вонипропонують технологію й методи рішення неформалізованих задач. Ціметоди практично не залежать від типів розв'язуваних задач.

До переваг ЕС належать [4]:Підвищена доступність: ЕС – це засіб масового виробництва

експертних знань.Зменшені витрати: вартість надання експертних знань

розраховуючи на окремого користувача суттєво знижується.Зменшена небезпека: ЕС можуть використовуватися в середовищі,

яке може бути небезпечна для людини.Сталість: експертні знання зберігаються протягом необмежено

довгого часу.Можливість одержання експертних знань із багатьох джерел.

Об'єднані знання декількох експертів можуть перевищувати знання окремовзятої експерта-людини.

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

Пояснення. ЕС здатна докладно пояснити свої міркування, якіпривели до певного висновку. Ця можливість підвищує довіру доухваленого рішення.

Швидкий відгук. Залежно від використовуваного апаратного йпрограмного забезпечення експертна система може реагувати швидше йбути більш готовою до роботи, ніж експерт-людина.

Page 160: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

160

Незмінно вірна, позбавлена емоцій і повна відповідь при будь-якихобставинах.

Можливість застосування в якості інтелектуальної навчальноїпрограми.

Можливість застосування як інтелектуальної бази даннях, зокремадля аналізу схованих закономірностей у даних.7.2.2. Області застосування ЕС. ЕС використаються у різних областях:бізнесі, виробництві, медицині (діагностика й лікування), інжинірингу,геології (визначення перспективності родовищ), хімії (прогнозуваннявластивостей органічних сполук), військовій справі, електроніці,обчислювальній техніці, математиці, космосі, сільському господарстві,керуванні, фінансовій сфері, бізнесі тощо (рис. 7.3).

Сельское хозяйство

Электроника

Компьютерныесистемы

Коммуникации

Химия

Управлениеинформацией

Наука

Армия

Бизнес

Медицина

Производство

Образование

Инжиниринг

Космос

Транспорт

100 200 300

Рис. 7.3. Області застосування експертних систем [6]

7.2.3. Класи задач, які вирішують за допомогою ЕС. ЕС – це програмнікомплекси, що акумулюють знання спеціалістів в явній формі івикористають їхній досвід для рішення актуальних проблем таким чином,що у змозі замінити людину-експерта в його професійній діяльності.

Page 161: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

161

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

ЕС переважно використаються для рішення тих задач, де непідходить традиційне програмування:

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

Зазвичай, ці задачі мають неповноту, помилковість, неоднозначністьі суперечливість. Для рішення задач в цих умовах ЕС має наступнівластивості:

· алгоритм рішення задачі генерується динамічно;· здатність аналізу й пояснення ходу рішення задачі й результатів;· здатність до придбання нових знань і зміни своєї поведінки;· забезпечення, як правило, природно-мовного інтерфейсу.

Класи експертних систем за ступенем складності розв'язуванихзадач [7]:

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

· по способу врахування часових ознак розрізняють статичні тадинамічні ЕС. Статичні системи вирішують задачі при незмінних упроцесі рішення даних і знань, динамічні системи допускають такізміни та можливість перегляду в процесі рішення отриманих ранішерезультатів і даних;

· по видах використовуваних даних і знань розрізняють системи здетермінованими знаннями і невизначеними знаннями. Підневизначеністю знань (даних) розуміється їхня неповнота,недостовірність (неточність виміру), багатозначність понять,нечіткість (якісна оцінка замість кількісної);

· по числу використовуваних джерел знань ЕС можуть бутипобудовані з використанням одного або множини альтернативних чидоповнюючих джерел знань.

Відповідно до перерахованих ознак виділяють різнотипи класівекспертних систем (рис. 7.4).Аналітичні експертні системи:

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

Page 162: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

162

підстановки вихідних даних у деяку сукупність взаємозалежнихзагальних тверджень виводиться часткове твердження.

· Довизначаючими є ЕС, які аналізуючі задачі вирішують на основіневизначених вихідних даних і застосовуваних знань. У цьомувипадку ЕС повинна як би довизначити відсутні знання, а в просторірозв'язків може бути кілька можливих розв'язків з різноюймовірністю або впевненістю в необхідності їхнього прийняття.

Рис. 7.4. Діаграма класів експертних систем [7]

Синтезуючі експертні системи:· Трансформуючими є ЕС, що для пошуку розв'язку задач

використовуються різновиди гіпотетичного виведення:o породження й перевірки, коли за вхідними даними генеруються

гіпотези з наступною перевіркою на підтвердження новимифактами;

o припущень і умовчань, коли за неповними данимипідбираються знання про аналогічні класи об'єктів зподальшою адаптацією до конкретної ситуації;

o використання загальних (мета) законів для генерації новихзнань.

· Багатоагентні – системи з інтеграцією в базі знань кількохрізнорідних джерел знань, що обмінюються між собою результатами,наприклад, через "дошку оголошень". Для них характерні:

o проведення альтернативних міркувань на основі використаннярізних джерел знань із механізмом усунення протиріч;

o розподілене рішення проблем, декомпозицією їх напідпроблеми, відповідно до різних джерел знань;

Page 163: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

163

o застосування множини стратегій виведення залежно від типупроблеми;

o обробка великих масивів даних із складу бази даних;o використання різних математичних моделей і зовнішніх

процедур;o здатність до переривання розв'язку задач для одержання

додаткових даних і знань. Відносно до змісту задач, що вирішують ЕС, то розрізняють

наступні (рис. 7.5).

Побудова

Специфікація Проектування Сборка

Конфігурування Планування

Підкласи проблем синтезу

Модифікація

Інтерпретація

Ідентифікація Прогнозування Керування

Моніторинг Діагностика

Підкласи проблем аналізу

Рис. 7.5. Різнотипи задач, що вирішують експертні системи [7-9]

Інтерпретація – побудова описів ситуацій згідно спостережуванихданих: розпізнавання, розуміння мови, аналіз зображень, сенсорних даних,структури хімічних речовин, інтерпретація сигналів тощо.

Прогноз – вивід імовірних наслідків з заданих ситуацій, прогнозповедінки системи (політичних відношень, ринку, погоди, врожаю,військових операцій).

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

Проектування – побудова, синтез із наявних компонентівоптимальних проектних рішень об’єктів за заданих обмежень: електроннихсхем, архітектурних проектних рішень, дизайн приміщень тощо.

Планування – проектування плану дій для досягнення деякої мети:дій роботів, військових операцій, автоматизація програмування.

Моніторинг – порівняння спостережуваної й бажаної поведінкисистеми для виявлення порушень в її функціонуванні, запобігання

Page 164: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

164

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

Системи навчання – визначення рівня знань і навчання.Управління – інтерпретація, прогноз, моніторинг, не формальні

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

функціонування системи. Виконання послідовності виправлень.Розподіл відносних частот задач, що вирішують засобами ЕС, має

наступний вигляд (рис. 7.6).

Рис. 7.6. Співвідношення задач, що вирішують експертні системи [6]

7.2.4. Основні лінії розвитку ЕС. Найвідоміші ЕС, розроблені в 60-70-хроках, стали у своїх областях уже класичними. За походженням,предметними областями, спадковістю ідей, методів і засобів їх можнаподілити на кілька сімейств.

1. META-DENDRAL. DENDRAL визначає найімовірну структурухімічної сполуки за емпіричними даними (ядерного магнітногорезонансу, мас-спектрографії, ін.). META-DENDRAL автоматизуєпридбання знань для DENDRAL, генерує правила побудови хімічнихструктур.

2. MYCІN-EMYCІN-TEІREІAS-PUFF-NEOMYCІ – сімействомедичних ЕС і сервісних програмних засобів для їхньої побудови.

3. PROSPECTOR-KAS. PROSPECTOR – призначена для пошуку(прогнозування) родовищ на основі геологічних аналізів. KAS-система придбання знань для PROSPECTOR.

Page 165: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

165

4. CASNET-EXPERT. CASNET – медична ЕС для діагностики очнихзахворювань. На її основі розроблено мову інженерії знань EXPERT,за допомогою якої створено ряд інших медичних систем.

5. HEARSAY-HEARSAY-2-HEARSAY-3-AGE. Перші дві є розвиткомсистеми розпізнавання злитної людської мови, слова якої беруться іззаданого словника. Їх структура заснована на використанні дошкиоголошень – глобальної бази даних, що містить поточні результати.HEARSAY-3 і AGE (Attempt to Generalіze – спроба спілкування)інструментальні системи для побудови ЕС.

6. AM (Artіfіcal Mathematіcіan – штучний математик) і EURІSCOрозроблені Д.Ленатом для дослідницьких і навчальних цілей. Усистему AM було закладено близько 100 правил виводу й більше 200евристичних алгоритмів навчання, що дозволяли будувати довільніматематичні теорії. Подальший розвиток системи сповільнився йбуло зазначено, що незважаючи на виявлені "математичні здібності",система не може синтезувати нових евристичних правил, тобто їїможливості визначаються тільки тими евристиками, що булинаперед закладені.Найбільш відомі/розповсюджені ЕС:CLІPS – досить популярна ЕС (publіc domaіn)OpenCyc – потужна динамічна ЕС із глобальною онтологічною

моделлю й підтримкою незалежних контекстівWolframAlpha – пошукова система, інтелектуальний

"обчислювальний движок знань"MYCІN – найвідоміша медична система призначена для діагностики

і моніторингу стану хворого при менінгіті й бактеріальних інфекціях.HASP/SІAP – інтерпретуюча система визначає місце розташування й

типи судів у Тихому океані за даними акустичних систем спостереження.SPE – визначення концентрації гамма-глобуліну в крові.PLANT/cd – визначення втрат урожаю від чорної совки.TATR – планування авіаударів по аеродромах супротивника.ONCOCІ – планування хіміотерапевтичного лікування.TQMSTUNE – настроювання мас-спектрометра.XCON (R1) – вибір оптимальної конфігурації апаратних засобів

(VAX).VM – спостереження за станом хворого в палаті інтенсивної терапії,

керування поводженням системи як цілого.GUІDON – навчання студентів-медиків (антибактеріальна терапія).І&W – прогнозування збройних конфліктів.EURІSKO – проектування НВІС.XCON, PTRANS – маркетинг в DEC.REACTOR – у складі системи керування ядерним реактором.

Page 166: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

166

7.2.5. Загальнена структура ЕС має вигляд (рис. 7.7).

Рис. 7.7. Загальна структура ЕС [3, 8]

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

Машина виведення (іnference engіne), у складі вирішувача і блокапояснення, використовує базу знань (knowledge base) і трансформує запиткористувача у відповідь, при необхідності задаючи йому питання.

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

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

Така структура дозволяє розвивати ЕС, додаючи нові знання беззміни програми.

Машину виведення і інтерфейси зазвичай розглядають як одинвеликий модуль – оболонку ЕС, або, просто, оболонку (expert system shell),яка, в принципі, незалежна від додатку, та може використатись із базамизнань багатьох предметних областей.

Приклад виводу в продукційній ЕС.

Page 167: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

167

Правила: R1: розлита горюча рідина ® телефонувати 01 R2: розлита оцтова кислота ® нейтралізація вапном

R3: pH рідини < 6 ® кислота R4: кислота & має запах оцту ® оцтова кислотаФакти: F1: розлита рідина

F2: pH рідини < 6F3: рідина має запах оцту

Ланцюжок виводу:F1&F2®F4(розлита кислота)&F3®F5(оцтова кислота)®F6(нейтралізац) R3 R4 R2Машина виведення виконує у циклі: вибірку правил-кандидатів,зіставлення/означення із фактами, розв’язання конфліктів, виконання / дії.7.2.6. Приклад іграшкової ЕС розпізнавання тварин. На (рис. 7.8)наведено логічну структуру широко відомої ЕС.

Рис. 7.8. Іграшкова ЕС розпізнавання тварин [4]

Нехай база знань містить правила для опису усього двох тварин –зебри й леопарда (у вільному перекладі на українську):

Page 168: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

168

· "ЯКЩО тварина належить до класу ссавців І тварина належить довиду хижаків І тварина має чорні плями, ТО тварина – леопард""ЯКЩО тварина належить до класу ссавців І тварина належить до

виду травоїдних І має чорні й білі поперечні смуги, ТО тварина – зебра"ЕС перевіряє гіпотези в порядку їхнього розташування. Щоб

встановити істинність цієї гіпотези, ЕС має спочатку встановити, чиналежить тварина до класу ссавців, для чого відшукує правило:

· "ЯКЩО жіноча особина тварини має молочні залози, ТО тваринавідноситься до класу ссавців".Для його застосування має бути з'ясовано, чи має тварина молочні

залози. Якщо відповідного правила нема, ЕС має запитати користувача:· "ЧИ ВІРНО, ЩО жіноча особина тварини має молочні залози?".

Якщо відповідь ствердна, то факт "тварина належить до класуссавців". Після цього, правило для визначення леопарда вимагаєвстановити, чи є тварина хижаком. Для цього є правило:

· "ЯКЩО тварина має пазурі АБО тварина має ікла, ТО тваринаналежить до виду хижаків"Якщо гіпотеза "леопард" відкидається, ЕС перевіряє наступну

гіпотезу "зебра". Факт "ссавець" уже встановлено, залишається встановити,чи належить тварина до виду травоїдних:

· "ЯКЩО тварина має роги АБО тварина має копита, ТО тваринаналежить до виду травоїдних". Для цього ЕС спочатку запитає:

o "ЧИ ВІРНО, ЩО тварина має роги?" При негативній відповідінаступним буде питання:

o "ЧИ ВІРНО, ЩО тварина має копита?", оскільки відповідніумови зв'язані операцією АБО. В разі ствердної відповіді факт"тварина належить до виду травоїдних" вважаєтьсявстановленим. Для перевірки гіпотези "зебра" залишаєтьсяперевірити останню умову:

o "ЧИ ВІРНО, ЩО тварина має чорні й білі поперечні смуги?".Якщо смуги є, то гіпотеза "зебра" підтверджується, а завданнявважається виконаним.

Рис. 7.9 містить фрагмент ЕС розпізнавання тварин, реалізованої всередовищі VІSІRULE, розробленої компанією LPA (http://lpa.co.uk).

7.3. Основи методології розробки ЕС

7.3.1. Етапи розробки ЕС. Створення ЕС полягає у формалізації,перетворенні знань експерта у форму, що потребує оболонка ЕС. Людина-експерт не завжди в змозі викласти свої знання у формі бази знань. У такихвипадках вступає в дію інженер по знаннях, що "транслює" знанняексперта у базу знань.

Page 169: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

169

Рис. 7.9. Фрагмент іграшкової ЕС розпізнавання тварин

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

Рис. 7.10. Етапи розробки ЕС [3, 9, 10]

7.3.2. Технологія швидкого прототипіювання [3]. При розробці ЕСвикористається концепція прототипіювання, яка передбачає створення у

вимоги

ідентифікація

концептуалізація

формализація

реалізація

Досліднаексплуатація

тестуванняпочаток

поняття

структури знань

ЕС

переформулювання

переконструювання

вдосконалення

Page 170: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

170

загальному випадку кількох прототипів ЕС. Наприклад, перший прототипмає засвідчити придатність методів інженерії знань для даного додатка.При успіху розширюють знання прототипу про ПО. При невдачі можезнадобитись розробка нового прототипу. Прототип ЕС стає кінцевимпродуктом в разі успішного й ефективного вирішення всіх задач даногододатка. Концепція прототипіювання, народившись у технології розробкиЕС, використається зараз і для розробки складних програмних систем якметодологія швидкої розробки додатків (RAD).

Сутність технології прототипіювання при створенні ЕС полягає впостійному нарощуванні бази знань. При цьому найпростіший прототипмайбутньої системи реалізується за допомогою будь-якого доступногоінструментального засобу ще на етапах ідентифікації і концептуалізації.Надалі цей прототип деталізується, концептуальна модель уточнюється,реалізується в середовищі остаточно обраного інструментального засобу.Після кожного етапу можливі ітеративні повернення до вже виконанихетапів проектування, що сприяє поступовому проникненню експерта іінженера по знаннях у сутність розв’язуваних проблем, підвищеннюефективності використання виділених ресурсів, скороченню часурозробки, поліпшенню компетентності й продуктивності ЕС (рис. 7.11).

Ід е н т и ф ік а ц ія ,п ер е в и з н а ч е н н я

О т ри м а н н я з н а нь ,к о н ц е п т у а л і за ц ія

Ф о р м а л із а ц ія

Р е а л і з ац ія ,в и к о н а н н я

Д о сл ід н ае к с п л уа т а ц ія

Т ес т ув ан н я(д і аг н о с ти к а )

П р о б л е м а

З н а н н я

П о л е з н а н ь С тр ук т ур ув а н н я

Б аз а з н а н ь

П р о гр ам а(п р о т о т и п ) Е С

В и м о ги

П о н я тт я

С тр у к т у ри п о ня ть

С т р у кту р и з на н ь

П р о т о т и п

В а р іа н т Е С

Е к с п ер т н ас и с т е м а

П ер е ф ор м у л ю в ан н я

К о н ц е п т уа л ь н ам о д и ф ік а ц ія

Р е с т р ук т у р и з а ц і я

В д о с ко н а л ен н я

П е р е ф о р м а л із а ц ія

З а в е р ш е н н я

А н а л із

Е к с п л уа т а ц ій н и йв а р іа н т Е С

д е м о н с т р а ц і й н и й

д о с л ід н и ц ь к и й

д ію ч и й

п р о м и сл о в и й

к о м ер ц і й н и й

Рис. 7.11. Структура технології швидкого прототипіювання.

Page 171: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

171

В результаті ітераціонного проходження процесу розробки ЕС вирібпроходить ряд стадій досконалості, на кожній з яких може бути емпіричнодослідженим (рис. 7.12):

Рис. 7.12. Стадії досконалості ЕС

7.3.3. На етапі ідентифікації (рис. 7.13) визначаються задачі, якіпідлягають розв'язку, виявляються цілі розробки і формування вимог донеї, визначаються експерти й типи користувачів. Результатом єусвідомлення змісту того, що треба зробити, які ресурси необхідні тазафіксувати з’ясоване у формальному вигляді.

Ідентифікаціяпроблеми

необхідніресурси

джерелазнань

ІснуючіЕС

цілікласизадач

Час ,люди,

комп’ютери

Текстоло-г ічні,

експертні

Аналоги вкраїні, за-кордоном

підкласидосвід

рішеннязадач

Рис. 7.13. Етап ідентифікації

Головним результатом досліджень цього етапу є відповідь напитання щодо доцільності створення ЕС, яка є кон'юнкцією імплікацій:

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

· Розробка виправдана одною з причин:o отримане рішення високорентабельне;o людський досвід втрачається;o експертів мало;o досвід потрібний у багатьох місцях;o досвід потрібний у несприятливому середовищі (автономна

ЕС).

Page 172: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

172

· Розробка розумна, якщо всі передумови виконані:o задача вимагає оперування символами;o задача вимагає евристичних рішень;o задача не надто проста;o задача має практичний інтерес;o задача розв'язувана (ЕС реалізуєма).o

7.3.4. На етапі концептуалізації та структурування виконуєтьсязмістовний аналіз проблемної області, виявляються використовуваніпоняття і їхній взаємозв'язок, структура вхідної і вивідної інформації,структура задач, визначаються методи розв'язку задач.

Структурування знань [3] – розробка неформального опису знаньпро предметну область у вигляді графу, таблиці, діаграми чи тексту, якевідображає основні концепції і взаємозвязки між поняттями предметноїобласті (ПО). Такий опис називають полем знань. Впорядкування методіввилучення знань дано на рис. 7.14.

Рис. 7.14. Класифікація методів вилучення знань

Комунікативні методи витягу знань – це набір прийомів і процедур,що припускають контакт інженера по знаннях з безпосереднім джереломзнань — експертом, а текстологічні включають методи витягу знань іздокументів (методик, посібників, руководств) і спеціальної літератури(статей, монографій, підручників).

Загалом, на цьому етапі в процесі різноманітних (комунікативних,текстологічних) повторних взаємодій уявлення експерта перетворюються вуявлення інженера по знаннях про предметну область (рис. 7.15).

Page 173: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

173

е к с п е р т а н а л і т и кк н и г ив е р б а л і з а ц і я

п р е д с т а в л е н н яе к с п е р т а п р о П О

р о з у м ін н я

п р е д с т а в л е н н яа н а л іт и к а п р о П О

Т Е К С Т

Рис. 7.15. Взаємозв'язок експерта з інженером по знаннях

Найефективніше, коли методи застосовуються свідомо і в комбінації:§ Аналіз літератури експертів (текстологічний метод):

o Формується "чернетка" по предметній області.o Складається питання-відповідна структура для БЗ.

§ Анкетування (активний індивідуальний комунікативний метод):o Формується анкета відповідно до БЗ.o Експерт заповнює анкету.o Аналітик аналізує відповіді експерта.

§ Інтерв'ю, діалог чи гра (активні індивідуальні комунікативні методи):o Експерт і аналітик проводять спільний аналіз матеріалів.o Виправляються помилки в БЗ.

§ Інженер по знаннях вносить виправлення.

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

Етап завершується моделлю ПО, що включає основні концепти йвідношення.

Існує два підходи до процесу побудови моделі ПО. Ознаковий чиатрибутивний підхід припускає наявність отриманої інформації у виглядітрійок об'єкт - атрибут - значення атрибута, а також наявністьнавчальної інформації. Цей підхід розвивається під назвою формуваннязнань чи "машинне навчання" (machіne learnіng). Другий підхід, називанийструктурним (чи когнітивним), припускає виділення елементів ПО, їхніхвзаємозв'язків і семантичних відношень.7.3.5. На етапі формалізації обираються інструментальні засоби йвизначаються способи і мови представлення всіх видів знань,формалізуються основні поняття, моделюється робота системи, оцінюєтьсяадекватність зафіксованих понять, засобів подання і маніпулюваннязнаннями цілям системи.

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

Page 174: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

174

процедурних знань, здійснюється це подання й у підсумку формуєтьсяопис рішення задачі ЕС на прийнятій мові.

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

Сюди відноситься:· вибір формалізму подання знань (логічні, продукційні моделі,

фрейми, сценарії, семантичні мережі, об’єктно-орієнтованепрограмування тощо);

· визначення способів маніпулювання цими знаннями (логічний вивід,аналітична модель, статистична модель тощо)

· та їхньої реалізації (інтерпретація, трансляція).

7.3.6. На етапі реалізації здійснюється опис всіх видів знань у мовіпредставлення знань та наповнення бази знань інженером по знаннях.

Метою етапу є створення одного чи декількох прототипів ЕС, щовирішують певний набір необхідних задач, за допомогою:

· програмування на мовах: C++, Pascal;· програмування на мовах штучного інтелекту: Prolog, LІSP;· використання інструментальних засобів розробки ЕС: CLIPS;· використання "пустишок" та "оболонок" ЕС: Exsys, Kappa.

Головне в створенні прототипу – перевірка адекватності ідей,методів і способів подання знань задачам актуальної ПО.

В черговій версії ЕС-2 прототип ЕС-1 розвивається додаванням"дружнього" інтерфейсу, збереження бібліотеки вирішених задач, засобівдля дослідження бази знань та їх використання для:

· аналізу функціонування системи при розширенні БЗ;· реалізації можливостей системи в рішенні ширшого кола задач;· реалізації природно-мовного діалогу в термінах ПО;· аналізу зауважень користувачів щодо функціонування ЕС.

Якщо ЕС-2 успішно пройшла етап тестування, то вона можекласифікуватись як промислова ЕС.7.3.7. На етапі тестування ЕС оцінюється з позиції двох основних групкритеріїв – точності й корисності. Точність роботи: правильність виведень,адекватність бази знань проблемам ПО, відповідність методів розв'язкупроблеми експертним. Корисність: адекватність відповідей ЕС запитамкористувача; зручність інтерфейсу; пояснення одержуваних результатів;надійність, адаптивність, продуктивність і вартість експлуатації.

Тестування – виявлення помилок прототипу та виробленнярекомендацій щодо його доведення до промислового зразка.

Розрізняють наступні джерела невдач у роботі системи: тестовіприклади, ввід-вивід, правила виведення, керуючі стратегії.

Page 175: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

175

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

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

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

Використані керуючі стратегії нерідко ведуть до помилок у роботіЕС. Зміна стратегії необхідна, зокрема, якщо ЕС аналізує сутності впорядку, "неприродному" для експерта. Послідовність розгляду даних нетільки впливає на ефективність роботи ЕС, але й може змінити результат.Так, розгляд правила А до правила В може привести до того, що правило Взавжди буде ігноруватись ЕС. Крім того, недоліки в керуючих стратегіяхможуть призвести до надмірно складних виводів і пояснень ЕС.

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

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

· наближенням взаємодії з нею до природного спілкування у звичній,не стомлюючій користувача формі;

Page 176: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

176

· гнучкістю ЕС, як здатністю враховувати зміни кваліфікаціїкористувача та настроюватись на різних користувачів;

· стійкістю системи до помилок, як здатність не виходити з ладу припомилкових діях недосвідченого користувача.

У ході створення ЕС майже постійно здійснюється її модифікація:· переформулювання понять і вимог поверненням на етапи

концептуалізації й ідентифікації;· переконструювання подання поверненням з етапу тестування на етап

формалізації для перегляду обраного раніше способу подання знань;· удосконалення прототипу в процесі циклічного проходження через

етапи реалізації й тестування для налагодження правил і процедурвиведення, поки система не буде поводитися очікуваним чином, а вразі неспроможності внесених змін – модифікація архітектурисистеми і БЗ.Опис прототипів різного рівня досконалості наведений в табл. 7.1.

Таблиця 7.1. Результат у вигляді прототипу ЕС№п/п

Найменуванняпрототипу ЕС Опис

1 ДемонстраційнийВирішує частину необхідних задач,демонструє життєздатність підходу

(кілька десятків правил і понять)

2 Дослідницький

Вирішує більшість поставлених задач,але нестійкий у роботі і не повністю

перевірений (кілька сотень правил чипонять)

3 ДіючийВирішує надійно всі задачі на реальних

прикладах, але для складної задачі вимагаєбільших витрат ресурсів: часу й пам'яті

4 Промислова ЕС

Забезпечує високу якість рішення примінімальних витратах часу й пам'яті,-переписується з використанням більш

ефективних засобів подання знань

5 Комерційна ЕСПромислова система, придатна до продажу,

тобто добре документована і спорядженасервісним обслуговуванням

7.3.9. Оцінка, стикування, супровід ЕС.

Page 177: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

177

Оцінка – після одержання промислової ЕС виконується аналізефективності згідно:

§ критеріїв користувачів (зрозумілість, прозорість, зручністьінтерфейсних компонентів у процесі експлуатації);

§ критеріїв запрошених експертів (адекватність рішень,пояснень, порівняння природного й штучного рішень);

§ критеріїв колективу розробників (ефективність реалізації,продуктивність, час відгуку, дизайн, широта й глибина охоплення ПО,несуперечність БЗ, наявність позаштатних ситуацій).

Стикування – аналіз середовища функціонування системи йінтеграція ЕС у це середовище.

Супровід – обслуговування системи в процесі експлуатації з метоюпідтримки й підвищення ефективності її функціонування.

7.4. Експертні системи реального часу [3].

7.4.1. Застосування ЕС реального часу. ЕС реального часу або динамічніЕС найбільш значимі серед систем, заснованих на знаннях. Їм належить70% цього ринку.

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

Класи задач, розв'язуваних ЕС реального часу, такі: моніторинг уреальному масштабі часу, системи керування верхнього рівня, системивиявлення несправностей, діагностика, складання розкладів, планування,оптимізація, системи-порадники оператора, системи проектування.

Статичні ЕС не здатні вирішувати подібні задачі, оскільки незадовольняють вимоги до систем реального часу.7.4.2. Вимоги до ЕС реального часу.

1. Представляти дані, змінювані в часі, та від зовнішніх джерел,забезпечувати зберігання й аналіз змінюваних даних.

2. Виконувати одночасно поточні міркування про декілька процесів.3. Міркування за обмежених ресурсах (час, пам'ять).4. "Передбачуваність" поведінки системи, гарантія запуску і

завершення кожної задачі в строгій відповідності з часовимиобмеженнями.

5. Моделювання "навколишнього світу" ПО, створення різних йогостанів.

6. Протоколювання своїх дій і дій персоналу, відновлення після збою.

Page 178: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

178

7. Наповнення бази знань для додатків реального ступеня складності змінімальними витратами часу й праці.

8. Настройка системи на задачі (проблемна/предметна орієнтованість).9. Створення й підтримка інтерфейсів користувачів.10.Захист інформації (по категоріях користувачів) і спротив

несанкціонованому доступу.

7.4.3. Основні властивості ЕС реального часу.1. Немонотонність. Спеціальні механізми підтримки істинності

видаляють старі дані разом зі зробленими на їхній основівисновками, враховують нові дані.

2. Міркування з урахуванням часу про минулі, поточні й майбутні події,планувати поведінку з урахуванням часу.

3. Реактивність стосовно асинхронних подій, що відбуваються усередовищі.

4. Концентрація уваги. Врахування різної значимості подій, вміннявиділяти найважливіші цілі й обирати ресурси, необхідні для їхньогодосягнення.

5. Зовнішній інтерфейс. Збір інформації від різних сенсорів, по різнихканалах зв'язку, а також передача даних по каналах зв'язку, включнодля різних виконавчих механізмів.

6. Ненадійність і неповнота даних потребує спеціальних процедур дляроботи із ними.

7. Інтеграція із традиційним програмним забезпеченням для стискуданих, обробки сигналів, спеціального вводу-виводу й ін..

8. Висока швидкість реакції на події, спроможність мати гарантованийчас відповіді.

7.4.4. Основні виробники. Інструментарій для створення ЕС реальногочасу вперше випустила фірма Lіsp Machіne Іnc в 1985 році. Цей продуктпризначався для символьних ЕОМ Symbolіcs і звався Pіcon.

Фірма Gensym, значно розвинувши ідеї, закладені в Pіcon, випустилав 1988 році інструментальний засіб під назвою G2 [11].

З відставанням від Gensym на два-три роки ряд інших фірм почалистворювати свої інструментальні засоби. Серед них: RT Works (фірмаTalarіan, США), COMDALE/C (Comdale Techn., Канада), COGSYS (SC,США), ІLOG Rules (ІLOG, Франція).

Порівняння двох найбільш просунутих систем G2 і RT Worksрозробкою того ж самого додатка двома організаціями, NASA (США) іStorm Іntegratіon (США), показало значну перевагу першої.7.4.5. Архітектура ЕС реального часу відрізняється тим, що включає двінові підсистеми – моделювання зовнішнього миру і сполучення із ним

Page 179: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

179

(датчиками, контролерами, СУБД тощо), та значними змінами підсистем,наявних як в динамічних, так і в статичних системах.

Оболонка ЕС реального часу на базі засобу G2 реалізує всіможливості, які вважаються необхідними й доречними в подібнихпрограмних продуктах. Всі знання в G2 зберігаються у двох типах файлів:бази знань і бібліотеки знань. Файли першого типу зберігають знання прододатки: визначення всіх об'єктів, об'єкти, правила, процедури тощо. Уфайлах бібліотек зберігаються загальні знання, які можуть бутивикористані більш, ніж в одному додатку. Файли баз знань можутьперетворитись в бібліотеки знань і зворотньо.

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

Для структуризації G2-додатків використаються "модулі" й "робочіпростори". Різниця між ними в наступному. Модулі поділяють додаток наокремі бази знань, використовувані в різних додатках. Вони корисні впроцесі розробки додатка. Робочі ж простори виконують свою роль привиконанні додатка. Містять у собі різні сутності й забезпечують розбивкудодатка на невеликі частини, які легше зрозуміти й обробляти.

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

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

Основу виконуваних тверджень баз знань становлять правила йпроцедури. Крім того, є формули, функції, дії й т.п. Правила в G2 маютьтрадиційний вигляд: ліва частина (антецедент) і права частина(консеквент). Крім іf-правила, використається ще чотири типи правил:іnіtіally, uncondіtіonally, when й whenever.7.4.6. Машина виводу. Головний недолік прямого й зворотного виводу устатичних ЕС – непередбачуваність витрат часу на виконання. З поглядудинамічних систем, повний перебір правил – недозволена розкіш. ОскількиG2 орієнтована на додатки реального часу, для скорочення перебору,

Page 180: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

180

реакції на непередбачені події й т.п. у машині виводу передбаченореалізації дев'яти випадків виклику правил:

1. Дані, що входять в антецедент правила змінились (прямій вивід –forward chaіnіng).

2. Правило визначає значення змінної, котре потрібно іншомуправилу або процедурі (зворотний вивід – backward chaіnіng).

3. Кожні n секунд, де n – число, певне для даного правила(сканування – scan).

4. Явний або неявний виклик іншим правилом – шляхомзастосування дій фокусування й виклику (focus й іnvoke).

5. Щораз при запуску додатка.6. Змінна в антецеденту зв’язана значенням.7. Певний об'єкт на екрані переміщений користувачем чи іншим

правилом.8. Певне відношення між об'єктами встановлено чи знищено.9. Змінна не набула значення в результаті звернення до джерела

даних.

7.5. Приклади продукційних ЕС

7.5.1. ЕС розпізнавання тварин.1. ЕСЛИ это – млекопитающее И хищник И имеет рыжевато-

коричневый-цвет И темные-пятна, ТО это – обезьяна.2. ЕСЛИ это – млекопитающее И хищник И имеет рыжевато-

коричневый-цвет И черные-полосы, ТО это – тигр.3. ЕСЛИ это – копытное И имеет длинную-шею И имеет длинные-ноги

И темные-пятна, ТО это - жираф.4. ЕСЛИ это – копытное И имеет черные-полосы , ТО это – зебра.5. ЕСЛИ это – птица И имеет длинную-шею И имеет длинные-ноги И

черно-белый-цвет, ТО это – страус.6. ЕСЛИ это – птица И не умеет летать И умеет плавать И имеет черно-

белый-цвет, ТО это – пингвин.7. ЕСЛИ это – птица И умеет летать-хорошо, ТО это – альбатрос.8. ЕСЛИ имеет волосы, ТО это – млекопитающее.9. ЕСЛИ дает-молоко, ТО это – млекопитающее.10.ЕСЛИ имеет оперенье, ТО это – птица.11.ЕСЛИ умеет летать И откладывает-яйца, ТО это – птица.12.ЕСЛИ ест-мясо, ТО это – хищник.13.ЕСЛИ имеет острые-зубы И впередсмотрящие глаза, ТО это –

хищник.14.ЕСЛИ это – млекопитающее И имеет копыта, ТО это – копытное.15.ЕСЛИ это – млекопитающее И умеет жевать, ТО это – копытное.

Page 181: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

181

7.5.2. ЕС розпізнавання ігор.1. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,

число игроков в команде = 9 ТО это – "бейсбол"2. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,

число игроков в команде = 13 ТО это – "клубный регби"3. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,

число игроков в команде =15, мяч разрешается посылать вперед, ТОэто – "шотландский футбол"

4. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,число игроков в команде = 15, мяч НЕ разрешается посылать вперед,ТО это – "регби"

5. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,число игроков в команде =11, бита НЕ используется, ТО это –"хоккей"

6. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,число игроков в команде = 11, используется бита, ТО это – "крикет"

7. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,число игроков в команде = 11, мяч круглый, мяч НЕ твердый, ТО это– "европейский футбол"

8. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,число игроков в команде = 11, мяч НЕ круглый, ТО это –"американский футбол"

9. ЕСЛИ игра в мяч, две команды с числом игроков в команде более 2,число игроков в команде = 5, ТО это – "баскетбол"

10.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, мяч сплошной, НЕ играется в помещении, мяч круглый, НЕиспользуется деревянный молоток, ТО это – "гольф"

11.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, используется ракетка, ТО это – ''настольный теннис"

12.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, НЕ играется в помещении, используется деревянный молоток, ТОэто – "крокет"

13.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, НЕ играется в помещении, ТО это – "теннис"

14.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, играется в помещении, используется ракетка, мяч НЕ твердый, ТОэто – "сквош"

15.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, мяч твердый, НЕ круглый, ТО это – "кегли"

16.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, мяч сплошной, круглый, играется в помещении, ТО это –"биллиард"

Page 182: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

182

17.ЕСЛИ игра в мяч, НЕ две команды с числом игроков в команде более2, мяч НЕ твердый, бита НЕ используется, ракетка НЕ используется,ТО это – "пелота"

18.ЕСЛИ НЕ игра в мяч, используется ракетка, ТО это – "бадминтон"19.ЕСЛИ НЕ игра в мяч, НЕ играется сидя, играется в помещении,

ракетка НЕ используется, ТО это – "стрелки"20.ЕСЛИ НЕ игра в мяч, играется сидя, используются карты, доска НЕ

используется, ТО это – "бридж"21.ЕСЛИ НЕ игра в мяч, играется сидя, карты НЕ используются И

используется доска, ТО это – "шашки, шахматы или что-то в этомроде"

Запитання для самоперевірки1. Дайте формальне визначення ЕС.2. Сформулюйте відмінності ЕС від інших систем обробки даних.3. Назвіть приклади успішного застосування технології ЕС.4. Які існують основні типи ЕС?5. Які виділяють різновиди проблеми аналізу?6. Які виділяють різновиди проблеми синтезу?7. Охарактеризуйте основні режими роботи ЕС.8. Укажіть склад і ролі учасників розробки ЕС.9. Перелічте основні компоненти статичної ЕС.10.Структура статичної ЕС?11.Поясніть відмінності архітектури динамічної ЕС від архітектури

статичної ЕС.12.Перелічте і охарактеризуйте основні етапи розробки ЕС.13.Поясніть відмінності комерційної системи від промислової.14.Поясніть відмінності діючого прототипу від дослідницького.15.Укажіть головні характеристики типів задач, розв'язуваних ЕС.16.Сформулюйте особливості кожного етапу життєвого циклу ЕС.17.Назвіть приклади застосування технології динамічних ЕС.18.Які основні функції виконує ЕС?19.У чому основне завдання інженера по знаннях?20.Які основні етапи процесу витягу знань?21.Вимоги до ЕС реального часу.22.Основні властивості ЕС реального часу.23.Охарактеризуйте статичну ЕС.24.Охарактеризуйте динамічну ЕС.25.Які основні ознаки ЕС?26.У яких галузях науки й техніки одержали найбільше поширення ЕС?27.Охарактеризуйте задачі, розв'язувані за допомогою ЕС у медицині?28.Чим визначається складність розробки ЕС?29.Які етапи розробки ЕС Ви знаєте?

Page 183: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

183

30.У чому суть прототипної технології розробки ЕС?31.Надайте коротку характеристику етапу ідентифікації.32.Надайте коротку характеристику етапу концептуалізації.33.Надайте коротку характеристику етапу формалізації.34.Надайте коротку характеристику етапу реалізації ЄС.35.Надайте коротку характеристику етапу тестування.36.Надайте коротку характеристику етапу дослідної експлуатації.37.Яке місце в життєвому циклі ЕС займає модифікація? Чи можна

вважати модифікацію окремим етапом розробки ЕС?38.Поясніть алгоритм роботи ЕС у режимі «консультації».39.Розробіть макет ЕС, згідно варіанту завдання самостійної роботи.

Завдання для самостійної роботи: створити малу ЕС на задану тему.

Форма представлення – продукційна база знань.Варіант – згідно своєму номеру у списку групи.Оцінка – 10 балів.

1. Експертна система «Організація відпочинку».2. Експертна система «Фрукти»3. Експертна система «Автомобілі»4. Експертна система «Квіти»5. Експертна система «Тип темпераменту»6. Експертна система «Предмети навчання»7. Експертна система «Професія»8. Експертна система «Пори року»9. Експертна система «Птахи»10. Експертна система «Риба»11. Експертна система «Жанри музики»12. Експертна система «Жанри фільмів»13. Експертна система «Жанри книг»14. Експертна система «Знаряддя праці»15. Експертна система «Міста України»16. Експертна система «Мова програмування»17. Експертна система «Вид спорту»18. Експертна система «Овочі»19. Експертна система «Ягоди»20. Експертна система «Гриби»21. Експертна система «Дерева»22. Експертна система «Захворювання»23. Експертна система «Напої»24. Експертна система «Країни»25. Експертна система «Університети»26. Експертна система «Порода собак»

Page 184: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

184

Література до 7-го розділу

1. Кургаев А.Ф. Проблемная ориентация архитектуры компьютерныхсистем / А.Ф. Кургаев. – Киев: Сталь, 2008. – 540 с.

2. Гаврилова Т.А. Онтологическое моделирование. – СПб.: Высшаяшкола менеджмента СпбГУ, 2012 [Електронний ресурс]. – Режимдоступу: https://www.i-free.com/sites/default/files/presentation/gavrilova_.pdf

3. Гаврилова Т.А. Базы знаний интеллектуальных систем / Т.А.Гаврилова, В.Ф. Хорошевский. – СПб: Питер, 2000 – 384 с.

4. Джарратано Д. Экспертные системы: принципы разработки ипрограммирование / Д. Джарратано, Г. Райли. – 4-е изд.; пер. с англ.– М.: 000 "И.Д. Вильямс", 2007. – 1152 с.

5. Иллюстрированный самоучитель по экспертным системам[Електронний ресурс]. – Режим доступу: http://computers.plib.ru/programming/Introduction%20to%20expert%20systems/

6. Гаврилов А.В. Гибридные интеллектуальные системы / А.В.Гаврилов. – Новосибирск: Изд-во НГТУ, 2003. – 164 с.

7. Классы экспертных систем [Електронний ресурс]. – Режим доступу:http://zubolom.ru/lectures/iis/9.shtml

8. Потапов А.С. Технологии искусственного интеллекта / А.С. Потапов.– СПб: СПбГУ ИТМО, 2010. – 218 с.

9. Джексон П. Введение в экспертные системы / П. Джексон. – 3-е изд.;пер. с англ. – М.: Издательский дом «Вильямс», 2001. – 624 с.

10. Масленникова О.Е. Основы искусственного интеллекта: учеб.пособие / О.Е. Масленникова, И.В. Попова. – Магнитогорск : МаГУ,2008. – 282 c.

11. Инструментальные средства G2 создания экспертных системреального времени [Електронний ресурс]. – Режим доступу:http://infogoz.vimi.ru/otct/Infogoz/KN6/138.htm

Page 185: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

185

8. CLIPS – програмне середовище для розробки ЕС [1]

8.1. Передмова.

CLIPS (C Language Integrated Production System – мова Си,інтегрована із продукційними системами) – програмне середовище длярозробки баз знань і експертних систем (ЕС). Первинно було створеневідділом програмного забезпечення космічного агентства NASA уЛондонському космічному центрі імені Б. Джонсона [2-8].

Зараз CLIPS – сучасний інструмент для створення ЕС (expert systemtool), що складається з інтерактивного середовища – експертної оболонкизі своїм способом подання знань, гнучкої й потужної мови й декількохдопоміжних інструментів.

CLIPS є абсолютно вільно розповсюджуваним через інтернет(http://www.ghg.net/clips/CLIPS.html) програмним продуктом, якийвикористовується, зокрема, для викладання предмета "Експертні системи"у сотнях університетів в усьому світі:

· є найбільш широко використовуваним (у тому числі в державнихорганізаціях і навчальних закладах) інструментальним середовищемдля розробки ЕС, завдяки своїй швидкості, ефективності йбезкоштовності;

· вихідний код програмного пакета CLІPS поширюється зовсім вільноі його можна встановити на будь-якій платформі, що підтримуєстандартний компілятор мови Cи. Існуюча версія можеексплуатуватися на платформах UNІХ, DOS, Wіndows і Macіntosh;

· хоча тепер і є суспільним надбанням, CLІPS дотепер підтримуєтьсясвоїм автором, Гері Райлі (Gary Rіley);

· включає повноцінну об’єктно-орієнтовану мову COOL длянаписання ЕС;

· хоча CLІPS і написана на Си, її інтерфейс набагато ближчий до мовипрограмування LІSP;

· багато в чому схожа з мовами, створеними на базі LІSP, зокремаOPS5 і ART;

· має чітко сформульований синтаксис;· включає множину випробуваних на практиці конструкцій з інших

інструментальних засобів;· допускає виклик зовнішніх функцій, написаних на інших мовах

програмування, а модулі, написані на CLІPS, можуть бути викликаніпрограмами, написаними на інших мовах;

· може бути забезпечена можливість роботи в реальному масштабічасу, коли реакція системи на збурення не повинна перевищувати

Page 186: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

186

декількох мілісекунд. CLIPS – кращий на сьогодні вибір для роботив реальному часі.CLIPS – кращий на сьогодні вибір для роботи в реальному часі серед

розповсюджуваних вільно оболонок ЕС, розроблених на C++.

8.2. Виразні можливості мови CLIPS.

8.2.1. БНФ-нотація. Як базовий синтаксис для визначення конструкціймови CLIPS використається стандартна Бекусо-Наурова (БНФ)-нотація:

· кутові дужки виокремлюють символ, який називаютьнетермінальний, що вимагає подальшого визначення;

· слова чи вирази без кутових дужок називають термінальнимисимволами, вони є синтаксичними елементами мови CLІPS.Термінальні символи (особливо круглі дужки) повинні вводитись вкомандний рядок саме так, як показано у визначенні;

· символ «*» за нетермінальним символом означає список з нуляабо більше елементів того ж типу, що й нетермінальний символ;

· символ «+» за нетермінальним символом означає список з одногоабо більше елементів того ж типу, що й нетермінальний символ.Символи «*» й «+», що зустрічаються самі по собі, єтермінальними;

· послідовність з кількох крапок, як горизонтальна, так івертикальна, позначає список з одного або більше елементів;

· елементи у квадратних дужках (наприклад, [<коментарі>]) єнеобов'язковими;

· вертикальна риска розділяє два або більше альтернативнихвизначень;

· символ «::=» відділяє визначаємий нетермінал від йоговизначення.

8.2.2. Компоненти CLIPS.· Основана на правилах мова з трьома компонентами:

- може створювати список фактів;- може створювати набір правил (базу знань);- механізм виводу відповідає співставленню фактів із

правилами.· Об'єкт-орієнтована мова:

- може визначати класи;- може створювати різні набори випадків;- спеціальні форми дозволяють зв'язувати правила і об'єкти.

Синтаксис мови CLIPS можна вважати у складі трьох основних групелементів написання програм:

Page 187: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

187

ü примітивні типи даних;ü функції обробки даних;ü конструктори, призначені для створення таких структур мови, як

факти, правила, класи тощо.Розглянемо кожну із цих трьох груп докладніше.

8.2.3. Примітивні типи даних. Місце для зберігання значення одного ізпримітивних типів даних в CLІPS називається полем або простим полем.

CLІPS підтримує 8 примітивних типів даних: float, іnteger, symbol,strіng, external-address, fact-address, іnstance-name, іnstance-address.

Визначення 8.1. Подання цілого числа у БНФ-нотації

<ціле> ::= [+ | -] <цифра>+<цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Приклад 8.1. 237 15 +12 -32

Визначення 8.2. Подання дійсного числа у БНФ-нотації

<дійсне> ::= <ціле> <експонента> | <ціле> . [<експонента>] | <беззнакове-ціле> [<експонента>] | <ціле> . <беззнакове-ціле> [<експонента>]<беззнакове-ціле> ::= <цифра>+<експонента> :: = е | е <ціле>

Приклад 8.2. 237еЗ 15.09 +12.0 -32.3е-7

Для символьної інформації призначаються типи symbol і strіng.Значенням типу symbol може бути будь-яка послідовність символів,

що починається з не керуючого ASCІІ-символа.Значення типу symbol закінчується обмежником, яким є

невідображувані символи (пробіл, символ табуляції або переходу на іншийрядок), подвійні лапки, відкриваюча або закриваюча кругла дужка,символи &, |, <, ~. Крапка з комою (;) є символом початку коментарів ітакож може обмежувати значення типу symbol.

Символи-обмежники не можуть утримуватися в значенні symbol, завинятком <, що може бути першим символом значення. Значення типуsymbol не може починатися із символу ? або $?, але може містити їх.

CLІPS є мовою, чутливою до регістра.

Приклад 8.3. Припустимі значення типу symbol.

Page 188: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

188

foo Hello B76-HІ bad_value 127A 456-93-039 @+=-% 2each

Зауваження. Значення типів float і іnteger є окремим випадкомзначення типу symbol, оскільки задовольняють всім обмеженням на типsymbol.

Значенням типу strіng є рядок символів, укладений в подвійнілапки. Символ подвійних лапок також може бути включений у рядок, длячого перед цим символом (") необхідно поставити символ зворотної косоїриски (\). Для включення в рядок символу зворотної косої риски необхідновикористати два послідовних символи \.

Приклад 8.4. Припустимі значення типу strіng."foo" "a and b" "1 number" "a\"quote"

Зауваження. Значення "abcd" типу strіng не еквівалентно значеннюabcd типу symbol. Незважаючи на те, що складаються з ідентичнихсимволів, вони належать до різних типів.

Значення типу external-address є адресою структури даних,повернутою зовнішньою функцією (наприклад, написаною мовою С абоAda), інтегрованою із програмою CLIPS. Значення цього типу може бутистворене лише як результат виклику зовнішньої функції. В CLIPS значенняданого типу відображаються в такий спосіб.

Приклад 8.5. Значення типу external-address

<Pointer-xxxxxx>де XXXXXX — число, що представляє зовнішню адресу.

Факт в CLIPS являє собою список атомарних значень примітивнихтипів, посилатися на які можна або використовуючи порядок визначенняцих значень у випадку впорядкованих фактів, або по імені у випадкунеупорядкованих фактів або шаблонів. Оперувати з фактом можна,використовуючи його адресу. Адреса факту є значення типу fact-address.

Приклад 8.6. Значення типу fact-address

<Fact-xxx>де XXX являє собою індекс факту.

Об'єкт в CLIPS є екземпляр класу, визначеного користувачем. Длявизначення класу використовується конструктор defclass. Для створенняоб'єкта використовується функція make-instance. Посилатися на об'єкт

Page 189: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

189

можна або за адресою, або, у межах окремого модуля, по імені об'єкта.Тип instance-name призначений для зберігання значення імені об'єкта.Для подання імені використовується значення типу symbol у квадратнихдужках.

Приклад 8.7. Значення типу instance-name

[pump-l] [foo] [+++] [123-890]

Зауваження. Квадратні дужки не є частиною імені об'єкта, а служатьсвоєрідними обмежниками, які дозволяють системі відрізняти значеннятипу instance-name від значення типу symbol.

Тип instance-address призначений для зберігання значення, що є адресоюоб'єкта. Значення цього типу може бути отримане за допомогою викликуфункції instance-address або в результаті виконання операції зіставленнязразків у правилі. Посилання на об'єкт з використанням значення типу instance-address відбуваються значно швидше, чим посилання за значенням instance-name.

Приклад 8.8. Значення типу instance-address

<Instance-xxx>де XXX — індекс об'єкта.

Константа являє собою незмінне просте поле, задане послідовністюсимволів (за допомогою констант не можна задавати значення типівexternal-address, fact-address і instance-address – значення цих типів можутьбути отримані лише як результат виклику відповідних функцій і повиннізберігатися в змінній). Послідовність із 0 або більше простих полів утворюєскладене поле. Для виводу складеного поля на екран CLIPS групує данітакого поля за допомогою круглих дужок.

Приклад 8.9. Складені поля.

(a) (1 bar foo) () (х 3.0 "red" 567)

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

Page 190: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

190

Змінною є значення деякого типу, збережене в простому чискладеному полі й таке, що має деяке ім'я. Змінні використовуютьсяв конструкторах CLIPS (зокрема в defrule, deffunction, defmethod іdefmessage-handier).

8.2.4. Ієрархія наслідування системних класів CLIPS. Наявність мовиCOOL (CLIPS Object-Oriented Language) дозволяє, окрім фактів і правилта змінних і функцій, маніпулювати ще й об'єктами, що поєднують дані зіспособами їх обробки. Об'єкти CLIPS можна використовувати у якостіданих в правилах і функціях майже так само, як факти або змінні.

COOL надає 17 системних класів (рис. 8.1), які, за винятком INITIAL-OBJECT, є абстрактними.

OBJECT

USER

INITIAL-OBJECTPRIMITIVE

NUMBER INSTANCE ADDRESS MULTIFIELD LEXEME

SYMBOL STRINGINTEGER FLOAT

INSTANCE-NAME INSTANCE-ADDRESS FACT-ADDRESS EXTERNAL-ADDRESS

Рис. 8.1. Системні класи COOL

Це означає, що їх можна використати тільки для спадкування й неможна застосовувати для створення екземпляра об'єкта даного класу.Клас OBJECT є суперкласом для всіх інших класів, включаючи класи,визначені користувачем. Усі класи, визначені користувачем, повинніуспадковуватися прямо або побічно від класу USER, оскільки цей класмає всі стандартні системні оброблювачі повідомлень.

8.2.5. Структура взаємодії із CLIPS. Гранично узагальнена структуравзаємодії із CLIPS при створенні і використанні ЕС має вигляд (рис. 8.2).

Page 191: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

191

Рис. 8.2. Структура взаємодії із CLIPS

На практиці ці процеси можуть укладатись у значно складнішіструктури, однак зображені компоненти неодмінно наявні в будь-якійсучасній системі обробки знань:

v Користувач – фахівець предметної області, кваліфікація якогонедостатньо висока й тому він у своїй діяльності потребуєдопомоги з боку ЕС.

v Інженер по знаннях – фахівець в області штучного інтелекту, щовиступає в ролі толмача між експертом і базою знань. Синоніми:когнітолог, інженер-інтерпретатор, аналітик.

v Інтерфейс користувача – комплекс програм, що реалізують діалогкористувача з ЕС як на стадії постановки задачі, так і приодержанні результатів.

v База знань (БЗ) – ядро ЕС, сукупність знань предметної області, щомає дві семантично еквівалентні форми подання: машинну,зрозумілу вирішувачу, та "людську" (звичайно, наближену доприродної), зрозумілу експерту й користувачу.

v Вирішувач – програма, що моделює хід міркувань експерта напідставі знань, наявних у БЗ. Синоніми: дедуктивна машина,машина виведення, блок логічного виводу.

v Підсистема пояснень — програма, що формує відповіді назапитання: "Як була отримана та або інша рекомендація?" і"Чому система прийняла такий розв'язок?". Відповідь напитання "як" – це трасування процесу одержання розв'язку ізвказівкою використаних фрагментів БЗ, тобто всіх кроківланцюга умовиводів. Відповідь на питання "чому" – посиланняна умовивід, що безпосередньо передував отриманому розв'язку,тобто відхід на один крок назад. Розвинені підсистеми поясненьпідтримують і інші типи питань.

v Інтелектуальний редактор БЗ – програма, що надає інженеру познаннях можливість створювати БЗ у діалоговому режимі.

Page 192: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

192

Містить систему вкладених меню, шаблонів мови поданнязнань, підказок ("help" – режим) і інших сервісних засобів, щополегшують роботу з БЗ.

При використанні готової ЕС користувач через свій інтерфейснадсилає запит до ЕС; вирішувач, користуючись базою знань, генерує йвидає користувачеві адекватну рекомендацію, надаючи при необхідностіпояснення своїх міркувань за допомогою підсистеми пояснень.8.2.6. Цикл виконання правил. Після того як сформована база знань ускладі всіх необхідних правил і введені початкові списки фактів і об'єктів,CLIPS готовий виконувати правила. Знання (правила) і дані (факти йоб'єкти) розділені, і механізм логічного виведення, притаманний CLIPS,застосовує знання до даних, формуючи список застосовних правил, після чогопослідовно виконує їх (рис. 8.3). Цей процес називається основним цикломвиконання правил (basic cycle of rule execution).

Рис. 8.3. Основний цикл виконання правил

В цьому циклі система CLIPS виконує наступну послідовність дій:1. Якщо була досягнута межа виконання правил або не був

установлений поточний фокус, виконання переривається. Інакше, длявиконання вибирається перше правило модуля, на якому був установленийфокус. Якщо в поточному плані виконання немає вдоволених правил, тофокус переміщується по стеку фокусів і встановлюється на наступниймодуль у списку. Якщо стек фокусів порожній, виконання припиняється.Інакше крок 1 виконується ще раз.

Page 193: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

193

2. Виконуються дії, описані в правій частині обраного правила щодозміни правил і робочої памяті (assert/retract/modify facts). Використанняфункції return може міняти положення фокуса в стеку фокусів. Числозапусків даного правила збільшується на одиницю для визначення межівиконання правила.

3. У результаті виконання кроку 2 деякі правила можуть бутиактивовані або дезактивовані. Активовані правила (ті, умови якихзадовольняються в цей момент) вміщуються в план рішення задачі модуля, уякому вони визначені. Розміщення в плані визначається пріоритетом(salience) правила і поточною стратегією розв'язку конфліктів.Дезактивовані правила видаляються з поточного плану рішення задачі.Якщо для правила встановлений режим перегляду активацій, то користувачодержить відповідне інформаційне повідомлення при кожній активації абодезактивації правила.

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

defrule – визначення правил;deffacts – визначення фактів;deftemplate – визначення шаблону факту;defglobal – визначення глобальних змінних;deffunction – визначення функцій;defmodule – визначення модулів (сукупності правил);defclass – визначення класів;defintances – визначення об'єктів по шаблону, заданому defclass;defmessagehandler – визначення повідомлень для об'єктів;defgeneric – створення заголовка родової функції;defmethod – визначення методу родової функції.

8.2.8. Факти й шаблони. Фактом є список неподільних (атомарних)значень примітивних типів даних. CLIPS підтримує два типи фактів:упорядковані факти (ordered facts) - список неподільних (атомарних)значень примітивних типів даних і неупорядковані факти або шаблони(non-ordered facts або template facts).

Відповідно до різнотипів фактів є й два способи створювати факти:- (assert (імя_факта значення_факта)) – для упорядкованих

фактів;- спочатку визначають шаблон (template) факту, а потім

використовують assert або функцію deffacts.Факт складається з імені відношення, за яким іде ноль або більше

слотів і їх зв'язаних значень- (Day Tuesday) ; Факт: день зі значенням вівторок- (emergency fire) ; Факт події із значенням пожежі

Page 194: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

194

- (number-list 5 1 6 8) ; Факт списку цілих зі значенням 5 1 6 8- (components computer CPU disk-drive terminal)- (person (name “John Doe”) (age 23) (eye-color blue) (hair-color

black) )- ; спочатку має бути визначений шаблон відношення person.

8.2.9. Формальна структура фактів. Упорядковані факти складаються зполя, що іменує відношення, і наступної за ним, можливо порожної,послідовності полів, розділених пробілами. Обмеженням факту служатькруглі дужки:(дане_типу_symbо1 [поле]*)

Для визначення структури шаблону слугує конструктор deftemplate,синтаксична схема використання якого в простому випадку має вигляд: (deftemplate <relation-name> [<optional comment>] <slot-definition>*)<slot-definition>* = (slot <slot-name>) | (multislot <slot-name>)

Приклад 8.10.(deftemplate person (multislot name) (slot age) (slot eye-color) (slot hair-

color))Зауваження: Перше поле фактів будь-якого типу є значенням типу

symbol. Порядок слотів у неупорядкованому факті не суттєвий. Слоти неможна використати в упорядкованих фактах, а в неупорядкованих фактах, усвою чергу, не можна посилатися на дані, використовуючи порядок слотів.8.2.10. Основні функції CLIPS.

Функціями в CLIPS називаються вбудовані системні дії, що маютьім'я, обробляють заданий набір аргументів і повертають результат.

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

CLIPS оперує декількома типами функцій – зовнішні функції,системні функції, користувацькі функції, родові функції.ü Зовнішні функції можуть створюватися на інших мовах

програмування (наприклад, Си), і потім підключатись до CLIPS наетапі компілювання або функціонування середовища.

ü Системні функції створені розроблювачами середовища CLIPS.ü Користувацькі функції визначаються в середовищі CLIPS за

допомогою спеціального конструктора deffunction.ü Родові функції набагато могутніші за звичайні, тому що здатні

перевантажуватися, завдяки чому можуть виконувати різні дії залежновід типу й числа аргументів. Зазвичай складаються з декількохкомпонентів, називаних методами.

Зверніть увагу на наступні особливості виклику функцій в CLIPS:· ім'я функції разом з усіма її аргументами вміщується в круглі дужки;· аргументи функції завжди слідують після імені функції;· аргументи відділяються, принаймні, одним пробілом;

Page 195: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

195

· аргументами функцій можуть бути змінні примітивних типів,константи або виклики інших функцій.

Приклад 8.11. Використання функцій: + (арифметичне додавання)і * (арифметичне множення), (+ 3 4 5) (* 5 6.0 2) (+ 3 (* 8 9) 4)

CLIPS надає досить великий набір функцій, здатний задовольнитибудь-які потреби користувача, серед яких:ü логічні (табл. 8.1) й математичні функції (табл. 8.2),ü функції роботи з рядками й складеними величинами;ü функції введення/виводу;ü процедурні функції,ü функції для роботи з методами родових функцій;ü функції для підтримки об'єктно-орієнтованих можливостей;ü а також функції для роботи з конструкторами.

Таблиця 8.1. Логічні функціїФункція Описnumberp Перевірка, чи належить аргумент до типу float або integerfloatp Перевірка, чи належить аргумент до типу floatintegerp Перевірка, чи належить аргумент до типу integerlexemep Перевірка, чи належить аргумент до типу symbol або stringstringp Перевірка, чи належить аргумент до типу stringsymbolp Перевірка, чи належить аргумент до типу symbolwordp Синонім функції symbolpevenp Перевірка целого числа на парністьoddp Перевірка целого числа на непарністьmultifieldp Перевірка, чи є аргумент складовим полемsequencep Синонім функції multifieldppointerp Перевірка, чи належить аргумент до типу external-addresseq Якщо значення аргументів, та їх типи співпадають, то TRUE

neq Заперечення eqand Якщо значення всіх аргументів TRUE, то TRUE, інакше - FALSE

or Якщо значення всіх аргументів FALSE, то FALSE, інакше - TRUEnot Якщо значення аргумента FALSE, то TRUE, інакше - FALSE

= Перевірка рівності першого й інших аргументів<> Перевірка нерівності першого й інших аргументів> Перевірка того, що перший аргумент більший інших>= Перевірка чи перший аргумент більший або рівний іншим< Перевірка чи перший аргумент менший за інших<= Перевірка чи перший аргумент менший або рівний іншим

Page 196: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

196

Таблиця 8.2. Стандартні математичні функціїФункція Опис+ Додавання- Віднімання* Множення/ Діленняdiv Целочисельне діленняmax Максимальне числове значенняmin Мінімальне числове значенняabs Абсолютне значенняfloat Перетворення в тип floatinteger Перетворення в тип integer

8.2.11. Конструктор deffunctіon.· Конструктор deffunctіon дозволяє користувачеві створювати нові

функції безпосередньо в середовищі CLІPS.· Виклик функцій, визначених користувачем, еквівалентний виклику

внутрішніх функцій CLІPS.· Виклик функції здійснюється по імені, за яким слідує список

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

· Послідовність дій функції, визначеної за допомогою конструктораdeffunctіon, виконується інтерпретатором CLІPS.

· Визначення функції має передувати її першому використанню.

Синтаксис конструктора deffunctіon містить 5 елементів:ü унікальне ім'я функції;ü необов'язкові коментарі;ü список з нуля або більше параметрів;ü необов'язковий символ групових параметрів для вказівки того, що

функція може мати змінне число аргументів;ü послідовність дій чи виразів, що будуть виконані при виклику

функції.

8.2.12. Виклик функції.ü При виклику функції інтерпретатор CLІPS послідовно виконує дії в

порядку, заданому конструктором.ü Функція повертає те значення, що повернула остання дія або

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

Page 197: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

197

ü Якщо функція не виконує ніяких дій, то повернуте значення є FALSE.У випадку виникнення помилки при виконанні чергової дії виконанняфункції буде перервано й повернутим значенням також буде FALSE.

ü Функції можуть бути само- і взаємно рекурсивними. Саморекурсивнафункція просто викликає сама себе зі списку своїх власних дій.

Приклад 8.12. Використання рекурсії для обчислення факторіала(deffunction factorial (?a) (if (or (not (integerp ?a)) (< ?a 0)) then

(printout t "Factorial Error!" crlf) else

(if (= ?a 0) then 1 else (* ?a (factorial (- ?a 1))))))

8.2.13. Базові команди CLIPS.1. Старт CLIPS:

C:\CLIPS>CLIPSCLIPS>

2. Вихід CLIPS:

CLIPS> (exit)C:\>

3. Визначення факту:

CLIPS> (assert (emergency fire)) ;(assert <fact>+)CLIPS> (assert (person (name “John Doe”) (age 23) (eye-color blue)(hair-color black))) ;якщо шаблон person був визначений

Використання READ або READLINE в правилах: (READ) або(READLINE)

Використання функції deffacts для визначення фактів:

· Додавання набору фактів після визначення шаблонів

(deffacts <ім'я визначених фактів> [<коментар>] <факти> *)

· Замість багатократного друку подібного

(assert (person (name “John Doe”)(age 23)(eye-color blue)(hair-colorblack))) …

Page 198: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

198

· Використають функцію deffacts

(deffacts people “Some people we know”(person (name “John Doe”)(age 23)(eye-color blue)(hair-color black)))(person (name “Jane Doe”)(age 36)(eye-color green)(hair-color red)))

4. Операції на фактах:· Показати всі факти

CLIPS> (facts)➱f-0 (Tom 7015) ;f-0 – ідентифікатор факту, 0 – індекс факту

f-1 (John 8023) f-2 (Mary 1235) f-3 (Peter 1256)

· Видалити факти

CLIPS> (retract f-1)CLIPS> (facts)➱f-0 (Tom 7015)

f-2 (Mary 1235) f-3 (Peter 1256)

· Видалити визначення фактів

CLIPS> (undeffacts < ім'я визначених фактів >)

5. Команда сбросу (рис. 8.4)

Рис. 8.4. Виконання команди сбросу

Page 199: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

199

CLIPS> (Reset)

Згідно до наведеної ілюстрації:ü Команда перезавантажує робочу пам’ять системи.ü Очищує поточний план розв’язку задачі, видаляє всі факти зі

списку фактів і об’єкти зі списку об’єктів, установлює модуль MAINпоточним.

ü Додає в систему визначений факт initial-fact, визначений об’єктinitial-object і всі факти, об’єкти й глобальні змінні, визначені задопомогою конструкторів deffacts, definstances та defglobals.

6. Читання фактів або правил із файлу

CLIPS> (LOAD filename) ;завантажує факти + правила ;повертає TRUE, якщо нема помилокCLIPS> (LOAD-facts filename) ;завантажує лише фактиCLIPS> (SAVE filename)CLIPS> (SAVE-facts filename)

7. Виконання

CLIPS> (Run) ;(run [<ціле>]) - <ціле> обмежує максимум виконаних правил

8. Операції для правил:

CLIPS > (AGENDA) ;список правил в AGENDACLIPS > (rules) ;список визначених правилCLIPS > (pprule rule-name) ;відобразити зміст правилаCLIPS > (excise rule-name) ;видалити правило

9. Системні виклики

CLIPS > (system “DIR”)CLIPS > (system “command”)CLIPS > (system “PE2”)

10. Визначити правила

; Це - правило( defrule class-A-fire-emergency ;ім'я правила(emergency fire) ;ЯКЩО частина

Page 200: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

200

(fire-class A) ;зразки повинні бути визначені= >(printout t “Activate sprinkler system” crlf)(assert (sprinkler system work))(assert (“sprinkler”)))

Структура правил

( defrule <ім'я правила> [<коментар>]<зразки>* ; LHS правила= ><дії>* ; RHS правила)

- Якщо правило не має зразків, initial-fact додано, то правило будепоміщено в план рішення задачі (agenda).

- Якщо план (agenda) не має правил, програма припиняє виконання.- Коли в плані рішення задачі (agenda) багато правил, то

активізується правило з найвищим пріоритетом (salience).

11. Інші командиü (modify <fact-index> <slot-modifier>+) ;модифікація слотів факту,

заданого індексом, наприклад, (modify 0 (age 24)) ;модифікація віку Джона Доя

ü (duplicate 2 (name “Jack S. Doe”)) ;новий факт створений з новимслотом імені

ü (watch <facts, rules, activations, all>) ;включення режиму перегляду списку елементів середовища CLIPSü (unwatch <facts, rules, activations, all>) ;виключення режиму watch

ü (refresh <rule-name>) ; щоб зробити правило знов активним

ü (list-defrules) ;відображають поточний список правил

ü (list-deftemplates) ;поточний список шаблонів

ü (list-defacts) ;поточний список фактів

ü (ppdefrule <defrule-name>) ;виводить визначення заданого конструктора defrule у діалогове вікно CLIPS. Подібне також для шаблонів і фактів

Page 201: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

201

ü (undefrule <defrule-name>) ;видаляє певний конструктор defrule, подібне також для шаблонів і фактів

ü (clear) ;видаляє всю інформацію, що міститься в середовищі CLIPS

ü (printout <logical-name> <print-item>*) ; logical-name: адресат виводу, наприклад, t – terminal

ü (matches <defrule-name>) ; перегляд списку набору даних (фактів або об'єктів), здатних активувати задане правило

ü (set-break <rule-name>) ; завдання точки остановаü (show-breaks) ;перегляд списку усіх точок останова

ü (remove-break [<rule-name>]) ; видалення точки останова. Якщо при виконанні команди remove-break необов'язковий параметр < ім'я-правила> не зазначений, то будуть зняті всі визначені раніше точки останова.

8.2.14. План рішення задачі (Agenda) – це список усіх правил, чиї умовисправдились при деякому поточному стані списку фактів і об'єктів (і які щене були виконані).

Кожний модуль має свій власний план рішення задачі.Виконання плану згідно стеку: верхнє правило виконується першим.Коли активується нове правило, воно розміщується в плані

рішення задачі, керуючись наступним:1. Тільки що активоване правило вміщується вище всіх правил з

меншим пріоритетом і нижче правил з більшим пріоритетом.2. Серед правил з однаковим пріоритетом для визначення їхнього

розміщення використовується поточна стратегія розв'язання конфліктів.3. Якщо правило активоване одночасно з декількома іншими

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

CLIPS підтримує сім різних стратегій розв'язання конфліктів:· стратегія глибини (depth strategy),· стратегія ширини (breadth strategy),· стратегія спрощення (simplicity strategy),· стратегія ускладнення (complexity strategy),· LEX (LEX strategy),· MEA (MEA strategy),

Page 202: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

202

· випадкова стратегія (random strategy).За замовчуванням в CLIPS установлена стратегія глибини. Необхідна

стратегія може бути зазначена в пункті Options меню Execution. Удіалоговому вікні, що з'явилося, виберіть необхідну стратегію задопомогою списку Strategy, що розкривається.

Стратегія глибини - тільки що активоване правило розміщуєтьсявище всіх інших з таким же пріоритетом.

Стратегія ширини - тільки що активоване правило розміщуєтьсянижче всіх правил з таким же пріоритетом.

Стратегія спрощення – між усіма правилами з однаковимпріоритетом. Тільки що активовані правила розміщаються вище всіхактивованих правил з рівною або більшою визначеністю (specificity).Визначеність правила обчислюється по числу зіставлень, які потрібнозробити в лівій частині правила.

Стратегія ускладнення – між правилами з однаковим пріоритетом.Тільки що активовані правила розміщаються вище всіх активованих правилз рівною або меншою визначеністю (specificity).

Стратегія LEX – між правилами з однаковим пріоритетом. Длявизначення місця активованого правила в плані рішення задачівикористовується "новизна" зразка, який активував правило.

Стратегія МЕА – основна відмінність стратегії МЕА від LEX утому, що в стратегії МЕА не сортуються зразки, що активували правило.Порівнюються тільки часові теги перших зразків двох активацій.Активація з більшим тегом розміщується в план рішення задачі передактивацією з меншим. Якщо обидві активації мають однакові часові теги,асоційовані з першим зразком, то для визначення розміщення активації вплані рішення задачі використовується стратегія LEX.

Випадкова стратегія – кожній активації призначається випадковечисло, яке використається для визначення місця розташування середактивацій з однаковим пріоритетом. Це випадкове число зберігається призміні стратегій, таким чином, той же порядок відтворюється принаступній установці випадкової стратегії (серед активацій у планірішення задачі, коли стратегія замінена на вихідну).8.2.15. Використання зразків у правилах. У загальному випадку лівачастина правила (передумова) містить список умовних елементів, якіповинні задовольнятися для активації правила. Існує вісім типів умовнихелементів, використовуваних у лівій частині правил: Ces-Зразки, test Ces,and Ces, or Ces, not Ces, exists Ces, forall Ces і logical Ces.

· Зразки містять обмеження, які визначають, чи задовольняєдеякий факт зі списку фактів заданому зразку.

· Умова test використовується для оцінки виразу, як частинипроцесу зіставлення образів.

· Умова and визначає групу умов, які мають бути виконані.

Page 203: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

203

· Умова or визначає групу умов, одна з яких має бути виконана.· Умова not – визначає умову, яка не повинна бути задоволена.· Умова exists – для перевірки наявності, принаймні, одного

збігу факту (чи об'єкта) з деяким заданим зразком.· Умова logical дозволяє виконати у правій частині правила

додавання фактів і створення об'єктів, пов'язаних з фактами і об'єктами, щозбіглися із заданим зразком у лівій частині правила.

8.3. Демонстрація використання CLIPS версії 6.3. [9, 10]Після активізації програмна оболонка CLIPS версії 6.3 виглядає так

Дочірнє вікно «Dialog Window» слугує для виконання команд CLIPSі одержання результату. Після запрошення:

CLIPS>записують команду, яка виконується зразу після натиску клавіши

<Enter>. Наприклад, написавши в рядку після запрошення наступний код(printout t “Hello world” crlf)

Page 204: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

204

і натиснувши <Enter>, змушуємо CLIPS виконати функцію виводу наекран. В результаті одержимо рядок «Hello world» відразу після нашоговиклику, а оболонка повернеться в режим очікування.

8.3.1. Щоб мати можливість спостерігати процес додавання, видаленняабо зміни фактів необхідно викликати пункт меню Execution – Watch

і встановити прапорець навпроти пункту «Facts»:

Page 205: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

205

Нехай, користуючись функцією assert, треба додати деякий факт(weather is fine), в даному випадку у формі упорядкованого факту,користуючись виразом: (assert (weather is fine))

В результаті він є доданий в систему під номером f-1

Перевірити поточний стан списку фактів можна або за допомогоювведення в діалоговому вікні команди (facts), або викликавши пункт менюWindow: 1 Facts Window.

Page 206: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

206

У другому випадку відкриється вікно Facts (MAIN) зі списком фактів.

8.3.2. Для очищення пам'яті системи використовують команду (clear),після виконання якої залишається лише факт ініціалізації: (initial-fact)

Page 207: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

207

8.3.3. Розглянемо приклад додавання шаблону фактів опису автомобіляза допомогою конструктора:

(deftemplate car “This is template for describing a car”(slot color)(slot model)(multislot owner))

який має ім'я car, 2 простих слота для зберігання кольору й моделіавтомобіля та один складений слот для зберігання даних про власника.

В результаті маємо повідомлення про помилку: недруковані знакиподвійних лапок.

Page 208: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

208

Після виправлення помилки шаблон факту додано.

Page 209: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

209

8.3.4. Для перегляду списку шаблонів у системі на поточний моментслугує візуальний інструмент “Deftemplate Manager” в меню “Browse”.

Відкривши “Deftemlate Manager”, можна переконатись, що в спискушаблонів є тільки що визначений шаблон Car.

Page 210: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

210

Існує можливість вивести вміст шаблону в діалогове вікно,натиснувши кнопку Pprint у вікні “Deftemlate Manager”.

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

8.3.5. Розглянемо приклад додавання правила у формі програми, якаочищує систему, а потім додає правило, що лише друкує привітання:

(clear)(defrule HelloWorldRule "This is a comment"

(initial-fact) ; initial=>(printout t crlf)(printout t "HELLO WORLD!" crlf)(printout t crlf)

)

Для цього спочатку створюємо новий файл

Page 211: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

211

Потім набираємо лістинг програми у вікні вводу, виділяємо її і(натиском Ctrl-M або користуючись Batch Selection у меню Buffer)передаєм у вікно діалогу.

Якщо помилок нема, то після натиску Enter правило додається в систему.

Page 212: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

212

Наявність правила в системі можна проконтролювати викликомпункту меню Browse – Defrule Manager.

Page 213: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

213

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

(reset)(run)

Команда (reset) очищує список фактів, а потім додає в нього факти,оголошені конструкторами deffacts, включаючи напередвизначений факт(initial-fact).Команда (run) запускає процес логічного виведення. По суті, починаєтьсяперевірка умов для правил, які були введені в оболонку CLIPS раніше.

Перевірка передумови для правила Helloworldrule буде успішною –передумова буде виконана, оскільки в системі існує факт (initial-fact),відповідний зразку цього правила. Оскільки передумова виконана,виконується наслідок правила, тобто послідовність команд, записанихпісля оператора =>. В результаті побачимо в діалоговому вікні привітальнеповідомлення «HELLO WORLD!».

Page 214: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

214

8.3.6. Розглянемо дещо складніший приклад. Нехай маємопрограму.

(clear)

(defrule FinalRule ; останнє правило(All Rules Activated) ;потребуємо наявності факта для активації=>(printout t "All rules has been activated. THE END" crlf))

(defrule SecondRule ; друге правило(First Rule Activated) ; потребуємо наявності факта для активації=>(printout t "II rule activated. Adding fact..." crlf)(assert ; додаєм факт, що означає активацію правила №2(Second Rule Activated)))(defrule ThirdRule ; третє правило(First Rule Activated)(Second Rule Activated) ; потребуємо наявності зразу двох фактів=>(printout t "III rule activated." crlf)(assert ; додаєм факт, що означає активацію всіх правил(All Rules Activated)))

(defrule FirstRule ; перше правило=> ; передумови нема – активація при наявності

initіal-fact(printout t "I rule activated. Adding fact..." crlf)(assert(First Rule Activated)))

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

Page 215: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

215

Page 216: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

216

Page 217: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

217

Page 218: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

218

Page 219: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

219

Все це підтверджує, що в результаті необхідна програма введена.Для виконання програми вводять і виконують команди (reset) і (run)

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

(defglobal?*x* = 3?*y* = ?*x*?*z* = (+ ?*x* ?*y*)?*d* = 7.8?*e* = “string”?*f* = symbol)

Як і попередньо, відкриваємо вікно вводу, вводимо в нього заданупрограму, потім передаєм її у вікно діалогу і далі виконуєм означенняглобальних змінних. Поточна інформація показана у відповідних вікнах.

Page 220: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

220

8.4. Демонстраційні експертні системи [11, 12].

8.4.1. ЕС – порадник студенту. ЕС повинна виробляти рекомендаціїстудентові напередодні заліку й мати чотири вхідні змінні («число днів дозаліку», «кількість незроблених лабораторних робіт (в %)», «температурана вулиці» і «наявність опадів»), дві проміжні («вільний час» і «погода») івихідну змінну («поради щодо дії»). Структура залежності зміннихпоказана на (рис.8.5), у дужках зазначені можливі імена змінних.

Page 221: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

221

Рис. 8.5. Структура залежності змінних

(clear)(defrule data-input(initial-fact)=>(printout t crlf "Введіть число днів до заліку (ціле значення): ")(bind ?days (read))(assert (days ?days))(printout t crlf "Введіть число не зроблених лаб. робіт (в %) ")(bind ?works (read))(assert (works ?works))(printout t crlf "Введіть температуру на вулиці: ")(bind ?temper (read))(assert (temper ?temper))(printout t crlf "Чи є на вулиці опади? (так - 1/ні - 0): ")(bind ?rain (read))(assert (rain ?rain)))

(defrule R1(days ?days)(works ?works)(test (= ?works 0))=>(printout t crlf crlf "Все вже зроблено." crlf)(assert (freetime "infinity"))(assert (freetimecnst 0)))

(defrule R2(days ?days)(works ?works)(test (and (and(> ?days 5) (<= ?days 7)) (and (<= ?works 50) (> ?works 0) )))

Page 222: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

222

=>(printout t crlf crlf "Вільного часу багато" crlf)(assert (freetime "mnogo"))(assert (freetimecnst 1)))

(defrule R3(days ?days)(works ?works)(test (and (and(> ?days 5) (<= ?days 7)) (and (<= ?works 100) (> ?works 50) )))=>(printout t crlf crlf "Вільного часу не дуже багато" crlf)(assert (freetime "ne_ochen"))(assert (freetimecnst 2)))

(defrule R4(days ?days)(works ?works)(test (and (and(> ?days 3) (<= ?days 5)) (and (<= ?works 50) (> ?works 0))))=>(printout t crlf crlf "Вільного часу багато" crlf)(assert (freetime "mnogo"))(assert (freetimecnst 1)))

(defrule R5(days ?days)(works ?works)(test (and (and(> ?days 3) (<= ?days 5)) (and (<= ?works 100) (> ?works 50))))=>(printout t crlf crlf " Вільного часу не дуже багато " crlf)(assert (freetime "ne_ochen"))(assert (freetimecnst 2)))

(defrule R6(days ?days)(works ?works)(test (and (= ?days 3) (and ( > ?works 0 ) (<= ?works 50) )))=>(printout t crlf crlf " Вільного часу не дуже багато " crlf)(assert (freetime "ne_ochen"))(assert (freetimecnst 2)))

(defrule R7(days ?days)

Page 223: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

223

(works ?works)(test (and (= ?days 3) (and ( > ?works 50 ) (<= ?works 100) )))=>(printout t crlf crlf "Вільного часу зовсім не багато. Час робити" crlf)(assert (freetime "pora_delat"))(assert (freetimecnst 3)))

(defrule R8(days ?days)(works ?works)(test (and (= ?days 2) (and ( > ?works 0 ) (<= ?works 33) )))=>(printout t crlf crlf " Вільного часу не дуже багато " crlf)(assert (freetime "ne_ochen"))(assert (freetimecnst 2)))

(defrule R9(days ?days)(works ?works)(test (and (= ?days 2) (and ( > ?works 33 ) (<= ?works 66) )))=>(printout t crlf crlf " Вільного часу зовсім не багато. Час робити " crlf)(assert (freetime "pora_delat"))(assert (freetimecnst 3)))

(defrule R10(days ?days)(works ?works)(test (and (= ?days 2) (and ( > ?works 66 ) (<= ?works 100) )))=>(printout t crlf crlf "Вільного часу нема – не встигаєм" crlf)(assert (freetime "finish"))(assert (freetimecnst 4)))

(defrule R11(days ?days)(works ?works)(test (and (= ?days 1) (and ( > ?works 0 ) (<= ?works 25) )))=>(printout t crlf crlf "Вільного часу не дуже багато" crlf)(assert (freetime "ne_ochen"))(assert (freetimecnst 2)))

Page 224: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

224

(defrule R12(days ?days)(works ?works)(test (and (= ?days 1) (and ( > ?works 25 ) (<= ?works 50) )))=>(printout t crlf crlf " Вільного часу зовсім не багато. Час робити " crlf)(assert (freetime "pora_dеlat"))(assert (freetimecnst 3)))

(defrule R13(days ?days)(works ?works)(test (and (= ?days 1) (and ( > ?works 50 ) (<= ?works 100) )))=>(printout t crlf crlf " Вільного часу нема – не встигаєм " crlf)(assert (freetime "finish"))(assert (freetimecnst 4)))

(defrule R14(days ?days)(works ?works)(test (and (= ?days 0) ( > ?works 0 )))=>(printout t crlf crlf "Ну колись воно було. А зараз вже не важливо" crlf)(assert (freetime "ppc"))(assert (freetimecnst 5)))

(defrule R15(temper ?temper)(rain ?rain)(test (> ?temper 25))=>(printout t crlf crlf "Погода дуже добра " crlf)(assert (weather "v-good"))(assert (weathercnst 1)))

(defrule R16(temper ?temper)(rain ?rain)(test (and(and(>= ?temper 5)(< ?temper 25)) (= ?rain 0)) )=>(printout t crlf crlf "Погода добра" crlf)(assert (weather "good"))

Page 225: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

225

(assert (weathercnst 2)))(defrule R17(temper ?temper)(rain ?rain)(test (and(and(>= ?temper 5)(< ?temper 25)) (<> ?rain 0)) )=>(printout t crlf crlf "Погода погана " crlf)(assert (weather "bad"))(assert (weathercnst 3)))

(defrule R18(temper ?temper)(rain ?rain)(test (<= ?temper 5) )=>(printout t crlf crlf "Погода дуже погана" crlf)(assert (weather "v-bad "))(assert (weathercnst 4)))

(defrule R19(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and(< ?freetimecnst 3)(= ?weathercnst 1)))=>(printout t crlf crlf "Можна йти на прогулянку" crlf)(assert (act "go")))

(defrule R20(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (= ?freetimecnst 5))=>(printout t crlf crlf "Щодо погоди не знаю, але вчити вже пізно" crlf)(assert (act "nothing ")))

(defrule R21(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (= ?freetimecnst 0))=>(printout t crlf crlf "Щодо погоди не знаю – готуюсь до наступної сесії ..."crlf)(assert (act "botan ")))

Page 226: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

226

(defrule R22(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and(= ?freetimecnst 4)(<> ?weathercnst 5)))=>(printout t crlf crlf "Потрібно вчити!" crlf)(assert (act "learn")))

(defrule R23(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and(= ?freetimecnst 3)(= ?weathercnst 2)))=>(printout t crlf crlf "Краще вчитись" crlf)(assert (act "learn")))

(defrule R24(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and(= ?freetimecnst 2)(= ?weathercnst 2)))=>(printout t crlf crlf "По желанию" crlf)(assert (act "auw ")))

(defrule R25(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and(= ?freetimecnst 1)(= ?weathercnst 2)))=>(printout t crlf crlf "По желанию" crlf)(assert (act "auw ")))

(defrule R26(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and( or (= ?freetimecnst 2)( = ?freetimecnst 1))(= ?weathercnst 3)))=>(printout t crlf crlf "Краще вчити" crlf)(assert (act "glearn")))

(defrule R27(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)

Page 227: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

227

(test (and(= ?freetimecnst 3)(= ?weathercnst 3)))=>(printout t crlf crlf "Краще вчити" crlf)(assert (act "glearn")))

(defrule R28(weathercnst ?weathercnst)(freetimecnst ?freetimecnst)(test (and(> ?freetimecnst 0) (= ?weathercnst 4)))=>(printout t crlf crlf "Краще вчити" crlf)(assert (act "glearn")))

Демонстрація працездатності цієї ЕС на деякому прикладі виглядає так.Спочатку створюємо новий файл

Потім набираємо лістинг програми у вікні вводу, виділяємо його

Page 228: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

228

і користуючись Batch Selection у меню Buffer передаєм у вікно діалогу.

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

Page 229: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

229

Для цього в діалоговому вікні послідовно виконують дві команди: (reset), апотім (run) . І починається діалог ЕС із користувачем.Нехай на запит експертної системи «Введіть число днів до заліку (цілезначення):» користувач повідомляє – 3.

Реакцією на це згідно із правилом data-input буде: спочатку зв'язування іззмінною days значення 3, а потім функцією assert додано перший фактf-1 (days 3)

Page 230: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

230

Згідно до відповіді на наступний запит «Введіть число не зроблених лаб.робіт в %» 25, із змінною works буде зв'язано значення 25 та додано фактf-2 (works 25)Так само, згідно із відповідями на наступні запити:«Введіть температуру на вулиці:» - 20;«Чи є на вулиці опади? (так - 1/ні - 0):» - 0;спочатку будуть додані фактиf-3 (temper 20)f-4 (rain 0)Потім видано заключення системи про поточний стан погоди:«Погода добра», додано фактиf-5 (weather "good")f-6 (weathercnst 2)Потім видано заключення про поточний стан засвоєння предмету:«Вільного часу не дуже багато», додано фактиf-7 (freetime "ne_ochen")f-8 (freetimecnst 2)І, наприкінці, видано рекомендації ЕС щодо дій студента:«По желанию» та додано факт:f-9 (act "auw")

Page 231: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

231

8.4.2. ЕС – комплектація персонального комп'ютера. ЕС допомагаєрядовому користувачеві прийняти рішення щодо вибору комплектаціїперсонального комп'ютера (ПК), а також видає приклад породженоїкомплектації.

Дана експертна система має 4 вхідні змінні:Мобільність – найважливіший параметр даної ЕС, він є визначальним увиборі з двох варіантів виготовлення: мобільні чи стаціонарні.Цілі використання ПК – визначальний параметр, що розділяє ПК пообластях використання, а також по його вартості (офісні ПК дешевші заПК для мультимедійних додатків).Границі вартості обраної конфігурації – параметр, що визначаємаксимальну плату, яку може витратити користувач на придбання ПК.Фірма-виробник – параметр, що визначає уподобання користувача убік тоїабо іншої фірми-виробника комплектуючих або мобільних систем.

Структура залежності змінних має вигляд (рис. 8.6), де:mobile – мобільність. Має 2 значення: 0 – ні (стаціонарний ПК), 1 – так(мобільний ПК);firma – фірма-виробник. Має 5 параметрів: 1 – Acer, 2 – ASUS, 3 –Samsung, 4 – Gigabyte, 5 - INTEL;znach – призначення обираного ПК. Має 2 параметра: 1 – офісні ПК, 2 –мультимедійні додатки;cash – максимальна вартість, яку можна витратити на обраний ПК(мінімальне значення цього параметра – 6000, максимальне - 60000).

Рис. 8.6. Структура залежності змінних

За допомогою редактора clipsedt.exe, чи іншого текстового редактора(наприклад, Notepad++) створимо базу знань ЕС, що містить у собіправила, на підставі яких буде видано користувачу рекомендації з виборуконфігурації ПК. Вихідний код ЕС має такий вигляд.

(clear)(defrule data-input(initial-fact)

Page 232: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

232

=>(printout t crlf " Основне призначення: ")(printout t crlf " 1 - Офісні ")(printout t crlf " 2 - Мультимедійні додатки і ігри " crlf)(bind ?znach (read))(assert (znach ?znach))(printout t crlf " Мобільність (1 - да; 0 - ні): ")(bind ?mobile (read))(assert (mobile ?mobile))(printout t crlf " Фірма-виробник: ")(printout t crlf " 1 - Acer ")(printout t crlf " 2 - ASUS ")(printout t crlf " 3 - Samsung ")(printout t crlf " 4 - GigaByte ")(printout t crlf " 5 - INTEL " crlf)(bind ?firma (read))(assert (firma ?firma))(printout t crlf "Максимальна вартість ПК: ")(bind ?cash (read))(assert (cash ?cash)))(defrule R1(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 1)(= ?firma 1)) )=>(printout t crlf crlf "Ви обрали розділ мобільних ПК (ноутбуки) фірми Acer"crlf)(assert (type "Мобільні ПК Acer"))(assert (typecnst 1)))

(defrule R2(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 1)(= ?firma 2)) )=>(printout t crlf crlf "Ви обрали розділ мобільних ПК (ноутбуки) фірми ASUS" crlf)(assert (type "Мобільні ПК ASUS"))(assert (typecnst 2)))

(defrule R3(mobile ?mobile)(firma ?firma)

Page 233: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

233

(test (and (= ?mobile 1)(= ?firma 3)) )=>(printout t crlf crlf "Ви обрали розділ мобільних ПК (ноутбуки) фірмиSamsung " crlf)(assert (type "Мобільні ПК Samsung"))(assert (typecnst 3)))

(defrule R4(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 1)(> ?firma 3)) )=>(printout t crlf crlf "Мобільні ПК даною фірмою не випускаються. Виберітьіншу фірму-виробник для мобільного ПК" crlf)(assert (config "Виберіть іншу фірму-виробник для мобільного ПК")))

(defrule R5(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 0)(or (= ?firma 1)(= ?firma 3))) )=>(printout t crlf crlf "Стаціонарні ПК на основі мат.плат даної фірми невипускаються. Виберіть іншу фірму-виробник для стаціонарного ПК" crlf)(assert (config "Виберіть іншу фірму-виробник для стаціонарного ПК")))

(defrule R6(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 0)(= ?firma 2)) )=>(printout t crlf crlf "Ви вибрали розділ стаціонарних ПК на основі мат.платфірми ASUS " crlf)(assert (type "Стаціонарні ПК ASUS"))(assert (typecnst 4)))

(defrule R7(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 0)(= ?firma 4)) )=>(printout t crlf crlf "Ви вибрали розділ стаціонарних ПК на основі мат.платфірми GigaByte " crlf)(assert (type "Стаціонарні ПК GigaByte"))

Page 234: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

234

(assert (typecnst 5)))

(defrule R8(mobile ?mobile)(firma ?firma)(test (and (= ?mobile 0)(= ?firma 5)) )=>(printout t crlf crlf "Ви вибрали розділ стаціонарних ПК на основі мат.платфірми INTEL " crlf)(assert (type "Стаціонарні ПК INTEL"))(assert (typecnst 6)))

(defrule R9(znach ?znach)(cash ?cash)(test (and (= ?znach 1)(and (>= ?cash 6000)(<= ?cash 21000))) )=>(printout t crlf crlf "Дешевий офісний ПК" crlf)(assert (money "Низька цінова категорія"))(assert (moneycnst 1)))(defrule R10(znach ?znach)(cash ?cash)(test (and (> ?znach 1)(and (> ?cash 21000)(<= ?cash 30000))) )=>(printout t crlf crlf "Хороший ПК" crlf)(assert (money "Середня цінова категорія"))(assert (moneycnst 2)))

(defrule R11(znach ?znach)(cash ?cash)(test (and (= ?znach 2)(and (>= ?cash 30000)(<= ?cash 60000))) )=>(printout t crlf crlf "Хороший мультимедійний ПК" crlf)(assert (money "Висока цінова категорія"))(assert (moneycnst 3)))

(defrule R12(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 1)(= ?typecnst 1)) )=>

Page 235: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

235

(printout t crlf crlf "Ви вибрали мобільний ПК Acer низької ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Acer eMachines E525-902G16Mi<LX.N740C.003> CM900(2.2)/2048/160/DVD-RW/WiFi/Linux/15.6/ 2.53 кг."crlf)(assert (config "Мобільний ПК Acer дешевий")))

(defrule R13(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 1)(= ?typecnst 2)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК ASUS низької ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: ASUS Eee PC 1005P <90OA1L-D42223-987E50AQ> Black Atom N450(1.66)/2048/160/WiFi/cam/ Win7St/10.1/1.27кг." crlf)(assert (config "Мобільний ПК ASUS дешевий")))

(defrule R14(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 1)(= ?typecnst 3)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК Samsung низької ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Samsung N150 <NP-N150-JA01> AtomN450(1.66)/1024/250/WiFi/BT/cam/Win7St/10.1/1.16 кг." crlf)(assert (config "Мобільний ПК Samsung дешевий")))

(defrule R15(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 1)(= ?typecnst 4)) )=>(printout t crlf crlf "Ви вибрали стаціонарний ПК ASUS низької ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Комп'ютер Asus Eee Box B1006(90PE24C2112101A39CHZ) Black. Тип процесора: Intel Atom. Модельпроцесора: N270. Оперативна пам'ять: 2048 Мб. Об'єм жорсткого диску:160 Гб. Бездротовий зв'язок WiFi. Операційна система Microsoft WindowsVista Home Basic ." crlf)(assert (config "Стаціонарний ПК ASUS дешевий")))

Page 236: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

236

(defrule R16(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 1)(= ?typecnst 5)) )=>(printout t crlf crlf "Ви вибрали стаціонарні ПК Gigabyte низької ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Gigabyte G-MAX <SA4LB v2.0>(Socket478 <i845GL>, SVGA, LAN)." crlf)(assert (config "Стаціонарний ПК GigaByte дешевий")))(defrule R17(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 1)(= ?typecnst 6)) )=>(printout t crlf crlf "Ви вибрали стаціонарні ПК INTEL низької ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Intel® Core™ i5 750 2,66 GHz,LGA1155/8MB-1333MHz,1Tb SATAII,4096Mb DDRIII,DVD-RW, VideoPCI-E Radeon HD 5870 1024 mb DDR5, Card reader, БП 550W, Lan10/100/1000." crlf)(assert (config "Стаціонарний ПК INTEL дешевий")))

(defrule R18(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 2)(= ?typecnst 1)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК Acer середньої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Acer Extensa 5635Z-442G16Mi<LX.EDV0C.045>T4400(2.2)/2048/160/DVD-RW/WiFi/cam/Linux/15.6/ 2.36кг." crlf)(assert (config "Мобільний ПК Acer не дешевий")))

(defrule R19(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 2)(= ?typecnst 2)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК ASUS середньої ціновоїкатегорії." crlf)

Page 237: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

237

(printout t crlf crlf "Варіанти ПК: ASUS K70AF <90NZKA2-10W124-5RD13AY> Turion X2 M520(2.3)/3072/320(5400)/DVD-RW/WiFi/cam/Win7HB/17.3/3.24 кг." crlf)(assert (config "Мобільний ПК ASUS не дешевий")))

(defrule R20(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 2)(= ?typecnst 3)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК Samsung середньої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Samsung R430 <NP-R430-JB01> i3330M(2.13)/3072/320/DVD-RW/WiFi/cam/Win7HB/14/2.14 кг." crlf)(assert (config "Мобільний ПК Samsung не дешевий")))

(defrule R21(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 2)(= ?typecnst 4)) )=>(printout t crlf crlf "Ви вибрали стаціонарний ПК ASUS середньої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: ASUS Eee TOP ET2001B <90PE3B-A11222-57049C0Q> Black Atom N270(1.6)/1024/160/DVD-RW/WiFi/WinXP/19.6." crlf)(assert (config "Стаціонарний ПК ASUS не дешевий")))

(defrule R22(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 2)(= ?typecnst 5)) )=>(printout t crlf crlf "Ви вибрали стаціонарний ПК GigaByte середньої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: TA 3 (1.0) GIGABYTE™small form factor.VIA C3 800MHz. Gigabyte VIA CLE266 / 8235 chipset. 40W Power supply.Support DOM (Disk On Module), ATA Disk Module (optional). Front USB 2.0port, Earphone. MIC IN. Dimension: 64(D) x 213 (W) x 234(H) mm." crlf)(assert (config "Стаціонарний ПК GigaByte не дешевий")))

(defrule R23(typecnst ?typecnst)

Page 238: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

238

(moneycnst ?moneycnst)(test (and (= ?moneycnst 2)(= ?typecnst 6)) )=>(printout t crlf crlf "Вы выбрали стационарный ПК INTEL средней ценовойкатегории." crlf)(printout t crlf crlf "Варіанти ПК: Intel Core 2 Quad Q9400 2,66 GHz,LGA775/6MB-1333MHz, 500 Gb, 2048Mb DDRII, DVD-RW,Video PCI-EATI Radeon HD5770 1024 mb, Card reader, Lan 10/100/1000" crlf)(assert (config "Стаціонарний ПК INTEL не дешевий")))

(defrule R24(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 3)(= ?typecnst 1)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК Acer високої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Acer Aspire 5942G-724G64Bi<LX.PMN02.032> i7 720QM(1.6)/4096/640/Blu-Ray/WiFi/BT/cam/Win7HP/15.6/3.07 кг" crlf)(assert (config "Мобільний ПК Acer дорогий")))

(defrule R25(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 3)(= ?typecnst 2)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК ASUS високої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: ASUS G60VX <90NV3A-7F9282-1VDC306Y> P8700(2.53)/4096/500(5400)/DVD-RW/WiFi/BT/cam/Win7HP/16/3.28 кг" crlf)(assert (config "Мобільний ПК ASUS дорогий")))

(defrule R26(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 3)(= ?typecnst 3)) )=>(printout t crlf crlf "Ви вибрали мобільний ПК Samsung високої ціновоїкатегорії." crlf)

Page 239: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

239

(printout t crlf crlf "Варіанти ПК: Samsung R580 <NP-R580-JS08> i7620M(2.66)/4096/320/DVD-RW/GbLAN/WiFi/BT/cam/Win7HP/15.6/ 2.54 кг"crlf)(assert (config "Мобільний ПК Samsung дорогий")))

(defrule R27(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 3)(= ?typecnst 4)) )=>(printout t crlf crlf "Ви вибрали стаціонарний ПК ASUS високої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: ASUS Z8PE-D18 (RTL) Dual LGA1366<i5520> PCI-E, SVGA+2xGbLAN SATA RAID E-ATX 18DDR-III" crlf)(assert (config "Стаціонарний ПК ASUS дорогий")))

(defrule R28(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 3)(= ?typecnst 5)) )=>(printout t crlf crlf "Ви вибрали стаціонарний ПК GigaByte високої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: STA/C GIGABYTE™ ultra slim size ThinClient solution. VIA C7 1.0G/1.5Ghz FANLESS processor with VIA CN700chipset. Low power consumption. Quiet Fan Less Design. Easy installationdesign with flexible specification. Best Cost & Performance." crlf)(assert (config "Стаціонарний ПК GigaByte дорогий")))

(defrule R29(typecnst ?typecnst)(moneycnst ?moneycnst)(test (and (= ?moneycnst 3)(= ?typecnst 6)) )=>(printout t crlf crlf "Ви вибрали стаціонарний ПК INTEL високої ціновоїкатегорії." crlf)(printout t crlf crlf "Варіанти ПК: Intel® Core™ i7 920 2,66 GHz,LGA1366/8MB-1066MHz BX80601920,1Tb,4096Mb DDRIII,DVD-RW,Video PCI-E Radeon HD 5870 1024mb,Card reader,550W,Lan10/100/1000,Wi-fi" crlf)(assert (config "Стаціонарний ПК INTEL дорогий")))Після створення бази знань, компілюємо її в додатку clipswin.exe. Дляцього запускаємо даний додаток, «File - > Load Constructs…»,

Page 240: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

240

вибираємо файл configur_PC.clp, і натискаємо «Открыть».

Page 241: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

241

Компілятор виведе повідомлення, що він відкрив базу знань і перевіряє кодна наявність помилок. Для запуску ЕС натискаємо «Execution - > Reset»,отримуємо введення початкового факту:

f-0 (initial-fact).

Потім «Execution - > Run» ініціалізує і веде діалог з користувачем.Отримавши вхідні параметри, система видасть приклад комплектації ПК.

Page 242: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

242

Page 243: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

243

Запитання для самоперевірки

1. Виразні засоби метамови БНФ2. Компоненти CLIPS.3. Структура взаємодії із CLIPS4. Цикл виведення.5. Конструктори для створення баз знань.6. Різнотипи фактів.7. Різнотипи функцій.8. Вбудовані функції CLIPS.9. Логічні функції CLIPS.10.Стандартні математичні функції CLIPS.11. Синтаксис конструктора deffunctіon.12. Базові команди CLIPS.13.Синтаксис конструктора defrule.14. План рішення задачі.15. Поняття конфліктної множини правил.16. Різнотипи стратегій розв'язання конфліктів.17. Типи умовних елементів, використовуваних у лівій частині правил.

Література до 8-го розділу

1. Практика використання інструментального середовища CLIPS: навч.посіб. / О.П. Кургаєв, В.О. Брацький, М.А. Дідковська та ін. / за ред. О.П.Кургаєва. – К.: НУХТ, 2013. – 232 с.2. Иллюстрированный самоучитель по введению в экспертные системы[Електронний ресурс]. – Режим доступу: http://it-ebooks.ru/load/guides/expert_system_introduction/3-1-0-1323. Частиков А.П. Разработка экспертных систем. Среда CLIPS / А.П.Частиков, Т.А. Гаврилова, Д.Л. Белов. – CПб. : БХВ-Петербург, 2003. – 608с.4. CLIPS Online Documentation [Електронний ресурс]. – Режим доступу:http://clipsrules.sourceforge.net/OnlineDocs.html5. Introduction to CLIPS: An expert programming language - PowerPointPPT Presentation [Електронний ресурс]. – Режим доступу:http://www.powershow.com/view/129f4d-YzIxZ/Introduction_to_CLIPS_An_expert_programming_language_powerpoint_ppt_presentation6. Motaz K. Saad. CLIPS: Expert System Shell [Електронний ресурс]. –Режим доступу: http://www.slideshare.net/mksaad/introduction-to-clips-expert-system-presentation

Page 244: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

244

7. Раздел 6. Практика применения языка CLIPS для построенияэкспертных систем [Електронний ресурс]. – Режим доступу: http://www-csd.univer.kharkov.ua/content/files/ cat16/6_primenenie_clips.pdf8. Chapter 7. Introduction to CLIPS [Електронний ресурс]. – Режимдоступу: http://ir.nuk.edu.tw:8080/ir/bitstream/310360000Q/11342/2/CLIPS_IntroCLIPS.pdf9. Методические рекомендации по выполнению СРС: учебно-методическое пособие / сост. В.А. Валетов, Ю.П. Кузьмин, А.А. Орлова,С.Д. Третьяков. – СПб: СПбГУ ИТМО, 2008. – 32 с.10. Разработка интеллектуальных информационных систем сиспользованием CLIPS: методические указания к практическим илабораторным работам / сост. В.Н. Дякин. – Тамбов : Изд-во Тамб. гос.техн. ун-та, 2007. – 32 с.11. Лабораторная работа №1 по дисциплине «Системы искусственногоинтеллекта» Кафедры Вычислительной Техники Санкт-Петербургскогоордена Ленина и ордена Октябрьской Революции ГосударственногоЭлектротехнического Университета «ЛЭТИ» Федерального агентства пообразованию РФ. – Санкт-Петербург, 2007 [Електронний ресурс]. – Режимдоступу: http://www.studfiles.ru/dir/cat32/subj459/file2035/view2947.html12. Разработка экспертной системы по определению оптимальнойконфигурации ПК: курсовая работа по дисциплине «Технологияпрограммирования» / Кафедра Вычислительной техники иинформационных технологий Новомосковского института (филиал)Государственного образовательного учреждения высшегопрофессионального образования «Российский химико-технологическийуниверситет имени Д.И. Менделеева» Федерального агентства пообразованию РФ. – Новомосковск, 2011 [Електронний ресурс]. – Режимдоступу: http://www.allbest.ru/

Page 245: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

245

9. Онтології

9.1. Визначення поняття «онтологія».

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

Докомп'ютерної ери це поняття визначали у філософії, відрізняючивід інших понять про знання:

· Онтологія (від грец. όντος – суще, те, що існує й λόγος – вчення,наука) – розділ філософії, що вивчає проблеми буття; наука пробуття.

· Гносеологія ( від грец. γνώσις – «знання» і λόγος – «вчення, наука») –розділ філософії, вивчаючий проблеми знання.

· Епістемологія – ( від грец. επιστήμη – знання) розділ філософії, щовивчає теорію пізнання або частина гносеології, яка вивчаєпоходження й розвиток наукового знання.

9.1.2. Визначення в інформаційних технологіях. В інформаційнихтехнологіях онтології розробляють:

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

· для повторного використання знань у предметній області;· щоб зробити явними допущення в предметній області;· для відділення знань у предметній області від оперативних знань;· для аналізу знань у предметній області.

Згідно до Т. Грубера існують різні визначення поняття «онтологія»:· Онтологія – експліцитна специфікація концептуалізації.· Онтологія – експлицитна специфікація певної теми.· Онтологія – база знань спеціального типу, яка може читатись і

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

Розуміння цього терміна залежить від контексту і цілей йоговикористання, зокрема, Н. Гуарино виділяє наступні інтерпретації [1]:

· Онтологія як філософська дисципліна.· Онтологія як неформальна концептуальна система.· Онтологія як формальний погляд на семантику.· Онтологія як специфікація концептуалізації.· Онтологія як подання концептуальної системи через логічну теорію.

Page 246: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

246

· Онтологія як словник, використовуваний логічною теорією.Способи побудови і використання відбивають визначення:

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

· онтологія – це набір визначень (на формальній мові) декларативнихзнань для спільного багатократного використання різнимикористувачами в своїх додатках.

Фактично онтологію переважно розуміють як ієрархічнопобудований понятійний кістяк предметної області:

Онтологія – це концептуальний словник, який маєобчислювальну функціональність.

Для визначення специфіки онтологій ключовими вважають чотирипункти [2]:

· Одиниці – поняття, а не слова.· Формалізований опис концептуальної системи, який використає

мову представлення знань і забезпечує алгоритмізацію правилвстановлення осмисленості мовних виразів і процедур обмеженогологічного виведення.

· Спосіб формалізації понять є предмет домовленості (ontologicalcommitments –«онтологічні забов'язання») учасників професійногоспівтовариства (або групи спеціалістів), які цими поняттямикористуються.

· Онтологія – не ціль, а засіб. Це інформаційно-обчислювальнийресурс, створюваний для підтримки різних інтелектуальнихінформаційних технологій.

9.1.3. Формальна модель онтології. Основні компоненти онтології [3]:· класи (або поняття) – абстрактні групи, колекції чи набори об'єктів,

звичайно організованих в таксономію – ієрархічну класифікаціюпонять згідно відношення включення. Наприклад, класи Чоловік іЖінка є підкласами класу Людей, який у свою чергу включений уклас Ссавці;

· відношення (або властивості, атрибути) – тип взаємодії між nпоняттями предметної області;

· функції – спеціальний випадок відношень, у яких n-й елементоднозначно визначається n-1 попередніми елементами;

· аксіоми – завжди дійсні висловлення. Прикладом є наступнеположення і його запис у численні предикатів першого порядку:

Page 247: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

247

Працівник, що є керівником проекту, працює в проекті.Forall(E,P) Employee(E) and Head-Of-Project(E,P)=>Works-At-Project(E,P)

де Е – працівник, P – керівник проекту;

· екземпляри (або індивіди) – приклади класів.

Формальну модель онтології О розуміють як четвірку множинO = <C, R, F, I>,

де С – скінчена множина понять (концептів) предметної області (ПО), якуописує онтологія О; R – скінчена множина відношень між поняттями ПО;F – скінчена множина функцій інтерпретації (аксіом), заданих на поняттяхС і/або відношеннях R онтології О; I – множина екземплярів (instance).

Природніми обмеженнями множини С є скінченість і непорожність(С≠∅) . Множини R, F і І можуть бути порожніми, що відповідає окремимвидам онтології, коли вона вироджується в простий словник (R = ∅, F = ∅,І = ∅), таксономію понять (F = ∅, І = ∅) і т.д.

Отже, онтології для подання і обміну знаннями про ПО повинні набазовому рівні забезпечувати щонайменше словник понять і множинузв'язків (відношень) між поняттями цього словника.

9.2. Класифікація онтологій.

9.2.1. Схема інтеграції онтологій показана на рис. 9.1, де:· Онтології верхнього рівня описують дуже загальні поняття подібно

до простору, часу, матерії, об'єкт, події, дії, тощо, які не залежать відспецифічної задачі або домена.

· Онтології домена (предметної області) і онтології задачі описують,відповідно, словник деякого домена (типу медицини чи автомобілів)або родової задачі чи діяльності (подібно діагностиці або збуту),спеціалізуючи терміни, представлені в онтології верхнього рівня.

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

· Метаонтологія (онтологія онтологій) забезпечує як точнуспецифікацію онтологій, так і формальний аналіз їх властивостей,методи інтеграції й злиття різних онтологій. Дозволяє вибиратиадекватні моделі й мови подання інформації й знань про онтологічнікатегорії верхнього рівня (простір, час, інформація, тощо), а такожмови опису предметних онтологій, онтологій задач і додатків. З

Page 248: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

248

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

Рис. 9.1. Схема інтеграції онтологій [4].

9.2.2. Трьохвимірний простір ознак (рис. 9.2) у складі показників цілі,змісту онтологій і виразності мов їхнього опису доцільно вважатинайвищим рівнем класифікації онтологій, оскільки є найбільшінформативним щодо досліджень цієї області.

Рис. 9.2. Трьохвимірний простір ознак онтологій.

Page 249: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

249

Більш повна інформаційна характеристика онтологій дається згідноознак (рис. 9.3), система яких може бути використана в якості, так званих,ментальних карт [5].

онтологія

Типвідношень

Власник

Ціль

Генеалогія (предок-нащадок)Таксономія (клас-підклас, клас-елемент)Структура властивостей (ознака-значення)Партономія (має частину)Функціональність (функція, дія)

Мова описуФорма

представленняОбласть

Тип об’єктів

Глибина

Людство / ЛюдинаГрупа (країна, місто, кампанія)НавчанняУправління знаннямиЕлектронний бізнесНаукове дослідженняМаркетинг / МенеджментФормальнаФормалізованаВільна (неформальна)ГрафічнаСимвольнаПідприємство / БізнесРозділ наукиМатеріальніАбстрактніКаталог / Глосарій / ТезаурусКласифікаційна системаКогнітивний фреймСистема обмежень

Рис. 9.3. Множина ознак онтологій.

9.2.3. Класифікація онтологій за ступенем формальності. Окремі видионтологій представляють точками спектру (рис. 9.4) за ступенемформальності подання, використанню різних синтаксичних конструкцій.Кожна точка відповідає наявності деяких ключових структур в онтології,які відрізняють її від інших точок спектру. Коса риса розділяє "людино-зрозумілі" (вище риси) і "машино-зрозумілі" (нижче риси) системи [6, 7].

Серед людино-зрозумілих онтологічних описів:· Перша точка – керований словник, тобто скінчений список термінів.

Найпростішим прикладом є каталог на основі ідентифікаторів ID).· Друга точка – глосарій, яким є список термінів з їхніми значеннями.

Значення описуються у формі природномовних коментарів.· Третя точка – тезауруси несуть додаткову семантику, визначаючи

зв'язки між термінами. Відношення, властиві для тезаурусів:синонімія, ієрархічне відношення й асоціація.

· Четверта точка – неформальні таксономії не відповідаютьформальним властивостям відношення ієрархії (a kind of, АКО),транзитивність не виконується.

Page 250: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

250

Рис. 9.4. Спектр онтологій.

Серед машино-зрозумілих онтологічних описів:· Формальні таксономії побудовані на відношенні АКО, строго

витримуючи його транзитивність: якщо A є суперкласом класу B,то кожний підклас класу В також є підкласом класу А. Строгаієрархія класів необхідна для використання спадкування у процедурілогічного виведення.

· Формальні екземпляри – наявність формального відношенняЕКЗЕМПЛЯР-КЛАС (скорочено – isa). Для відношенняЕКЗЕМПЛЯР-КЛАС виконується "спадковість" уздовж відношенняАКО: якщо A є підкласом класу B, то кожний екземпляр класу Aтакож є екземпляром класу B.

· Класи (іноді їх називають фрейми) можуть мати інформацію провластивості (слоти), які особливо корисні, коли визначені на верхніхрівнях ієрархії й успадковуються підкласами і екземплярами.

· Більш виразними у спектрі є онтології з обмеженнями на областьзначень властивостей, що беруться з деякої визначеної множини(цілі числа, символьні константи) або з підмножини концептівонтології.

· Багато онтологій дозволяють оголошувати два й більше класівдиз'юнктивними, в яких не існує загальних екземплярів.

· Деякі мови опису онтологій дозволяють робити довільні логічнітвердження щодо обмежень концептів – аксіоми. Такі мови, як Cycl іOntolingua, дозволяють фіксувати твердження мовою логікипредикатів першого порядку (FOL).

9.2.4. Характеристика онтологій за змістом.Загальні онтології описують найзагальніші концепти (простір, час,

матерія, об'єкт, подія, дія, тощо), які не залежать від конкретної проблеми

Page 251: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

251

або ПО. У цю категорію попадають і онтології подання, і онтологіїверхнього рівня.

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

Предметна онтологія (онтологія домена) описує реальні предмети,що беруть участь у деякій діяльності. Наприклад, це може бути онтологіякомпонентів літаків певної марки (Boeіng) і відомості про їхніхпостачальників, характеристики, способи з'єднання один з одним і т.п.

Її призначення обмежене одним доменом, наприклад, авіація,медицина, культура, дистанційне навчання. Узагальнює поняття деякихзадач домена, абстрагуючись від самих задач (так, онтологія автомобілівнезалежна від особливостей конкретних марок).

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

Також з'являються великі загальноцільові онтології. Так, програмаООН по розвиткові (United Nations Development Program) і компаніяDun&Bradstreet об'єднали зусилля для розробки онтології UNSPSC, яканадає термінологію товарів і послуг (www.unspsc.org).

Ще один приклад – онтологія в області документації в сферікультурної спадщини CIDOC CRM.9.2.5. Характеристика онтологій за ціллю створення.

Для онтології подання ціллю створення є описати область поданнязнань, створити мову для специфікації інших онтологій більш низькихрівнів. Прикладом є опис (рис. 9.5) понять мови OWL засобами RDF /RDFS.

Призначення онтології верхнього рівня – у створенні єдиної"правильної" онтології, що фіксує знання, загальні для декількохпредметних областей, і в багаторазовому її використанні. В ідеалі повиннаіснувати одна онтологія верхнього рівня, яка використовується у всіхінформаційних системах. Через наявність різних точок зору на процес їїрозробки, на її склад і структуру, сьогодні існує кілька великих онтологійверхнього рівня. Як приклад можна навести такі онтології верхнього рівняяк Sowa's top-level ontology [8], Suggested Upper Merged Ontology (SU MO)[9], DOLCE [10], Generalized Upper Model [11, 12], Wordnet [13], BasicFormal Ontology (BFO) [14] і ін. [15, 16].

Page 252: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

252

Рис. 9.5. Опис понять мови OWL засобами RDF / RDFS [7].

Але в цілому спроби створити онтологію верхнього рівня на всівипадки життя поки не привели до очікуваних результатів. Багато з нихсхожі одна на одну. Вони містять ті самі концепти: сутність, явище,процес, об'єкт, роль, простір, час, матерія, подія, дія й т.п. (рис. 9.6 – рис.9.10). Усі вони різні за метою і історією створення, по закладених в основуконцепціях, по глибині пророблення й рівню наповнення.

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

Рис. 9.6. Фрагмент ієрархії колекцій верхніх рівнів онтології CYC [16]

Page 253: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

253

Рис. 9.7. Фрагмент верхнього рівня онтології DOLCE

Рис. 9.8. Фрагмент верхнього рівня ієрархії класів онтології SUMO [17]

Page 254: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

254

Рис. 9.9. Фрагмент верхнього рівня ієрархії онтології General FormalOntology (GFO) http://www.onto-med.de/ontologies/gfo

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

Рис. 9.10. Онтологічний “бріліант” таксономії об'єктів Дж.Сови [18]

Page 255: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

255

Для того щоб зберегти відкритість, онтологія, на думку Дж. Сови,повинна бути заснована не на фіксованій ієрархії концептів, а на каркасі,що описує відмінності, по яких ієрархія генерується автоматично. «Метаонтології полягає в тому, щоб надати структуру розбіжностей, які можутьбути використані для розрізнення і класифікування речей, які існують івизначають слова, що їх описують.» [18, с. 54].

Таблиця 9.1. Категорії для класифікування всього сущого

Матеріальний АбстрактнийТривалий Подійний Тривалий Подійний

Незалежний Об'єкт Процес Схема СценарійЗв'язаний Поєднання Участь Опис Хронологія

Посередній Структура Ситуація Причина Ціль

Сутності, іменовані в ячейках табл. 9.1, мають наступний смисл.Об'єкт – є дійсність, яку розглядають як тривале, яке зберігає свою

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

тотожність за деякий інтервал часу.Схема – є форма, яка має структуру тривалого. Схема не визначає

час чи часові відношення.Сценарій – є форма, яка має структуру подійного. Сценарій

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

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

Участь – є зв'язування, яке розглядається як подійне. Приєднуванасутність є процес в сталому взаємовідношенні до деякого приєднующоготривалого.

Опис – є судження про тривале, яке зв’язує деяку схему якхарактеристику тривалого.

Хронологія – є судження про подійне, яке зв’язує деякий сценарій якхарактеристику подійного.

Структура – є об'єднання, яке розглядають як тривале для деякоїпричини. Структура пояснює, як поєднання компонентів організовано длявиконання деякої функції.

Ситуація – є об'єднання, яке розглядають як подійне із деякоюціллю. Посередницький аспект ситуації є ціль деякого агента, якийвизначає, чому взаємодія сутностей в ситуації є суттєвою.

Page 256: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

256

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

Ціль – є намір деякого агента відносно деякого тривалого. Навідмінувід опису причина пояснює сутність в термінах наміру.

Співставлення верхніх онтологій. В табл. 9.2 представленахарактеристика частини [15] з поширених онтологій верхнього рівня.

Таблиця 9.2. Порівняння онтологій верхнього рівня

Кількістькласів

Мова Застосування Інше

BFO 36 OWL В основному вмедицині (Protein-Ontology,Foundational Model ofAnatomy (FMA), GeneOntology (GO))

Орієнтована на моде-лювання «фізичногомиру» і створення онто-логій в рамках науковихдосліджень, не міститьвластивостей

DOLCE Близько100

KIF,OWL,FOL

В системах і сервісахна базі веб-технологій

Надає ясний когнітив-ний базис для описуонтологічних категорій,що лежать в основіприродньої мови йздорового глузду

GFO 79 FOL,OWL

В основному в меди-цині (Gene Ontology,Celltype Ontology)

SUMO Близько1000

OWL У лінгвістиці, меди-цині, в різнихпредметних областях

Наведені дані свідчать, що:· онтологія SUMO містить найбільш загальні й абстрактні концепти,

має вичерпну ієрархію фундаментальних понять (≈ тисячі) і набіраксіом (≈ чотири тисячі);

· SUMO призначене сприяти інтероперабельності даних, пошукуінформації, автоматичному виводу, обробці природньої мови й ін.;

· охоплює загальні види процесів і об'єктів, абстракції (теорія множин,атрибути, відношення), числа й одиниці виміру, часові поняття,частини й ціле, агенти й наміри;

· SUMO є «канонічною» онтологією верхнього рівня, оскільки міститьдоступне для огляду число концептів і аксіом, має ясну ієрархію

Page 257: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

257

класів, легко розширюється, є об'єднанням різних загальнодоступнихонтологій верхнього рівня;

· серед переваг SUMO – можливість трансляції опису онтології накожній з основних мов подання знань, наявність онтологіїсереднього рівня (MILO), «бесшовно» інтегрованої з SUMO, десяткиприкладів практичного застосування, а також зв'язок з Wordnet –найбільш відомим на даний момент тезаурусом, у якому втримуєтьсяблизько 150 тис. слів повсякденної англійської мови;

· ієрархія класів в SUMO менш «заплутана», чим в Cyc, і зручніша дляпрактичного застосування, чим в DOLCE;

· BFO, на відміну від DOLCE і SUMO, зосереджене на завданнізабезпечення справжньої верхньої онтології (формальної, домен-нейтральної), яка може використовуватися в підтримку онтологійдомена, розвинених для наукового дослідження;

· онтологія Дж. Сови часто використовується в проектах у якостіUpper Ontology.

Призначення прикладної онтології – описати концептуальнумодель конкретного додатка. Прикладні онтології описують концепти, якізалежать як від онтології задач, так і від онтології предметної області [3,19]. Прикладами можуть слугувати онтології для автомобілів, будівельнихматеріалів, обчислювальної техніки або розроблена в [20] демонстраційнаонтологія вин. Такі онтології містять найбільш специфічну інформацію.Тому слід пам'ятати одну з найважливіших речей: для будь-якоїпредметної області не існує єдино правильної онтології. Проектуванняонтології – це творчий процес і дві онтології, розроблені різними людьми,ніколи не будуть однаковими. Потенційні споживачі онтології, а такожрозуміння розроблювачем додатку будуть, безумовно, впливати наприйняття рішень при проектуванні онтології, оцінити якість якої можналише використовуючи її в додатках, для яких вона розроблена.

9.3. Приклади навчальних онтологій.

Найпростішими є онтології, структури яких побудовані звикористанням відношень лише одного типу. Серед них розрізняють [21]:

· Генеалогія.· Партономія.· Атрибутивна структура.· Таксономія.· Функціональності.

До основних типів відношень також належать:

Page 258: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

258

· причинно-наслідкові ( якщо-то),· кількісні (більше, менше, рівно...),· просторові (далеко від, близько від, за, над ...),· часові (раніше, пізніше, протягом...),· логічні (і, або, ні),· лінгвістичні (синонімія, антонімія) і ін.

9.3.1. Генеалогія – це знання про походження, родовід членів сім'ї.Сукупність відомостей про батьків і віддаленіших предків конкретноїособини чи групи особин. Залежно від зосередження уваги зображується уформі генеалогічного дерева, коренем якого є найстарший предок, алистами – наймолодші нащадки, або, навпаки, – дерева, коренем якого єнаймолодший нащадок, а листами – усі його найстарші предки (рис. 9.11).9.3.2. Партономія (або меронімія) – «складова частина», «компонента»(meronymy) — «part-of» («consists», «has part»). Особливістю відношеннячастина-ціле є різноманітність його проявів. При тому, що найвідомішийпідтип відношення частина-ціле належить до взаємин між фізичнимиоб'єктами, це відношення може встановлюватися і між тривалих у часісутностей, між групами сутностей, ролями й процесами й ін.

Усередині цього відношення виділяють відношеннябути_елементом і бути_зробленим_з.

У класичній мереології звичайно постулюються три аксіоми длявідношення частина-ціле:

1) Рефлексивность: усе є частиною самого себе.2) Антисиметричність: ніщо не є частиною своїх частин.3) Транзитивність: частини частин є частинами цілого.

Рис. 9.11. Генеалогія смартфона [21]

Page 259: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

259

Онтологія, побудована із використання відношення частина-ціле,має структуру дерева, коренем якого є увесь об’єкт, а листами – усі йогонайменші частини (рис. 9.12).

Рис. 9.12. Партонімія комп’ютера [21].

9.3.3. Атрибутивна структура поняття. Атрибутивні відношення – цевідношення між предметом і його ознаками.

Атрибутивне визначення – це різновид родовидового визначення, уякому в якості видової фігурує ознака, властива предметам класу,виділюваного поняттям. Онтологія, побудована із використанняатрибутивного відношення має мережеву структуру, в центрі якоїзнаходиться визначаєме поняття (рис. 9.13).

Рис. 9.13. Атрибутивна структура поняття «Мале підприємство» [21].

Page 260: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

260

Ще один приклад онтології, побудованої із використанняатрибутивного відношення (рис. 9.14).

Рис. 9.14. Атрибутивна структура навчального курсу «Управління ІТпроектом» [21].

9.3.4. Таксономія – провідне відношення «категоризація» або«класифікація» (subsumption) — «А-kind-of» («is-a»). З формальної точкизору таксономією є деревоподібна ієрархічна структура класифікаційпевного набору об'єктів. Угорі цієї структури – кореневий таксон,відноситься до всіх об'єктів даної таксономії. Таксони, що розташованінижче кореневого, є більш специфічними класифікаціями, відносяться допіднаборів загального набору класифікуємих об'єктів. Таксономічнівідношення також називаються:

· відношення «узагальнення/спеціалізації»;· «родовидовим» відношенням;· відношення «супертип/підтип»;· відношення «клас/підклас» (АКО);· відношення «екземпляр/клас» (isa).

Якщо об’єм одного поняття входить в об’єм іншого поняття, топоняття з меншим об’ємом називається «видовим» або гіпонімом, поняттяз більшим об’ємом називається «родовим» або гіперонімом.

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

Page 261: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

261

Онтологія, побудована із використання відношення таксономії маєдеревовидну структуру (рис. 9.15).

Рис. 9.15. Таксономія (відношення АКО) “програмне забезпечення дляавтоматизації підприємства” [21].

Ще один приклад онтології, побудованої із використання відношеннятаксономії наведено на рис. 9.16.

Рис. 9.16. Таксономія “методи вилучення знань” [21].

Page 262: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

262

9.4. Моделі й методи формування онтологій.

9.4.1. Основні задачи, що вирішують за допомогою онтології [19, 22].Онтології створюють для:

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

· можливості повторного використання знань у предметній області;· того щоб зробити допущення в предметній області явними;· відділення сталого знання предметної області від оперативних знань;· аналізу знань у предметній області.

Онтологія предметної області сама по собі не є метою. Розробка онтологіїподібна до визначення набору даних і їх структури для використанняіншими програмами і переслідує мету рішення задач:

· Створення й використання БЗ.· Організація ефективного пошуку в БД, інформаційних каталогах, БЗ.· Створення систем, що реалізують механізми міркувань (ЕС, системи

керування, інтелектуальні роботи й ін.).· Організація пошуку за змістом у текстовій інформації.· Семантичний пошук в Internet.· Представлення змісту в метаданих про інформаційний ресурс.· Побудова й використання баз загальних знань (common knowledge)

для різних інтелектуальних систем.· Забезпечення загальної термінології для множини фахівців і спільно

використовуваних додатків.· Багаторазове застосування БЗ і інформаційних масивів, що

представляють відомості про технічні системи на різних стадіяхїхнього життєвого циклу.

9.4.2. Методологія Грубера для побудови онтології. Онтологія маєпроектуватись, виходячи з системи принципів, які можна цілком природновважати показниками якості онтології:· Ясність (Clarity) – онтологія повинна ефективно передавати зміст

концептуальної схеми, формалізацією якої вона є.· Сумісність (Coherence) – онтологія повинна бути сумісною, тобто

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

· Розширюваність (Extendibility) – онтологія має бути розроблена зможливістю без додаткових зусиль використання поділюваного йпоповнюваного словника бібліотек онтологій. Найбільш важливоюумовою є можливість визначення нових понять на основі існуючих вонтології елементів без зміни останніх.

Page 263: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

263

· Мінімальна залежність від кодування (Minimal encoding bias).Концептуалізація не повинна залежати від конкретної мови, якавикористається для запису формалізованого опису. Повинна бутиспецифікована на рівні знання максимально незалежно від поданняпонять на рівні символів.

· Мінімальний базис при високій виразності (Minimal ontologicalcommitment) – повинна вводити мінімальний базовий набір понять,але їх має бути досить, щоб моделювати мир у необхідних цілях істворювати складні сцени. Онтологія повинна, по-можливості,містити менше фактів про мир, який моделюється, надаючи, зарахунок цього максимальну свободу використання даної онтології вінших онтологіях.

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

Рис. 9.17. Онтологічний інжиніринг [21].

Онтологічний інжиніринг передбачає глибокий структурний аналізпредметної області. Таку роботу для інтелектуальних систем звичайновиконують інженери по знаннях (knowledge engineers).

При розробці систем управління знаннями виділяють наступні етапи.

Page 264: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

264

1. Накопичення. Стихійне й безсистемне накопичення інформації.2. Вилучення. Процес виявлення джерел даних і знань, їхній “видобуток” іопис є один з найбільш складних і трудоємних етапів (рис. 9.18).3. Структурування. Має бути виділені основні поняття, виробленаструктура представлення інформації, що відповідає максимальнійнаочності, простоті зміни й доповнення.4. Формалізація й програмна реалізація. Представлення структурованоїінформації у машинній формі – тобто на мовах опису даних і знань іорганізація автоматизованої обробки й пошуку інформації згідно запиту.5. Обслуговування. Корекція формалізованих даних і знань (додавання,відновлення): «чищення», тобто видалення застарілої інформації;фільтрація даних і знань для пошуку інформації, необхідної користувачам.

Рис. 9.18. Вилучення знань [21].

Найпростіший алгоритм онтологічного інжинірингу (для чайників)виглядає наступним чином [3]:

· виявлення концептів – базових понять деякої предметної області;· визначення «висоти дерева онтологій» – числа рівнів абстракції;· розподіл концептів по рівнях;· побудова зв'язків між концептами – визначення відношень і

взаємодій базових понять;· консультації з різними фахівцями для виключення протиріч і

неточностей.В результаті виконання всіх кроків алгоритму отримаємо онтологію,

наприклад, у формі згідно рис. 9.19.

Page 265: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

265

Рис. 9.19. Фрагмент класичної онтології документа.

9.4.4. Проста методологія побудови онтології [20]. Онтології непороджують нового знання, а лише оформлюють розуміння термінології,яке вже встоялося в комунікаційному середовищі. Більша частина зв'язків,фіксуємих в онтологіях – це так звані "знання здорового глузду" (commonsense metaphysics), без формалізації й використання яких не може бутивирішена жодна задача, так чи інакше пов'язана з розумінням тексту.

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

1) Не існує єдиного правильного способу моделювання предметноїобласті – завжди існують життєздатні альтернативи. Кращийрозв'язок майже завжди залежить від передбачуваного додатка йочікуваних розширень.

2) Розробка онтології – це обов'язково ітеративний процес. Після того,як визначена початкова версія онтології, можна оцінити йналагодити її, використовуючи її в якихось додатках і/абообговоривши її з експертами предметної області. У результатіпочаткову онтологію скоріш за все треба буде переглянути. І цейпроцес ітеративного проектування буде тривати протягом усьогожиттєвого циклу онтології.

3) Поняття в онтології повинні бути близькі до об'єктів (фізичних абологічних) і відношень предметної області. Швидше за все, це

Page 266: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

266

іменники (об'єкти) або дієслова (відношення) у реченнях, якіописують обрану предметну область.

4) Знання того, для чого буде використано онтологію, і того, наскількидетальною або загальною вона буде, може вплинути на багато зрішень щодо моделювання. Потрібно визначити, яка з альтернативдопоможе краще розв'язати поставлену задачу й буде більшнаочною, більш розширюваною й простішою в обслуговуванні.

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

6) Багато корисних онтологій уже доступні в електронному виді йможуть бути імпортовані. Існують бібліотеки повторновикористовуваних онтологій, наприклад, Ontolingua або DAML.

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

1. Яку область буде охоплювати онтологія?2. Для чого буде використовуватись онтологія?3. На які типи питань має відповідати інформація в онтології?4. Хто буде використовувати й підтримувати онтологію?

Крок 2. Розгляд варіантів повторного використання існуючих онтологій.Крок 3. Перерахування важливих термінів в онтології. Корисно скластисписок усіх термінів, про які доцільно було б пояснити що-небудькористувачеві. Що б ми прагли сказати про ці терміни?Крок 4. Визначення класів і ієрархії класів. Існує кілька можливих підходівдо розробки ієрархії класів:

· Процес спадної розробки починається з визначення самих загальнихпонять предметної області з наступною їхньою конкретизацією.

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

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

Крок 5. Визначення властивостей класів – слотів.Крок 6. Визначення фацетів слотів. Слоти можуть мати різні фацети, якіописують тип значення, дозволені значення, число значень (потужність) іінші властивості значень, які може приймати слот.

Page 267: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

267

Крок 7. Створення екземплярів. Для визначення окремого екземпляракласу потрібно (1) вибрати клас, (2) створити окремий екземпляр цьогокласу й (3) ввести значення слотів.9.4.5. Життєвий цикл онтологій [23].

Планування (задачі, ресурсів, строків) Розробка

– Специфікація – визначає цілі створення, передбачуваневикористання й потенційних користувачів.

– Концептуалізація – структурування (як можна ретельніше) доменної термінології на змістовному рівні.– Формалізація – трансформує концептуальну

модель у формальну або напівобчислювальну (semi-computable) модель.

– Реалізація – обчислювальна модель програмується відповідноюмовою подання знань.

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

Підтримка (одночасно з розробкою) придбання знань, оцінка онтології,інтеграція при побудові нової онтології з використанням існуючих.9.4.6. Концептуалізація – це змістовний етап структуруваннятерміносистеми, якість виконання якого визначає успіх всього проекту.

Для цього етапу (conceptual modeling) в [23] визначено доцільнупослідовність дій:

1) Побудова словника термінів, включаючи сюди також природно-мовні визначення термінів, синоніми й акроніми.

2) Побудова таксономії для концептів. Відзначається необхідністьодночасно фіксувати відношення несумісності (disjoint).

3) Побудова ad hoc (тобто, экспертно) графа бінарних (!) відношень міжконцептами. Важливе точне визначення умов заповнення аргументіввідношень (domains and ranges).

4) Побудова "словника концептів" – із прив'язкою атрибутів івідношень до концептів.

5) Деталізація опису бінарних відношень (п. 3). Передбачаєтьсядодаткова вказівка числа можливих значень (cardinality – 1:1, 1:N),логічних характеристик відношень (симетричність, транзитивність) інаявність конверсива.

6) Опис атрибутів: область визначення (domain); тип даних длязначення; одиниця виміру, точність представлення, областьзмінювання (" від… до…"), – якщо атрибут числовий; мінімальне й

Page 268: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

268

максимальне число можливих значень – (0,1), (1,1), (0,N), (1,N).7) Опис "атрибутів класів".8) Опис констант, специфічних для області знань.9) Опис екземплярів: віднесення до класу й вказівка значень,

релевантних для класу атрибутів.

Правила специфікації концептуалізації [24]:· Категорія формується згідно спільній властивості різних концептів.· Для таксономії основні атрибути виступають класо-утворюючими

ознаками.· Стратегія специфікації:üформування глосарія предметної області;üустановлення зв'язків між поняттями глосарія і їхня візуалізація;üкатегоризація понять і формування мета-понять (знизу-нагору);üдеталізація (зверху-униз);üре-інжиніринг (уточнення, зняття протиріч, синонімії, надмірності,

перебудова, доповнення).· Принцип гарного гештальта (досконалої форми): організація будь-якої

структури в природі або у свідомості має бути настільки досконала(регулярна, повна, збалансована або симетрична), наскільки дозволяютьіснуючі умови.

· Когнітивна ергономічність: «гармонія = концептуальний баланс +ясність».

· Концептуальний баланс:ü поняття одного рівня ієрархії зв'язуються з батьківським концептом

однаковим типом відношення;ü глибина гілок онтологічного дерева має бути майже однакова (±2 );ü Загальна картинка має бути достатньо симетричною.ü Перехресні посилання повинні бути по можливості виключені.

· Максимальне число концептів одного рівня або глибина гілок неповинні перевищувати знамените число Інгве-Міллера (7±2).

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

9.5. Редактори онтологій.

9.5.1. Редактори онтологій – інструментальні засоби, створені дляпроектування, редагування й аналізу онтологій. Здебільшого сучасніредактори онтологій надають засоби "кодування" (опису) формальноїмоделі в деякому виді. Деякі з них мають додаткові можливості щодоаналізу онтології, використають механізм логічного виведення.

Page 269: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

269

Підтримувані редакторами формалізми: логіка предикатів (FіrstOrder Logіc – FOL), дескриптивна логіка, фреймові моделі (Frames),концептуальні графи тощо.

Формат подання онтології задає вид зберігання і спосіб передачіонтологічних описів. Формат подання – це мова опису онтологій: RDF,OWL, KІF, SCL. Наприклад, деяка формальна модель представляється уформалізмі FOL і може бути виражена засобами мови KІF.

Базовий набір функцій забезпечує:1. Роботу з одним або більше проектами:

a. збереження проекту в потрібному формалізмі й форматі(експорт);

b. відкриття проекту;c. імпорт із зовнішнього формату;d. редагування метаданих проекту (у широкому смислі: від

настроювання форм редагування і подання даних до підтримкиверсій проекту).

2. Редагування онтології: створення, редагування, видалення понять,відношень, аксіом і інших структурних елементів онтології,редагування таксономії.

9.9.2. Додаткові можливості редакторів. До додаткових можливостейредакторів відносять:

· підтримку мови запитів (для пошуку нетривіальних тверджень),· аналіз цілісності,· використання механізму логічного виведення,· підтримку багатокористувацького режиму,· підтримку віддаленого доступу через Інтернет.

Складні інструментальні засоби потрібні для того, щоб не тількивводити й редагувати онтологічну інформацію, але й аналізувати неї,виконуючи типові операції над онтологіями, наприклад:

· вирівнювання (alіgnment) онтологій – установка різного видувідповідностей між двома онтологіями для спільного використання;

· відображення (mappіng) однієї онтології на іншу – знаходженнясемантичних зв'язків між подібними елементами різних онтологій;

· об'єднання (mergіng) онтологій – операція, що по двох онтологіяхгенерує третю, об'єднуючу інформацію з перших двох.Архітектура програмної реалізації інструментів:

· ранні інструменти – клієнт-серверна архітектура;· пізніші проекти – 3-х рівнева архітектура;· основна мова реалізації – Java;· зберігання даних (онтологій): текстові файли, БД.

Page 270: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

270

9.5.3. Порівняння редакторів. Кількість загальнодоступних редакторівонтологій вже перевищила 100. Основні характеристики найбільшпопулярних редакторів онтологій [7, 25] наведено в табл. 9.3.

Таблиця 9.3. Характеристика редакторів онтологій

Назва Короткийопис

Формаліз-ми, мови,формати

URL

Ontolingua Спільнарозробкаонтологій

OKBC, KIF www.ksl.stanford.edu/software/ontolingua/

Protege Створення,переглядонтологій

JDBC, UML,XML, XOL,SHOE, RDF/RDFS, OWL,DAML+OIL

protege.stanford.edu

OntoSaurus Web-браузербаз знань намові LOOM

LOOM www.isi.edu/isd/ontosaurus.html

OntoEdit Розробка іпідтримкаонтологій

F-Logic,RDFS, OIL,

OXML

www.ontoknowledge.org/tools/ontoedit.shtml

OilEd Розробка он-тологій, під-тримка логіч-ного виводу

DAML+OIL

oiled.man.ac.uk

WebOnto Багатокористувацька розроб-ка онтологій

OCML kmi.open.ac.uk/projects/webonto/

WebODE Створенняонтологій задопомогоюметодології

Methontology

F-Logic,LOOM,

Ontolingua

webode.dia.fi.upm.es/WebODEWeb/index.html

Серед інших за своїми мовними і функціональними ознакамипривабливим є редактор Protege, який після тривалого використання вобласті медицини зараз застосовують в інших предметних областях,зокрема при створенні онтологій для Semantic Web.9.5.4. Історія розвитку мов подання онтології. Класифікація онтологій заступенем формальності фіксує той факт, що онтології описують дійсністьіз різною детальністю. Отже, для запису різних типів онтологій потрібнімови із різною виразністю (рис. 9.20).

Виразність мови визначається покладеним у її основу формалізмомподання знань. Так, для опису онтології типу «тезаурус» доситьорієнтованого графа, а для «важких онтологій» потрібні логічні числення.

Page 271: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

271

Рис. 9.20. Історична еволюція мов представлення онтологій [26].

Відома велика кількість різних мов опису онтологій: KL-ONE,KRYPTON, Loom, CLASSIC, Ontolingua, F-Logic, SHOE, RDF(S), OWL таінші. Частина з них застаріли і не використаються на практиці. Є мови, щовикористаються для рішення окремих прикладних задач чи для проведеннядосліджень. Приклад – мова SHOE (Simple Html Ontology Extension).

Дослідження [26] свідчать про перехід від LISP-подібногопредставлення онтологічних моделей до XML-представлення у межахіснуючого фреймового підходу до представлення знань.

Мови цього классу розширюють такі інструменти представленнязнань як фрейми і семантичні мережі із відсутніми формальними,заснованими на логіці, семантичними конструкціями.9.5.5. Ієрархія стандартів синтаксису мови OWL. Web OntologyLanguage (OWL) одержує усе більш широке застосування у світі. Заразвона розглядається як основна мова для реалізації концепції Semantic Web ірекомендована до використання (стандартизована) організацією WorldWide Web Consortium, тому її синтаксис повинен бути заснований навикористовуваних в цій мережі відкритих стандартах. Фактично – цесловник, що розширює набір термінів, визначених RDFS. OWL-онтологіїможуть містити описи класів, властивостей і їхніх екземплярів. Залежністьмови OWL від інших стандартів має вигляд рис. 9. 21.

Рис. 9.21. Складові ієрархії мережевих мов

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

Page 272: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

272

взаємодії різних обчислювальних пристроїв, дозволяючи їм обмінюватисяінформацією.

Стандарт URI (Uniform Resource Identifier) визначає спосібунікальної ідентифікації й адресації документів, або в більш загальномувипадку, ресурсів у мережі Інтернет, який забезпечує унікальність імені усвіті і є зручним як для подання в комп'ютері, так і для передачі по мережі.

Стандарт XML (extensible Markup Language) визначає синтаксисмови, що дозволяє описувати будь-які дані в структурованому виді.Оскільки структура XML-документа визначається вкладеністю тегів, тодокумент, створений однією комп'ютерною програмою, може бутиоброблений іншою програмою, якщо існує домовленість про структурудокумента. Тобто комп'ютер може обробляти структуру документа, але неможе визначити семантику оброблюваного документа. Структура XML-документа й іменування тегів розглядаються в додаткових стандартах.Також синтаксис мови XML використовується для запису конструкційінших мов, таких як RDF або OWL.

Стандарт XML Schema розроблений для завдання домовленості проструктуру XML-документа.

Стандарт XML Namespaces, заснований на стандарті URI,розроблений для унікального іменування тегів.9.5.6. Стандарт RDF (Resource Description Framework) визначає мовудля запису машиночитаних метаданих про інформацію на різних сайтах вІнтернет. Опис інформації складається з триплетів «об'єкт-атрибут-значення» і становить метадані будь-якого ресурсу в мережі Інтернет.Об'єкт з одного триплету може бути значенням атрибута в іншомутриплеті. Отже, метадані графічно можуть бути представлені у виглядіорієнтованого графа (рис. 9.22).

Рис. 9.22. Приклад триплетів і RDF-графа на їхній основі

Page 273: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

273

Фактично стандарт RDF складається із двох частин: специфікаціїRDF-моделі даних (орієнтовані графи) і заснованої на XML синтаксисізапису цих моделей (RDF/XML). Опис моделі даних є основною частиноюстандарту. Специфікація RDF/XML визначає набір імен тегів і атрибутів упросторі імен «http://www.w3.org/1999/02/22-rdf- syntax-ns#», якийдозволяє описувати за допомогою мови XML розмічені орієнтовані графи.

За допомогою орграфа вже можна описати довільну предметнуобласть і комп'ютер зможе її обробити. Але не зможе порівнювати різніорграфи між собою, тому що в моделі RDF усі елементи – об'єкти,предикати й значення – є «ресурсами» і немає їхнього поділу на типи, тодіяк співвідносити потрібно однотипні елементи. Для розв'язку цієїпроблеми розроблено стандарт RDF Schema, який дозволяє інтерпретуватидані, описані мовою RDF. Це здійснено наданням можливості явноївказівки на те, які ресурси є класами, а які – відношеннями.

Звичайно стандарти RDF і RDF Schema використаються спільно (рис.9.23) для запису метаданих деякого ресурсу і позначаються абревіатуроюRDF(S).

Рис. 9.23. Приклад RDF(S)-rpaфa

Виразних можливостей мови RDF(S) досить, наприклад, для описуонтології типу «Таксономія» або «Тезаурус», тому ця мова вважаєтьсятакож мовою опису онтологій. Але її виразності не достатньо для описубільш складних онтологій, що привело до розробки нових, спеціальнихмов, таких як OWL.9.5.7. Мова Web Ontology Language (OWL) перевершує RDF(S) завиразністю за рахунок додаткових примітивів із заданою семантикою.Заснована на дескриптивній логіці, але не обмежується нею, тому маєкілька ступенів виразності. Складається із трьох мов, за ступенемзменшення виразності:• OWL Full – повна мова використовує всі базові елементи мови. Також

дозволяє поєднувати їх довільним способом із примітивами мовиRDF(S). Перевага OWL Full в тому, що є повністю сумісна з RDF(S) як

Page 274: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

274

синтаксично, так і семантично: довільний припустимий RDF(S)-документ також є припустимим документом мови OWL Full і будь-який вірний логічний висновок для RDF(S) є також вірним висновкомдля OWL Full. Недоліком OWL Full є відсутність можливостіперетворення висловлень мови у формули дескриптивної логіки, що недозволяє застосовувати розв'язувані процедури логічного виведення.

• OWL DL є підмножиною мови OWL Full, обмежує спосібвикористання примітивів мов OWL і RDF(S), забезпечуючи тим самимможливість використання дескриптивної логіки. Це дозволяєзабезпечити підтримку ефективного логічного виведення. Недоліком єте, що в OWL DL почасти губиться сумісність із RDF(S).

• OWL Lite є ще більш обмеженою мовою, чим OWL DL. Міститьпідмножину примітивів мови OWL DL. OWL Lite не містить класи, щоперелічуються (enumerated classes), твердження про неперетинності(disjointness statements) і довільні потужності (arbitrary cardinality).Перевага цієї мови у тому, що її простіше вивчити користувачеві йпростіше реалізувати розроблювачам програмних інструментів. Цямова призначена для розв'язку таких задач, у яких необхідна побудоватаксономій і нескладні обмеження.

Мова OWL одержує усе більше поширення, завдячуючи своїмвластивостям:

· градації виразності,· балансу виразності й розв'язання, а також· наявності програмного інструментарію підтримки роботи з нею.

9.6. Найважливіші застосування онтологій.

9.6.1. Бібліотеки онтологій:n Ontolingua ontology library

(http://ontolingua.stanford.edu)n Protege ontology library

(http://protege.stanford.edu/ontologies.html)n DAML ontology library

(http://www.daml.org//ontologies/)n SHOE ontology library

(http://www.cs.umd.edu/projects/plus/SHOE/onts/index.html)n AKT ontology

(http://www.aktors.org/ontology/)n Model and Syntax Specification. W3C Recommendation.

(http://www.w3.org/TR/REC-rdf-syntax/)n RDF and RDF Schema knowledge representation ontologies

(http://www.w3.org/1999/02/22-rdf-syntax-nshttp://www.w3.org/2000/01/rdf-schema)

Page 275: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

275

9.6.2. Найважливіші додатки:· Semantic Web – семантичне (онтологічне) подання Інтернет-ресурсів,

доступне пошуковим агентам.· Інформаційний пошук – розширення й спеціалізація запитів на основі

онтології для підвищення релевантності й повноти відповідей.· Інтеграція різноманітних джерел даних – використання онтології на

концептуальному рівні і при пошуку.· Обробка текстів на природній мові – модель предметної області

задається у вигляді онтології.· Системи управління знаннями підприємства.

9.6.3. Лінгвістичні онтології. Особлива властивість: поєднання в одномуресурсі понять разом з їхніми мовними формами. Коло задач тіснопов'язане з Natural Language Processing (NLP).

Основний набір відношень:• Синонімія• Гипонімія• Меронімія

Поширені онтології• WordNet(http://www.hum. uva.nl/~ewn/gwa.htm)• EuroWordNet(http://www.hum.uva.nl/~ewn/)• The Generalized Upper Model(http://www.darmstadt.gmd.de/publish/komet/gen-um/newUM.html)• The Mikrokosmos ontology(http://crl.nmsu.edu/mikro[userandpasswordarerequired])• SENSUS(http://www.isi.edu/natural-language/projects/ONTOLOGIES.html)

9.6.4. Проблеми онтологій. Число і якість «реальних», «неіграшкових»онтологій, наявних на цей час, надзвичайно мала, практично кориснихонтологій не побудовано для великої кількості предметних областей (ПО).

Тоді як невеликі онтології можна побудувати методом зверху-униз,розробка докладних онтологій для реальних додатків – завданнянетривіальне. Через внутрішні властивості людської мови непростимзавданням є зв'язати знання текстів з онтологіями, навіть якщо вонипобудовані для даної ПО.

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

Істотні проблеми на шляху розвитку формальних онтологій:

Page 276: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

276

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

2) Створення онтології вимагає серйозних ресурсів. Для того, щоб витратибули виправданими, потрібен попит на створені онтології.

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

4) Отже, питання про створення і якісне застосування великих строгоформалізованих онтологій є досить складним, що пов'язане як зіскладністю створення таких ресурсів, так і зі складністю їх розуміння,застосування, опису з їхньою допомогою реальних матеріалів.

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

Запитання для самоперевірки

1. Визначення поняття онтології.2. Формальна модель онтології.3. Система онтологій.4. Класифікація онтологій.5. Класифікація онтології по ступеню формальності.6. Класифікація онтології за ціллю створення.7. Класифікація онтології за змістом.8. Множина ознак онтології.9. Характеристика онтологій верхнього рівня.10.Характеристика онтологій предметної області.11.Характеристика прикладних онтологій.12.Характеристика онтологій задач.13.Типи відношень між елементами онтології.14.Приклади онтології із відношеннями: генеалогії, партонімії,

таксономії.15.Чим відрізняються онтології верхнього рівня від онтологій

предметної області?16.Чим відрізняються онтології предметної області від прикладних

онтологій?

Page 277: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

277

17.Перелічте відомі проекти онтологій верхнього рівня.18.Чим відрізняється відношення ПІДКЛАС-НАДКЛАС від ЧАСТИНА-

ЦІЛЕ?19.Складові онтологічного інжинірингу.20.Методологія Грубера для побудови онтології.21.Проста методологія побудови онтології.22.Життєвий цикл онтологій.23.Сутність концептуалізації.24.Редактори онтологій: різнотипи, базовий набір функцій тощо.25.Мови подання онтологій.26.Які основні класи задач вирішуються з використанням онтології?27.Найважливіші додатки.28.Проблеми онтологій.

Література до 9-го розділу

1. Гаврилова Т.А. Онтологический подход к управлению знаниями приразработке корпоративных систем автоматизации [Електронний ресурс]. –Режим доступу: http://bigc.ru/publications/bigspb/km/ontol_podhod_to_uz.php2. Рубашкин В.Ш. Онтологическая семантика. Знания. Онтологии.Онтологически ориентированные методы информационного анализатекстов / В.Ш. Рубашкин. – М.: ФИЗМАТЛИТ, 2013. – 348 с.3. Гаврилова Т.А. Базы знаний интеллектуальных систем / Т.А. Гаврилова,В.Ф. Хорошевский. – СПб: Питер, 2000 – 384 с.4. Тарасов В.Б. Гранулярные, нечеткие и лингвистические онтологии дляобеспечения взаимопонимания между когнитивными агентами / В.Б.Тарасов, А.П. Калуцкая, М.Н. Святкина // Открытые семантическиетехнологии проектирования интеллектуальных систем = Open SemanticTechnologies for Intelligent Systems (OSTIS-2012): материалы II Междунар.научн.-техн. конф. (Минск, 16-18 февраля 2012 г.) / редкол. : В. В.Голенков (отв. ред.) [и др.]. – Минск : БГУИР, 2012. – С. 267-278.5. Гаврилова, Т.А. Визуальные методы работы со знаниями: попыткаобзора / Т.А. Гаврилова, Н.А. Гулякина // Искусственный интеллект ипринятие решений. – 2008 . – №1. – С. 15-21.6. Lassila O. The Role of Frame-Based Representation on the Semantic Web /O. Lassila and D. McGuinness // Linköping Electronic Articles in Computer andInformation Science 6 (5) [Електронний ресурс]. – Режим доступу:http://ksl.stanford.edu/pub/KSL_Reports/KSL-01-02.html7. Добров Б.В. Онтологии и тезаурусы: модели, инструменты, приложения/ Б.В. Добров, В.В. Иванов, Н.В. Лукашевич, В.Д. Соловьев [Електроннийресурс]. – Режим доступу: http://www.intuit.ru/studies/courses/1078/270/info8. Sowa John F. Top-Level Categories [Електронний ресурс]. – Режимдоступу: http://www.jfsowa.com/ontology/toplevel.htm

Page 278: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

278

9. Pease А. The Suggested Upper Merged Ontology (SUMO) at Age 7: Progressand Promise / Adam Pease. – Presented at Ontolog 6 September 2007[Електронний ресурс]. – Режим доступу:http://ontolog.cim3.net/file/resource/presentation/AdamPease_20070906/Suggested-Upper-Merged-Ontolog_SUMO--AdamPease-20070906.ppt10. Laboratory for Applied Ontology - DOLCE [Електронний ресурс]. –Режим доступу: http://www.loa.istc.cnr.it/old/DOLCE.html11. Theory and Applications of Ontology: Computer Applications / MichaelHealy, Roberto Poli, Achilles Kameas (Editors). – Dordrecht HeidelbergLondon New York: Springer: Science+Buisiness Media B.V. 2010. – 404 c.12. Bateman John A. The Generalized Upper Model 2.0 / John A. Bateman,Renate Henschel, Fabio Rinaldi [Електронний ресурс]. – Режим доступу:http://glotta.ntua.gr/StateoftheArt/Ontologies/newUM.html13. WordNet A lexical database for English. Princeton university [Електроннийресурс]. – Режим доступу: http://wordnet.princeton.edu/14. Basic Formal Ontology (BFO) [Електронний ресурс]. – Режим доступу:http://www.ifomis.org/BFO15. Mascardi Viviana. A Comparison of Upper Ontologies (Technical ReportDISI-TR-06-21) / Viviana Mascardi, Valentina Cordì, Paolo Rosso[Електронний ресурс]. – Режим доступу:http://www.disi.unige.it/person/MascardiV/Download/DISI-TR-06-21.pdf16. Ефименко И. В. Онтологическое моделирование экономикипредприятий и отраслей современной России: Часть 1. Онтологическоемоделирование: подходы, модели, методы, средства, решения: препринтWP7/2011/08 (ч. 1) [Текст] / И. В. Ефименко, В. Ф. Хорошевский; Нац.исслед. ун-т «Высшая школа экономики». – М. : Изд. дом Высшей школыэкономики, 2011. – 76 с.17. Андон Ф.И. Онтологии – проблемы создания и применения / Ф.И.Андон, В.А. Резниченко. – Институт программных систем НАН Украины[Електронний ресурс]. – Режим доступу:http://www.myshared.ru/slide/176073/18. Sowa, John F. (2000) Knowledge Representation: Logical, Philosophical,and Computational Foundations, Brooks / John F. Sowa. – Cole Publishing Co.,Pacific Grove, CA. – 2000. – 594 p.19. Палагин А.В. Онтологические методы и средства обработкипредметных знаний / А.В. Палагин, С.Л. Крывый, Н.Г. Петренко. –Луганск: Изд-во ВНУ им. В. Даля, 2012. – 323 с.20. Noy N. Ontology Development 101: A Guide to Creating Your FirstOntology / N. Noy, D. L. McGuinness // Stanford Knowledge SystemsLaboratory Technical Report KSL-01-05 and Stanford Medical InformaticsTechnical Report SMI-2001-0880, March 2001 [Електронний ресурс]. –Режим доступу: URL:http://protege.stanford.edu/publications/ontology_development/ontology101.html

Page 279: F 1 G 1 K L ? J K L < < 1 D J : 2 G B G : P 1 H G : E V G ...library.nuft.edu.ua/ebook/file/51.19.pdf · 2..Методи та системи штучного інтелекту

279

21. Гаврилова Т.А. Онтологическое моделирование. – СПб.: Высшая школаменеджмента СпбГУ, 2012 [Електронний ресурс]. – Режим доступу:https://www.i-free.com/sites/default/files/presentation/gavrilova_.pdf22. Башмаков А.И. Интеллектуальные информационные технологии: учеб.пособие / А.И. Башмаков, И.А. Башмаков. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2005. – 304 с.23. Gomez-Perez A. Ontological Engineering: with examples from the areas ofKnowledge Management, e-Commerce and the Semantic Web / A. Gomez-Perez, O. Corcho, M. Fernandez-Lopez. – Springer-Ferlag, 2004. – 411 p.24. Гаврилова Т.А. От инженерии знаний к онтологическому инжинирингу[Електронний ресурс]. – Режим доступу:http://posp.raai.org/data/posp2005/gavrilova/gavrilova.html25. Овдей О.М. Обзор инструментов инженерии онтологий / О.М. Овдей,Г.Ю. Проскудина // Труды 6-ой Всероссийской научной конференции«Электронные библиотеки: перспективные методы и технологии,электронные коллекции» – RCDL2004, Пущино, Россия, 2004[Електронний ресурс]. – Режим доступу: http://rcdl.ru/doc/2004/paper26.pdf26. Казекин М.М. История языков представления онтологий / М.М.Казекин // Компьютерные инструменты в образовании. – 2008. – №4. – с. 3-11.