【发布时间】:2015-01-15 22:29:56
【问题描述】:
考虑以下数据框:
A B C
1 A1 B1 C1
2 A2 B2 C2
3 A3 B1 C1
4 A1 B1 C2
5 A2 B1 C1
6 A1 B4 C2
其中A、B 和C 表示属性。我希望推断A、B 和C 之间的最有可能 层次结构。我的意思是找到{A,B,C} 的排序,它会产生一个层次结构,其中包含多个父节点的节点数量最少。
例如,让我们考虑一种分层的可能性:
A->B->C
我们注意到它有多个父节点。为了看到这一点,我们观察到A1 与B1 和 B4 在A1 B1 C1 和A1 B4 C1 的组合中同时出现。但是,A3 也与B1 在行3 和A3 B1 C1 中同时出现。
换句话说,只关注图的这一部分,如果我们假设层次结构A->B->C,我们将有一个节点B1,有两个父节点:
因此,问题是,给定一个像上面这样的任意数据框,我如何才能找到产生最少数量的具有多个父节点的列的层次顺序?
注意事项:
这个问题还有更多变种,例如
- 查找具有最少(额外)多父边数的层次结构
- 找到边数最少的层次结构
解决这些变体中的任何一个都很棒。
【问题讨论】:
-
那些不是周期。它只是一个节点
B1有多个父节点。 -
@cheper 够公平的。当然,可以制定出“最类似树形”问题的几种变体(例如
least number of nodes with more than one parent或least number of parent-to-child edges)。我改写了 OP 来纠正这个问题,并选择我认为最能抓住我手头问题的一个。
标签: python algorithm numpy pandas machine-learning