- •Міністерство освіти і науки України Дніпропетровський національний університет
- •Структури та організація даних в еом
- •Дніпропетровськ
- •1. Понятие об информации
- •1.1. Объем информации
- •1.2. Количество информации
- •Вопрос 1: Забила ли Украина более одного гола? Да – 1 / Нет – 0;
- •Вопрос 2: Забила ли Италия более одного гола? Да – 1 / Нет – 0;
- •Вопрос 3: Забила ли Украина четное число голов? Да – 1 / Нет – 0;
- •Вопрос 4: Забила ли Италия четное число голов? Да – 1 / Нет – 0;
- •Вопрос1. Произошло ли с1? Да – 1;
- •Вопрос2. Произошло ли с2? Да – 01;
- •Вопрос3. Произошло ли с3? Да – 001;
- •2. Преобразование информации при решении задач на компьютере
- •Понятие данных
- •Информация и данные. Понятие о структурах данных. Информационная модель объекта
- •Понятие о данных
- •1. Основи мови програмування пролог
- •1.1. Основні поняття
- •1.2. Синтаксис мови пролог
- •1.3. Класифікація даних у пролозі
- •1.4. Приклад доказу в пролозі
- •1.5. Подання задачі у вигляді і-або дерева
- •1.6. Структура програми в системі tp
- •1.7. Убудовані типи даних мови tp
- •1.8. Висновки
- •2. Підстави логічного програмування
- •2.1. Принцип резолюцій
- •2.3. Способи застосування принципу резолюцій
- •2.4. Диз’юнкти хорhа
- •3. Три семантичні моделі пролог-програми
- •4. Подання знань
- •4.1. Процес подання знань
- •4.2. Способи подання бази знань
- •4.2.1. Представлення цілісних інформаційних елементів у вигляді фактів
- •4.2.2. Подання атрибутів у вигляді фактів
- •4.2.3. Представлення знань у вигляді списку структур
- •4.2.4. Подання у вигляді рекурсивних структур
- •4.2.5. Подання у вигляді двійкового дерева
- •4.2.6. Порівняння різних виглядів подання бази даних
- •4.2.7. Компонування даних у список
- •4.3. Використання складених об'єктів
- •4.4. Використання альтернативних доменів
- •4.5. Засоби документування програми
- •4.6. Типи й властивості відношень предметної області
- •4.6.1. Обмеження, що забезпечують цілсність відношень
- •4.6.2. Властивості відношень бази знань і їхня підтримка в програмі на tp симетрія і асиметрія
- •Рефлексивность і нерефлексивность
- •Транзитивність
- •Симетричність і транзитивність
- •Спроба 1
- •Спроба 2.
- •Запам'ятовування списку відвіданих місць
- •4.7. Списки
- •4.7.1. Подання й зображення списків
- •4.7.2. Використання списків
- •4.7.3. Метод поділу списку на голову і хвіст (псгх)
- •4.7.4. Списки списків
- •Методи програмування
- •5.1. Повторення і відкіт (пв)
- •5.2. Метод відкоту після невдачі (впн)
- •5.3. Метод відсікання та відкоту (вв)
- •5.4. Повторення та рекурсія (пр)
- •5.5. Метод узагальненого правила рекурсії (упр)
- •5.6. Побудова рекурсивних структур методом прогресуючої підстановки (пп)
- •5.7. Предикат відсікання
- •5.8. Організація багаторазово виконуваних інтерактивних програм (бвіп)
- •5.9. Метод аналізу станів (ас)
- •5.10. Метод організації висхідних рекурсивних обчислень (вро)
- •5.11. Комбінація спадних і висхідних рекурсивных обчислень (ксвро)
- •5.12. Предикат fail-if (not)
- •5.13. Предикат true
- •5.14. Модифікація бази даних (мбд)
- •5.15. Керування базою даних (кбд)
- •5.16. Глобальні змінні (гз)
- •5.17. Накопичування результатів у базі даних за допомогою вимушеного відкоту і глобальної змінної (нрввгз)
- •5.18. Метапрограмування (мп)
- •Список рекомендованої літератури
- •1. Основи мови програмування пролог 20
- •2. Підстави логічного програмування 30
- •3. Три семантичні моделі пролог-програми 35
- •4. Подання знань 38
- •Програмування мовою пролог
3. Три семантичні моделі пролог-програми
Термін “семантика” (зміст) формули символічної логіки відноситься до визначення істинісного значення цієї формули. Під семантикою деякої конструкції мови програмування розуміється поведінка комп'ютера при виконанні цієї конструкції. Оскільки ПРОЛОГ одночасно є і мовою логіки і мовою програмування, то до нього застосовні всі ці трактування терміна семантика.
Для пояснення змісту ПРОЛОГ-програми застосовуються три семантичні моделі:
декларативна модель;
процедурна модель;
модель у вигляді абстрактної машини (АМ).
Існування трьох семантичних моделей додає ПРОЛОГу велику виразність.
Декларативна модель – специфікує істинісні значення конкретних випадків відношень. Слово “декларативний” вживається тому, що у фразах мови ПРОЛОГ декларується (тобто оголошується), що будуть виконані деякі відношення між аргументами, якщо виконані всі умови, що входять у ці фрази.
У декларативній моделі фрази ПРОЛОГу являють собою формули логіки предикатів 1-го порядку, що записані у формі фраз Хорна, тобто як логічні зв’язки можуть виступати лише “якщо”, “і” й “або”. Послідовність умов не має значення, тому що всі умови повинні виконуватись одночасно. Множина фраз, що складає ПРОЛОГ-програму, описує істотні особливості логічних структур прикладної області.
Процедурна модель – специфікує процес установлення істинісного значення даної фрази. Тим самим умови трактуються як послідовність кроків, які необхідно успішно виконати для того, щоб виконувалось відношення, наведене у заголовку цієї фрази. Множина фраз із тим самим ім'ям предиката й з однаковою кількістю аргументів трактується як процедура. Запит з указівкою того ж імені предиката й тієї ж кількістю аргументів, що й у процедурі, трактується як виклик цієї процедури. Для того, щоб запит виявився успішним, необхідно, щоб процедура, викликана в ньому, була успішно виконана. Кожна умова у фразі також трактується як виклик процедури.
Модель у вигляді АМ. При виконанні запиту інтерпретатор застосовує стосовно множини фраз ПРОЛОГу деяку стратегію розв’язання задачі. З погляду обчислень ця стратегія може бути описана за допомогою деякої АМ. У мові ПРОЛОГ запит і множина фраз мають обчислювальний сенс. Це виявляється в тому, що вони викликають визначене поводження інтерпретатора ПРОЛОГу. Модель у вигляді АМ описує зміст запиту й множини фраз через дії цієї машини. Дії такої АМ можна розглядати як застосування правила резолюції. Можна також пояснити дії цієї машини через операції зі стеком активних запитів.
Варто розрізняти два рівні змісту програми на ПРОЛОЗі. А саме:
1) Декларативний – визначає, ЩО повинно бути результатом роботи програми (не вдаючись у подробиці того ЯК система шукає ці результати).
2) Процедурний – визначає, ЯК відношення реально обробляються ПРОЛОГ-системою.
Здатність ПРОЛОГ-системи самостійно проробляти багато процедурних деталей вважається однією зі специфічних переваг ПРОЛОГу.
Приклад. Нехай у ПРОЛОГ-програмі наявна фраза:
керівник (Прізвище, Оклад):-
службовець(Прізвище, Оклад),
Оклад > 600.
Декларативний зміст:
деяка особа (Прізвище) – керівник, якщо
він чи вона є службовець з окладом, що перевищує 600.
Процедурний зміст:
один з способів знайти керівника – це:
по-перше, відшукати службовця і;
по-друге – перевірити, чи перевищує оклад цього службовця суму 600.
Модель у вигляді АМ потребує розуміння поведінки програми у взаємодії інтерпретатора ПРОЛОГа з базою даних (програмою):
після того, як знайдено службовця з окладом Оклад, і перевірка умови
Оклад > 600 не призвела до успіху, інтерпретатор повернеться до
останньго показника відкоту і буде шукати іншого службовця.
Оскільки результати роботи програми, в принципі, визначаються її декларативним змістом, останнього доситатньо для написання програми. Це має практичне значення, тому що декларативні аспекти програми звичайно більш легкі для розуміння. Тому, щоб отримати з цього найбільшу користь, програмісту слі зосередитися головним чином на декларативному змісті і, по можливості, не відволікатися на деталі процесу обчислень.
Це робить програмування на ПРОЛОЗі більш легким, ніж на таких типових процедурно-орієнтованих мовах, як ПАСКАЛЬ. На жаль, декларативного підходу не завжди достатньо. Їх часто не можна ігнорувати з міркувань ефективності.
Можна запропонувати таку схему розробки програми на ПРОЛОЗі:
А. Спочатку варто установити, які факти і відношення властиві даній задачі. Вони можуть бути безпосередньо виражені твердженнями ПРОЛОГу й утворюють декларативний опис задачі. Такий опис не задає порядок використання тверджень й узгодження цілей у межах твердження, не показує, як сформульовані твердження можуть бути використані для розв’язання задачі.
Б. ПРОЛОГ буде намагатися погоджувати список цільових тверджень, переглядаючи їх зверху вниз і зліва направо. У цьому полягає процедурна семантика тверджень. Іноді декларативний опис може бути виконаний як програма (тобто розв’язок задачі не залежить від порядку обробки тверджень у програмі). В інших випадках потрібно упорядкувати твердження таким чином, щоб порядок узгодження тверджень ПРОЛОГ-системою привів до розв’язку задачі.
В. Однак часто одного упорядкування мало. Можливо прийдеться додати деякі деталі для керування ходом виконання програми: предикати repeat, fail і відсікання. Така інформація вказує системі ПРОЛОГ ЯК застосовувати факти і відношення. Отриману в результаті програму варто розглядати вже процедурно.
При написанні й розгляді процедури необхідно визначити такі характеристики:
1. Скільки разів може бути успішно погоджене цільове твердження?
Коли цільове твердження викликає процедуру, важливо знати, що станеться, якщо механізм відкоту знову приведе до цього цільового твердження:
- чи буде воно погоджене знову;
- чи повинно бути воно погоджене.
2. Яка конкретизація змінних відбувається при використанні кожного твердження?
Зміст виклику процедури, незалежно від побічних ефектів, полягає в тому, щоб:
- зробити яку-небудь перевірку або
- здійснити конкретизацію чи зчеплення змінних.
3. Які виникають побічні ефекти?
Звичайно це зміни, пов'язані з уведенням у базу даних і видаленням з неї, або обробка термів. Для інтерактивних програм це може бути введення з клавіатури або вивід на екран.
4. Які параметри застосовуються для вхідних значень і які для вихідних?
Деякі процедури можуть мати параметри, що служать в окремих випадках для введення, а в інших – для виведення.