Нет, не в общем. Хотя последовательность S не обязательно должна быть представлена буквально в памяти, чтобы мы могли реализовать генерирующую функцию F, любая функция F эффективно кодирует последовательность S, и, следовательно, требуется память.
(Генерирующая функция F - это такая функция, что F (i), где i является элементом последовательности, является следующим элементом последовательности или, если i является последним элементом, является некоторым значением, указывающим на это.)
Конечно, возможно, что некоторые последовательности, такие как тривиальные 0, 1, 2, 3,…, могут быть сгенерированы небольшими функциями. Однако рассмотрим некоторое количество битов b. Число различных функций, которые могут быть закодированы с помощью b битов, составляет не более 2 b (с использованием любой схемы кодирования, которую вы пожелаете - исходного кода, машинного кода, абстрактного математического представления и т. Д.). Количество различных последовательностей составляет 2 n !, поэтому необходимо количество различных генерирующих функций 2 n !.
Следовательно, 2 b ≥ 2 n !, поэтому b ≥ log 2 (2 n !). Таким образом, если мы хотим иметь достаточно памяти для хранения генерирующей функции для любой последовательности в течение 2 n , нам нужно по крайней мере log 2 (2 n !) бит.