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,依此类推。
答案 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