Я относительно новичок в python и начинаю работать с суффиксными деревьями. Я могу построить их, но у меня проблема с памятью, когда строка становится большой. Я знаю, что их можно использовать для работы со строками ДНК размером 4 ^ 10 или 4 ^ 12, но всякий раз, когда я пытаюсь реализовать метод, у меня возникают проблемы с памятью.
Вот мой код для генерации строки и дерева суффиксов.
import random
def get_string(length):
string=""
for i in range(length):
string += random.choice("ATGC")
return string
word=get_string(4**4)+"$"
def suffixtree(string):
for i in xrange(len(string)):
if tree.has_key(string[i]):
tree[string[i]].append([string[i+1:]][0])
else:
tree[string[i]]=[string[i+1:]]
return tree
tree={}
suffixtree(word)
Когда я добираюсь до 4**8, у меня возникают серьезные проблемы с памятью. Я новичок в этом, поэтому я уверен, что мне что-то не хватает при хранении этих вещей. Мы будем очень признательны за любые советы.
В качестве примечания:я хочу выполнить поиск строк, чтобы найти совпадающие строки в очень большой строке. Размер соответствия строки поиска равен 16. Таким образом, это будет искать строку размера 16 в большой строке, а затем переходить к следующей строке и выполнять другой поиск. Поскольку я буду выполнять очень большое количество поисков, было предложено дерево суффиксов.
Большое спасибо