【问题标题】:Find loop invariant of this simple algorithm找到这个简单算法的循环不变量
【发布时间】:2021-03-16 16:24:54
【问题描述】:

我确信这是一个非常简单的问题,但我似乎无法破解它。 证明你的算法的正确性;即陈述其循环不变量并通过归纳证明。

下面是我的算法。我知道如何做第二部分(通过归纳证明),但我就是无法找出我一生中的循环不变量。

procedure intersection(A,B: list of integers)

  C= empty list
  for i:=1 to n:
    for j:= 1 to m:
      if Ai = Bj
        if Ai not in C
          C.append(Ai)
  return C

【问题讨论】:

  • 也许“C 没有重复元素”、“C 是 A 的子集”和“C 是 B 的子集”都可以是 C 上的不变量?

标签: algorithm nested-loops pseudocode discrete-mathematics loop-invariant


【解决方案1】:

为了让您开始,我只是说明循环不变量之一,这样我就不会完全放弃解决方案。外循环的不变量是:

C = intersection (B, {a1, ..., ai})

您还需要内部循环的不变量。

【讨论】:

  • 谢谢你为我指明了正确的方向:)
猜你喜欢
  • 2021-02-28
  • 2022-01-06
  • 1970-01-01
  • 2020-03-01
  • 2021-12-20
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多