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

假设我有这组字符串:

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

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

qww
 www
  wwe
   wee
    eee
     eeq
      eqq
       qqq
        qqw
         qwe

但是,我用蛮力解决方案找到了上述结果.这样做有更聪明的方法吗?

最佳答案 这被称为最短的超弦问题并且是NP完整的.

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

点赞