Многим читателям хорошо известна следующая классическая задача о фальшивых монетах, поражающая тем, что она разрешима:
Имеются N мешков и в каждом из них достаточное количество монет. Все мешки, кроме одного, содержат одинаковые «нормальные» монеты, в одном же мешке все монеты фальшивые. Известен вес нормальной монеты и известно, что фальшивая монета на 1 грамм легче нормальной. Требуется при помощи одного взвешивания на весах с разновесками обнаружить мешок с фальшивыми монетами.
Вот как решается эта задача. Мешки последовательно нумеруются и из каждого мешка берется количество монет, равное номеру этого мешка. Суммарный вес всех взятых таким образом монет будет «не дотягивать» до веса такого же количества нормальных монет (который нам известен) на количество граммов, равное номеру именно того мешка, который содержит фальшивые монеты. (Эта задача решается правда, хитрее и в том случае, когда вес нормальной монеты неизвестен и разновесков нет. Подумайте, как.)
Раздумывая над этой задачей, я пришёл к более удивительному выводу о том, что одним взвешиванием может быть решена и более сложная задача:
Пусть в условиях предыдущей задачи имеется не один, а несколько мешков с фальшивыми монетами, причём их количество неизвестно. Требуется при помощи одного взвешивания на весах с разновесками обнаружить все эти мешки.
Решив и эту задачу, я осмелился на дальнейшие усложнения. Задача оказалась разрешимой при ещё более удивительных условиях:
Среди N мешков имеются некоторое (неизвестное) количество мешков с тяжёлыми и некоторое (тоже неизвестное) количество мешков с лёгкими монетами. Лёгкая монета на 1 г легче нормальной, а тяжёлая, наоборот, на 1 г тяжелее нормальной. Требуется при помощи одного взвешивания на весах с разновесками узнать, какие мешки содержат нормальные монеты, какие тяжёлые, а какие лёгкие. (Напомним, что внутри данного мешка все монеты одинакового веса и что вес нормальной монеты известен.)
Разрешимость и этой задачи вдохновила меня на дальнейшее обобщение, которое уже напрашивалось само собой. До сих пор мы фактически рассматривали задачи о двух или трёх сортах (типах) монет, поэтому естественна следующая
Пусть имеются N мешков и в каждом достаточное количество монет. Имеются монеты разных сортов, но в каждом мешке содержатся монеты только одного сорта. Количество мешков с монетами данного сорта произвольное, и нам оно неизвестно. Монеты разных сортов отличаются друг от друга по весу, причём на целое число граммов. Вес монеты каждого сорта нам известен. Требуется при помощи одного взвешивания на весах с разновесками определить, к какому сорту принадлежат монеты в каждом мешке.
Мы предлагаем читателю попробовать самостоятельно решить предыдущие задачи, прежде чем перейти к излагаемому ниже решению обобщённой задачи о фальшивых монетах.
Перенумеруем последовательно мешки от 0 до
Теперь возьмем из мешка с номером j количество монет, равное k j, то есть из первого мешка одну монету, из второго k, ..., из последнего
N1 | ||||
M = | ∑ | k j = 1 + k + k2 + ... + kN1 = | kN 1 k 1 |
. |
j=0 |
Их суммарный вес S на весах будет равен
N1 | N1 | |||
S = | ∑ | (m + Δj )k j = m·M + | ∑ | Δj k j. |
j=0 | j=0 |
Поскольку всегда
N1 | ||
Δ = | ∑ | Δj k j = Δ0 + Δ1 k + Δ2 k2 + ... + ΔN1kN1 |
j=0 |
представляет собой перевод числа Δ из десятичной системы счисления (в которой работают весы) в систему счисления с основанием, равным k. В этой системе Δ записывается в виде числа со следующей последовательностью цифр:
|
(*) |
Мы видим, что каждая цифра этой записи показывает сорт монеты в последовательности мешков, взятой в обратном порядке. В этом состоит суть нашего решения.
Итак, из суммарного веса S всех выбранных M монет вычитаем величину Mm вес того же количества монет наилегчайшего сорта и оставшееся число
В приводимой ниже таблице указаны веса монет, содержащихся в пяти мешках. Сверху дана нумерация мешков справа налево (это и есть обратный порядок), а под мешками указаны сорта монет. Они являются искомыми.
4 | 3 | 2 | 1 | 0 | номер мешка j |
11 г | 12 г | 10 г | 12 г | 10 г | содержимое мешка m + Δj |
1 | 2 | 0 | 2 | 0 | сорт монеты Δj |
81 | 27 | 9 | 3 | 1 | количество взятых монет kj |
В этом случае k = 3 и количество взятых монет соответствует степеням тройки, как показано в последней строчке таблицы. Всего мы взяли
получим число 12020, последовательность цифр которого совпадает с исходной последовательностью сортов, приведённой в таблице.
Если k = 10, то надобность перевода Δ из одной системы счисления в другую отпадает. Для случая k = 3 существует несколько отличная от нашей интерпретация решения задачи. Найти её мы предоставляем читателю.
Классическую задачу об одном мешке с фальшивыми монетами можно найти во многих популярных книжках по математике. Говорят, что во время второй мировой войны англичане «сбросили» эту задачу над немецкими солдатами с целью их дезорганизации и что те потеряли над её решением более 40 000
В книге Д. Бизама и Я. Герцега «Многоцветная логика» (М., «Мир», 1978 г.) рассматривается также случай двух мешков с фальшивыми монетами и приводится решение этой задачи при помощи двух взвешиваний.
Классическая задача о фальшивых монетах в последнее время нашла применение в теории кодирования и информации для обнаружения ошибки в коде.