
ЛК.12 – Основи прийняття рішень методом пошуку
Анотація
Визначення методу пошуку. Загальні принципи пошуку у мові логічного програмування. Неінформований пошук. Пошук в глибину. Пошук в ширину. Загальні аспекти інформованого пошуку. Аналіз загальних методів пошуку.
3.1 Визначення методу пошуку.
Методи пошуку в системі пролог Prolog реалізуються в форму відповіді на запитання. Питання до системи Prolog завжди являє собою послідовність з однієї або декількох цілей. Щоб відповісти на питання, Prolog намагається досягнути всіх цілей. Але що в даному контексті означає вираз "досягти мети"?. Досягти мети - це означає продемонструвати, що мета є істинною, за умови, що відносини в програмі є істинними. Іншими словами, вираз досягти мети означає: продемонструвати, що мета логічно випливає з фактів і правил, заданих в програмі. Якщо питання містить змінні, система Prolog повинна також знайти конкретні об'єкти (замість змінних), при використанні яких цілі досягаються. Для користувача відображаються варіанти конкретизації змінних, отримані при підстановці конкретних об'єктів замість змінних. Якщо система Prolog не може продемонструвати для якогось варіанту конкретизації змінних, що цілі логічно випливають з програми, то ви-дає в якості відповіді на запитання слово "по".
Таким чином, з точки зору математики програму Prolog слід інтерпретувати так: Prolog приймає факти і правила як набір аксіом, а питання користувача - як теорему, що вимагає докази; потім Prolog намагається довести теорему, тобто продемонструвати, що вона є логічним наслідком з аксіом.
Проілюструємо цей підхід до опису роботи системи Prolog на класичному прикладі. Припустимо, що задані наведені нижче аксіоми.
Всі люди здатні помилятися. Сократ - людина.
З цих двох аксіом логічно випливає теорема: Сократ здатний помилятися.
Перша аксіома, наведена вище, може бути переформульована наступним чином:
Для всіх X, якщо У. - людина, то х здатний збивати.
Відповідним чином цей приклад може бути переведений на мову Prolog, як показано нижче на рисунку 12.1.
Рисунок 12.1 – Приклад до задачі пошуку
Отже, було показано, що може існувати послідовність кроків, що дозволяють досягти певної мети, тобто з'ясувати, що мета є істинною. Така послідовність кроків називається послідовністю доказу. Тим не менше ще не показано, як фактично система Prolog знаходить таку послідовність доказу.
Prolog шукає послідовність доказу в порядку, зворотному тому, який був тільки що використаний. Ця система починає не з простих фактів, заданих в програмі, а з цілей, і за допомогою правил замінює поточні цілі новими до тих пір, поки не виявиться, що нові цілі є простими фактами.
Графічна схема виконання програми має форму дерева. Вузли дерева відповідають цілям або спискам цілей, які повинні бути досягнуті. Дуги між вузлами відповідають етапам застосування (альтернативних) пропозицій програми, на яких цілі одного вузла перетворяться в цілі іншого вузла.
Процес виконання програм Prolog полягає у пошуку шляхів, що закінчуються такими простими фактами. У ході пошуку система Prolog може увійти в одну з гілок, не дозволяють досягти успіху. При виявленні того, що гілка не дозволяє досягти мети, система Prolog автоматично повертається до попереднього вузла і намагається використовувати в цьому вузлі альтернативну пропозицію..