Программирование на языке Пролог для искусственного интеллекта



         

Повышение эффективности программы раскраски карты - часть 4


Она начинает построение с некоторой указанной страны (в нашем случае - с Западной Германии) и собирает затем остальные страны в список под названием Закрытый. Каждая страна сначала попадает в другой список, названный Открытый, а потом переносится в Закрытый. Всякий раз, когда страна переносится из Открытый

в Закрытый, ее соседи добавляются в Открытый.

        создспис( Спис) :-

                собрать( [запгермания], [ ], Спис ).

                собрать( [ ], Закрытый, Закрытый).

                                    % Кандидатов в Закрытый больше нет

        собрать( [X | Открытый], Закрытый, Спис) :-

                    принадлежит( Х | Закрытый),  !,

                                        % Х уже собран ?

        собрaть( Открытый, Закрытый, Спис).

                            % Отказаться от Х

        собрать( [X | Открытый], Закрытый, Спис) :-

                соседи( X, Соседи),

                                % Найти соседей Х

                конк( Соседи, Открытый, Открытый1),

                                % Поместить их в Открытый

                собрать( Открытый1, [X | Закрытый], Спис).

                                % Собрать остальные

Отношение конк - как всегда - отношение конкатенации списков.




Содержание  Назад  Вперед