На Горох
Информатика

Вместимость. Переливание

"Информатика", Рудченко Т.А., Семёнов А.Л. / Под ред. Семёнова А.Л.

Объяснение темы

Кратко о теме

Вместимость и переливание помогают описывать задачи о сосудах с ограниченным объёмом. Вместимость показывает, сколько жидкости помещается в сосуд, а состояние — сколько в нём находится сейчас. При переливании жидкость перемещают до полного опустошения исходного или наполнения принимающего сосуда. Решение задачи записывают как цепочку состояний, ведущую к требуемому результату.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Вместимость сосуда — наибольший объём жидкости, который помещается в сосуд; её выражают в единицах объёма. Например, вместимость кувшина может быть 3 л, даже если сейчас в нём только 1 л. Этот термин нужен, чтобы знать предел, который нельзя превышать.

Переливание — перемещение жидкости из одного сосуда в другой до тех пор, пока первый не опустеет или второй не наполнится. Поэтому нельзя остановиться в произвольный момент и назвать действие правильным. Определение помогает точно установить конец каждого шага.

Состояние сосудов — указание, сколько жидкости находится в каждом сосуде в данный момент. Например, запись (3; 0) для сосудов 3 л и 5 л означает, что первый полон, а второй пуст. Такое обозначение позволяет кратко следить за изменениями.

Задача на переливание — задача, в которой нужно получить заданное количество жидкости, используя сосуды известной вместимости и разрешённые переливания. Иногда разрешают также наполнить сосуд из запаса или вылить воду. Это определение задаёт набор действий, от которых зависит решение.

Как это устроено

Чтобы описать задачу, перечисляют сосуды, их вместимости, начальное количество жидкости и требуемый результат. Без этих данных невозможно понять, какие состояния допустимы и к чему нужно прийти. Поэтому сначала удобно записать, например: сосуды 3 л и 5 л, состояние (3; 0), цель — получить 1 л.

Количество жидкости в каждом сосуде не может быть меньше нуля и не может превышать его вместимость. Нижняя граница появляется потому, что отрицательного объёма не бывает, а верхняя защищает от переполнения. Проверка этих границ сразу отбрасывает ошибочные записи.

При переливании жидкость перемещают до одного из двух пределов: исходный сосуд опустеет либо принимающий сосуд наполнится. Так происходит потому, что переливают всё возможное при данных вместимостях, а не произвольную часть. Если в исходном сосуде 3 л, а в принимающем осталось место только для 2 л, после шага в принимающий перейдут именно 2 л.

После каждого переливания получают новое состояние сосудов; его удобно записывать набором чисел в одном и том же порядке. Единый порядок не даёт перепутать, какое число относится к какому сосуду. Например, переход (3; 0) → (0; 3) означает, что вся вода из первого сосуда переместилась во второй.

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

Как описывать состояние и переливание

Что записываемКак определитьПример для сосудов вместимостью 3 л и 5 л
Вместимость каждого сосудаПостоянный максимальный объём, который принимает сосуд3 л и 5 л
Количество жидкости в сосудеОбъём жидкости в нём в данный момент2 л в первом и 4 л во втором
Начальное состояниеКоличество жидкости до первого действия(3; 0)
Условие завершения переливанияИсходный сосуд пуст или принимающий заполненИз (3; 0) получаем (0; 3)
Новое состояние после переливанияПара чисел после выполнения действия(0; 3)

Сначала определите постоянные вместимости, затем записывайте только меняющееся количество жидкости. Числа в состоянии всегда идут в порядке, выбранном для сосудов: сначала 3-литровый, потом 5-литровый. После каждого шага полезно проверить границы и понять, какой из двух пределов остановил переливание.

Разбор задач

Задача 1

Условие: есть полный сосуд вместимостью 3 л и пустой сосуд вместимостью 5 л. Нужно перелить воду из одного сосуда в другой и указать полученное состояние.

  1. Запишем начальное состояние в порядке «3 л; 5 л»: (3; 0).
  2. Переливаем воду из первого сосуда во второй. Второй может вместить все 3 л, поэтому он не переполняется, а первый опустеет.
  3. Получаем состояние (0; 3).

Ответ: после переливания состояние сосудов — (0; 3). Переливание закончилось по первому условию: исходный сосуд стал пустым.

Задача 2

Условие: имеются полный сосуд на 3 л и пустой сосуд на 5 л. Нужно получить ровно 1 л, переливая воду только между сосудами.

  1. Начальное состояние — (3; 0), а всего воды 3 л.
  2. Единственный содержательный шаг — перелить воду из 3-литрового сосуда в 5-литровый: получаем (0; 3).
  3. Обратное переливание возвращает состояние (3; 0), поэтому новые состояния больше не появляются.
  4. Количество воды остаётся равным 3 л, а состояние с 1 л не возникает.

