Комбинаторика Python, часть 2

Это следующий вопрос к Комбинаторика в Python

У меня есть дерево или направленный ациклический Граф, если вы сделаете это со структурой как:

alt text

Где r - корневые узлы, p - родительские узлы, c - дочерние узлы, а b - гипотетические ветви. Корневые узлы не связаны напрямую с родительскими узлами, это только ссылка.

Я заинтересован в поиске всех комбинаций ветвей при ограничениях:

  1. Дочерний элемент может совместно использоваться любым количеством родительских узлов при условии, что эти родительские узлы не имеют общего корневого узла.
  2. Допустимая комбинация не должна быть подмножеством другой комбинации

В этом примере возможны только две допустимые комбинации при ограничениях:

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

Структура данных такая, как b - это список объектов ветвления, которые имеют свойства r, c и p, например:

b[3].r = 1
b[3].p = 3
b[3].c = 2

9
задан Community 23 May 2017 в 02:13
поделиться