LINUX.ORG.RU

loop invariant


0

2

Доброго времени суток! Не дадите ли внятное объяснение данного (loop invariant) термина. Читаю книгу Introduction to algorithms (CLRS), в первом же примере (insertion sort) объясняют про инвариант цикла. Погуглил, вики прочитал, всякие ресурсы, stackoverflow и т.п. везде по разному. В голове каша, не могу понять что это :(

Не обращайте на терминологию внимания. Можно писать хорошие программы, зная лишь минимальный набор терминов.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Вот почему голосования за бан открытого. Ты и Alv были бы первыми. Хоть в одной бы теме ответил что-нибудь нормальное

anonymous
()

Некоторое условие, которое выполнялось непосредственно перед началом цикла, продолжает выполняться на каждой итерации цикла, и по-прежнему выполняется по завершении цикла.

Выявление такого условия может использоваться, например, для доказательства крооектности алгоритма по индукции. Если я правильно понял, то в случае сортировки вставкое это условие звучит как «первые n элементов идут в порядке возрастания». Перед первой итерацией, очевидно, первый один элемент идёт в пордке возрастания (а как ещё-то?). Далее доказывается, если перед n-й итерацией первые n элементов были в порядке возрастания, то после этой итерации первые n+1 элеентов будут в порядке возрастания. Следовательно, после последней итерации весь массив будет упорядочен.

anonymous
()
Ответ на: комментарий от baverman

Инвариант цикла - это выражение, которое на протяжении всех итераций цикла остается истиным и подтверждает корректность алгоритма. Так? :)

BuzzLight3r
() автор топика
Ответ на: комментарий от BuzzLight3r

подтверждает корректность алгоритма

Nope. Посредством инвариантов можно подтвердить корректность алгоритма, а можно и не подтвердить.

baverman ★★★
()
Ответ на: комментарий от BuzzLight3r

Часто помогает доказать – так будет совсем точно.

anonymous
()

Спасибо всем! Я вроде понял.

BuzzLight3r
() автор топика
Ответ на: комментарий от anonymous

> Вот почему голосования за бан открытого. Ты и Alv были бы первыми.

Первым был бы анонимус;-)

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.