다음 알고리즘을 고려하십시오.
u := 0
v := n+1;
while ( (u + 1) is not equal to v) do
x := (u + v) / 2;
if ( x * x <= n)
u := x;
else
v := x;
end_if
end_while
여기서 u, v 및 n은 정수이고 나누기 연산은 정수 나누기입니다.
- 알고리즘에 의해 계산되는 것을 설명하십시오.
- 파트 I에 대한 답을 알고리즘의 사후 조건으로 사용하여 루프 불변을 설정하고 알고리즘이 종료되고 올바른지 보여줍니다.
... 분명히 그렇지 않습니다. 그래서 나는 사후 조건과 불변성을 어떻게 얻었는지 궁금합니다. 또한 사후 조건을 사용하여 사전 조건을 얻는 방법에 대해 궁금합니다.
Hoare 논리에 대해 잘 알고 있으며 이에 대한 답변을 기대하십니까?
—
Raphael