j'ai une sorte de structure arborescente un niveau que:Combinatoire en Python
Où p sont des nœuds parents, c sont des nœuds enfants et b sont hypothétiques branches.
Je veux trouver toutes les combinaisons de branches sous la contrainte que seul un parent branche peut seulement un nœud enfant, et deux branches ne peut pas partager des parents et/ou enfants.
E.g. si combo
est l'ensemble des combinaisons:
combo[0] = [b[0], b[3]]
combo[1] = [b[0], b[4]]
combo[2] = [b[1], b[4]]
combo[3] = [b[2], b[3]]
Je pense que ce tous. =)
Comment cela peut-il être obtenu automatiquement en Python pour des arbres arbitraires de ces structures, c'est-à-dire que le nombre de p: s, c: s et b: s est arbitraire.
EDIT:
Il n'est pas un arbre mais une bipartitedirected acyclic graph
Votre image suggère qu'il y a des branches disponibles de chaque parent à chaque enfant. Est-ce que vous supposez cela? – dhill
Avez-vous déjà une structure de données pour représenter cela? –
@dhill - Est-ce que c'est? Le noeud parent p1 ne se connecte pas à l'enfant c0. – Theodor