Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
all.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
4.43 Mб
Скачать
  1. Арифметика в Пролог

Арифметичні операції здійснюються за допомогою спеціальних вбудованих предикатів. У системі Пролог-Д для виконання арифметичних дій передбачений один вбудований арифметичний предикат:

УМНОЖЕНИЕ(Арг1 ,Арг2,АргЗ,Арг4).

Даний предикат передбачає реалізацію такої формули: Арг1*Арг2+АргЗ=Арг4. Предикат передбачає оборотність аргументів і реалізує арифметичні операції в області цілих чисел. Також за допомогою даного предиката можна описати будь-які арифметичні операції:

СЛОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,У,Z);

ВЫЧИТАНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,Z,У);

УМНОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(Х,У,0,Z);

ДЕЛЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(У,Z,0,Х);

Поряд з арифметичним предикатом існують два предикати БОЛЬШЕ й НЕ. Вбудований предикат БОЛЬШЕ(Арг1,Арг2) призначений для порівняння двох цілих чисел або змінних. Він має два аргументи: цілих або змінних, конкретизованих цілими. Обидва аргументи до моменту виконання повинні бути визначені. Якщо ці вимоги не виконані, то з'явиться повідомлення про помилку: "Функція не може бути виконана.". Предикат виконаний, якщо Арг1 > Арг2, інакше - не виконаний. Незважаючи на те, що предикат БОЛЬШЕ один, його достатньо для опису всіх можливих предикатів для порівняння числової інформації: дорівнює - РАВНО; менше -МЕНЬШЕ; менше і дорівнює - МИР і так далі. Це показує база знань, наведена нижче:

РАВНО(Х,Х);

МЕНЬШЕ(Х,У)<-БОЛЬШЕ(У,Х);

МИР(Х,У)<-НЕ(БОЛЬШЕ(Х,У));

В останньому реченні використаний вбудований предикат НЕ, його синтаксис: НЕ(Арг1);

Цей вбудований предикат має один аргумент, він обов'язково повинен бути предикатом. Предикат НЕ виконаний тоді й тільки тоді, коли предикат-аргумент не виконаний.

  1. Вбудовані предикати в Пролог

У системі Пролог-Д використав. такі предикати:

УМНОЖЕНИЕ (Арг1,Арг2,АргЗ,Арг4). Даний предикат передбачає реалізацію такої формули:Арг1*Арг2+АргЗ= Арг4.Також за допомогою даного предиката можна описати будь-які арифметичні операції:

СЛОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,У,Z);

ВЫЧИТАНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(1,Х,Z,У);

УМНОЖЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(Х,У,0,Z);

ДЕЛЕНИЕ(Х,У,Z)<-УМНОЖЕНИЕ(У,Z,0,Х);

Поряд з арифметичним предикатом існують два предикати БОЛЬШЕ й НЕ. Вбудований предикат БОЛЬШЕ(Арг1,Арг2) призначений для порівняння двох цілих чисел або змінних. Він має два аргументи: цілих або змінних, конкретизованих цілими. Обидва аргументи до моменту виконання повинні бути визначені. Якщо ці вимоги не виконані, то з'явиться повідомлення про помилку. Предикат виконаний, якщо Арг1 > Арг2, інакше - не виконаний. Незважаючи на те, що предикат БОЛЬШЕ один, його достатньо для опису всіх можливих предикатів для порівняння числової інформації: дорівнює - РАВНО; менше -МЕНЬШЕ; менше і дорівнює - МИР і так далі. Це показує база знань, наведена нижче:

РАВНО(Х,Х);

МЕНЬШЕ(Х,У)<-БОЛЬШЕ(У,Х);

МИР(Х,У)<-НЕ(БОЛЬШЕ(Х,У));

В останньому реченні використаний вбудований предикат НЕ, його синтаксис: НЕ(Арг1);

Цей вбудований предикат має один аргумент, він обов'язково повинен бути предикатом. Предикат НЕ виконаний тоді й тільки тоді, коли предикат-аргумент не виконаний.

Останній вбудований предикат - це предикат "ОТСЕЧЕНИЕ", призначений для керування логічним виводом. Цей предикат буде потрібний для розв'язання наступних проблем:

  1. Обмеження кількості знайдених розв'язків.

  2. Знаходження деякого особливого розв'язку завдання.

3. Обмеження обсягу пошуку, з метою підвищення ефективності роботи комп'ютера.

Предикат " ОТСЕЧЕНИЕ " позначається знаком вигуку-(!).

Необхідно відзначити, що це традиційне позначення відсікання в системах логічного програмування. Якщо даний предикат використати у якості цілі в реченні, то отриманий при цьому ефект можна проілюструвати дверима, через які можна пройти тільки зліва направо, але не можна повернутися назад через ці двері. Роль дверей виконує символ !.

Як відомо, система Пролог-Д буде намагатися виконувати цілі в реченні у порядку перегляду зліва направо, починаючи від символу <-, від першої до останньої цілі. Якщо яка-небудь ціль виявляється не виконаною, то здійснюється повернення й робиться спроба знайти альтернативні розв'язки. Відсікання обмежує можливість пошуку альтернатив з того моменту, як була переглянута ціль, що позначена символом !. Із цієї причини, якщо не виконані цілі А,Б,В, повернення для знаходження альтернативних рішень у реченні приклад <- А,Б,В,!,Г,Д,Е; можливий, а, якщо не виконані цілі Г,Д або Е, те вже неможливо. Необхідно відзначити важливість цього предиката, особливо при описі завдань, що не допускають множинні розв'язки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]