Вопрос

Эй, я новичок, чтобы трогать тройки, и я не могу понять на поисках циклов инвариантов в гипотезе.Например, во время петли

[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 $ .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top