Page 19 - 4800
P. 19

складним  об'єктом,  який  збігається  з  ним  структурно:  data(''April'',  2,  1981)
                  порівнюється з date(Mo, Da, Yr).
                         Пролог проводить  уніфікацію  у двох місцях. По перше,  уніфікація  проходить,
                  коли  є  виклик  зіставлення  голови  фрази.  Інший  спосіб  виконання  уніфікації  –  це
                  використання  знаку  (=).  У  цьому  випадку  Пролог  буде  ототожнювати  об’єкти,  які
                  знаходяться по обидві сторони знаку. Цей підхід є корисним для знаходження значень
                  аргументів складного об’єкта. Наприклад, наступна програма виконує такі дії. Якщо дві
                  особи мають одне й те саме прізвище, тоді другій особі приписується адреса першої.
                         /* Програма 2.2 */
                  domains
                         person = person(name,address)
                         name = name(first,last)
                         address = addr(street,city)
                         street = street(number,street_name)
                         city, street_name = string
                         first,last = string
                         number = integer
                  goal
                         P1 = person(name(„Василь”,”Марків”), addr(street(5,"Бучинського"), „Івано-
                  Франківськ”)),
                         P1 = person(name(_, „Марків”),Address),
                         P2 = person(name(„Галя”, „Марків”), Address), write(P2).

                         2.3 Пошук з поверненням при виконанні Пролог-програм

                         Знання  про  метод  пошуку  з  поверненням,  що  реалізований  в  Пролог-системі,
                  дозволяє правильно складати Пролог-програми і керувати пошуком рішень.
                         Вирішуючи  будь-яку  задачу.  Пролог  будує  дерево  підзадач,  відзначає,  які
                  підзадачі вирішені, а які ще ні. При вирішенні будь-яких підцілей Пролог використовує
                  два основні правила:
                         – пошук рішень підцілей здійснюється зліва на право;
                         – вибір предикатів для розгляду при рішенні кожної підцілі здійснюється в тому
                  порядку, у якому вони з’являються в програмі.
                         При  цьому,  якщо  яка-небудь  із  підцілей  не може  бути  успішно  погоджена,  то
                  виконується повернення (або відкат), щоб знайти інші можливі шляхи її вирішення.
                         Відкат  (або  повернення)  автоматично  ініціюється  системою  Прологу,  якщо  не
                  використовуються спеціальні засоби керування ним.
                         Для  керування  процесом  відкату  в  Пролозі  передбачені  два  предикати:  fail
                  (невдача) і cut (відсікання).

                         2.4  Використання  відкату  після  невдачі  для  організації  найпростішого
                  інтерфейсу виводу

                         Якщо  найпростіший  інтерфейс  виводу  буде  реалізовано  як  внутрішню  мету
                  програми, то внутрішні уніфіковані процеси Прологу закінчать пошук рішення відразу
                  після першого успішного обчислення мети. Для пошуку всіх значень Пролог-програма
                  повинна змусити повторно працювати внутрішні засоби уніфікації Прологу.
                         Одним зі способів реалізації даної задачі є використання методу відкату після
                  невдачі,  що  використовує  предикат  fail.  Приклад  використання  цього  предиката
                  демонструє програма 2.3.
                         /* програма 2.3 */
                  domains
                         name,firm=symbol
                         office=integer
                         object=labour; hobby(name); project(name,firm)
                  predicates
                         work(name, office)
                         colleague(name, name)
                         unite(name, name, object)





                                                              19
   14   15   16   17   18   19   20   21   22   23   24