Начните с массива целых чисел, чтобы сумма значений составляла некоторое натуральное число S. Следующая процедура всегда заканчивается на том же количестве шагов с теми же результатами. Почему это?
Начните с массива x = [x_0, x_1, ..., x_N-1], чтобы все x_i были целыми числами. Хотя есть отрицательная запись, сделайте следующее:
-
Выберите любой индекс
iтакой, чтоx_i < 0. -
Добавьте
x_i(отрицательное число) вx_(i-1 % N). -
Добавьте
x_i(отрицательное число) вx_(i+1 % N). -
Замените
x_iна-x_i(положительное число).
Этот процесс поддерживает свойство x_0 + x_1 + ... + x_N-1 = S. Для любого заданного стартового массива x, независимо от того, какой индекс выбран на любом шаге, количество шагов, пройденных этими шагами, такое же, как и результирующий вектор. Даже не очевидно (по крайней мере, для меня), что этот процесс заканчивается за конечное время, не говоря уже о том, что это хорошее свойство инвариантности.
Пример:
Возьмем x = [4 , -1, -2] и перевернув x_1, чтобы начать, результат
[4, -1, -2]
[3, 1, -3]
[0, -2, 3]
[-2, 2, 1]
[2, 0, -1]
[1, -1, 1]
[0, 1, 0]
С другой стороны, щелчок x_2 для начала дает
[4, -1, -2]
[2, -3, 2]
[-1, 3, -1]
[1, 2, -2]
[-1, 0, 2]
[1, -1, 1]
[0, 1, 0]
и последний способ дает это решение с массивами, отменяемыми с третьего на down, если вы выберете x_2 вместо x_0 для перевода в третий массив. Во всех случаях 6 шагов приводят к [0,1,0].
У меня есть аргумент, почему это правда, но мне кажется, что это слишком сложно (это связано с группами Coxeter), У кого-нибудь есть более прямой способ подумать, почему это происходит? Даже найти причину, по которой это должно закончиться, было бы здорово.
Бонус указывает на любого, кто находит способ определить количество шагов для данного массива (без прохождения процесса).