最近开始学习python,没想到引出lambda演算,听着陌生的名字,翻了资料才发现是早就学过的内容,函数的定义也是一个参数,通过参数定义来确定。而停机问题更是turing里的基础命题:
图灵机停机问题: 能否给出一个判断任意一个图灵机是否停机的一般方法? 答案是NO.
这个问题实际上是问: 是否存在一台"万能的"图灵机 H, 把任意一台图灵机 M 输入给 H, 它都能判定 M 最终是否停机,输出一个明确的 "yes" 或 "no" 的答案? 可以利用反证法来证明这样的 H 不可能存在.假定存在一个能够判定任意一台图灵机是否停机的万能图灵机 H(M), 如果 M 最终停机, H 输出 "halt"; 如果 M 不停机,H 输出 "loop". 我们把 H 当作子程序, 构造如下程序 P:
function P(M) {
if (H(M)=="loop") return "halt";
else if (H(M)=="halt") while(true); // loop forever
}
因为 P 本身也是一台图灵机, 可以表示为一个字符串, 所以我们可以把 P 输入给它自己, 然后问 P(P) 是否停机.按照程序 P 的流程, 如果 P 不停机无限循环, 那么它就停机, 输出"halt"; 如果 P 停机, 那么它就无限循环, 不停机;这样无论如何我们都将得到一个矛盾, 所以假设前提不成立, 即不存在这样的 H. 或者说,图灵机停机问题是不可判定的(undecidable)。
有段时间不接触知识,就跟全新的一样了,当然了有快10年没拿起这些书本了,想起查资料时还是从一小姑娘的网站上找到,而我根据她的文章应该是被归为小老头一类了。
要不是最近想看ruby或django,朔本追源,开始看python,本来也是不用花很多时间来看这个的,毕竟语法格式都和C差不多,但是仔细读来,真真还是有好的思想在里面。学习的劲头很好,但是啊,我做这件事的起因是,只是想要研究研究twitter,然后发现还可以花点时间搞明白python上的框架,接着发现还必须研读python,幸好还不用从turbo或c开始学习……结果到现在我还只是看了python的一个开头,离我的目标还远着呢,不知道我能不能坚持到看完ror的一天。我觉着,这也是我一个很大的缺点,接触新知识不能浅尝辄止,非要刨出根源,重头开始,浪费了多少时间啊。如何又能保证自己花了这么多时间研究的内容能成为将来的主流呢?
不看了,睡觉去了