排列字符串以实现最大重叠

时间:2013-08-07 18:01:25

标签: python algorithm overlap

假设我有这组字符串:

strings = {'qqq', 'eqq', 'qqw', 'www', 'qww', 'wwe', 'eee', 'eeq', 'wee', 'qwe'}

如何编写一个算法来排列字符串,使它们最大程度地重叠?我已经知道安排它们的一种方法如下:

qww
 www
  wwe
   wee
    eee
     eeq
      eqq
       qqq
        qqw
         qwe

但是,我用蛮力解决方案找到了上述结果。有更明智的方法吗?

1 个答案:

答案 0 :(得分:2)

这被称为最短的超弦问题,并且是NP完成的。

您可能对论文Approximation Algorithms for the Shortest Common Superstring Problem by Jonathan Turner中的方法感兴趣。