我很难教授可计算函数的概念。我试图提出一个想法,为什么像希尔伯特(Hilbert)/阿克曼(Ackermann)/戈德尔(Godel)/图灵/教堂/ ...这样的研究人员发明了“可计算性”的概念。学生们立即问:“可计算性是什么意思?” 除非我教他们图灵机,然后回答“如果图灵机对其进行计算,则该函数是可计算的”,我不会回答。
所以,
是否有不需要使用图灵机,λ演算或类似计算模型的可计算性描述?即使是直观的描述也足够了。
我很难教授可计算函数的概念。我试图提出一个想法,为什么像希尔伯特(Hilbert)/阿克曼(Ackermann)/戈德尔(Godel)/图灵/教堂/ ...这样的研究人员发明了“可计算性”的概念。学生们立即问:“可计算性是什么意思?” 除非我教他们图灵机,然后回答“如果图灵机对其进行计算,则该函数是可计算的”,我不会回答。
所以,
是否有不需要使用图灵机,λ演算或类似计算模型的可计算性描述?即使是直观的描述也足够了。
Answers:
75年前,周围没有计算机。因此,人们必须非常仔细地解释计算机的数学思想。
今天,每个人都知道计算机是什么,并且可能大部分时间都随身携带一台计算机。这可以非常成功地用于教学,因为您可以跳过带磁带机的过时想法。我的意思是,谁在用胶带?(我知道,我知道,您感到受侮辱了,图灵是个伟人,而我全都同意)。
您只要走进教室问一下:您的iPhone有什么无法计算的吗?这立即使您陷入有关有限资源的问题。然后您说:好吧,假设您的计算机实际上具有无限的内存,是否有无法计算的内容?而且,您可以更加理想化,并将注意力集中在数论功能上(因为您目前对Facebook不感兴趣)。您将需要解释一下计算机的工作方式(如注释中所述,如果学生知道一种编程语言,那是个好习惯,因为您可以使用它而不是描述硬件),但是在此之后,您可以使用所有可计算性的经典参数。理论得出结果。没关系,学生对机器的心理印象是iPhone。实际上,这很重要:对他们而言更重要的是知道他们的iPhone无法完成某些事情。
“如果有一个从输入到输出的'有效程序',则该函数是可计算的。” 在介绍这个主题时,我过去曾指出他们(学生)如何有一种有效的方法来求解二次方程,而没有一个人可以求解5度或更高的方程。这可以引起对如何将“有效程序”形式化的讨论,但是这种讨论是您希望发生的事情,因此我认为这是功能而不是错误。
我开始问“是否有任何问题是没有计算机能够令人信服地回答的?” 并将讨论引向哲学问题,例如“如果一棵树掉在森林里,会发出声音吗?” 或“有来世吗?” 我们很快就达成共识,即人类语言可以表达是/否的问题,这些问题涉及无法用数学表达的悖论或概念,因此,是的,存在不可争议的问题。
然后,我用口头上的疑问询问关于可以在计算机中表示的概念(例如整数和图形)是否存在不可争议的问题。我说是的,其中一个例子是著名的暂停问题,该问题涉及检查程序描述并说明程序是否有无限循环。直观地讲,无限循环就像黑洞一样,任何观察无限循环的程序都可能陷入无限循环本身。因此,回答该问题的任何程序都可能永远运行,因此,按照“算法”的定义,没有算法可以解决停止问题。
然后,我又回到图灵机上的样张中。