均质字符串的复杂性


10

动机:在开发用于数据版本控制的工具时,我们最终提出了“区分”两组整数的算法,方法是提出一系列将一组整数转换为另一组的转换。我们能够将这个问题简化为以下非常自然的问题,该问题似乎具有编辑距离,通过交换分组最小公共字符串分区的连接

问题:我们给了一个字符串,即一个字母序列,我们的目标是以最小的成本将其 均匀化。也就是说,我们需要重新排列序列,以使所有相似的字母彼此相邻。

唯一允许的操作是拾取一个相似的字母子序列,然后将该子序列移动到任何位置,这将花费我1个单位。

表征此问题的复杂性的任何帮助将不胜感激!

范例

  • aabcdab:输入
  • bcd aa ab:将第一个aa移到“ d”之后的位置之后
  • b bcdaaa:将结尾的b移动到第一个位置后

由于生成的字符串是同质的,因此成本为2。

请注意,我们对输出没有任何限制:只要它是同质的,我们就不需要确保任何特定的顺序。

Answers:


6

通过从最小击中集减少,此问题是NP完全的。

在最小碰集,我们都给予了宇宙,,和一套套的,使得。目的是找到最小大小的,使得使得。USsS,sUHUsS,hHhs

减少如下:

  • 字符串如下:对于每个元素,字符串中将有两个字符。在这些字符之间将是每个的字符,从而使。在成对的之间,将存在字符串中未重复的唯一字符。uUussSusu

  • 为了使字符串均一,必须将字符对每个次移动。此外,对于每个,必须将字符移动一次,除非对之间的每个已移动到其他位置。s|s|1suusu

  • 因此,为了使均匀化琴弦所需的移动次数最小化,我们希望最大化的数目,以使每个都已移动到其他位置。该 s其中的 ■找被移到别处必须在一起含有为每个,所以他们必须为碰集。而且,通过将每个移到击中它的,任何这样的击中集合都可以用作的结束位置。ususssSssu

  • 因此,使该字符串均质化的移动次数等于,其中是最小击中集合。|s|+|H|H

由于最小击球位置是NP-Hard,因此也可以使弦均匀最优化。由于这些举动是见证人,因此是NP完成。


这是一个优雅的减少-谢谢!
Aditya Parameswaran'7

2

查看字符串中从一个字母到另一个字母的更改数量,您可以将其视为衡量字符串不均匀性的量度。对于子序列的每一次(有用的)移动,如果要移动的子序列位于前面并紧随其后的是两个不同的字母,则可以将此数字减少一个。否则,您可以将不均匀性减少两个。

因此,对于具有k个更改的字符串,最多需要k-l + 1个 移动,其中l是字符串中不同字母的数目,因为最后l-1个更改将保留。由于长度为n的字符串最多可以有n-1个字母变化,因此最多需要n-1个移动。最小的数目是该数目的一半。

因此,最好的策略似乎是寻找abbba形式的子序列,并将bbb移开。当一无所有时,移动任何东西。您仍然可以尝试进行会导致新的abbba情况的操作,但是我认为收益将很小。由于最糟糕的策略(没有愚蠢的举动会增加不均匀性)最多使用了最佳举动的两倍,因此,您可能获得的一点点钱似乎与工作量没有合理关系,因为isaacg的答案是: NP-hard建议。当然,除非您真的只计算移动操作的数量,并且不关心决定进行哪个移动的时间。

因此,最坏的情况是一个字符串,其中每个字母都不同于其前任字母(并且您不会获得任何abbba奖金)。在这里,您需要执行一些与字符串长度成线性关系并且几乎等于该长度的操作。

在您的示例中,您有5-> 4-> 3个更改,并且3等于字母数(4)减1。

旁注:对于只有两个大小的字母,不移动字符串前缀或后缀的每个动作都会使不均匀性降低两个,因此,合理移动的每个序列都是最佳的。


您声称一个移动最多可以减少2个更改,但实际上最多可以减少3个更改。例如,通过将第一个子字符串“ bc”移入“ aabcabc”转换为“ aaabbcc”第二子串“BC”在该串中的变化的数量的减少导致的中间从5到2
米哈伊尔Rudoy

嗨,@ MikhailRudoy。这些问题指出,该操作是“拾取相似的字母的子序列”,因此据我所知,不允许使用bc。
Peter Leupold

我完全错过了那个细节。在这种情况下,您是正确的。
Mikhail Rudoy '17

彼得是正确的:这些举动是不允许的。
Aditya Parameswaran'7

关于:答案的其余部分-实际上,这些观察结果关于:下界,字母大小写2大小写的最优性以及在任何时候进行操作的启发式方法都是有价值的。由于最坏情况下的任何移动都只会使字母序列受益,而在最好的情况下,最多合并两个字母序列(如abbba中的字母),因此2近似看起来很自然。
Aditya Parameswaran'7
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.