Дерево состоит из узлов вида
Node(MD, parent, next, depends)
md - некоторые данные, суть их не важна
parent - предок (Node)
childs - список потомков (Node list)
depends - список Node
Желаемый результат для каждой Node:
- P(Node, Node.parent)=true
- P(Node, Node.childs)=true; 0<i<length(Node.childs)
- P(Node, Node.depends)=true; 0<i<length(Node.childs)
- минимизировать количество случаев, когда не соблюдаются условия выше
Доп. информация:
- M(Node, Node.parent) может изменить результат P(Node, Node.childs) либо для всех i, либо не для одного.
- M(Node, Node.childs) может изменить результат P(Node, Node.parent), а может не изменить
Кто силён в деревьях, помогите сделать алгоритм, который будет гарантировано сводить нежелательные результаты для каждой Node к минимуму.