Ésta es una pregunta de seguimiento a Combinatorics in PythonPython Combinatoria, parte 2
he un árbol o grafo acíclico dirigido por así decirlo, con una estructura como:
Donde r es la raíz nodos, p son nodos principales, c son nodos hijo y b son hipotéticas ramas. Los nodos raíz no están directamente vinculados a los nodos principales, solo es una referencia.
estoy intressted en la búsqueda de todas las combinaciones de las ramas bajo las restricciones:
- Un niño puede ser compartido por cualquier número de nodos padre, dado que estos nodos padres no comparten nodo raíz.
- una combinación válida no debe ser un subconjunto de otra combinación
En este ejemplo sólo dos combinaciones válidas son posibles en virtud de las restricciones:
combo[0] = [b[0], b[1], b[2], b[3]]
combo[1] = [b[0], b[1], b[2], b[4]]
La estructura de datos es tal que b es una lista de objetos derivados, que tienen las propiedades r, c y p, p. ej .:
b[3].r = 1
b[3].p = 3
b[3].c = 2
¿Ya ha resuelto un algoritmo para hacer esto que está tratando de implementar en Python, o está solicitando un algoritmo general que resuelva su problema? ¿O ambos? – katrielalex
@katrielalex - bueno, el único algoritmo en el que puedo pensar es "dividir" la lista de ramas donde dos ramas comparten secundario y raíz, pero no sé cuán efectivo sería eso. – Theodor
@Theodor qué programa usas para hacer eso. está muy limpio – wheaties