Алгоритм Колусси — различия между версиями
Kabanov (обсуждение | вклад) м |
Kabanov (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
==Алгоритм== | ==Алгоритм== | ||
| + | Отметим, что нумерация символов строк и элементов массива у нас начинается с <tex>0</tex>. | ||
| + | |||
| + | Сначала построим массивы: Kmp, Kmin, Rmin, Shift. | ||
| + | |||
| + | {{Определение | ||
| + | |definition=Обозначим за <tex>\mathrm{Kmin}(i)=i - \mathrm{Kmp}(i)</tex> функцию, возвращающую количество прыжков для позиций <tex>i</tex>, которые являются полными. | ||
| + | }} | ||
| + | |||
| + | {{Определение | ||
| + | |definition=Обозначим за <tex>\mathrm{Rmin}(i)</tex> функцию, возвращающую наименьший из периодов шаблона, которые больше позиции <tex>i</tex>, для позиций, которые являются пустыми. | ||
| + | }} | ||
| + | |||
| + | {{Определение | ||
| + | |definition=Функция сдвига <tex>\mathrm{Shift}(i) = \begin{cases} | ||
| + | \mathrm{Rmin}(i), & \mbox{if } \mathrm{Kmp}(i) = -1\\ | ||
| + | \mathrm{Kmin}(i), & \mbox{otherwise} | ||
| + | \end{cases}</tex> | ||
| + | }} | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
==Псевдокод== | ==Псевдокод== | ||
==Асимптотики== | ==Асимптотики== | ||
Версия 21:27, 14 мая 2014
Содержание
Алгоритм
Отметим, что нумерация символов строк и элементов массива у нас начинается с .
Сначала построим массивы: Kmp, Kmin, Rmin, Shift.
| Определение: |
| Обозначим за функцию, возвращающую количество прыжков для позиций , которые являются полными. |
| Определение: |
| Обозначим за функцию, возвращающую наименьший из периодов шаблона, которые больше позиции , для позиций, которые являются пустыми. |
| Определение: |
| Функция сдвига |
Псевдокод
Асимптотики
- partitions the set of pattern positions into two disjoint subsets; the positions in the first set are scanned from left to right and when no mismatch occurs the positions of the second subset are scanned from right to left;
- preprocessing phase in time and space complexity;
- searching phase in time complexity;
- performs text character comparisons in the worst case.