Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Доказательство корректности алгоритма с помощью инвариантов   Найти похожие ветки 

 
Учащийся   (2010-03-10 18:09) [0]

Здравствуйте!Можете объяснить, как доказать корректность работы алгоритма с помощью инвариантов цикла.Допустим линейный поиск:
in:A[], u //массив, искомый элемент
out:i      //индекс элемента u в массиве А
begin
i=0;
for j:=1 to length(a) do
  if A[j]=u then
    i:=j
end;


 
oldman ©   (2010-03-10 18:47) [1]

Инвариантом называется логическое выражение, истинное после каждого прохода тела цикла (после выполнения фиксированного оператора) и перед началом выполнения цикла, зависящее от переменных, изменяющихся в теле цикла.[3]

Инварианты используются в теории верификации программ для доказательства правильности выполнения цикла. Порядок доказательства работоспособности цикла с помощью инварианта сводится к следующему:

1.Доказывается, что выражение инварианта истинно перед началом цикла.
2.Доказывается, что выражение инварианта сохраняет свою истинность после выполнения тела цикла; таким образом, по индукции, доказывается, что по завершении цикла инвариант будет выполняться.
3.Доказывается, что при истинности инварианта после завершения цикла переменные примут именно те значения, которые требуется получить (это элементарно определяется из выражения инварианта и известных конечных значениях переменных, на которых основывается условие завершения цикла).
4.Доказывается (возможно — без применения инварианта), что цикл завершится, то есть условие завершения рано или поздно будет выполнено.
5.Истинность утверждений, доказанных на предыдущих этапах, однозначно свидетельствует о том, что цикл выполнится за конечное время и даст желаемый результат.
Также инварианты используют при проектировании и оптимизации циклических алгоритмов. Например, чтобы убедиться, что оптимизированный цикл остался корректным, достаточно доказать, что инвариант цикла не нарушен и условие завершения цикла достижимо.

Понятие инварианта также используется в объектно-ориентированном программировании для обозначения непротиворечивого состояния объекта. Подразумевается, что вызов любого метода оставляет объект в состоянии инварианта.


Википедия ©
ЗЫ: Сдавай свой зачет сам!!!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.067 c
4-1237892274
Alx2k
2009-03-24 13:57
2010.08.27
Получить оверлейный значок


15-1270845004
Юрий
2010-04-10 00:30
2010.08.27
С днем рождения ! 10 апреля 2010 суббота


2-1270489278
Dr. Genius
2010-04-05 21:41
2010.08.27
Проблема с компонентом мониторинга ShellNotify


2-1271995058
MAX_76
2010-04-23 07:57
2010.08.27
Помогите решить задачу -запуск Делфи-приложения с саита


2-1274347680
slay64
2010-05-20 13:28
2010.08.27
Обнаружена ошибка. Приложение будет закрыто....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский