python中的压缩后缀数组

时间:2018-03-25 17:01:25

标签: python suffix-array

python中是否有关于压缩后缀数组Psi的实现?我实际上理解后缀数组是如何工作的并且给Psi一个后缀数组但是有没有办法通过使用python来获得它?我在搜索是否有一些库或其他实现之王,但没有遇到可以在python中使用的东西。 这是一个例子:

offset     0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 #indexes
Text       a  b  b  a  a  b  b  a  a  a  b  a  b  b  b  $ 
SA         15 7  8  3  9  4  0 11 14  6  2 10 13  5  1 12 #suffix array
Psi        $  2  4  5 11 13 14 15  0  1  3  7  8  9 10 12 #Psi

通过查找索引获得Psi数组。例如,对于Psi数组中的索引1,我们必须在SA(它的7)中查找索引1中的值,现在我们将值1(7 + 1)加1,并查看与该值相关的索引8(in这种情况2)。对于Psi中的索引2,我们在SA(8)中查找索引2中的值并添加1(8 + 1)并查看与该值相关联的索引9并将oout变为4,依此类推。

1 个答案:

答案 0 :(得分:0)

不需要图书馆:

import firebase_admin

收率:

Text = "abbaabbaaababbb"

SA = sorted(list(range(0,len(Text)+1)), key=lambda i:Text[i:])

SAINV = [None]*(len(SA)+1)
for i in range(0,len(SA)):
    SAINV[SA[i]]=i

Psi = [SAINV[pos+1] for pos in SA]

print SA
print SAINV
print Psi