我有一组数据:
a b c
d c
e d
c g
f a
v w
v m
n m o
根据这些数据我需要分组
{ a b c d e f g}
{ m o v w }
没有多次迭代数据集。是否可以使用高级SQL函数或HIVE / PIG中的一些简单方法(只是猜测)?
答案 0 :(得分:0)
您要做的是在所有节点的图形中查找每个连接的子图。 您可以通过首先构建图形,然后遍历所有寻找连接子图的节点来解决它。
要构建“大”图表,每个节点都是一个字母,如果两个字母属于同一个集合,则它们会链接在一起。
然后转到每个字母,尝试浏览从这封信开始的图表并删除您看到的每个字母。重新启动搜索算法的时间是您拥有的数量。
考虑到复杂性,图形结构取决于您拥有的数量以及不同字母的数量。 对于图搜索,它与您的字母和连接数呈线性关系。 当然,根据您的设置如何以及您使用的数据结构,您可以进行一些优化。
有关wikipedia的更多信息。