В дополнение к стартовому посту
DVL — критерий разрешимости, явная формула минимального числа касаний и кратчайший путь без перебора. Единственная тонкость — одноцветные состояния (п. 4).
1. Состояние — тройка

неотрицательных чисел,

. Касание рыбок разных цветов прибавляет один из векторов

,

,

в координатах

; касание рыбок одного цвета состояние не меняет и не рассматривается.
2. Пусть из

за

касаний получено

,

— числа касаний, рождающих соответствующий цвет,

. Цвет при касании либо теряет одну рыбку, либо получает две, поэтому для любого цвета


Иначе говоря, по модулю 3 каждое касание уменьшает каждый цвет на единицу:

.
3. Отсюда:
— инвариант: разности

,

,

неизменны по модулю 3, причём при фиксированном

одна из них определяет остальные, например

;
— оценка снизу: из


— длины путей:

(все три разности

сравнимы между собой), поэтому длины — только

; три касания разных типов вместе состояние не меняют — сумма векторов нулевая.
4. В одноцветном состоянии касание невозможно: из него достижимо только оно само. При

все три одноцветных состояния лежат в одном классе инварианта и друг в друга не переходят — это единственный случай, когда инварианты совпадают, а перехода нет.
5. Теорема. Для

переход

возможен тогда и только тогда, когда (i)

; (ii)

; (iii) в

есть рыбки хотя бы двух цветов. Минимум касаний равен

, и мультимножество касаний всякого кратчайшего пути одно и то же: рождающих цвет

ровно

. Цвет с максимальной разностью не рождается вовсе; если максимум на двух цветах — все касания одного типа.
Необходимость: (i) и (ii) — инвариант, (iii) — невозможность касания.
Достаточность. Пусть максимум достигается на зелёном. Возьмём

касаний

«(к,з)→с» с вектором

и

касаний

«(с,з)→к» с вектором

: целочисленность даёт инвариант, неотрицательность — определение

,

, и итог — ровно

. Тупик на пути невозможен: после

шагов

и

шагов

, пока что-то осталось,
— зелёных

;
— если остались только

, то

и

;
— если только

, то

и

;
— если остались оба типа, а оба шага недопустимы, то

: из

следует

, из

—

, откуда

, то есть

и

— одноцветный старт, исключённый условием (iii).
6. Алгоритм: проверить (i)–(iii); ответ —

; путь — не касаться пары, порождающей цвет с максимальной разностью

, остальные касания выполнять в любом допустимом порядке.
Геометрически: состояния при фиксированном

— узлы треугольной решётки, касания — шаги по трём из шести направлений, обратный шаг стоит два. Отсюда асимметрия расстояний:

.
7. Пример:

,

, класс инварианта содержит все одноцветные состояния:
—

: одно касание (к+с → две з);
—

: четыре:

;
—

: два касания, обратно — четыре.
8. Упражнение: доказать, что нетривиальный возврат в исходное состояние возможен из любого состояния, кроме одноцветных и

,

,

,

.