У меня есть ориентированный ациклический граф (дерево), описанный корнями (Parent1 -> Child1), (Parent2 -> Child2), ...., (ParentN -> ChildN). Есть ли какой-либо алгоритм, который восстанавливает дерево (график) из этих данных?Преобразование кортежей в дерево
Лучший пример:
Root
Parent1
Node1
Child1
Child2
Parent2
Node1
Child1
Child2
и в качестве входных данных у меня только:
Root -> Parent1
Node1 -> Child1
Root -> Parent2
Parent1 -> Node1
Parent2 -> Node1
Node1 -> Child2
в произвольном порядке.
Имея только эти кортежи, мы можем реконструировать дерево в структуре, как:
Node (имя: String, дети: List)?
Являются ли 'Root.Parent1.Node1' такими же, как' Root.Parent2.Node1'? –
Они одинаково логически, но в дереве они должны быть представлены как повторяющиеся сущности, чьи дети также дублированы. –
Незначительный нит: DAG не обязательно должно быть деревом. Лучше, чтобы вы уточнили, какой адрес вы хотите адресовать, DAG или неориентированное дерево. – srean