Дано
вершин. Пронумеруем их числами от
до
.
Задача: сколькими способами из них и вспомогательных вершин можно построить ациклический направленный граф, удовлетворяющий следующим условиям?
- Вспомогательные вершины соответствуют непустым подмножествам из и не повторяются.
- Единственная вершина, из которой выходят рёбра и в которую не входят рёбра, соответствует множеству всех чисел от до .
- В вершины, соответствующие индивидуальным числам, рёбра входят, но не выходят.
- Если ребро выходит из вершины и входит в вершину , то для соответствующих им множеств и верно , т.е. должна содержать часть, но не все элементы из .
- Из вспомогательной вершины существует путь до каждой из вершин .
Пример для
:
Насколько я могу судить, для
ответ равен
. Если найдутся другие графы, удовлетворяющие условиям, возможно, мне придётся исправить условия.
Зачем всё это надо: выше приведена моя попытка перевести настоящую задачу на язык теории множеств в надежде, что это уже известный результат, который я пока не смог найти. Я занимаюсь
бустингом в задачах классификации, в частности, моделями, в которых
классов объединяют в меньшее количество классов (например,
классов можно объединить в
мета-класса
и
), обучают классификационную модель (которая обычно лучше справляется с меньшим количеством классов), а после этого обучают дополнительные модели на подмножествах исходных классов (например, отличить класс
от класса
, но не остальных, а также либо разделить классы
сразу, либо предварительно объединить два самых трудноотличимых), пока не станет возможно определить исходные классы. Мне любопытно узнать, сколько всего есть способов так объединять классы, пока не получится серия классификационных моделей, дающих ответ в терминах исходных классов.
Я попробовал подойти к решению, посчитав, сколько всего есть способов объединить
классов.
На каждой итерации можно либо решить закончить объединение (один способ), либо, если ещё осталось больше двух классов, выбрать 2 класса (
способа) и объединить их. Получается простая рекурсивная формула:
(Если можно так записывать суммы и произведения по индексу, убывающему от
до
и от
до
.)
К сожалению, если объединять классы именно таким образом и считать полученные варианты, объединения
и
будут посчитаны отдельно друг от друга, хотя являются одним и тем же способом объединить классы. И это я ещё не дошёл до подсчёта способов переразбить эти классы в дочерних моделях, пока не останутся индивидуальные классы.
Какие ещё подходы я могу применить, чтобы решить эту задачу?