Состояние сосудов
Состояние сосудов — это пара чисел, которая показывает, сколько жидкости находится в каждом сосуде исполнителя Водолей в данный момент. По состоянию можно понять, какие команды доступны и к какому состоянию приведёт их выполнение.
Как записывают состояние
Порядок чисел важен: \((a,b)\) и \((b,a)\) обычно обозначают разные состояния, потому что сосуды могут иметь разные вместимости и выполнять разные роли. Например, в состоянии \((3,5)\) в первом сосуде 3 литра, а во втором 5 литров. Если первый сосуд вмещает 7 литров, а второй — 10 литров, допустимы состояния от \((0,0)\) до \((7,10)\) с учётом конкретных операций переливания.
Здесь \(S\) — текущее состояние, \(A\) и \(B\) — вместимости первого и второго сосудов. В исполнителе Водолей состояние меняется после команды: наполнить сосуд, вылить его или перелить жидкость в другой сосуд. Последовательность таких переходов образует граф состояний Водолея.
Пусть первый сосуд вмещает 5 литров, второй — 8 литров. Запись \((5,3)\) означает: первый сосуд полон, во втором находится 3 литра. После переливания из первого сосуда во второй состояние может стать \((0,8)\), если во втором было достаточно свободного места.
Состояние — это не команда и не отдельное количество жидкости. Запись \((2,4)\) описывает положение обоих сосудов, а команда «перелить из первого во второй» только изменяет это положение. Также нельзя менять порядок чисел без изменения смысла: \((2,4)\) и \((4,2)\) — разные состояния.
Что означает состояние \((0,6)\)?
Главное
- Состояние сосудов записывают парой \((a,b)\): первое число — жидкость в первом сосуде, второе — во втором.
- Координаты неотрицательны и не превышают вместимости сосудов; их порядок важен.
- Команды исполнителя переводят систему из одного состояния в другое, а последовательность переходов образует граф состояний.