Python 查找解释数据的最像树的层次结构
考虑以下数据帧:Python 查找解释数据的最像树的层次结构,python,algorithm,numpy,pandas,machine-learning,Python,Algorithm,Numpy,Pandas,Machine Learning,考虑以下数据帧: 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 我们注意到它有多个父节点。为了看到这一
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
,有两个父节点:
因此,问题是,给定一个像上面这样的任意数据帧,如何才能找到列的层次顺序,从而产生具有多个父节点的节点数最少
笔记:
此问题有更多变体,例如
解决这些变体中的任何一个都会很好。这是带有数据帧的无向图。Edge(x,y)表示存在一些数据线,因此x,y都被提及 例如,最后一行“A1,B4,C2”添加了边(A1,B4),(B4,C2),(A1,C2) 现在可以根据您的意愿对A、B、C进行排序了 查找具有最少(额外)多父边的层次 我们可以强行执行所有的安排(对我们来说很快),然后找到最便宜(最小、最短)的。这种树(下图)中的边缘成本可以通过上图计算
Mb可能有一些贪婪的方法,比如“选择当前步骤上最便宜的”,我现在不确定,但我很确定这个问题的表示是前瞻性的。这些不是周期。它只是一个节点
B1
,有多个父节点。@cheper很公平。“最树状”问题当然有几种变体可以表述(例如,具有多个父节点的节点数最少
,或父到子边数最少
)。我重新编写了这篇文章来纠正这一点,并选择了一篇我认为最能抓住我手头问题的文章。谢谢。你是如何从第一张图中得到第二张图的?(即算法)。@user815423426我没有。第二张图只是问题“强行执行所有可能的安排(ABC、ACB、BAC、BCA、CAB、CBA)”的表示。但边的成本(多父边的数量)应该由第一个图计算(以选择最佳排列)。