Комбинаторика в Python

У меня есть своего рода одноуровневая древовидная структура как:

alt text

Где p - родительские узлы, c - дочерние узлы, а b - гипотетические филиалов.

Я хочу найти все комбинации ветвей при ограничении, что только один родительский элемент может перейти только к одному дочернему узлу, а две ветви не могут совместно использовать родитель и / или дочерний элемент.

Например, если combo - это набор комбинаций:

combo[0] = [b[0], b[3]]
combo[1] = [b[0], b[4]]
combo[2] = [b[1], b[4]]
combo[3] = [b[2], b[3]]

Я думаю, что это все. =)

Как это может быть достигнуто автоматически в Python для произвольных деревьев этих структур, то есть количество p: s, c: s и b: s произвольно.

EDIT:

Это не дерево, а двудольный направленный ациклический граф

6
задан Theodor 4 November 2010 в 11:57
поделиться