Başlangıçta matematikte.SE ama orada cevaplanmamış.
Aşağıdaki algoritmayı düşünün.
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
burada u, v ve n tamsayıdır ve bölme işlemi tamsayı bölmedir.
- Algoritma tarafından neyin hesaplandığını açıklar.
- Bölüm I'e verdiğiniz cevabı algoritma için son koşul olarak kullanarak, bir döngü değişmezi oluşturun ve algoritmanın sonlandığını ve doğru olduğunu gösterin.
Sınıfta, post-koşul ve Değişmeyen 0 ≤ u 2 ≤ n < v 2 , u + 1 ≤ v olarak bulunmuştur . Post-condition ve değişmezlerin nasıl elde edildiğini gerçekten anlamıyorum. Posta koşulunun u + 1 = v olduğunu düşünüyorum... durum böyle değil. Bu yüzden post-condition ve değişmezlerin nasıl elde edildiğini merak ediyorum. Ayrıca, ön koşulu kullanarak ön koşulun nasıl elde edilebileceğini merak ediyorum.