可计算问题的特征是:
- 完整意味着它涵盖了所有情况;
- 机械意味着它是精确的;
- 确定性意味着如果输入相同的输入,将提供相同的输出。
如果我错了,请纠正我,我通过研究发现除了确定性之外并不完全知道它的实际含义。
所以,我试图证明一个简单的代码,例如:
int i = 0;
do{
int j = 0;
do{
printf("Hello\n");
j++;
}while (j < n);
printf("Hello\n");
i++;
}while (i < n);
是可计算的。
我知道如何表明它是确定性的,因为它相当明显,但我不确定如何表明它是mechanistic或complete。
Complete特性,据我了解,它更像是“代码是否有任何方式无法执行或作为错误返回?” 例如打开一个文本文件有可能文件不存在,因为输入了错误的文件名或输入了错误的位置等。
但是在上面的代码片段的情况下,我应该如何证明它是完整的?
至于机制“是否 1 + 1 = 2 而不是 3?”。
同样的事情,对于上面的代码片段,我如何证明它是精确的,因为代码本身并没有解决任何问题,它只是根据 n 值打印“hello”?在这种情况下,n^2 + n 个“你好”。