Ответ: получить 1 л невозможно. Причина не в длине поиска, а в том, что при данных начальных условиях и запрете добавлять или выливать воду доступны только два состояния.

Задача 3

Условие: есть сосуды вместимостью 3 л и 5 л, запас воды неограничен. Нужно получить ровно 4 л, разрешая наполнять сосуд и выливать воду.

  1. Начинаем с (0; 0) и наполняем 5-литровый сосуд: (0; 5).
  2. Переливаем из него в 3-литровый: (3; 2), потому что первый сосуд заполнился.
  3. Выливаем воду из 3-литрового и переливаем в него оставшиеся 2 л: (2; 0).
  4. Снова наполняем 5-литровый сосуд: (2; 5).
  5. Переливаем из него в 3-литровый. В первом уже 2 л, поэтому перейдёт только 1 л, и получится (3; 4).

Ответ: получено 4 л во втором сосуде. Каждый переход допустим: при переливании учитываются свободное место и имеющийся объём, а наполнение и выливание разрешены условием.

Типичные ошибки

Переполнение сосуда. В записи иногда появляется объём больше вместимости, потому что ученик переносит всю воду, не учитывая свободное место. Принимающий сосуд заполняется только до краёв, а остаток остаётся в исходном. Проверьте каждое новое число сравнением с вместимостью.

Произвольное переливание. Можно ошибочно перелить ровно 1 л просто потому, что такой объём нужен в ответе. Но по правилу шаг заканчивается при опустошении исходного или наполнении принимающего сосуда. Проверьте, какое из этих событий произошло.

Путаница вместимости и количества. Число 5 л у сосуда может быть его постоянной вместимостью, а жидкости в нём сейчас может быть 0 л или 3 л. Ошибка возникает, если считать эти величины одинаковыми. Отдельно записывайте максимальный объём и текущее состояние.

Повторение состояний. При возвращении к уже записанной паре чисел можно бесконечно повторять одни и те же шаги. Так появляется цикл, который не приводит к цели. Отмечайте встреченные состояния и прекращайте ветвь, если новое состояние уже было.

Связь с другими темами

До темы нужно уметь сравнивать числа, складывать и вычитать, понимать единицы объёма и внимательно читать условие. Эти навыки нужны, чтобы правильно вычислять остаток жидкости и замечать переполнение. Без них нельзя надёжно проверить переход между состояниями.

Представление решения как последовательности состояний связано с алгоритмами, перебором вариантов и поиском пути. Каждое состояние можно считать точкой, а допустимое переливание — переходом к другой точке. Тогда задача превращается в поиск маршрута от начала к цели.

Такие модели пригодятся при описании процессов с ограниченными ресурсами и правилами переходов. Вместо сосудов могут выступать запасы материалов, места в памяти или положения объектов. Общий принцип остаётся тем же: хранить состояние и менять его разрешёнными действиями.

Что запомнить

  • Вместимость показывает, сколько жидкости максимально помещается в сосуд.
  • Количество жидкости в сосуде может меняться, вместимость сосуда остаётся неизменной.
  • При переливании останавливаются, когда исходный сосуд пуст или принимающий сосуд полон.
  • Состояние удобно записывать числами в фиксированном порядке сосудов.
  • Каждый переход должен соответствовать правилам задачи.
  • Решение — это цепочка состояний от начального к требуемому.

Частые вопросы по теме

Чем вместимость сосуда отличается от количества жидкости в нём?

Вместимость — постоянный предел сосуда, например 5 л. Количество жидкости меняется: в сосуде вместимостью 5 л может быть 0, 2 или 5 л.

До какого момента нужно переливать жидкость?

Переливание заканчивают, когда исходный сосуд опустел или принимающий сосуд наполнился. Произвольно останавливать переливание нельзя, если это не разрешено условием.

Как кратко записывать состояние нескольких сосудов?

Нужно выбрать порядок сосудов и всегда записывать числа в этом порядке. Например, состояние (3; 0) означает: в первом сосуде 3 л, во втором — 0 л.

Можно ли в ходе решения повторить одно и то же состояние?

Повторять состояние обычно не имеет смысла: после него можно продолжить теми же шагами и снова попасть в тот же цикл. При поиске решения повторяющиеся состояния отмечают и не рассматривают заново.

Как понять, что заданное количество жидкости получить невозможно?

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

Спросить по теме параграфа

Вместимость. Переливание

Учебник

Оглавление →
Предмет
Информатика
Учебник
"Информатика", Рудченко Т.А., Семёнов А.Л. / Под ред. Семёнова А.Л.