【问题标题】:Merging matching slices of an unknown string合并未知字符串的匹配切片
【发布时间】:2020-06-18 18:21:56
【问题描述】:

我正在解决一个谜,我有几个大的数字字符串切片。最初它们似乎是随机的,但通过一些频率分析我了解到它们都是一个大字符串的切片。

问题是这些切片可能包含大字符串的单独部分,但不包含有关它们所在位置的信息,甚至可能包含单独的子字符串。例如:

text: 0102030405060708091011121314151617181920
slice 1: 010203041516171819
slice 2: 030405060717181920
slice 3: 060708091011121314
slice 4: 040506071213141516

注意如何通过滑动切片来重建原始文本:

slice 1: 01020304                    1516171819
slice 2:     0304050607                  17181920
slice 3:           060708091011121314
slice 4:       04050607        1213141516

由于原始文本可能有数百甚至数千位数字,因此手动操作非常困难且耗时。我有 80 个切片的集合,它们应该生成一个合并的字符串,这是我没有的原始文本。

我搜索了一些字符串匹配算法,例如最长公共子字符串,但它们不包括拆分切片以尝试匹配。此外,diff 算法通常不支持一次合并多个字符串,并且两个切片包含的共同点太少而无法使用,通常会给出错误的匹配,最终会失败。

【问题讨论】:

    标签: python python-3.x merge pattern-matching string-matching


    【解决方案1】:

    如果我有声望,我会发表评论,但这个问题看起来类似于从大量小的已测序片段组装基因组。不确定最新的技术是什么,但 De Brujin 图表是我被教导如何做到这一点的。

    这个问题(关于基因组组装 - 但同样可能适用)可能会有所帮助: http://rosalind.info/problems/grep/

    还有 Rosalind 提出的关于德布鲁金图的问题子集 http://rosalind.info/search/?q=%20bruijn

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 2020-11-27
      • 2018-05-11
      • 2018-01-31
      • 1970-01-01
      相关资源
      最近更新 更多