Русская Википедия:Функция fusc

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Функция fusc — это целочисленная функция на множестве натуральных чисел, определённая Э. Дейкстрой следующим образом[1]:

<math>\operatorname{fusc}(k) = \begin{cases}
1, & k = 1; \\
\operatorname{fusc}(n), & k = 2n, n \in \mathbb{N}; \\
\operatorname{fusc}(n) + \operatorname{fusc}(n + 1), & k = 2n + 1, n \in \mathbb{N}.

\end{cases} </math>

Последовательность, генерируемая этой функцией, имеет вид

1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, …

Это диатомическая последовательность Штерна (Шаблон:OEIS). Функция fusc связана с последовательностью Калкина — Уилфа, а именно <math>n</math>-й член последовательности Калкина — Уилфа равен <math>\operatorname{fusc}(n)/\operatorname{fusc}(n+1)</math>, а соответствие

<math>n \mapsto \frac{\operatorname{fusc}(n)}{\operatorname{fusc}(n+1)}, \quad n = 1, 2, 3, \dots</math>

является взаимно однозначным соответствием между множеством натуральных чисел и множеством положительных рациональных чисел.

Свойства

Пусть <math>f_1 = \operatorname{fusc}(n_1)</math> и <math>f_2 = \operatorname{fusc}(n_2)</math>, тогда[1]:

  • если существует <math>N</math> такое, что <math>n_1 + n_2 = 2^N</math>, то <math>f_1</math> и <math>f_2</math> взаимно просты;
  • если <math>f_1</math> и <math>f_2</math> взаимно просты, то существуют <math>n_1</math>, <math>n_2</math> и <math>N</math> такие, что <math>n_1 + n_2 = 2^N</math>.

Значение функции не изменится, если в двоичном представлении аргумента инвертировать все внутренние цифры[2]. Например, <math>\operatorname{fusc}(19) = \operatorname{fusc}(29)</math>, т. к. 1910 = 100112 и 2910 = 111012.

Значение функции также не изменится, если в двоичном представлении аргумента записать все цифры в обратном порядке[2]. Например, <math>\operatorname{fusc}(19) = \operatorname{fusc}(25)</math>, т. к. 1910 = 100112 и 2510 = 110012.

Значение <math>\operatorname{fusc}(n)</math> чётно тогда и только тогда, когда <math>n</math> делится на 3[2].

Функция обладает свойствами

<math>\operatorname{fusc}(2^n) = 1,</math>
<math>\operatorname{fusc}(3 \cdot 2^n) = 2.</math>

Значение <math>\operatorname{fusc}(n)</math> равно количеству всех нечётных чисел Стирлинга второго рода вида <math>S_2(n + 1, 2r + 1)</math>, а <math>\operatorname{fusc}(n+1)</math> равно количеству всех нечётных биномиальных коэффициентов вида <math>\binom{n - r}{r}</math>, где <math>0 \leqslant 2r < n</math>[3].

Вычисление

Кроме рекурсивного вычисления функции fusc по определению, существует простой итеративный алгоритм[1]:

fusc(N):
    n, a, b = N, 1, 0
    пока n ≠ 0:
        если n чётное:
            a, n = a + b, n / 2
        если n нечётное:
            b, n = a + b, (n - 1) / 2
    fusc(N) = b

Примечания

Ссылки

См. также