java以编程方式检测一组数据中的模式?
有没有一种方法可以通过编程在一组数据中检测模式?例如,如果我有以下数据,我如何发现第一列每6行重复一次,第二列每7行重复一次
2 3
1 1
5 2
4 5
3 7
2 6
1 3
5 1
4 2
3 5
2 7
实际数据远比这复杂。我可以使用PHP或Java。是否有用于此的库或函数
你可以在下面搜索框中键入要查询的问题!
有没有一种方法可以通过编程在一组数据中检测模式?例如,如果我有以下数据,我如何发现第一列每6行重复一次,第二列每7行重复一次
2 3
1 1
5 2
4 5
3 7
2 6
1 3
5 1
4 2
3 5
2 7
实际数据远比这复杂。我可以使用PHP或Java。是否有用于此的库或函数
# 1 楼答案
我手头没有什么好的参考资料,但是对于这些相当简单的模式,您可能需要执行auto correlation。基本上,您可以看到数组本身与各种delta之间的关联有多好。定义为+1表示数字完全相关,0表示它们彼此“完全”随机,而-1表示它们彼此完全“相反”
对于delta=0,您将数据与自身进行比较,因为始终存在完美的相关性
在您的例子中,第一列还将显示一个峰值(接近1的数字),其增量为6,第二列的增量为7
对于Java,我要检查Apache Commons Math library
# 2 楼答案
这是暴力的方式。其思想是测试数组的所有子集(第一个元素,然后是前两个元素,然后是前三个元素,等等)并查看其中是否有任何一个在数组中显示为模式
我是当场写的,所以不能保证:)
# 3 楼答案
将
matchList.add(i)
替换为matchList.add(data[i])
,这样效果会更好: