Исполнитель Водолей
Водолей — это исполнитель, который работает с сосудами заданной вместимости. Он умеет наполнять, опустошать и переливать воду, а результат получают последовательностью допустимых команд.
Как и любой исполнитель алгоритма, Водолей действует только по своим командам. Набор разрешённых действий образует систему команд исполнителя: обычно сосуд можно наполнить из источника, вылить из него всю воду или перелить воду в другой сосуд.
Состояние и команды
Состояние сосудов задаётся объёмом воды в каждом из них. Например, запись \((2, 1)\) означает, что в первом сосуде 2 литра, а во втором — 1 литр. Команда переливания выполняется до одного из двух событий: исходный сосуд опустел или принимающий сосуд наполнился. Подробный набор действий описывают команды исполнителя Водолей.
Здесь \(x_i\) — текущее количество воды в сосуде, а \(V_i\) — его вместимость. Вода не исчезает при переливании: меняется только её распределение между сосудами.
Есть сосуды вместимостью 5 и 3 литра. Состояние \((0, 0)\) можно изменить командой «наполнить первый сосуд»: получится \((5, 0)\). После переливания из первого во второй второй сосуд заполнится, а в первом останется 2 литра: \((2, 3)\). Затем можно опустошить второй сосуд и получить \((2, 0)\).
Водолей не выбирает действия самостоятельно и не «понимает» цель задачи. Он выполняет только записанный алгоритм. Поэтому важно отличать исполнителя от стратегии решения задачи Водолей — стратегии подбирает человек.
Что означает состояние \((3, 0)\) для сосудов вместимостью 5 и 3 литра?
Главное
- Водолей — исполнитель с сосудами и ограниченным набором команд.
- Состояние записывают текущими объёмами воды; каждый объём находится от 0 до вместимости сосуда.
- Цель достигается последовательностью команд наполнения, опустошения и переливания.