在元素长度不同的多维数组中对模式进行聚类的合适算法或策略是什么?
一个示例是包含以下元素的数组:
0: [4,2,8,5,3,2,8]
1: [1,3,6,2]
2: [8,3,8]
3: [3,2,5,2,1,8]
目标是找到这些数字列表中的模式并将其聚类。例如,在元素"3"中有一个模式:"2,5,2,8"(不连续),它也可以在元素"0"中找到。在元素"0"和元素"3"中找到的模式的数字不相邻,但它们的顺序相同。
注意:为了更清晰,示例使用整数,但实际数据将使用浮点数,而不是完全相同,当两者在给定阈值内分开时,它们将被视为"匹配"。
.
编辑2:虽然Abhishek Bansai的方法在我们只选择最长公共子序列时是有用的,但我们可能会错过其他重要的模式。例如这两个序列:
0: [4,5,2,1,3,6,8,9]
1: [2,1,3,4,5,6,7,8]
最长公共子序列是[2,1,3,6,8],但还有一个重要的子序列[4,5,6,8],我们可能会遗漏。
.
编辑1:Abhishek Bansai的回答似乎是解决这个问题的一个很好的方法。
它是最长公共子序列算法:
使用此算法将每个元素与其他每个元素进行比较将返回所有模式,下一步将从这些模式中生成集群。
由于您似乎更有兴趣通过查找所有匹配(每个编辑1,2)来寻找序列之间的"相似性",您会发现在序列对齐领域有大量的研究。来自维基:
在生物信息学中,序列比对是一种排列DNA、RNA或蛋白质序列以识别相似性区域的方法,这些相似性可能是序列之间功能、结构或进化关系的结果。核苷酸或氨基酸残基的排列序列通常表示为矩阵内的行。在残基之间插入空白,以便在连续的列中对齐相同或相似的字符。