Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用循环不变量(归纳法)证明正确性_Php_Math_Proof_Loop Invariant - Fatal编程技术网

Php 用循环不变量(归纳法)证明正确性

Php 用循环不变量(归纳法)证明正确性,php,math,proof,loop-invariant,Php,Math,Proof,Loop Invariant,我自己编写了一个简单的小函数(为了方便起见,php),希望有人能帮助我通过归纳法为它构造一个证明,这样我就可以对它有一个非常基本的了解 function add_numbers($max) { //assume max >= 2 $index=1; $array=array(0); while ($index != $max) { //invariant: ∀ k:1 .. index-1, array[k]=array[k-1]+1 $array[$i

我自己编写了一个简单的小函数(为了方便起见,php),希望有人能帮助我通过归纳法为它构造一个证明,这样我就可以对它有一个非常基本的了解

function add_numbers($max) {
  //assume max >= 2
  $index=1;
  $array=array(0);
  while ($index != $max) {
     //invariant: ∀ k:1 .. index-1, array[k]=array[k-1]+1
     $array[$index] = $array[$index-1]+1;
     $index += 1;
  }
}
结果是每个索引处的值与索引本身相同,只是因为[0]被初始化为0

我相信我们的目标是(或应该是)证明不变量(它本身可能是可疑的,但希望能得到正确的答案)适用于k+1

谢谢


编辑:示例:

可能是这样的,尽管这有点迂腐


不变量:当index=n时,对于n>=1(在它检查条件的循环的顶部),array[i]=i表示0=1(在它检查条件的循环的顶部),array[i]=i+63表示0之类的,尽管这有点迂腐


不变量:当索引=n时,对于n>=1(在检查条件的循环顶部),数组[i]=i表示0=1(在检查条件的循环顶部),数组[i]=i+63表示0,我不知道归纳证明的含义。如果你能解释一下,也许我能帮你……。@J.Bruni,看看归纳法证明。我不知道归纳法证明是什么意思。如果你能解释一下,也许我能帮你…。@J.Bruni,看看归纳法的证明。我可能是错的,但由于不变量最初的范围是1到0,基本情况可能是空的。可能会不公平地利用数组[0]=0的便利性——我认为“数组[k-1]是(k-1+1)=k”这一行可能是错误的,因为我们知道数组[k-1]=K我还希望看到k+1出现在归纳步骤的数学中?@ElrondElve从某种意义上说,基本情况是完全正确的,因为你保证它在执行循环体之前是正确的。在执行循环体之前使用程序状态决不是不公平的,只要您能说服我它就是您所说的。还有,是的;似乎有一个数组[k-1],其中应该有一个数组[k];我会去办公室修的。请注意,在归纳法中,基本情况证明通常与归纳法具有不同的性质。。。别让这件事牵扯到你。在这里,程序上下文/状态是一种有效的方法。也许我应该说的是,它也必须能够更普遍地处理它,因为数组[0]的值也可能是63。我可能是错的,但由于不变量最初的范围是1到0,基本情况可能完全正确。可能会不公平地利用数组[0]=0的便利性——我认为“数组[k-1]是(k-1+1)=k”这一行可能是错误的,因为我们知道数组[k-1]=K我还希望看到k+1出现在归纳步骤的数学中?@ElrondElve从某种意义上说,基本情况是完全正确的,因为你保证它在执行循环体之前是正确的。在执行循环体之前使用程序状态决不是不公平的,只要您能说服我它就是您所说的。还有,是的;似乎有一个数组[k-1],其中应该有一个数组[k];我会去办公室修的。请注意,在归纳法中,基本情况证明通常与归纳法具有不同的性质。。。别让这件事牵扯到你。在这里,程序上下文/状态是一种有效的方法。也许我应该说的是,它也必须能够更普遍地处理它,因为数组[0]的值也可能是63。
function add_numbers($max) {
  //assume max >= 2
  $index=1;
  $array=array(63);
  while ($index != $max) {
     //invariant: ∀ k:1 .. index-1, array[k]=array[k-1]+1
     $array[$index] = $array[$index-1]+1;
     $index += 1;
  }
}