Максимальная пара
В информатике максимальная пара внутри строки — это пара совпадающих подстрок, которые являются максимальными, где «максимальный» означает, что невозможно создать более длинную совпадающую пару, расширив диапазон обеих подстрок влево или вправо.
Пример
[ редактировать ]Индекс | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Характер | х | а | б | с | и | а | б | с | В | а | б | с | и | С |
Например, в этой таблице подстроки с индексами 2–4 (красным цветом) и индексами 6–8 (синим цветом) являются максимальной парой, поскольку содержат одинаковые символы ( abc
), и слева от них стоят разные символы ( x
по индексу 1 и y
под индексом 5) и разные символы справа ( y
под индексом 5 и w
под индексом 9). Аналогично, подстроки с индексами 6–8 (синим цветом) и индексами с 10 по 12 (зеленым цветом) представляют собой максимальную пару.
Однако подстроки с индексами 2–4 (красным цветом) и индексами 10–12 (зеленым цветом) не являются максимальной парой, поскольку символ y
следует за обеими подстроками, поэтому их можно расширить вправо, чтобы создать более длинную пару.
Формальное определение
[ редактировать ]Формально максимальная пара подстрок с начальными позициями и соответственно, и обе длины , определяется тройкой , такой, что для заданной строки длины , (это означает, что подстроки имеют идентичное содержимое), но (слева от них разные символы) и (они также имеют разные символы справа; вместе эти два неравенства являются условием максимальности). Таким образом, в приведенном выше примере максимальными парами являются (красная и синяя подстроки) и (зеленая и синяя подстроки) и не является максимальной парой.
Связанные понятия и временная сложность
[ редактировать ]Максимальный повтор — это строка, представленная максимальной парой. Супермаксимальный повтор — это максимальный повтор, который никогда не встречается как подстрока другого максимального повтора. В приведенном выше примере abc
и abcy
оба являются максимальными повторами, но только abcy
это сверхмаксимальный повтор.
Максимальные пары, максимальные повторы и супермаксимальные повторы можно найти в время с использованием суффиксного дерева , [1] если есть такие структуры.
Ссылки
[ редактировать ]- ^ Гасфилд, Дэн (1999) [1997]. Алгоритмы на строках, деревьях и последовательностях: информатика и вычислительная биология . США: Издательство Кембриджского университета. п. 143 . ISBN 0-521-58519-8 .
Внешние ссылки
[ редактировать ]- Проект для вычисления всех максимальных повторов в одной или нескольких строках в Python с использованием суффиксного массива .