Лабораторна робота №6, Технологія роботи в середовищі ПРОЛОГ-Д
Код роботи: 1114
Вид роботи: Лабораторна робота
Предмет: Технологія створення програмних та інтелектуальних систем
Тема: №6, Технологія роботи в середовищі ПРОЛОГ-Д
Кількість сторінок: 9
Дата виконання: 2016
Мова написання: українська
Ціна: 250 грн
Мета: ознайомитися з технологією роботи в середовищі ПРОЛОГ-Д
Теоретичні відомості
Для прикладу розглянемо генеалогічне дерево представленої сім'ї (Рис.1).
1. Створюємо генеалогічне дерево родини (не менше 7 осіб).
Рис. 1 - Генеалогічне дерево родини
Щоб описати це дерево родинних відносин, необхідно описати кожну стрілку - відношення між двома об'єктами:
Рис. 2 – Відношення між двома об'єктами в ПРОЛОГ-Д
Кожна пропозиція оголошує про один факт наявності відносини родитель. Аргументи відносин можуть бути конкретними (const) і абстрактними - змінні. Пропозиції можуть бути не тільки фактами (твердження, які є вірними), але і правилами (твердженнями, які залежать від умов). Ліва частина правила - голова (висновок) правила, а права складається зі списку цілей, від яких залежить висновок правила.
Цілі записуються через кому (,- и) або (;- или).
Повернемося до генеалогічному дереву і запишемо декілька правил.
Рис. 3 – Правила побудови генеалогічного дерева в ПРОЛОГ-Д
Отец (Х, У): - родитель(Х, У), мужчина (Х). (Рис.2)
«Х является отцом У», якщо виконуються умови, що Х – родитель У, і Х - мужчина.
Дочь (Х, У): - родитель (Х, У), женщина (Х). (Рис.3) Ці відносини називаються вертикальними.
Відносини, які мають в структурі більше двох об'єктів і мають вигляд (рис.4), називаються горизонтальними.
Крім трьох відомих відносин необхідно додати в правило і той факт, що Х не є У (Х <> У), щоб пролог скасував функцію перестановки об'єктів.
Поки - що ми розглядали відносини першого рангу, відносини другого рангу дещо складніші:
Рис. 4 – Відносини другого рангу в ПРОЛОГ-Д
Рис. 5 – Відносини з сім'єю другого рангу в ПРОЛОГ-Д
Дед (Х, У): - родитель (Х, Z), родитель (Z, Y), мужчина (Х). (Рис5).
Тётя (Х, Y): - родитель (А, В), родитель (А, Х), родитель (B,Y), женщина (Х), В < > X. (Рис.6).
2. Розглянемо категорію родинних стосунків. Той факт, що Олександр є батьком Надії, можна записати використовуючи поняття предиката так:
родитель (Александр, Надежда).
Тут в якості імені відносини (предиката) використовується ім'я родитель, Александр і Надежда - в якості аргументів цього відношення.
Використовуючи такий підхід можна написати логічну програму сімейних відносин.
родитель (Александр, Надежда);
родитель (Тамара, Наталья);
родитель (Надежда, Павел);
родитель (Надежда, Вика);
На малюнку наведено родинне дерево
Рис. 6 – Родинне дерево
Предикат може описувати будь-які відносини.
Програми на логічній мові складаються із двох типів фраз: фактів і правил, також званих пропозиціями.
Факти - це відносини або властивості, про які відомо, що вони мають значення "істина".
Правила - це пов'язані відносини; вони дозволяють логічно виводити одну порцію інформації з іншої. Правило приймає значення "істина", якщо доведено, що заданий набір умов є істинним.
родитель (Тамара, Наталья);
родитель (Надежда, Павел);
родитель (Александр, Павел);
родитель (Надежда, Вика);
родитель (X, Вика) <- родитель (X, Павел);
В цьому прикладі перші п'ять рядків є фактами. Останній рядок - це правило.
Дане правило можна перевести на природну мову наступним чином: батьком Віки є батько Павла.
Якщо тепер ввести запит:
? родитель(Александр, Вика).
логічна система відповість ДА
При введенні запиту
? родитель (Тамара, Вика).
логічна система відповість НЕТ.
Таким чином очевидно, що система вивела новий факт – родитель (Александр, Вика), який був відсутній у первісному наборі фактів.
Розглянемо наступний приклад, що описує переваги кожного представника родини:
любит (Тамара, кофе);
любит (Александр, компьютер);
любит (Надежда, плавать);
любит (Вика, куклы);
любит (Натапья, море);
юбит (Павел, X) <- любит (Александр, X);
Хід роботи
1. Завантажте систему ПРОЛОГ - Д. Інтерфейс програми має вигляд
Рис. 7 – Завантаження системи ПРОЛОГ-Д
2. Введення інформації у вікно Программа
Рис. 8 - Введення інформації у вікно Программа в ПРОЛОГ-Д
3. Введення цілі (запит)
Рис. 9 – Введення цілі в ПРОЛОГ-Д
4. Виведення повідомлення у вікні Результат
Рис. 10 - Виведення повідомлення у вікні Результат в ПРОЛОГ-Д
родитель(Александр, Надежда);
? родитель(Александр, Надежда);
5. Введення змінної
Рис. 11 – Введення змінної в ПРОЛОГ-Д
6. Коментарі в програмі
Рис. 12 – Коментарі в ПРОЛОГ-Д
7. Виведення значення змінної
Рис. 13 – Виведення значення змінної в ПРОЛОГ-Д
Рис. 14 – Результат програми в ПРОЛОГ-Д
Коди програм
Завдання:
Створіть програму визначальну родинні стосунки. Програма повинна містити такі факти: