Изменения

Перейти к: навигация, поиск
Разбор случаев
===Разбор случаев===
 
Условные обозначения:
* 1.черная Черная вертикальная линия на рисунке обозначает <tex> lcp </tex> от <tex> i </tex>-го суффикса суффиксного массива <tex> array </tex> и образца <tex> p </tex>. Чем линия длиннее, тем совпадений больше.* 2. L, M и R - то же самое, что в алгоритме. Кроме того, самая левая вертикальная линия на каждом рисунке означает <tex> l </tex>, аналогично, самая правая линия на каждом рисунке означает <tex> r </tex>. Переменная <tex> m_l </tex> - это <tex> lcp </tex> в суффиксном массиве на промежутке <tex> [L, M] </tex>. Переменная <tex> m_r </tex> - это <tex> lcp </tex> в суффиксном массиве на промежутке <tex> [M, R] </tex>.
* 3. Серым цветом выделен <tex> lcp </tex> в суффиксном массиве на рассматриваемом промежутке.
Простой пример для образца <code> aaa </code> на некоторых суффиксах строки <code> aaaaaa </code>.Жирным выделены буквы, которые на рисунках будут представлены черными линиями (совпадения с образцом), а серым {{---}} совпадения суффиксов друг с другом. [[Файл:examp.png]] Разберем случай <tex> l \ge r </tex>: возможны . Возможны три варианта:
[[Файл:left.png]]
* a) <tex> l < m_l </tex>. Сдвигаем <tex> L </tex> в <tex> M </tex>. <tex> l </tex> не изменяется.* b) <tex> l = m_l </tex>. Считаем <tex> lcp </tex> для образца и суффикса в позиции <tex> M </tex> с позиции <tex> l </tex>.* с) <tex> l > m_l </tex>. Сдвигаем <tex> R </tex> в <tex> M </tex>, <tex> r = m_l </tex>. Разберем случай при <tex> l < r </tex>. Также возможны три варианта:
[[Файл:right2.png]]
 
* a) <tex> r < m_r </tex>. Сдвигаем <tex> R </tex> в <tex> M </tex>. <tex> r </tex> не изменяется.
* b) <tex> r = m_r </tex>. Считаем <tex> lcp </tex> для образца и суффикса в позиции <tex> M </tex> с позиции <tex> r </tex>.
* с) <tex> r > m_r </tex>. Сдвигаем <tex> L </tex> в <tex> M </tex>, <tex> l = m_r </tex>.
===Псевдокод===
271
правка

Навигация