我有一个用户和组数据库。数据库上有很多组,每个组都有很多成员。例如;
各组之间存在亲子关系。父组是更一般的组。例如,
在数据库中,组之间没有父子关系。如何创建动态的亲子关系?我有关于这些问题的算法吗?
感谢您的回复。
答案 0 :(得分:1)
遍历每个项目,填写表child1Parent2 [groups,groups]。一开始它充满了真实。对于每个组检查条件:设置g1并且未设置g2。如果为true,则将false设置为chuld1Parent2 [gr1,gr2]。在迭代结束时,您将拥有包含所有父子信息的表。
boolean child1Parent2[groups,groups];
for( g1:groups) for(g2:groups) {
child1Parent2[g1,g2]=true;
}
for (itemRow:rows){
for( g1:groups) for(g2:groups)
if (child1Parent2[g1,g2])
if (itemRow.contains(g1)& !itemRow.contains(g2))
child1Parent2[g1,g2]=false;
}
结果你得到:child1Parent2[g1,g2] === (g1 is a child of g2)
对未来的一条建议:如果你想找到一些信息,请考虑如何宣布这些信息,它有什么结构。你会对这个问题有更多的了解。
答案 1 :(得分:0)
如果您有组和父组的邻接列表,则需要将其存储在数据库中。如果不将它存储在某个地方,就无法动态地找到它。如果精度足够好,你可以使用轮盘赌。
答案 2 :(得分:0)
您可以运行关联规则挖掘过程,并在关联规则足够频繁时将其视为父子关系。
即。当你发现A组的成员资格意味着99%支持B组的成员资格时,那么B就是A的超级组。
请注意,您甚至不需要完整的APRIORI,只需要保存重新计算和修剪结果的技巧。基本上,您可以立即计算条件可能性(当最小支持足够时),并保留满足阈值的那些。