Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / ПРОГР НА ПРОЛОГЕ.doc
Скачиваний:
42
Добавлен:
23.03.2015
Размер:
669.7 Кб
Скачать

1.5. Подання задачі у вигляді і-або дерева

Розв’язання задачі можна подати у вигляді так званого І-АБО дерева. У корені дерева знаходиться ціль, що ми шукаємо. База даних ПРОЛОГу подається у вигляді піддерев цієї цілі. Вузли цього дерева можуть бути двох видів І-вузол чи АБО-вузол. І-вузол зв'язує підцілі всередині тіла правила (відповідає зв'язці “,”), а АБО-вузол зв'язує твердження всередині процедури (відповідає зв'язці“;”). Піддерева, зібрані в І-вузол будемо з'єднувати за допомогою дуги. Для того, щоб дерево залишалося дійсним деревом, а не перетворювалося на довільний граф,

любить(тетяна, X)

^1

любить(марія, X) фрукти(X) колір(X, червоний) любить(марія, X) X = горішки

любить(марія, персики) колір(персики, жовтий) любить(марія, персики)

^2 любить(марія, горішки) ^6 любить(марія, горішки)

колір(апельсини, оранжевій)

^4 любить(марія, яблука) ^7 любить(марія, яблука)

фрукти(персики) колір(яблука, червоний)

^3 фрукти(яблука)

^5 колір(яблука, жовтий)

Рис. 4. Подання задачі у вигляді І-АБО дерева.

окремі частини дерева можуть дублюватися. Застосуємо цей спосіб для зображення схеми розв’язання нашої задачі (рис. 4). Розставимо покажчики відкоту, використовувані ПРОЛОГом при пошуку розв’язку.

ПРОЛОГ обходить дерево за принципом К–Л–П (Корінь – Лівий – Правий, або “в глибину”). Це відповідає застосуванню тверджень програми за принципом Униз (для різних тверджень) і Праворуч (для підцілей усередині тіла правила).

1.6. Структура програми в системі tp

Реалізація мови ПРОЛОГ у системі TP має ряд відмінностей від традиційних реалізацій мови ПРОЛОГ. Для підвищення ефективності компіляції програми й захисту від помилок у системі TP підвищена роль описів. Тому програма складається з розділів, кожний з яких має певне призначення.

DOMAINS

< опис доменів>

DATABASE

<опис предикатів динамічної бази даних>

PREDICATES

<опис предикатів програми>

CKAUSES

<опис тверджень (тобто тіла всіх предикатів і записів бази даних)>

GOAL

<список цільових тверджень>

У TP є убудовані і користувальніцькі типи даних. У розділі DOMAINS описуються користувальні типи даних, у розділі DATABASE – типи предикатів динамічної бази даних. Обмеженням системи TP постає те, що тут допускається застосовувати тільки факти. Екземпляри предикатів динамічної бази даних у процесі роботи програми можуть додаватися і видалятися. Це є аналогом даних у звичному нам розумінні змісту цього слова.

У розділі PREDICATES описується структура (типи) програмних предикатів. Екземпляри предикатів, описаних у цьому розділі, не можуть додаватися і відалятися з бази даних під час виконання програми. Вони складають поняття програми (незмінна частина коду).

У розділі CLAUSES власне й зібрані усі твердження, що складають тіло програми та базу даних програми. Усі твердження, наявні у цьому розділі, повинні бути попередньо описані в розділах DATABASE або PREDICATES.

Якщо розділ GOAL відсутній, то єдиним способом роботи з цією програмою буде режим діалогу (інтерпретації) у вікні Dialog інтегрованого середовища системи TP. Якщо ж розділ GOAL наявний, то робота програми визначається цілями, заданими в цьому розділі. Такі цілі називаються внутрішніми (на відміну від зовнішніх, що задаються у вікні Dialog).