2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Инвариант.
Сообщение25.10.2009, 19:24 
Аватара пользователя
Что такое инвариант? не смог найти что значит это слово =)
постоянно встречаеться в книге Шень "Программирование. Теоремы и задачи".
Расскажите что это такое или где об этом почитать.

 
 
 
 Re: Инвариант.
Сообщение25.10.2009, 19:28 
Аватара пользователя
В Википедии.
Инвариантом называется логическое выражение, истинное после каждого прохода тела цикла (после выполнения фиксированного оператора) и перед началом выполнения цикла, зависящее от переменных, изменяющихся в теле цикла. Инварианты используются в теории верификации программ для доказательства правильности выполнения цикла.
Понятие инварианта также используется в объектно-ориентированном программировании для обозначения непротиворечивого состояния объекта. Подразумевается, что вызов любого метода оставляет объект в состоянии инварианта.
Ну это так, для первого ознакомления

 
 
 
 Re: Инвариант.
Сообщение25.10.2009, 19:37 
Аватара пользователя
Инвариант цикла - это предикат, который выполняется на каждой итерации цикла.
Вот, например, возьмем такой цикл:
Код:
q = 0;
while (a >= b)
{
  a = a - b;
  q++;
}

Инвариантом будет $P(a,b,q) \equiv (a + qb = a_0)$ ($a_0$ - начальное значение переменной $a$)

Инварианты используются для доказательства того, что программа действительно делает то, что надо. В нашем случае поскольку инвариант выполняется на каждой итерации цикла, то после выхода из цикла будет $a + qb = a_0$ (инвариант) и $a<b$(условие выхода из цикла), т.е. $q$ - неполное частное и $a$ - остаток от деления $a_0$ на $b$.
До полного доказательства не хватает утверждения о том, что цикл обязательно завершится. В нашем случае если $a_0>0$, $b>0$, то цикл завершится, так как на каждой итерации значение $a$ уменьшается.

 
 
 
 Re: Инвариант.
Сообщение25.10.2009, 19:57 
Аватара пользователя
Пасибо ) вроде стало чуть чуть яснее.
А где можно почитать об этом по подробнее?

 
 
 
 Re: Инвариант.
Сообщение26.10.2009, 00:02 
Аватара пользователя
А я вот даже не знаю что посоветовать, все, что нашел - серьезные книги по верификации, начинают с логики Хоара, сложно это.
В Шене примеров много, почитайте - освоитесь.

 
 
 
 Re: Инвариант.
Сообщение26.10.2009, 00:12 
ИС в сообщении #254865 писал(а):
А где можно почитать об этом по подробнее?

Э.Дейкстра. Дисциплина программирования.
Д.Грис. Наука программирования.

 
 
 
 Re: Инвариант.
Сообщение26.10.2009, 07:36 
Аватара пользователя
Не дает скачивать ) просит ввести пароль :lol:

 
 
 
 Re: Инвариант.
Сообщение26.10.2009, 07:41 
Аватара пользователя
ИС в сообщении #255057 писал(а):
Не дает скачивать ) просит ввести пароль

Там на окошке ввода пароля загадка :)

Еще можете на http://gen.lib.rus.ec/ поискать

 
 
 
 Re: Инвариант.
Сообщение26.10.2009, 10:57 
Аватара пользователя
Блин! имя должно быть с большой буквы XD

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group