Застосування Прологу у програмуванні, системах ШІ, базах даних, у математиці
Ключовою проблемою сучасного програмування є складання специфікацій – вимог до програмного продукту. Недосконалість специфікацій змушує багаторазово повертатися до їх доробки з наступних, у тому числі заключних етапів розробки, що призводить до істотного затягування і подорожчання останньої. Як мова декларативного типу, Пролог навчає створювати добре структуровані описи проблем. Програмування мовою ПРОЛОГ є настільки близьким до запису специфікацій, наскільки це взагалі доступно для практичної мови програмування, у певному розумінні програми мовою Пролог є виконувані специфікації. Якщо програма мовою Пролог не є очевидною, то мало надії на очевидність специфікації, якою мовою вона не була записана. Згідно з сучасними поглядами, кращою організацією розробки програм є еволюція прототипів. За такої стратегії на кожному етапі проекту є працююча версія програми. Розробка відбувається шляхом переробки чи розширення прототипу і легко реалізується мовою Пролог. Багато реалізацій прологу підтримують модельний стиль програмування.
Використовуючи обчислювальну модель прологу, легко створювати логічні програми, що реалізують метод „утворити і перевірити”. Такі програми містять кон’юнкцію двох цілей, одна з яких діє як генератор рішень, що припускаються, а друга перевіряє, чи є всі ці рішення прийнятними. Процес триває ітераційно, доки не буде сформована множина рішень із заданими властивостями. Програмування, особливо мовами високого рівня та декларативними, дає змогу уточнити відповідні концепції та ідеї. Пролог можна розглядати не тільки як інструмент „кодування”, але і як формалізм для записування і реалізації ідеї, тобто інструмент мислення. „Концептуальність” Прологу істотно скорочує текст програми на ньому, порівняно з Паскалем.
Існує кілька добре відомих оболонок експертних систем, написаних мовою Пролог. Розроблено також програми перекладу з однієї мови на іншу, як природні, так і мови програмування та природномовні інтерфейсу для систем ШІ. Мову Пролог можна застосовувати для побудови динамічних баз даних. Алгоритм уніфікації автоматично обирає факти з коректними значеннями для відомих параметрів і присвоює значення невизначеним, а алгоритм повернення забезпечує отримання усіх розв’язків.
Роботу з базою даних (БД) забезпечують три стандартні предикати:
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), розробленої на факультеті Единбурзького університету для розв’язку рівнянь у символьній формі. Комплекс розв’язує рівняння на рівні старшокласника математичної школи. У нього закладено такі методи:
1) ізоляція невідомої чи єдиної функції від неї у лівій частині рівняння;
2) гомогенізація (перетворення лівої частини рівняння у поліном щодо певного терму);
3) розв’язання квадратних рівнянь;
4) факторизація.
Для кожного методу є по одному реченню із заголовком solve_equation. Методи нарізно і у сукупності ілюструються на таких прикладах:
Окрім того, мовою Пролог було складено програми символьного інтегрування, доведено теореми з геометрії, інтервальної арифметики, арифметики з плаваючою комою довільної розрядності.
Дата добавления: 2015-04-01; просмотров: 850;