2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Инвариант.
Сообщение25.10.2009, 19:24 
Аватара пользователя


21/04/09
195
Что такое инвариант? не смог найти что значит это слово =)
постоянно встречаеться в книге Шень "Программирование. Теоремы и задачи".
Расскажите что это такое или где об этом почитать.

 Профиль  
                  
 
 Re: Инвариант.
Сообщение25.10.2009, 19:28 
Заслуженный участник
Аватара пользователя


13/08/08
14464
В Википедии.
Инвариантом называется логическое выражение, истинное после каждого прохода тела цикла (после выполнения фиксированного оператора) и перед началом выполнения цикла, зависящее от переменных, изменяющихся в теле цикла. Инварианты используются в теории верификации программ для доказательства правильности выполнения цикла.
Понятие инварианта также используется в объектно-ориентированном программировании для обозначения непротиворечивого состояния объекта. Подразумевается, что вызов любого метода оставляет объект в состоянии инварианта.
Ну это так, для первого ознакомления

 Профиль  
                  
 
 Re: Инвариант.
Сообщение25.10.2009, 19:37 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Инвариант цикла - это предикат, который выполняется на каждой итерации цикла.
Вот, например, возьмем такой цикл:
Код:
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 
Аватара пользователя


21/04/09
195
Пасибо ) вроде стало чуть чуть яснее.
А где можно почитать об этом по подробнее?

 Профиль  
                  
 
 Re: Инвариант.
Сообщение26.10.2009, 00:02 
Заслуженный участник
Аватара пользователя


06/10/08
6422
А я вот даже не знаю что посоветовать, все, что нашел - серьезные книги по верификации, начинают с логики Хоара, сложно это.
В Шене примеров много, почитайте - освоитесь.

 Профиль  
                  
 
 Re: Инвариант.
Сообщение26.10.2009, 00:12 
Заслуженный участник


09/08/09
3438
С.Петербург
ИС в сообщении #254865 писал(а):
А где можно почитать об этом по подробнее?

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

 Профиль  
                  
 
 Re: Инвариант.
Сообщение26.10.2009, 07:36 
Аватара пользователя


21/04/09
195
Не дает скачивать ) просит ввести пароль :lol:

 Профиль  
                  
 
 Re: Инвариант.
Сообщение26.10.2009, 07:41 
Заслуженный участник
Аватара пользователя


06/10/08
6422
ИС в сообщении #255057 писал(а):
Не дает скачивать ) просит ввести пароль

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

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

 Профиль  
                  
 
 Re: Инвариант.
Сообщение26.10.2009, 10:57 
Аватара пользователя


21/04/09
195
Блин! имя должно быть с большой буквы XD

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group