Skip to main content

Финальный пост про задачу в Sanitarium

Итак, это завершающий пост про задачу из игры 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$ чётное, но не степень двойки) тоже есть не имеющие решения конфигурации крестовины.

Comments

Popular posts from this blog

Гладкая сшивка кусочно-постоянной функции.

Накануне мне понадобилось найти гладкую функцию, определенную на $\textbf{R}[a,c]$, равную единице на одном отрезке числовой оси, скажем, $[a, b-\epsilon]$ и нулю на другом, скажем $[b+\epsilon, c]$. Для того, чтобы гладко склеить эти два кусочка, я решил найти монотонно убывающий многочлен $f(x)$, равный $f(0) = 1$ и $f(1) = 0$, а потом "вставить" его в отрезок $[b-\epsilon, b+\epsilon]$. Для гладкости сшивки должны выполняться условия $f'(0) = f'(1) = 0$. Я решил пойти далее и положить $f^{(n)}(0) = f^{(n)}(1) = 0$ для всех $n = 1,2,\cdots,N$. То есть первые N производных должны быть равны нулю в т. $x = 0$ и $x = 1$. Понятно, что это легко сделать при наперед известном N, но как найти общую формулу? Я некоторое время промучился над этой задачей, пока не решил её следующим способом. Пусть искомая функция $f(x) = 1 + x^{N+1}L_{1}(x)$, где $L_{1}(x)$ — некий многочлен. Тогда у нас выполняется условие $f(0) = 1$ и $f^{(n)}(0) = 0$ (так как первая производная будет

Ресемплинг аудио.

В этом посте расскажу о ресемплинге аудио (в частности, о даунсемплинге), под чем я подразумеваю понижение частоты дискретизации, с которой был записан звук. Известно, что в компьютере непрерывный аудио сигнал представлен в виде семплов (по-русски, измерений), сделанных в равно отстоящие друг от друга промежутки времени. Например, если звук записан с частотой дискретизации 44.1 кГц, то за одну секунду было сделано 44100 семплов. Здесь я расскажу о том, как восстановить исходный непрерывный сигнал по взятым семплам и как выбирать и менять частоту семплирования (или, что то же самое, частоту дискретизации). Преобразование Фурье. Преобразованим Фурье $F(\xi)$ функции $f(x)$ называется следующая функция: $F(\xi) = \int_{-\infty}^{\infty} f(x) e^{-ix\xi}dx$ обратное преобразование определено как $f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty} F(\xi) e^{ix\xi}d\xi$ Вопрос о том, когда существует преобразование Фурье и обратимо ли оно (т.е. работает ли вторая формула), очень сложе

На что влияет размер (глубина) семпла?

В этом посте я разберу ещё одну характеристику представления аудио на компьютере — размер или глубину семпла. В теореме Шеннона, с которой мы ознакомились в первом посте, сказано, что семплы нужно брать с определенной частотой, чтобы восстановить исходный сигнал. Однако, в ней ничего не сказано о том, сколько памяти компьютера нужно выделить на один семпл. По сути  ней семплы — это обычные вещественные числа. В компьютере же семплы чаще всего представляются целыми числами в диапазоне от $-2^{n-1}$ до $2^{n-1}-1$ (целые числа со знаком), где $n$ — количество бит на один семпл (bps, bits per sample). С количеством бит на семпл связана другая величина — динамический диапазон (или отношение сигнал-шум, что в данном случае то же самое). Он измеряется в децибелах определяется так: $DR = 20 \lg (2^{n}) \approx 6 n$ Динамический диапазон показывает логарифм отношения самого сильного сигнала к самому слабому. Теперь, что будет, если мы выберем $n$ маленьким? Если взять синусоидальную волн