假设我有这组字符串:
strings = {'qqq', 'eqq', 'qqw', 'www', 'qww', 'wwe', 'eee', 'eeq', 'wee', 'qwe'}
如何编写一个算法来排列字符串,使它们最大程度地重叠?我已经知道安排它们的一种方法如下:
qww
www
wwe
wee
eee
eeq
eqq
qqq
qqw
qwe
但是,我用蛮力解决方案找到了上述结果。有更明智的方法吗?
答案 0 :(得分:2)
这被称为最短的超弦问题,并且是NP完成的。
您可能对论文Approximation Algorithms for the Shortest Common Superstring Problem by Jonathan Turner中的方法感兴趣。