В информатике функция сложности слова или строки (конечной или бесконечной последовательности символов из некоторого алфавита ) — это функция , которая подсчитывает количество различных факторов (подстрок последовательных символов) этой строки. В более общем смысле, функция сложности формального языка (набора конечных строк) подсчитывает количество различных слов заданной длины.
Пусть u — (возможно, бесконечная) последовательность символов из алфавита. Определим функцию p u ( n ) положительного целого числа n как количество различных множителей (последовательных подстрок) длины n из строки u . [1] [2] [3] [4] [5]
Для строки u длины не менее n в алфавите размера k мы, очевидно, имеем
границы достигаются постоянным словом и дизъюнктивным словом , [6] например, словом Чамперноуна соответственно. [7] Для бесконечных слов u мы имеем p u ( n ) ограниченное, если u в конечном счете периодично (конечная, возможно пустая, последовательность, за которой следует конечный цикл). Наоборот, если p u ( n ) ≤ n для некоторого n , то u в конечном счете периодично. [3] [8]
Апериодическая последовательность — это та, которая не является в конечном счете периодической. Апериодическая последовательность имеет строго возрастающую функцию сложности (это теорема Морса–Хедлунда ), [9] [10] поэтому p ( n ) по крайней мере n +1. [11]
Набор S конечных двоичных слов сбалансирован , если для каждого n подмножество S n слов длины n обладает свойством, что вес Хэмминга слов в S n принимает не более двух различных значений. Сбалансированная последовательность — это та, для которой сбалансирован набор факторов. [12] Сбалансированная последовательность имеет функцию сложности не более n +1. [13]
Слово Штурма над двоичным алфавитом — это слово со сложностью n + 1. [14] Последовательность является Штурмовой тогда и только тогда, когда она сбалансирована и апериодична. [2] [15] Примером является слово Фибоначчи . [14] [16] В более общем смысле, слово Штурма над алфавитом размера k — это слово со сложностью n + k −1. Слово Арну-Рози над троичным алфавитом имеет сложность 2 n + 1: [14] примером является слово Трибоначчи . [17]
Для повторяющихся слов , в которых каждый фактор появляется бесконечно часто, функция сложности почти характеризует набор факторов: если s — повторяющееся слово с той же функцией сложности, что и t , то s имеет тот же набор факторов, что и t или δ t, где δ обозначает морфизм удвоения букв a → aa . [18]
Пусть L — язык с алфавитом и определим функцию p L ( n ) положительного целого числа n как количество различных слов длины n в L [9]. Таким образом, функция сложности слова — это функция сложности языка, состоящего из множителей этого слова.
Функция сложности языка менее ограничена, чем у слова. Например, она может быть ограниченной, но не постоянной в конечном счете: функция сложности регулярного языка принимает значения 3 и 4 на нечетных и четных n ≥2 соответственно. Существует аналог теоремы Морса–Хедлунда: если сложность L удовлетворяет p L ( n ) ≤ n для некоторого n , то p L ограничена и существует конечный язык F такой, что [9]
Полиномиальный или разреженный язык — это язык, для которого функция сложности p ( n ) ограничена фиксированной степенью n . Регулярный язык , который не является полиномиальным, является экспоненциальным : существует бесконечно много n, для которых p ( n ) больше kn для некоторого фиксированного k >1. [ 19]
Топологическая энтропия бесконечной последовательности u определяется как
Предел существует, поскольку логарифм функции сложности является субаддитивным . [20] [21] Каждое действительное число между 0 и 1 возникает, когда топологическая энтропия некоторой последовательности применима, [22] которая может считаться равномерно рекуррентной [23] или даже уникально эргодической. [24]
Для x — действительного числа и b — целого числа ≥ 2, то функция сложности x в системе счисления с основанием b — это функция сложности p ( x , b , n ) последовательности цифр x, записанной в системе счисления с основанием b . Если x — иррациональное число , то p ( x , b , n ) ≥ n +1; если x — рациональное число , то p ( x , b , n ) ≤ C для некоторой константы C, зависящей от x и b . [6] Предполагается, что для алгебраического иррационального x сложность равна b n (что следовало бы, если бы все такие числа были нормальными ), но все, что известно в этом случае, — это то, что p растет быстрее, чем любая линейная функция от n . [25]
Функция абелевой сложности p ab ( n ) аналогичным образом подсчитывает количество вхождений различных факторов заданной длины n , где теперь мы идентифицируем факторы, которые отличаются только перестановкой позиций. Очевидно, что p ab ( n ) ≤ p ( n ). Абелева сложность последовательности Штурма удовлетворяет p ab ( n ) = 2. [26]