Начните с массива целых чисел, чтобы сумма значений составляла некоторое натуральное число 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), У кого-нибудь есть более прямой способ подумать, почему это происходит? Даже найти причину, по которой это должно закончиться, было бы здорово.
Бонус указывает на любого, кто находит способ определить количество шагов для данного массива (без прохождения процесса).