2
この平方根境界検出アルゴリズムでループ不変量はどのように取得されますか?
もともとmath.SEにありましたが、そこには答えがありませんでした。 次のアルゴリズムを考えてみましょう。 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に対する回答をアルゴリズムの事後条件として使用して、ループ不変式を確立し、アルゴリズムが終了して正しいことを示します。 クラスでは、事後条件があることが判明した及び不変である0 ≤ U 2 ≤ …