обмена двух-трёх-четырёх ячеек квадрата
Возникла вот такая вспомогательная задача. Пусть мы оптимизируем текущее решение путем перестанвки чисел в ячейках. Сначала просматриваем все двойки ячеек, затем все тройки ячеек и наконец четыре ячейки.
Задача. Сформулировать условия при которых делать обмен в выбраных 4-х ячейках бессмысленно. При условии, что мы знаем обмен чисел в любой двойке или тройке ячеек не улучшает результат.
Каждый обмен можно представить как перестановку. Например обмен а на b можно записать как (а,b) -> (b,a). Обмен а на b, b на c и c на a, записать как (a,b,c) -> (b,c,a). Каждую перестановку можно представить как композицию циклов. Например (1,2,3,4,5,6)->(5,1,6,4,2,3) = (1,5,2)(3,6) (циклы длиной один не записываются). Смотрите википедию, там лучше объяснено:
https://ru.wikipedia.org/wiki/%D0%9F%D0 ... 0%BA%D0%B0Теперь задачу можно записать так. Найти все перестановки порядка 4, которые состоят из одного цикла длиной 4 или двух циклов длиной 2. Если перестановка раскладывается на один цикл длиной 2 или один цикл длиной 3, значит мы ее уже проверили при обмене двух и трех ячеек. Таких перестановок 9 (показываю разложение на циклы): (a,b,c,d), (a,b,d,c), (a,c,d,b), (a,c,b,d), (a,d,c,b), (a,d,b,c), (a,b)(c,d), (a,c)(b,d), (a,d)(b,c). Иначе бы пришлось проверить 4!=24 перестановки.