私は現在、ループの不変条件を研究していますが、線形探索アルゴリズムの不変条件の選択に問題があります。
Inpput: A[1 ... n] of integers, k an integer value
Output: true if k belongs to A[1 ... n] false otherwise
LSearch(A,k)
i := 1
found := false
WHILE i<=n AND found=false DO
IF A[i] = k THEN
found := true
i:=i+1
return found
私が選んだ主張は次のとおりです。
- A[1] と A[i] の間に k が存在する場合、見つかった値は true または false です。
最初の反復の前は保持されます。その時点では A[1] は単一の要素であり、見つかったのは false に初期化されているためです。
ループの後、i は等しい i := 1 found := falseto n および/または found は true (while 条件) になる可能性があるため、アサーションは i<=n を考慮して同じままです。
これは正しいと思いますか。