动机:在开发用于数据版本控制的工具时,我们最终提出了“区分”两组整数的算法,方法是提出一系列将一组整数转换为另一组的转换。我们能够将这个问题简化为以下非常自然的问题,该问题似乎具有编辑距离,通过交换分组和最小公共字符串分区的连接。
问题:我们给了一个字符串,即一个字母序列,我们的目标是以最小的成本将其 均匀化。也就是说,我们需要重新排列序列,以使所有相似的字母彼此相邻。
唯一允许的操作是拾取一个相似的字母子序列,然后将该子序列移动到任何位置,这将花费我1个单位。
表征此问题的复杂性的任何帮助将不胜感激!
范例:
- aabcdab:输入
- bcd aa ab:将第一个aa移到“ d”之后的位置之后
- b bcdaaa:将结尾的b移动到第一个位置后
由于生成的字符串是同质的,因此成本为2。
请注意,我们对输出没有任何限制:只要它是同质的,我们就不需要确保任何特定的顺序。