
- •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. Програмна реалізація лексикографічного впорядкування при символьному вхідному потоці.
- •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.Пролог - мова логічного програмування.
1.1.Загальний огляд мови Пролог.
Перші повідомлення про Пролог з`явились на початку сімдесятих років. Він належить до класу логічних мов програмування. Основні ідеї розробки яких запропонували Р.Ковальськи і П.Хейс. Перший інтерпретатор Пролога був розроблений французами в Марселі під керівництвом А.Колмерое в 1973 році. Наступна версія, виконана Д.Уореном - Единбугська реалізація Пролога на машині DEC-10, перетворила Пролог і разом з ним логічне програмування із площини теоретичних досліджень в площину практичного програмування, зробила його корисним інструментом для вирішення різних задач штучного інтелекту. Про великі можливості мови Пролог свідчить і той факт, що японські вчені вибрали його в якості базової мови для створення обчислювальних систем п`ятого покоління.
Для Прологу характерним є і той факт, що програміст повинен мислити в термінах цілей. Що ми під цим будемо розуміти? Коли ми програмуємо, застосовуючи мову програмування низького рівня, тоді ми повинні описувати як дещо треба зробити ЕОМ. Коли ж використовується мова програмування високого рівня, тоді необхідно вказати що ж потрібно зробити. На відміну від традиційних мов програмування, Пролог вимагає від програміста змінити форму мислення по написанню програм. Прологівська програма являє собою набір визначень ситуацій і формулювань задач, замість того, щоб детально описувати варіанти рішень цих задач. Основою Пролога є обмежений, але на диво потужний і гнучкий набір програмних механізмів, який включає в себе: співставлення зразків, задання структур даних типу дерева і автоматичне повернення. Назва Пролог утворилась як скорочення від “програмування в термінах логіки” і його можна віднести до мов програмування, які будуються на описовому або ж декларативному підході до програмування.
Можна виділити два рівня характеристики прологівської програми: декларативний і процедурний. Перший з них визначає за допомогою відношень, яким повинен бути результат роботи програми. Другий - як цей результат був отриманий і які з відношень реально оброблялись. Пролог-системи значну частину процедурних деталей виконують самостійно без втручання програміста. Останній, таким чином, може більш уваги приділяти легшому декларативному аспекту програми не відволікаючись на організацію процеса обчислень, якщо його не хвилює питання ефективності обчислень.
Попередньо Пролог відносився до теоретичних мов програмування і в більшості використовувався як інструментарій в наукових дослідженнях. На це впливало і те, що довгий час вчені із США не сприймали його переваг для вирішення задач штучного інтелекту. Джон Малпас пояснює цей факт тим, що по перше серед вчених США були сильними лісповські традиції (мова ЛІСП створена в Массачусетському технологічному інституті) і по друге - попереднє знайомство з мовою логічного типу Мікропленнером було невдалим. Остання була реалізована дуже не ефективно. Та з створенням швидких інтерпретаторів і компіляторів Пролог зайняв почесне місце не тільки серед найбільш використовуваних мов вирішення задач штучного інтелекту, а й серед мов, які використовуються спеціалістами в галузях реляційних баз даних, програмної інженерії, задання знань, експертних системах і багатьох інших.