Page 88 - 4495
P. 88

грамування,  такі  як  C++  бібліотеки  –  ILOG  [40,  41]  чи  об’єктно-
            орієнтованою мовою Oz [42].
                  Базова структура концепції CLP для розв’язання проблеми задо-
            волення обмежень є однаковою в більшості реалізацій і складається з

            кількох частин. Перша частина містить визначення всіх змінних про-
            блеми з їхніми доменами. Домени змінних зменшуються завдяки об-
            меженням, які встановлюються на наступному кроці. Метод пошуку в

            просторі рішень описується через маркування (labeling) або через пе-
            речислення  (enumeration)  –  процес  генерації  значень  для  окремих
            змінних  домену.  Описана  структура  може  бути  переписана  наступ-
            ним CLP кодом:

                  solve(Variables) :-
                  define_variables(Variables),
                  state_constraints(Variables),

                  labelling(Variables).
                  Дерево пошуку може бути описано через наступний код, де еври-
            стика  впорядкування  значень  та  змінних  затосовується  до  початку

            присвоєння значень викликаючи процедуру поширення обмежень.
                  labelling(Variables) :-
                  select_variable(Variables, Variable, Rest),

                  select_value(Variable, Value),
                  Variable #= Value,
                  labelling(Rest).

                  Символ  # використовується для розділення операторів логічного
            програмування і логічного програмування в обмеженнях.
                  Процедура маркування може також бути використана для пошуку

            розв’язку оптимізаційної проблеми з деякою цільовою функцією  F ,
            тобто:
                  state_constraints(Variables,F),

            labelling([minimize(F)],  Variables),  де  цільова  функція  F
            над змінними в домені Variables є описаною на першому кроці і її
            значення мінімізоване на другому.

                  Глобальні обмеження
                  Бінарізація  обмежень  може  бути  причиною  різкого  збільшення
            простору рішень, тому розв’язок може бути і не знайдений за виділе-
            ний  проміжок  часу.  Для  усунення  цього  недоліку  використовують

            спеціальні  алгоритми  поширення  обмежень  для  розв’язання  виділе-
            них підпроблем описаних на певній підмножині змінних за допомо-

            гою так званих глобальних обмежень. Моделювання проблеми через



                                                           88
   83   84   85   86   87   88   89   90   91   92   93