我需要创建一个程序/脚本来创建大量随机序列(基于4个不同字母的20个字母长的序列),所有序列之间的编辑距离最小。 "高"这里至少有100k序列,但如果可能的话,最多可达100万。
我从一种简单的方法开始,只生成随机的20个字母序列,并为每个序列计算序列与已创建和存储的所有其他序列之间的编辑距离。如果新序列超过我的阈值,则存储它,否则丢弃。
正如您所理解的,这对于更高数量的序列来说非常严重。高达10k是相当不错的,但试图获得100k这开始变得麻烦。
我真的只需要创建一次序列并存储输出,所以我对速度并不是那么挑剔,但今天以这个速度制作100万只是不可能的。
一直试图想出替代方案以加快这个过程,比如建立序列是" block"最小的ED然后结合,但没有提出任何解决方案。
想知道,有没有人有任何聪明的想法/方法可以实现创建如此大量的序列,最小的ED更节省时间?
干杯, JB
答案 0 :(得分:0)
从维基百科看来,编辑距离是插入,删除,替换三种操作之一;在起始字符串上执行。为什么不从起始字符串系统地生成所有字符串最多N次编辑,然后在达到限制时停止?
没有必要检查实际的编辑距离,因为它们在生成时是正确的。对于随机性,您可以生成一个数字然后随机播放。