очки( 1/1, 1/2, 0) :-  !.

        очки( 1/2, 1/3, 0) :-  !.

        очки( _, _, 2).                 % Неправильная последовательность

        цель( [2/2, 1/3, 2/3, 3/3, 3/2, 3/1, 2/1, 1/1, 1/2] ).

% Стартовые позиции для трех головоломок

        старт1( [2/2, 1/3, 3/2, 2/3, 3/3, 3/1, 2/1, 1/1, 1/2] ).

                                    % Требуется для решения 4 шага

        старт2( [2/1, 1/2, 1/3, 3/3, 3/2, 3/1, 2/2, 1/1, 2/3] ).

                                    % 5 шагов

        старт3( [2/2, 2/3, 1/3, 3/1, 1/2, 2/1, 3/3, 1/1, 3/2] ).

                                    % 18 шагов

% Отображение решающего пути в виде списка позиций на доске

        показреш( [ ]).

        показреш( [ Поз | Спис] :-

                показреш( Спис),

                nl, write( '---'),

                показпоз( Поз).

% Отображение позиции на доске

        показпоз( [S0, S1, S2, S3, S4, S5, S6, S7, S8] ) :-

                принадлежит Y, [3, 2, 1] ),                       % Порядок Y-координат

                nl, принадлежит X, [1, 2, 3] ),                 % Порядок Х-координат

                принадлежит( Фшк-X/Y,

                [' '-S0, 1-S1, 2-S2, 3-S3, 4-S4, 5-S5, 6-S6, 7-S7, 8-S8]),

                write( Фшк),

                fail.                     %Возврат с переходом к следующей клетке

                показпоз( _ ).

Рис. 12. 6.  Процедуры для головоломки 'игра в восемь',

предназначенные для использования программой поиска

с предпочтением рис. 12.3.

Существуют три отношения, отражающих специфику конкретной задачи:

        после( Верш, Верш1, Ст)

Это отношение истинно, когда в пространстве состояний существует дуга стоимостью Ст между вершинами Верш и Верш1.

        цель( Верш)

Это отношение истинно, если Верш - целевая вершина.

        h( Верш, Н)

Здесь Н - эвристическая оценка стоимости самого дешевого пути из вершины Верш в целевую вершину.

В данном и следующих разделах мы определим эти отношения для двух примеров предметных областей: для головоломки 'игра в восемь' (описанной в разделе 11.1) и планирования прохождения задач в многопроцессорной системе.

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату