Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц по Visual Prolog.doc
Скачиваний:
4
Добавлен:
02.05.2019
Размер:
937.47 Кб
Скачать

1.2. Сучасний стан логічного програмування

Теоретичний напрям „Логічне програмування”, працює на стику двох дисциплін: математичної логіки і теоретичного програмування.

Логічне програмування займається наступними питаннями:

  • шукає нові методи опису задачі;

  • шукає нові методи формального логічного висновку.

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

Розвиток напряму „Логічне програмування” породив нову парадигму програмування „Логічне програмування”.

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

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

Парадигма „Логічного програмування” така: Задача описується твердженнями на основі предикатів. Розв’язок задачі знаходиться за допомогою логічного виводу.

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

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

Однак „Логічне програмування” ефективно не тільки при розробці інтелектуальних систем.

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

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

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

  1. Опис задачі на пролозі. Факти і правила

2.1. Опис задачі на пролозі

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

Опис задачі на мові Пролог аналогічний опису задачі на природній мові. Такий опис складається з трьох типів тверджень: завжди істинні твердження; твердження істинність якого треба довести; твердження, які істинні при істинності умов. Для утворення тверджень програміст використовує дані задачі, або знання які відомі йому про об’єкти предметної області поза задачею.

Розглянемо задачу1: Відомо, що в родині, Дмитро батько Володимира, і Дмитро батько Олександра. Визначити, хто в родині брати.

Для формування тверджень виявляють в задачі об’єкти і відношення між об’єктами. Об’єкти задачі: Дмитро, Володимир, Олександр. Відношення між об’єктами задачі – батько, брати. Твердження формуються на основі відношень. Відношення між об’єктами можуть бути істинними. Існують також відношення між об’єктами, істинність яких невідома і її треба визначити.

Завжди істинні твердження формуються з істинних відношень. Їх одержують з того, що відомо в задачі.

Сформуємо істинні твердження:

  • Дмитро батько Володимира (1 );

  • Дмитро батько Олександра (2 ).

Сформуємо твердження, яке описує що треба знайти в задачі: Визначити X та Y, які є братами. Воно формулюється на основі відношення брати для об’єктів X та Y. Щоб знайти об’єкти предметної області, які є братами сформуємо умовне твердження разом з умовами, при яких умовне твердження істинне.

Для формування твердження істинного при істинності умов скористаємося знаннями про родинні стосунки. Невідомі об’єкти будемо позначати змінними. Відомо, що: X та Y будуть братами, якщо в них спільний батько Z.

Твердження істинне при істинності умов формується з відношення брати між X та Y. А умови, при яких умовне твердження буде істинним формуються з відношення батько для об’єктів X і Z та об’єктів Y і Z.

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

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

Кожний тип твердження має свою форму запису(синтаксис). За синтаксисом компілятор Прологу визначає тип твердження.