В математике инвариант — это свойство математического объекта (или класса математических объектов), которое остается неизменным после того, как к объектам применяются операции или преобразования определенного типа. [1] [2] Конкретный класс объектов и тип преобразований обычно указываются контекстом, в котором используется термин. Например, площадь треугольника является инвариантом относительно изометрий евклидовой плоскости . Используются фразы «инвариантный относительно» и «инвариантный относительно» преобразования. В более общем смысле инвариант относительно отношения эквивалентности — это свойство, которое является постоянным для каждого класса эквивалентности . [3]
Инварианты используются в различных областях математики, таких как геометрия , топология , алгебра и дискретная математика . Некоторые важные классы преобразований определяются инвариантом, который они оставляют неизменным. Например, конформные отображения определяются как преобразования плоскости, сохраняющие углы . Открытие инвариантов является важным шагом в процессе классификации математических объектов. [2] [3]
Простой пример инвариантности выражается в нашей способности считать . Для конечного набора объектов любого вида существует число, к которому мы всегда приходим, независимо от порядка , в котором мы подсчитываем объекты в наборе . Количество — кардинальное число — связано с набором и инвариантно относительно процесса подсчета.
Тождество — это уравнение, которое остается верным при всех значениях его переменных. Существуют также неравенства , которые остаются верными при изменении значений их переменных.
Расстояние между двумя точками на числовой прямой не меняется при добавлении к обоим числам одного и того же числа. С другой стороны, умножение не обладает этим же свойством, поскольку расстояние не инвариантно при умножении.
Углы и отношения расстояний инвариантны относительно масштабирования , вращения , переноса и отражения . Эти преобразования создают подобные формы, что является основой тригонометрии . Напротив, углы и отношения не инвариантны относительно неравномерного масштабирования (такого как растяжение). Сумма внутренних углов треугольника (180°) инвариантна относительно всех вышеперечисленных операций. В качестве другого примера, все окружности подобны: они могут быть преобразованы друг в друга, а отношение окружности к диаметру инвариантно (обозначается греческой буквой π ( пи )).
Еще несколько сложных примеров:
Головоломка MU [7] является хорошим примером логической задачи, где определение инварианта полезно для доказательства невозможности . Головоломка требует начать со слова MI и преобразовать его в слово MU, используя на каждом шаге одно из следующих правил преобразования:
Пример вывода (с верхними индексами, указывающими применяемые правила)
В свете этого можно задаться вопросом, возможно ли преобразовать MI в MU, используя только эти четыре правила преобразования. Можно потратить много часов, применяя эти правила преобразования к строкам. Однако, возможно, быстрее будет найти свойство , которое инвариантно ко всем правилам (то есть не изменяется ни одним из них), и которое показывает, что достичь MU невозможно. Рассматривая головоломку с логической точки зрения, можно понять, что единственный способ избавиться от любых I — иметь три последовательных I в строке. Это делает следующий инвариант интересным для рассмотрения:
Это инвариант проблемы, если для каждого из правил преобразования выполняется следующее: если инвариант выполнялся до применения правила, он будет выполняться и после его применения. Рассматривая чистый эффект применения правил на количество I и U, можно увидеть, что это на самом деле имеет место для всех правил:
Приведенная выше таблица ясно показывает, что инвариант справедлив для каждого из возможных правил преобразования, а это значит, что какое бы правило ни было выбрано, в каком бы состоянии ни находилось число I, если до применения правила оно не было кратно трем, то и после него оно не будет кратным трем.
Учитывая, что в начальной строке MI есть одна буква I, и она не кратна трем, можно сделать вывод, что перейти от MI к MU невозможно (поскольку число букв I никогда не будет кратно трем).
Подмножество S области U отображения T : U → U является инвариантным множеством при отображении, когда Обратите внимание, что элементы S не фиксированы , даже если множество S фиксировано в мощности множества U . (Некоторые авторы используют терминологию setwise invariant [8] против pointwise invariant [9] , чтобы различать эти случаи.) Например, окружность является инвариантным подмножеством плоскости при вращении вокруг центра окружности. Кроме того, коническая поверхность инвариантна как множество при гомотетии пространства.
Инвариантное множество операции T также называется устойчивым относительно T. Например, нормальные подгруппы , которые так важны в теории групп, — это те подгруппы , которые устойчивы относительно внутренних автоморфизмов охватывающей группы . [10] [11] [12] В линейной алгебре , если линейное преобразование T имеет собственный вектор v , то прямая, проходящая через 0 и v , является инвариантным множеством относительно T , и в этом случае собственные векторы охватывают инвариантное подпространство , которое устойчиво относительно T.
Когда T представляет собой смещение винта , ось винта является инвариантной линией, хотя, если шаг не равен нулю, T не имеет неподвижных точек.
В теории вероятностей и эргодической теории инвариантные множества обычно определяются с помощью более сильного свойства [13] [14] [15]. Когда отображение измеримо, инвариантные множества образуют сигма-алгебру , инвариантную сигма-алгебру .
Понятие инвариантности формализуется в математике тремя различными способами: через групповые действия , представления и деформации.
Во-первых, если имеется группа G, действующая на математический объект (или набор объектов) X, то можно задаться вопросом, какие точки x остаются неизменными, «инвариантными» относительно действия группы или относительно элемента g группы.
Часто можно встретить группу, действующую на множестве X , что позволяет определить, какие объекты в связанном множестве F ( X ) являются инвариантными. Например, вращение в плоскости вокруг точки оставляет инвариантной точку, вокруг которой оно вращается, в то время как перенос в плоскости не оставляет инвариантными ни одну точку, но оставляет инвариантными все линии, параллельные направлению переноса, как линии. Формально определим множество линий в плоскости P как L ( P ); тогда жесткое движение плоскости переводит линии в линии — группа жестких движений действует на множество линий — и можно спросить, какие линии не изменяются действием.
Что еще важнее, можно определить функцию на множестве, например, «радиус окружности на плоскости», а затем спросить, является ли эта функция инвариантной относительно группового действия, например, жесткого движения.
Двойственными к понятию инвариантов являются коинварианты , также известные как орбиты, которые формализуют понятие конгруэнтности : объекты, которые могут быть приведены друг к другу групповым действием. Например, в группе жестких движений плоскости периметр треугольника является инвариантом, в то время как множество треугольников, конгруэнтных данному треугольнику, является коинвариантом.
Они связаны следующим образом: инварианты постоянны относительно коинвариантов (например, конгруэнтные треугольники имеют одинаковый периметр), в то время как два объекта, которые совпадают по значению одного инварианта, могут быть или не быть конгруэнтными (например, два треугольника с одинаковым периметром не обязательно должны быть конгруэнтными). В задачах классификации можно попытаться найти полный набор инвариантов , такой, что если два объекта имеют одинаковые значения для этого набора инвариантов, то они конгруэнтны.
Например, треугольники, у которых все три стороны равны, конгруэнтны при жестких движениях, посредством конгруэнтности SSS , и, таким образом, длины всех трех сторон образуют полный набор инвариантов для треугольников. Три меры углов треугольника также инвариантны при жестких движениях, но не образуют полный набор, поскольку неконгруэнтные треугольники могут иметь одинаковые меры углов. Однако, если разрешить масштабирование в дополнение к жестким движениям, то критерий подобия AAA показывает, что это полный набор инвариантов.
Во-вторых, функция может быть определена в терминах некоторого представления или разложения математического объекта; например, характеристика Эйлера клеточного комплекса определяется как чередующаяся сумма числа ячеек в каждом измерении. Можно забыть о структуре клеточного комплекса и смотреть только на лежащее в основе топологическое пространство ( многообразие ) — поскольку различные клеточные комплексы дают одно и то же лежащее в основе многообразие, можно спросить, независима ли функция от выбора представления, и в этом случае она является внутренне определенным инвариантом. Это касается характеристики Эйлера, и общий метод определения и вычисления инвариантов состоит в том, чтобы определить их для данного представления, а затем показать, что они независимы от выбора представления. Обратите внимание, что в этом смысле нет понятия группового действия.
Наиболее распространенные примеры:
В-третьих, если изучается объект, который изменяется в семействе, как это часто бывает в алгебраической геометрии и дифференциальной геометрии , можно задаться вопросом, остается ли свойство неизменным при возмущении (например, является ли объект постоянным в семействах или инвариантным при изменении метрики).
В информатике инвариант — это логическое утверждение , которое всегда считается истинным в течение определенной фазы выполнения компьютерной программы . Например, инвариант цикла — это условие, которое истинно в начале и в конце каждой итерации цикла.
Инварианты особенно полезны при рассуждениях о корректности компьютерной программы . Теория оптимизирующих компиляторов , методология проектирования по контракту и формальные методы определения корректности программы — все они в значительной степени опираются на инварианты.
Программисты часто используют утверждения в своем коде, чтобы сделать инварианты явными. Некоторые объектно-ориентированные языки программирования имеют специальный синтаксис для указания инвариантов класса .
Абстрактные инструменты интерпретации могут вычислять простые инварианты заданных императивных компьютерных программ. Вид свойств, которые могут быть найдены, зависит от используемых абстрактных доменов0<=x<1024
. Типичными примерами свойств являются диапазоны отдельных целочисленных переменных, такие как , отношения между несколькими переменными, такие как 0<=i-j<2*n-1
, и модульная информация, такая как y%4==0
. Прототипы академических исследований также рассматривают простые свойства структур указателей. [16]
Более сложные инварианты обычно приходится предоставлять вручную. В частности, при проверке императивной программы с использованием исчисления Хоара [17] инвариант цикла приходится предоставлять вручную для каждого цикла в программе, что является одной из причин того, что этот подход, как правило, непрактичен для большинства программ.
В контексте приведенного выше примера головоломки MU в настоящее время нет общего автоматизированного инструмента, который может обнаружить, что вывод из MI в MU невозможен с использованием только правил 1–4. Однако, как только абстракция от строки до количества ее «I» была сделана вручную, что привело, например, к следующей программе на языке C, абстрактный инструмент интерпретации сможет обнаружить, что ICount%3
не может быть 0, и, следовательно, цикл «while» никогда не завершится.
void MUPuzzle ( void ) { volatile int RandomRule ; int ICount = 1 , UCount = 0 ; while ( ICount % 3 != 0 ) // незавершающий цикл switch ( RandomRule ) { case 1 : UCount += 1 ; break ; case 2 : ICount *= 2 ; UCount *= 2 ; break ; case 3 : ICount -= 3 ; UCount += 1 ; break ; case 4 : UCount -= 2 ; break ; } // вычисляемый инвариант: ICount % 3 == 1 || ICount % 3 == 2 }