Мне такие алгоритмы тоже больше нравятся, только искать их мне сложнее.
Такие (статические) алгоритмы не всегда приводят к лучшему результату. Например, в задаче с
(число монет),
(число фальшивых),
(число градаций весов), о которой я говорил ранее, статический алгоритм содержит не менее 6 взвешиваний, в то время у оптимального алгоритма их всего 5. Интересно отметить, что параметры этого алгоритма лежат на верхней границе Хемминга для
и при данном значении q уравнение, соответствующее этой границе, по-видимому, в целых числах не имеет других нетривиальных решений. Вообще-то этот факт установлен лишь для
.
Чтобы развеять вопрос с 4G+4S задачей опишу первые два взвешивания более формально ...
Да, в таком варианте все работает и все понятно. В предыдущем описании в случае равновесия в первом взвешивании предполагалось (или так я понял) сравнение любой золотой с любой серебряной монетой. Но сейчас это уже не важно.
A.Edem, Ваш подремонтированный алгоритм кондиционен, к тому же он украшен лирическим изложением.
Вообще-то для лирика задачи нетривиальные. Бывало, что физики годами не могли продвинуться в простенькой задачке, ответ на которую лирик выдал в течение 3 мин, прикинув в уме и глядя в потолок. Эту задачку я, пожалуй, выложу в отдельной теме.
На всякий случай выкладываю вариант представления двух взвешиваний на примере алгоритма для задачи 4G+4S с проверочной матрицей
(строки соответствуют взвешиваниям):
1 -1 0 0 0 0 0 0
0 0 1 0 1 -1 -1 0
Таблица синдромов для ситуаций
, где символом [] обозначено выполнение операции sign() над компонентами синдрома.
Такое представление позволяет рассматривать алгоритм взвешивания как последовательность разбиений некоторого дискретного множества из
гиперплоскостью
, где
- вектор в
(в данном сл. определяемый строкой проверочной матрицы).
Кстати, как выяснилось, третья проверка (0 0 0 1 0 1 -1 -1 ) (которая предполагалась для статического алгоритма) в одном (единственном) случае повторила синдром (0 1 0), поэтому вопрос о существовании статического алгоритма для этой задачи остался открытым. При возможности потом подумаю.