Перечислительная комбинаторика — это область комбинаторики , которая занимается количеством способов, которыми могут быть сформированы определенные шаблоны. Двумя примерами такого типа задач являются подсчет комбинаций и подсчет перестановок . В более общем смысле, учитывая бесконечный набор конечных множеств S i , индексированных натуральными числами , перечислительная комбинаторика стремится описать функцию подсчета , которая подсчитывает количество объектов в S n для каждого n . Хотя подсчет количества элементов в множестве является довольно широкой математической задачей , многие из задач, которые возникают в приложениях, имеют относительно простое комбинаторное описание. Двенадцатикратный способ обеспечивает единую структуру для подсчета перестановок , комбинаций и разделов .
Простейшими такими функциями являются замкнутые формулы , которые можно выразить как композицию элементарных функций, таких как факториалы , степени и т. д. Например, как показано ниже, число различных возможных упорядочений колоды из n карт равно f ( n ) = n !. Задача нахождения замкнутой формулы известна как алгебраическое перечисление и часто включает в себя вывод рекуррентного соотношения или производящей функции и использование этого для получения желаемой замкнутой формы.
Часто сложная замкнутая формула дает мало информации о поведении функции подсчета по мере роста числа подсчитанных объектов. В этих случаях простая асимптотическая аппроксимация может быть предпочтительнее. Функция является асимптотическим приближением к , если как . В этом случае мы пишем
Производящие функции используются для описания семейств комбинаторных объектов. Пусть обозначает семейство объектов, а F ( x ) — его производящая функция. Тогда
где обозначает число комбинаторных объектов размера n . Число комбинаторных объектов размера n , таким образом, задается коэффициентом . Теперь будут разработаны некоторые общие операции над семействами комбинаторных объектов и их влияние на производящую функцию. Иногда также используется экспоненциальная производящая функция . В этом случае она будет иметь вид
После определения генерирующая функция выдает информацию, полученную с помощью предыдущих подходов. Кроме того, различные естественные операции с генерирующими функциями, такие как сложение, умножение, дифференцирование и т. д., имеют комбинаторное значение; это позволяет расширить результаты одной комбинаторной задачи для решения других.
Даны два комбинаторных семейства и производящие функции F ( x ) и G ( x ) соответственно, непересекающееся объединение двух семейств ( ) имеет производящую функцию F ( x ) + G ( x ).
Для двух комбинаторных семейств, как указано выше, декартово произведение (пара) двух семейств ( ) имеет производящую функцию F ( x ) G ( x ).
(Конечная) последовательность обобщает идею пары, как определено выше. Последовательности — это произвольные декартовы произведения комбинаторного объекта с самим собой. Формально:
Выражая вышесказанное словами: пустая последовательность или последовательность из одного элемента, или последовательность из двух элементов, или последовательность из трех элементов и т. д. Производящая функция будет иметь вид:
Вышеуказанные операции теперь можно использовать для перечисления общих комбинаторных объектов, включая деревья ( бинарные и плоские), пути Дика и циклы. Комбинаторная структура состоит из атомов. Например, в случае деревьев атомы будут узлами. Атомы, составляющие объект, могут быть как помеченными, так и не помеченными. Непомеченные атомы неотличимы друг от друга, в то время как помеченные атомы различимы. Следовательно, для комбинаторного объекта, состоящего из помеченных атомов, новый объект может быть сформирован простой заменой двух или более атомов.
Двоичные и плоские деревья являются примерами немаркированной комбинаторной структуры. Деревья состоят из узлов, связанных ребрами таким образом, что нет циклов . Обычно есть узел, называемый корнем, у которого нет родительского узла. В плоских деревьях каждый узел может иметь произвольное количество потомков. В бинарных деревьях, частном случае плоских деревьев, каждый узел может иметь либо двух потомков, либо ни одного. Пусть обозначает семейство всех плоских деревьев. Тогда это семейство можно рекурсивно определить следующим образом:
В этом случае представляет собой семейство объектов, состоящее из одного узла. Это имеет порождающую функцию x . Пусть P ( x ) обозначает порождающую функцию . Передавая приведенное выше описание словами: Плоское дерево состоит из узла, к которому присоединено произвольное количество поддеревьев, каждое из которых также является плоским деревом. Используя операцию над семействами комбинаторных структур, разработанную ранее, это преобразуется в рекурсивную порождающую функцию:
После решения для P ( x ):
Теперь можно определить явную формулу для числа плоских деревьев размера n , извлекая коэффициент при x n :
Примечание: Обозначение [ x n ] f ( x ) относится к коэффициенту x n в f ( x ). Разложение квадратного корня в ряд основано на обобщении Ньютона теоремы о биноме . Чтобы перейти от четвертой к пятой строке, необходимы манипуляции с использованием обобщенного биномиального коэффициента .
Выражение в последней строке равно ( n − 1) -му каталонскому числу . Следовательно, p n = c n −1 .