Автокорреляционный многочлен
Определение: |
Автокорреляционный многочлен (англ. autocorrelation polynomial) для строки
| длины — это многочлен вида , причем , если префикс строки длины совпадает с суффиксом строки длины , иначе :
Содержание
Пример построения автокорреляционного многочлена
Пусть имеем алфавит
, рассмотрим строку . Будем проверять факт совпадения суффикса и префикса строки , используя следующую таблицу:0 | 0 | 1 | 1 | 0 | 0 | c0 = 1 | |||||
0 | 0 | 1 | 1 | 0 | 0 | ||||||
0 | 0 | 1 | 1 | 0 | 0 | c1 = 0 | |||||
0 | 0 | 1 | 1 | 0 | 0 | ||||||
0 | 0 | 1 | 1 | 0 | 0 | c2 = 0 | |||||
0 | 0 | 1 | 1 | 0 | 0 | ||||||
0 | 0 | 1 | 1 | 0 | 0 | c3 = 0 | |||||
0 | 0 | 1 | 1 | 0 | 0 | ||||||
0 | 0 | 1 | 1 | 0 | 0 | c4 = 1 | |||||
0 | 0 | 1 | 1 | 0 | 0 | ||||||
0 | 0 | 1 | 1 | 0 | 0 | c5 = 1 | |||||
0 | 0 | 1 | 1 | 0 | 0 |
В итоге автокорреляционный многочлен строки
равен .Несложно заметить, что
всегда равняется , ибо префикс и суффикс длины являются исходной строкой и, следовательно, всегда совпадают. равняется только в том случае, если первый и последний символы строки совпадают.Примеры решений задач с использованием автокорреляционного многочлена
Задача: |
Пусть | — данный алфавит, — данная непустая строка над алфавитом . Найти производящую функцию множества слов, не содержащих как подстроку.
Пусть
— мощность алфавита , — множество слов, не содержащих как подстроку, — произвольное слово из , — множество слов, содержащих как подстроку только в самом конце. Рассмотрим все слова вида , где — все символы алфавита . Так как слово не содержало подстроку , то после добавления символа новая строка либо так же не содержит как подстроку, и, следовательно, , либо содержит, но только в самом конце, и тогда . Очевидно также, что от удаления последнего символа у слова из всегда получается слово из , то есть, путём добавления ко всем символа мы получим все непустые слова из и . В контексте комбинаторных объектов это выражается в равенстве , где — комбинаторный объект веса 0, соответствующий пустой строке.Рассмотрим теперь слова вида
. После добавления к слову строки мы точно получим все строки из , но, кроме них, могут также получиться строки, имеющие первое вхождение не в самом конце, следовательно, нельзя утверждать, что всегда принадлежит . Несложно заметить, что тогда и только тогда, когда имеет 2 перекрывающихся вхождения строки . Для того чтобы имело 2 перекрывающихся вхождения строки необходимо, чтобы имела какой-нибудь суффикс, совпадающий с каким-нибудь префиксом, иначе говоря, чтобы имело автокорреляционный многочлен . В результате выходит, что при добавлении ко всем строки получим все строки из , а также все строки, имеющие 2 перекрывающиеся вхождения строки , иными словами, все строки вида (или, что то же, ), где — некоторый префикс , , — номер некоторого ненулевого коэффициента автокорреляционного многочлена строки . Нетрудно заметить, что можно представить как некую строку с приписанным в конец суффиксом строки длины . В контексте комбинаторных объектов суффикс строки длины является комбинаторным объектом веса , а его производящей функцией является , то есть, по сути, это слагаемое автокорреляционного многочлена . Тогда получаем следующее равенство: , где — комбинаторный класс, соответствующий автокорреляционному многочлену .В результате имеем 2 уравнения:
В терминах производящих функций эти уравнения выглядят так:
Решим полученную систему относительно
:В итоге получаем искомую производящую функцию множества
слов, не содержащих данную непустую как подстроку:- , где — автокорреляционный многочлен , , .
Задача: |
Пусть | — данный алфавит, — данная непустая строка над алфавитом . Найти производящую функцию множества слов, содержащих как подстроку.
Пусть
— мощность данного алфавита . Ясно, что слов длины над алфавитом мощности будет штук. Тогда производящей функцией множества всех слов над алфавитом мощности будет . Вычтя из нее полученную ранее производящую функцию множества слов, не содержащих как подстроку, получим искомую производящую функцию: , где — автокорреляционный многочлен , .
Задача: |
Пусть | — данный алфавит, — данная непустая строка над алфавитом . Найти производящую функцию множества слов, имеющих единственное вхождение как подстроки в самом конце.
Пусть
— множество слов, содержащих как подстроку только в самом конце. Вернемся к системе уравнений, полученной при решении первой задачи, и воспользуемся найденным выражением :В результате получаем искомую производящую функцию
:- , где — автокорреляционный многочлен , , .
См. также
Источники информации
- Васильев А. Т. Лекции по дискретной математике // Связь ПФ с регулярными языками, автокорреляция и пентагональная теорема Эйлера, 2020. URL: https://youtu.be/EmhScUQwXT0?t=2034.
- Wikipedia — Autocorrelation (words)