- •2. Формальні методи у системах штучного інтелекту 21
- •3. Зображення знань. Мова програмування Пролог 55
- •4. Задачі класифікації, експертні системи 99
- •5. Інтелектуальні пакети 110
- •1.1.Основні поняття та історія розвитку штучного інтелекту
- •1.2. Галузі застосування штучного інтелекту
- •Ведення ігор
- •Автоматичні міркування і доведення теорем
- •Експертні системи
- •Розуміння природних мов та семантичне моделювання
- •Моделювання роботи людського інтелекту
- •Планування та робототехніка
- •Мови та середовища ші
- •Машинне навчання
- •Альтернативні уявлення: нейронні мережі та генетичні алгоритми
- •Штучний інтелект і філософія
- •Контрольні питання
- •2. Формальні методи у системах штучного інтелекту
- •2.1. Основні поняття
- •2.2. Основні закони правильного мислення
- •2.3. Класифікація міркувань
- •Дедуктивні міркування. Основні ідеї та складні міркування
- •Безпосередні розумові висновки
- •2.4.Опосередковані висновки
- •Прості силогізми, складні розумові висновки
- •2.5. Індуктивні міркування та висновки за аналогією
- •2.6 Числення висловлювань
- •2.7. Нечіткі множини та нечітка логіка
- •2.8. Предикати. Формальні теорії
- •2.9. Процедура резолюції
- •2.10. Формальні граматики. Теорія алгоритмів
- •2.11. Продукції як алгоритмічна система. Ігри та рішення
- •2.12. Задачі та методи дискретної оптимізації
- •Динамічне програмування
- •Метод віток та меж
- •2.13. Багатокритеріальні задачі
- •2.14. Контрольні запитання
- •3. Зображення знань. Мова програмування Пролог
- •3.1. Ціль та методи зображення знань
- •3.2. Декларативне та процедурне зображення знань. Семантичні мережі
- •3.3. Фрейми та продукційні системи
- •3.4. Програмування мовою Пролог
- •Вступ до прологу. Загальна характеристика та основні поняття
- •Структура програми, домени, предикати та твердження
- •3.5. Управління обчисленнями у мові Пролог Зіставлення та повернення
- •Відтинання
- •Рекурсивні обчислення, обчислення факторіалу, знаходження квадратного кореня методом ітерацій
- •Списки у мові Пролог, бінарні дерева
- •3.6. Застосування Прологу, практична робота з використанням мови Пролог Застосування Прологу у програмуванні, системах ші, базах даних, у математиці
- •Практична робота на мові Пролог, основні інструменти та методика роботи
- •3.7. Контрольні запитання
- •4. Задачі класифікації, експертні системи
- •4.1. Особливості експертних систем, приклади та їх розробка
- •4.2. Розробка ес, мови та оболонки, набуття знань та приклад сценарію
- •4.3. Контрольні питання
- •5. Інтелектуальні пакети
- •5.1. Обчислювальні моделі, задачі та синтез програм
- •5.2. Загальна характеристика та меню системи тк Solver. Зображення обчислювальної моделі
- •5.3.Мова специфікації обчислювальних задач. Обчислювальна модель в tks
- •5.4. Складання обчислювальних моделей і задач, практична робота в tks
- •5.5. Завдання для самостійної роботи
- •5.6. Контрольні запитання
- •Додатки Додаток 1 Операції над нечіткими числами на основі принципу узагальнення. Використання в теорії штучного інтелекту
- •Література
3.6. Застосування Прологу, практична робота з використанням мови Пролог Застосування Прологу у програмуванні, системах ші, базах даних, у математиці
Ключовою проблемою сучасного програмування є складання специфікацій – вимог до програмного продукту. Недосконалість специфікацій змушує багаторазово повертатися до їх доробки з наступних, у тому числі заключних етапів розробки, що призводить до істотного затягування і подорожчання останньої. Як мова декларативного типу, Пролог навчає створювати добре структуровані описи проблем. Програмування мовою ПРОЛОГ є настільки близьким до запису специфікацій, наскільки це взагалі доступно для практичної мови програмування, у певному розумінні програми мовою Пролог є виконувані специфікації. Якщо програма мовою Пролог не є очевидною, то мало надії на очевидність специфікації, якою мовою вона не була записана. Згідно з сучасними поглядами, кращою організацією розробки програм є еволюція прототипів. За такої стратегії на кожному етапі проекту є працююча версія програми. Розробка відбувається шляхом переробки чи розширення прототипу і легко реалізується мовою Пролог. Багато реалізацій прологу підтримують модельний стиль програмування.
Використовуючи обчислювальну модель прологу, легко створювати логічні програми, що реалізують метод „утворити і перевірити”. Такі програми містять кон’юнкцію двох цілей, одна з яких діє як генератор рішень, що припускаються, а друга перевіряє, чи є всі ці рішення прийнятними. Процес триває ітераційно, доки не буде сформована множина рішень із заданими властивостями. Програмування, особливо мовами високого рівня та декларативними, дає змогу уточнити відповідні концепції та ідеї. Пролог можна розглядати не тільки як інструмент „кодування”, але і як формалізм для записування і реалізації ідеї, тобто інструмент мислення. „Концептуальність” Прологу істотно скорочує текст програми на ньому, порівняно з Паскалем.
Існує кілька добре відомих оболонок експертних систем, написаних мовою Пролог. Розроблено також програми перекладу з однієї мови на іншу, як природні, так і мови програмування та природномовні інтерфейсу для систем ШІ. Мову Пролог можна застосовувати для побудови динамічних баз даних. Алгоритм уніфікації автоматично обирає факти з коректними значеннями для відомих параметрів і присвоює значення невизначеним, а алгоритм повернення забезпечує отримання усіх розв’язків.
Роботу з базою даних (БД) забезпечують три стандартні предикати:
asserta – введення нового факту перед будь-яким фактом, що існує у даному відношенні;
assertz – введення нового факту після будь-якого факту, що існує в даному відношенні;
retract – видалення факту з бази даних.
Програмування мовою Пролог розширюється введенням методів, відсутніх у логіці першого порядку. Є предикати, які як розв’язки виробляють множини, наприклад, елементів певного списку, що задовольняють задану умову. Подібні розширення можна здійснити вбудованими засобами Прологу, такими предикатами, як assert та retract. Логічні програми можна розглядати як потужне розширення моделі реляційних БД. Основні операції реляційної алгебри легко виражаються в логічному програмуванні. Наприклад, операція декартового добутку:
Операція проекції запишеться як правило з виключенням частини аргументів, вибірка за умови – з кон’юнктивним членом у правій частині, що виражає умову відбору.
У галузі символьної математики для розв’язання задач символьного диференціювання задаються передусім основні формули:
derivative (X, Y, 1)
derivative (X^N, X, M):-
.
derivative (X^N, X, M):-
.
derivative (e^X, X, e^X)
derivative (sin (X), X, cos (X))
…………………………………
derivative (F+G, X, DF+DG):-
derivative (F, X, DX), derivative (G, X, DG).
Побудована за такими правилами система дає змогу визначити числові значення похідних. Для отримання результатів у символьній формі краще задавати елементарні функції типу func (sin, x), де оператором виступає ім’я функції. Тепер можна записати, наприклад, правило диференціювання складної функції:
derivative (func (F, U), X, DF*DU):-
derivative (func (F,U), U, DF), derivative (U, X, DU).
Перетворення звичного математичного запису в таку нотацію і зворотне перетворення можуть бути легко запрограмованими.
Відомий спрощений варіант програми (PRES (Prolog Equation Solving System), розробленої на факультеті Единбурзького університету для розв’язку рівнянь у символьній формі. Комплекс розв’язує рівняння на рівні старшокласника математичної школи. У нього закладено такі методи:
ізоляція невідомої чи єдиної функції від неї у лівій частині рівняння;
гомогенізація (перетворення лівої частини рівняння у поліном щодо певного терму);
розв’язання квадратних рівнянь;
факторизація.
Для кожного методу є по одному реченню із заголовком solve_equation. Методи нарізно і у сукупності ілюструються на таких прикладах:
Окрім того, мовою Пролог було складено програми символьного інтегрування, доведено теореми з геометрії, інтервальної арифметики, арифметики з плаваючою комою довільної розрядності.
