Сжатый суффиксный массив: различия между версиями

Перейти к навигации Перейти к поиску
мНет описания правки
Строка 39: Строка 39:




Тогда A = A0 может быть представлен с использованием только ^Q, B° и A1. Чтобы получить A[i], сначала проверим, верно ли [i] = 1. Если это так, то A[i] (делится на 2) где-то в A1. Точное положение зависит от того, сколько единиц встречается в до позиции i, обозначенной rank(B°;i), т.е. A[i] = 2 ■ A1[rank1(B° ; i)]. Если B°[i] = 0, то A[i] является нечетным и не представлен в A1. Однако в этом случае элемент A[i] + 1 = A[^(i)] должен быть четным и, таким образом, должен быть представлен в A1. Так как WQ включает только 4> значения, где B°[i] = 0, из этого следует, что A[V(i)] = A[W0[rank0(, i)]]. После вычисления A[^(i)] (для четных ФЦ)) можно просто получить A[i] = A[4s(i)] - 1.
Тогда <math>A = A_0</math> может быть представлен с использованием только <math>\Psi_0, B^0</math> и <math>A_1</math>. Чтобы извлечь A[i], сначала проверим, выполняется ли <math>B^0[i] = 1</math>. Если это так, то A[i] было разделено на 2 где-то в <math>A_1</math>. Точное положение зависит от того, сколько единиц встречается в <math>B^0</math> до позиции i, обозначенной как <math>rank(B^0, i)</math>, т. е. <math>A[i] = 2 \cdot A_1[rank_1(B^0, i)]</math>. Если B°[i] = 0, то A[i] является нечетным и не представлен в <math>A_1</math>. Однако в этом случае элемент <math>A[i] + 1 = A[\Psi(i)]</math> должен быть четным и, таким образом, должен быть представлен в <math>A_1</math>. Так как <math>\Psi_0</math> содержит только значения <math>\Psi</math>, у которых <math>B^0[i] = 0</math>, из этого следует, что <math>A[\Psi(i)] = A[\Psi_0[rank_0(B^0, i)]]</math>. После вычисления <math>A[\Psi(i)]</math> (для четных <math>\Psi(i)</math>) элементарно получаем <math>A[i] = A[\Psi(i)] - 1</math>.




4446

правок

Навигация