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


         

с ограничением можно также использовать


Нашу процедуру поиска в глубину с ограничением можно также использовать для имитации поиска в ширину. Идея состоит в следующем: многократно повторять поиск в глубину каждый раз все с большим значением ограничения до тех пор, пока решение не будет найдено, То есть попробовать решить задачу с ограничением по глубине, равным 0, затем - с ограничением 1, затем - 2 и т.д. Получаем следующую программу:

        имитация_в_ширину( Верш, РешДер) :-

                проба_в_глубину( Верш, РешДер, 0).


% Проба поиска с возрастающим ограничением, начиная с 0

        проба_в_глубину( Верш, РешДер, Глуб) :-

                решить( Верш, РешДер, Глуб);

                Глуб1 is Глуб + 1,


                            % Новый предел по глубине

                проба_в_глубину( Верш, РешДер, Глуб1).

                                                        % Попытка с новым ограничением

Недостатком имитации поиска в ширину является то, что при каждом увеличении предела по глубине программа повторно просматривает верхнюю область пространства поиска.


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