考虑以下数据框:
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
,我们就会有一个带有两个父节点的节点{{1}}:
因此,问题是,如果给出如上所述的任意数据帧,我如何找到产生具有多个父节点的最少节点数的列的层次排序?
此问题有更多变体,例如
解决任何这些变种都会很棒。
答案 0 :(得分:2)
这是您的数据框架的无向图。 Edge(x,y)表示存在一些数据线,以便提到x,y。
例如 - 最后一行" A1,B4,C2和#34;添加边(A1,B4),(B4,C2),(A1,C2)
现在可以根据您的意愿对A,B,C进行排序。
查找具有最少(额外)多父边数的层次结构
我们可以强制执行所有安排(N = 8..10非常快)并找到最便宜(最小,最短)的安排。这种树(下面)中的边缘成本可以通过上面显示的图表来计算。
Mb可能会有一些贪婪的方法,喜欢"选择最便宜的当前步骤",我现在不确定,但我很确定这个问题的表现是有前途的。