检查数组是否为任何二进制字符串的后缀数组

时间:2019-01-08 20:32:28

标签: binary-data suffix-array string-algorithm

我目前正在试图确定给定的数组(它是数字1到n的排列)是否是任何二进制字符串的后缀数组。

例如对于n = 3,A = {2,1,3}是有效的,因为存在具有[01] <[1] <[101]的二进制字符串[101](使用字典顺序)。但是{2,3,1}不是有效的后缀数组,因为没有按字典顺序保存的二进制字符串。

我当前的方法只是枚举长度为n的所有二进制字符串,并检查后缀数组是否正确排序。每个字符串。这显然很慢,因为每个O(n)中都有2 ^ n个候选二进制字符串要检查。

解决此类问题的明显方法是在有效的后缀数组中查找相似性,但是到目前为止,我只能推断出一个属性:

  

如果A是二进制字符串的有效后缀数组,则在A前面加上1并递增A的所有值,也会产生一个有效的后缀数组。

但是,当尝试验证不以1开头的后缀数组时,此属性无法帮助我。

0 个答案:

没有答案