
- •Логічне програмування
- •Логічне програмування
- •7.080403 - “Програмне забезпечення автоматизованих систем”
- •Лабораторна робота № 1. Пролог - мова логічного програмування.
- •1.1.Загальний огляд мови Пролог.
- •1.2.Переваги і недоліки мови Пролог.
- •1.3.Числення предикатів - математична основа мови.
- •1.4.Побудова теорії деякої області знань.
- •1.5.Від формальної логіки до логічного програмування.
- •1.6.Механізм логічного виведення і керування пошуком.
- •Лабораторна робота №2 основні концепції прологу
- •2.1.Факти та правила.
- •2.2.Як змінні отримують свої значення.
- •2.3.Анонімні змінні.
- •2.4.Складні цілі: кон`юнкція та диз`юнкція.
- •2.5.Способи Співставлення.
- •Лабораторна робота № 3 структура програми pdc прологу
- •3.1.Основні розділи програми.
- •3.2 Стандартні домени.
- •3.3.Синтаксис правила.
- •3.4.Директиви комп`ютеру.
- •3.5.Бектрекінг.
- •3.5.1.Бектрекінг з внутрішньою ціллю.
- •Лабораторна робота № 4 контроль пошуку рішень
- •4.1.Використання предикату fail.
- •4.2.Відміна бектрекінгу.
- •1.Коли ви знаєте попередньо, що певні варіанти ніколи не дадуть поштовху в знаходженні розв'язку, тоді використання cut(зелений cut) відкидає перегляд альтернативних шляхів.
- •2.Коли логіка програми потребує використання cut для відкидання перегляду альтернативних підцілей, тоді його називають червоним відтинанням.
- •4.3.Предикат not - заперечення як неуспіх.
- •4.4.Труднощі у використанні відтинання і заперечення.
- •4.5.Засоби керування.
- •4.6.Узагальнення.
- •Лабораторна робота №5. Прості та складні об'єкти.
- •5.1 Прості дані.
- •5.1.1. Константи як об'єкти даних.
- •5.2.Складні об'єкти даних і функтори.
- •5.2.1.Уніфікація складних об`єктів.
- •5.2.2.Приклад застосування функторів.
- •5.3.Приклад використання складних об'зктів.
- •5.4.Опис доменів складних об'єктів.
- •5.5.Багаторівневі складні об'єкти.
- •5.6.Приклад, який ілюструє задання структури речення англійської мови.
- •5.7.Опис змішаних складних об'єктів.
- •5.7.1.Аргументи, які можуть мати різний тип.
- •5.7.2 Cписковий тип.
- •5.8.Порівняння складних об`єктів.
- •5.9.Узагальнення.
- •Лабораторна робота №6. Ітерація і рекурсія.
- •6.1.Реалізація ітераційного процесу за допомогою бектрекінгу.
- •6.2.Дії типу до і після.
- •6.3.Застосування бектрекінгу для реалізації циклів.
- •6.4.Рекурсивні процедури.
- •6.5.Використання аргументів в якості параметрів циклу.
- •Лабораторна робота №7 рекурсивні структури даних
- •7.1.Структура даних типу дерева.
- •7.2.Обходи дерева.
- •7.3.Створення дерева.
- •7.4.Бінарний пошук на дереві.
- •7.5. Сортування по дереву.
- •7.5.1 Програмна реалізація лексикографічного впорядкування при символьному вхідному потоці.
- •Лабораторна робота № 8 робота з списками в пролозі
- •8.1.Рекурсивна сутність списку.
- •8.2.Обробка списків.
- •8.2.1.Друк списків.
- •8.2.2.Підрахунок кількості елементів.
- •8.2.3.Іще один варіант підрахунку довжини списку.
- •8.2.4.Модифікація списку.
- •8.2.5.Належність елемента списку.
- •8.3.Використання одного й того ж предикату для вирішення різних задач.
- •8.4. Знаходження зразу всіх розв`язків.
- •8.5.Складні списки.
- •8.6.Реалізація синтаксичного аналізу за допомогою списків.
- •Лабораторна робота №9 техніка програмування в пролозі
- •9.1.Принципи побудови експертної системи.
- •9.2. Макетування: задача маршрутизації.
- •9.3.Пригоди в дивних печерах.
- •9.4. Моделювання апаратних засобів.
- •9.5.Задача про ханойські башні.
- •9.6.Ділення слів на склади.
- •9.7. Задача про n королев.
- •Лабораторна робота №10 особливі технічні прийоми для професіоналів
- •10.1.Потоковий аналіз.
- •10.2.Керування потоковим аналізом.
- •10.3. Стиль програмування.
1.2.Переваги і недоліки мови Пролог.
Резюмуючи сказане раніше можна виділити наступні переваги Прологу:
1.Пролог має чітку математичну основу, дуже близьку до людського мислення.
2.Використання єдиної мови специфікацій (числення предикатів) для опису вимог до програм і опису самої програми на Пролозі дозволяє поєднувати процес написання програми і її верифікацією.
3.Застосування відношення, як базового поняття мови, надає змогу зручно працювати з реляційними базами даних.
4.Паралельний принцип організації обчислень дозволяє просто і природньо реалізовувати Пролог-програму на паралельному комплексі.
5.Пролог підтримує обчислення, які базуються на пошуку через зворотній ланцюжок міркувань. Це забеспечує ефективність використання Прологу при побудові експертних систем.
6.Пролог може зберігати за допомогою “логічних змінних” проміжні результати обчислень для наступного використання. Це дозволяє природньо вирішувати проблему організації логічного виведення.
Поряд з вказаними перевагами спеціалісти зазначають наступні вади Прологу.
1.Складність розуміння процесу виконання програми на Пролозі, пов`язані з “невидимим” порядком побудови виведення результату програмою.
2.Погані засоби для вияву екстралогічних властивостей (оператори динамічного приєднання і видалення тверджень).
3.Відсутність досконалих засобів для розробки і відлагодження великих програм.
4.Недостатні засоби підтримки модульного принципу програмування.
1.3.Числення предикатів - математична основа мови.
В основі Прологу лежить поняття відношення, яке взяте з предикатних логік. Слово “предикат” відноситься до розділу математичної логіки, в якому досліджуються операції над логічними висловленнями. В логіці предикатів під предикатом розуміється деяка властивість, логічна функція від довільного числа аргументів, яка приймає тільки два значення - “істина” або ж “хибність”.
Логіку предикатів, в деякій мірі, можна вважати спеціальним математичним апаратом формалізації людського мислення. Звідки, мови програмування логічного типу є найбільш зручними, для роботи з базами знань.
Числення предикатів використовує наступні основні елементи:
1)константні терми с1,с2,...;
2)змінні терми х1,х2,...;
3)функціональні терми f1,f2,...;
4)предикатні букви p1,p2,...;
5)логічні символи ,,,,,;
6)спеціальне висловлення .
Елементарне висловлення складається з предикату і зв`язаних з ним термів. Складні висловлення будуються з елементарних за допомогою логічних зв`язок. Серед них можна виділити логічні зв`язки: “і” (and, ), “або ж” (or,) , “ні” (not, ) і імплікація (). Імплікація займає особливе місце, оскільки вона використовується для побудови специфічних правил і читається “якщо..., тоді...”.
Для того щоб в численні предикатів можна було використовувати змінні терми, застосовується спеціальна структура - квантор.
Квантори використовуються для зазначення міри, в якій значення змінних повинні бути істинними для того, щоб в цілому висловлення стало істинним. Виділяють квантор узагальнення () і квантор існування ().
В логіці предикатів елементарним об`єктом, який має значення “істина”, є атомарна формула. Атомарна формула включає в себе символьні позначення предикату і термів, які відіграють роль аргументів цього предикату. В загальному випадку позначення предикату є ім`ям відношення, яке існує між аргументами.
Атомарна формула записується як позначення предикату і має наступний вигляд: Р(t1,t2,...,tn), де Р - позначення предикату, а t1,t2,...,tn - терми.
Число термів для кожного предикату фіксоване і називається його арністю. Терми визначаються наступним чином:
1)константний терм - терм;
2)змінний терм - терм;
3)якщо арність функціональної букви є n, а t1,t2,...,tn - терми, тоді f(t1,t2,...,tn) також терм.
Правильно побудована формула (ППФ) отримується в результаті комбінування атомарних формул за допомогою логічних зв`язок.
Символ позначає хибну замкнуту формулу і визначає поняття “протиріччя”. Так формула А означає хибність А, вона еквівалентна формулі А.
Серед формул можна виділити спеціальний клас формул - тотожньо істинні формули, які називають аксіомами. Приклад аксіоми:
А А.
Більш детальний опис маніпулювання з формулами і правилами виведення можна знайти в довільному підручнику по математичній логіці.