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




Планирование поездки - часть 2


Главная задача состоит в отыскании точных маршрутов между двумя заданными городами в определенные дни недели. Ее решение мы будем программировать в виде четырехаргументного отношения:

        маршрут( Пункт1, Пункт2, День, Маршрут)

Здесь Маршрут - это последовательность перелетов, удовлетворяющих следующим критериям:

(1)        начальная точка маршрута находится в Пункт1;
(2)        конечная точка - в Пункт2;
(3)        все перелеты совершаются в один и тот же день недели - День;
(4)        все перелеты, входящие в Маршрут, содержатся в определении отношения расписание;
(5)        остается достаточно времени для пересадки с рейса на рейс.

Маршрут представляется в виде списка структурированных объектов вида

        Откуда - Куда : Номер_рейса : Время_отправления

Мы еще будем пользоваться следующими вспомогательными предикатами:

(1)        рейс( Пункт1, Пункт2, День, N_рейса, Вр_отпр, Вр_приб)

Здесь сказано, что существует рейс N_рейса между Пункт1 и Пункт2 в день недели День с указанными временами отправления и прибытия.

(2)        вр_отпр( Маршрут, Время)

Время - это время отправления по маршруту Маршрут.

(3)        пересадка( Время1, Время2)

Между Время1 и Время2 должен существовать промежуток не менее 40 минут для пересадки с одного рейса на другой.

Задача нахождения маршрута напоминает моделирование недетерминированного автомата из предыдущего раздела:

  • Состояния автомата соответствуют городам.
  • Переход из состояния в состояние соответствует перелету из одного города в другой.
  • Отношение переход автомата соответствует отношению расписание.
  • Модель автомата находит путь в графе переходов между исходным и конечным состояниями; планировщик поездки находит маршрут между начальным н конечным пунктами поездки.

Неудивительно поэтому, что отношение маршрут можно определить аналогично отношению допускает, с той разницей, что теперь нет "спонтанных переходов".


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