Изменения

Перейти к: навигация, поиск

Алгоритм Крочемора

708 байт добавлено, 06:15, 28 мая 2014
Оптимизация
В приведенном выше примере для строки <tex>f_6</tex> последовательность <tex><1Заметим, 4что декомпозицию можно выполнить, 6, 9></tex> на уровне <tex>3</tex> разбивается на уровне <tex>4</tex> основываясь не на разбиваемой последовательности <tex><1, 6а на последовательностях, 9></tex> и <tex><4></tex>, поскольку<tex>f_6[1 + 3] = f_6[6 + 3] = f_6[9 + 3] \neq f_6[4 + 3]</tex>относительно которых будут разбиваться другие последовательности.
Но декомпозицию можно выполнитьДля каждой позиции <tex>p_i > 1</tex> известно, основываясь не на разбиваемой что подстрока <tex>s[p_i - 1 \ldots p_i + l - 1]</tex> (длиной <tex>l + 1</tex>) относится к некоторой последовательности, а <tex>c^{(l + 1)}_{j'}</tex> на последовательностях, относительно которых будут разбиваться другие последовательностиуровне <tex>l + 1</tex>. Снова рассмотрим уровень Поскольку последовательность <tex>c^{(l = )}_{j}</tex> соответствует уникальной подстроке строки <tex>s</tex> и , то каждая такая последовательность <tex>c^{(3l + 1)}_1 = _{j'}</tex> должна формироваться из тех же позиций <p_1tex>p_{i_1}, p_2p_{i_2}, p_3\ldots , p_{i_k}</tex> последовательности <tex>c^{(l)}_{j}</tex>, p_4которые определяют класс эквивалентности<tex> s[p_{i_1} - 1] = s[p_{i_2} - 1] = \ldots = s[p_{i_k} - 1]</tex>.  Таким образом, декомпозицию на уровне <tex>l + 1</tex> можно выполнить косвенным путем, 4, 6, 9рассматривая каждую последовательность уровня <tex>l</tex>с позиции, относящуюся к подстроке находящейся на <tex>aba1</tex>левее от начальной позиции этой последовательности.
= Псевдокод =
Анонимный участник

Навигация