Как найти цикл инвариантный в Trare Trawles
-
28-09-2020 - |
Вопрос
Эй, я новичок, чтобы трогать тройки, и я не могу понять на поисках циклов инвариантов в гипотезе.Например, во время петли
[x>1 & y>1] WHILE x>0 DO x:=x-1; y:=y+2 END [x+y>5].
.
Инвариант [2x + Y> 5], но я не понимаю, как его найти.Шаг за шагом объяснение о том, как найти его будет очень оценено.
Решение
Сначала понять значение цикла инварианта. Это означает состояние, которое верно в каждой итерации программы / алгоритма в начале, а также на расторжении цикла. Ваша программа что-то вроде этого.
$$ x> 1 \ text {и} y> 1 $$
$$ \ text {while} x> 0 $$
$$ \ hspace {4см} \ text {do} x:= x - 1, y:= y + 2 $$
$$ \ text {end} $$
$$ x + y> 5 $$
$ 2x + Y> 5 $ - это инвариант, как вы описали. Это видно из программы, что оба $ x $ и $ y $ будет больше, чем <класс SPAN="Математический контейнер"> $ 1 $ во время первого итерации цикла. Таким образом, в первой итерации пока цикла $ 2x + Y> 5 $ (вы можете доказать это). Уведомление в каждой итерации цикла в то время как величина $ x $ получает снижение по значению $ 1 $ и Значение Y становится увеличением на два, поэтому неравенство $ 2x + Y> 5 $ будет удовлетворен. Вы можете доказать это. Теперь приходите к условию завершения, в этот момент $ x $ будет отрицательным числом и Моя претензия - это значение $ y $ будет как минимум 5 $ . Таким образом, инвариант $ 2x + Y> 5 $ SI TRUES в ходе итерации цикла While.
Пример:
Пусть $ x= 2 $ и $ y= 2 $ , то $ 2 \ Times 2 + 2= 6> 5 $ доволен. Теперь во второй итерации $ x= 1, y= 4 $ Так что $ 1 \ Times 2 + 4> 5 $ доволен. Теперь $ x= 0, y= 6 $ , loop завершится, $ 2 \ manse 0 + 6> 5 $ .