Поиск в глубину. Миссионеры и людоеды

В этой теме 1 ответ, 2 участника, последнее обновление 2 нед., 6 дн. назад.

  • Автор
    Сообщения
  • #5412
    @vasyapupkin

    Три миссионера и три людоеда находятся по одну сторону реки, через которую они хотят переправиться. В их распоряжении имеется лодка, которая может выдержать вес только двух человек. Кроме того, если в какой-то момент число людоедов станет больше числа миссионеров, миссионеры будут съедены независимо от того, на каком берегу реки это случится.
    Указания к решению. Различные состояния этой задачи однозначно задаются информацией, на каком берегу находятся лодка и сколько миссионеров и людоедов на этом же берегу.

    Поэтому структура

    state(ЛокализацияЛодки, 
             ЧислоМиссионеровНаТомБерегуГдеЛодка, 
             ЧислоЛюдоедовНаТомБерегуГдеЛодка)

    полностью описывает состояние. Допустимые состояния для решения задачи — это те, когда людоеды не могут съесть миссионеров ни на том берегу, где лодка, ни на противоположном,
    Возможные значение первого аргумента: атомы west (западный берег) и east (восточный берег). Возможные значения остальных аргументов: 0, 1, 2 или 3.
    Начальное состояние: state(east,3, 3). Конечное состояние: state(west,3,3).
    Примечание: использовать поиск в глубину. .

  • #5413
    @admin

    С удовольствием помогу решить задачу.
    Решается она также как классическая про «волка, козу и капусту» (по ссылке ее подробный разбор).

Для ответа в этой теме необходимо авторизоваться.