Итак, это завершающий пост про задачу из игры Sanitarium, где будет дано решение для случая восьми зацепов, а также рассмотрен более общий алгоритм решения для произвольного случая зацепов.
Итак, напомню, что конфигурацию крестовины и состояние зацепов я обозначаю многочленами, где степень при $x$ — порядковый номер зацепа или "усика" крестовины, а коэффициент обозначает состояние "открыт/закрыт" или конфигурацию крестовины (см первый пост). Сложение коэффициентов многочленов происходит по модулю $2$, а умножение многочленов — по модулю $x^8 + 1$, что обеспечивает "заворачивание" восьмой степени на нулевую, девятой на первую итд.
Напомню также, что ранее я получил частичное решение задачи, отыскав многочлены, имеющие обратный, и открывая зацепы последовательно по одному.
Теперь я подошел к задаче иначе. Интересный факт, что для любого $n \geq 1$ справедливо $x^n + 1 = (x+1)(\sum_{i=0}^{n-1}x^i)$ Последний сомножитель есть ни что иное, как многочлен, описывающий все зацепы в открытом состоянии. Далее, так как $x^8+1 = (x+1)^8 = (x+1)(\sum_{i=0}^{7}x^i)$, то $\sum_{i=0}^{7}x^i = (x+1)^7$.
Представим многочлен, описывающий нашу крестовину в виде $p(x) = f(x)(x+1)^n$, где $0 \leq n \leq 7$, где $f(x)$ — многочлен, не делящийся на $x+1$. Тогда, так как $f(x)$ и $x^8 + 1$ относительно простые, у $f(x)$ будет обратный элемент $f^{-1}(x)$. Теперь напишем многочлен $q(x) = f^{-1}(x)(x+1)^{7-n}$. Произведение $p(x)q(x) = f(x)f^{-1}(x) (x+1)^{n}(x+1)^{7-n} = (x+1)^{7}$ откроет в итоге все зацепы. Из выше сказанного можно сделать вывод, что для любой конфигурации крестовины можно найти комбинацию действий, открывающую все восемь зацепов.
Аналогично, решения существуют для любой крестовины в системе из $n$ зацепов, при котором выполняется равенство $x^n + 1 = (x+1)^n$. Легко видеть, что $n=2^k$, где $k = 0,1,2,\cdots$
Используя ту же схему доказательства, рассмотрим случай с $n$ зацепами, где $n$ — нечётное число. Тогда очевидно, что многочлен $\sum_{i=0}^{n-1}x^i$, соответствующий всем открытым зацепам, не делится на $x+1$. Например, для $n=5$ $x^4+x^3+x^2+x+1 = x^{3}(x+1) + x(x+1) + 1 = (x+1)(x+x^3)+1$ не делится на $x+1$. Тогда для крестовины $p(x) = (x+1)f(x)$, где $f(x)$ — любой другой многочлен, не будет существовать решения, так как многочлен $x+1$ не имеет обратного. Простейший пример задачи, не имеющей решения, приведен на картинке:
В качестве упражнения предлагаю читателю доказать, что для оставшихся случаев (кол-во зацепов $n$ чётное, но не степень двойки) тоже есть не имеющие решения конфигурации крестовины.
Итак, напомню, что конфигурацию крестовины и состояние зацепов я обозначаю многочленами, где степень при $x$ — порядковый номер зацепа или "усика" крестовины, а коэффициент обозначает состояние "открыт/закрыт" или конфигурацию крестовины (см первый пост). Сложение коэффициентов многочленов происходит по модулю $2$, а умножение многочленов — по модулю $x^8 + 1$, что обеспечивает "заворачивание" восьмой степени на нулевую, девятой на первую итд.
Напомню также, что ранее я получил частичное решение задачи, отыскав многочлены, имеющие обратный, и открывая зацепы последовательно по одному.
Теперь я подошел к задаче иначе. Интересный факт, что для любого $n \geq 1$ справедливо $x^n + 1 = (x+1)(\sum_{i=0}^{n-1}x^i)$ Последний сомножитель есть ни что иное, как многочлен, описывающий все зацепы в открытом состоянии. Далее, так как $x^8+1 = (x+1)^8 = (x+1)(\sum_{i=0}^{7}x^i)$, то $\sum_{i=0}^{7}x^i = (x+1)^7$.
Представим многочлен, описывающий нашу крестовину в виде $p(x) = f(x)(x+1)^n$, где $0 \leq n \leq 7$, где $f(x)$ — многочлен, не делящийся на $x+1$. Тогда, так как $f(x)$ и $x^8 + 1$ относительно простые, у $f(x)$ будет обратный элемент $f^{-1}(x)$. Теперь напишем многочлен $q(x) = f^{-1}(x)(x+1)^{7-n}$. Произведение $p(x)q(x) = f(x)f^{-1}(x) (x+1)^{n}(x+1)^{7-n} = (x+1)^{7}$ откроет в итоге все зацепы. Из выше сказанного можно сделать вывод, что для любой конфигурации крестовины можно найти комбинацию действий, открывающую все восемь зацепов.
Аналогично, решения существуют для любой крестовины в системе из $n$ зацепов, при котором выполняется равенство $x^n + 1 = (x+1)^n$. Легко видеть, что $n=2^k$, где $k = 0,1,2,\cdots$
Используя ту же схему доказательства, рассмотрим случай с $n$ зацепами, где $n$ — нечётное число. Тогда очевидно, что многочлен $\sum_{i=0}^{n-1}x^i$, соответствующий всем открытым зацепам, не делится на $x+1$. Например, для $n=5$ $x^4+x^3+x^2+x+1 = x^{3}(x+1) + x(x+1) + 1 = (x+1)(x+x^3)+1$ не делится на $x+1$. Тогда для крестовины $p(x) = (x+1)f(x)$, где $f(x)$ — любой другой многочлен, не будет существовать решения, так как многочлен $x+1$ не имеет обратного. Простейший пример задачи, не имеющей решения, приведен на картинке:
В качестве упражнения предлагаю читателю доказать, что для оставшихся случаев (кол-во зацепов $n$ чётное, но не степень двойки) тоже есть не имеющие решения конфигурации крестовины.
Comments
Post a Comment