试图找出解决方案,该程序计算的功能是什么?

时间:2016-09-27 04:09:18

标签: complexity-theory theory

  IF X ≠ 0 GOTO A
  Z ← Z + 1
  IF Z ≠ 0 GOTO B
[A] X ← X – 1
  Y ← Y + 1
  IF X ≠ 0 GOTO A
[B] Y ← Y + 1
  Y ← Y + 1
  Y ← Y + 1

由于y被复合了4次,我想出了y = x + 4。这可能是错的。

1 个答案:

答案 0 :(得分:0)

我假设它是某个函数y(x,z),因为Y是唯一分配但未在条件中使用的值。我还假设X必须是自然数,否则此函数将进入无限循环(尝试X = -1)。

1:   IF X ≠ 0 GOTO A
2:   Z ← Z + 1
3:   IF Z ≠ 0 GOTO B
4: [A] X ← X – 1
5:   Y ← Y + 1
6:   IF X ≠ 0 GOTO A
7: [B] Y ← Y + 1
8:   Y ← Y + 1
9:   Y ← Y + 1

Y总是按第7-8行递增3次,因此Y必须至少为3。

=> y = 3 + ...

假设x > 0, z = n

第1行跳转到第4行,并递增Y X次(递减X,然后在X >= 0,第4-6行循环播放。因此,Y必须至少为X

=> y = x + 3

假设x = 0

在这种情况下,第1行将进入第2行。Z从其初始值开始递增,然后进行检查。如果Z不等于零,Y = 3(第3,7-9行)。如果Z等于零,这意味着初始值为Z = -1,那么Y = X + 3(第3行将落到第4-9行)。

因此此函数(如果形式为y(x,z))是以下形式的分段函数:

y(x,y) = {3 if Z = -1, X + 3 otherwise}, such that X is an element of the natural numbers.

请注意,这只是猜测。如果没有明确的输入和输出(正如你所说的那本书没有表明),它们就可以进行解释了。