算法正确性

时间:2013-03-22 11:34:44

标签: algorithm analysis pseudocode

我正在研究循环不变量,我在线性搜索算法的不变量方面遇到了麻烦。

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

我选择的断言是:

    如果在[1]和A [i] 中存在k,
  • 发现包含true或false

在第一次迭代之前,它保持不变,因为此时A [1]中的单个元素被发现并被初始化为假。

循环之后我可以是平等的      我:= 1      found:= falseto n和/或found可以为true(while条件),因此断言保持不变,考虑到i <= n。 你认为这可能是正确的吗?

1 个答案:

答案 0 :(得分:-1)

断言是正确的,但也没用。 found是一个布尔值,无论A的属性如何,都将包含True或False。这无助于证明算法的正确性。

这是一个多项选择题吗?其他选择是什么?