Скобка Айверсона

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Скобка Айверсона — функция, возвращающая 1 для истинного высказывания, и 0, если аргумент ложный:

[math]\displaystyle{ [\,P\,] = \begin{cases} 1, &\text{если } P \text{ истинно} \\ 0, &\text{если } P \text{ ложно} \end{cases} }[/math]

Нотация введена Кеннетом Айверсоном для языка программирования APL, и оказалась очень удобным математическим обозначением, например, с ним можно лаконично определить:

Также нотация удобна при обращении с суммами, поскольку позволяет выражать их без ограничений на индекс суммирования, например:

[math]\displaystyle{ \sum_{i=1}^n a_i = \sum_{k} a_k [\, 1 \leqslant k \leqslant n\, ] }[/math],

то есть индекс [math]\displaystyle{ k }[/math] пробегает всё множество [math]\displaystyle{ \Z }[/math] целых чисел, и формально суммируется бесконечное число слагаемых, но лишь конечное число их отлично от нуля.

Пример вычисления с использованием нотации Айверсона суммы [math]\displaystyle{ S = \sum_{i=1}^{n-1} \sum_{j=i+1}^n a_i a_j }[/math] для последовательности [math]\displaystyle{ \{ a_i \} }[/math]:

[math]\displaystyle{ [\,i \lt j\,] + [\,i = j\,] + [\,i \gt j\,] = 1 }[/math],
[math]\displaystyle{ \sum\limits_{i , j} a_i a_j [\,i \lt j\,] + \sum\limits_{i , j} a_i a_j [\,i = j\,] + \sum\limits_{i , j} a_i a_j [\,i \gt j\,] = \sum\limits_{i , j} a_i a_j }[/math],
[math]\displaystyle{ S + \sum\limits_{i} a_i^2 + S = \biggl(\sum\limits_{i} a_i \biggr)^2 }[/math],

а так как для правой части:

[math]\displaystyle{ \sum\limits_{i , j} a_i a_j = \sum\limits_{i} \sum\limits_{j } a_i a_j = \sum\limits_{i} a_i \sum\limits_{j } a_j = \biggl(\sum\limits_{i} a_i \biggr)^2 }[/math],

то:

[math]\displaystyle{ S = \sum_{1 \leq i \lt j \leq n} a_i a_j = \frac{1}{2} \biggl(\sum_{i=1}^n a_i \biggr)^2 - \frac{1}{2}\sum_{i=1}^n a_i^2 }[/math].

Литература

  • Грэхем Р., Кнут Д., Паташник О. Конкретная математика. — М.: Мир, 1998. — 703 с. — ISBN 5-03-001793-3.
  • Kenneth E. Iverson. A Programming Language. — the University of California: Wiley, 1962. — 286 с. — ISBN 0471430145.