作者xiaoa (不事生产)
看板ask-why
标题Re: [请益] 无法判定程式终结
时间Sun Jun 8 04:31:04 2014
我也不懂, 不过可以讨论看看
※ 引述《dharma (达)》之铭言:
: 演算法之道里写道:
: ...无法判定程式终结,这个结论对程式设计来说意义重大。就是这个缘故,程式永远不
: 会是全自动的,即不可能由程式自己来写程式、启动程式、控制程式。也就是说,像「骇
: 客任务」那样的情景永远也不会出现。而隐含的意义是程式设计永远也离不开程式设计师
: 。...
所谓"无法判定程式终结"是什麽意思?
我知道的只有连皮毛都称不上的东西
无法判定程式终结 是说运算中有逃不出来的loop, 这样吗?
我想到像OS, 或一些介面(offices, browsers等)
它们算程式吗?
我们不动它时, 它在"执行"什麽?
如果没有在执行什麽, 它为什麽不会结束(关掉)?
要厘清上述问题, 才能进一步讨论
: 书上这个论点
: 是现在学术和产业界的共识吗?
: 是不是只有人类开发出仿生脑
: 才会有真正的人工智慧
: thank
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.9.101.18
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/ask-why/M.1402173067.A.93C.html
1F:→ kougousei:无法判定程设终结就是计算理论里面的halting problem... 06/08 09:14
所以我的方向算是对了
因为在OS底下, 部分无法自行终结的程式, 可以人为的终结
说明程式虽无法自行终结, 使用者却可以强迫终结
虽然程式对自身或另一个程式判定终结/无法终结, 是逻辑上循环矛盾的
但对人来说, 要做这种判断, 情况也是一样的(只不过人类对检测出"循环"的直觉比较强)
我们常常也无法预期程式是否能自行终结
人类判断的方式, 更多时候不是由逻辑运算出发, 而是靠经验预期去判断
如果你写一个程式, 让它处理某个问题
它运转了3分钟没停, 而你预期这项工作只要花20秒
你就会认为程式可能有问题了
但如果你本来就预期程式要跑24个小时才能结束
你不会在程式跑了25个小时後却未结束, 就认定程式陷入回圈
所以我以为只要能写出一个有类似这样的功能的管理性程式
就能最低限度的, 对无法自行终结的程式, 进行强迫终结
但以上只保证跑程式不会当机
却不能保证有个 自主程式 能编写/修正出一套不会有停机问题的程式
因为判定程式终结可以简化成用时间衡量
修正程式却需要电脑对问题的理解
所以这里又陷入另一个循环矛盾
因为电脑若打从开始就理解了问题, 它不应该写出有问题的程式
我想, 这个问题也是不能用单纯的逻辑运算来解套的, 需要参考人为解套的方式
※ 编辑: xiaoa (203.106.157.101), 06/08/2014 14:44:17
2F:→ sitos:你的方向不太正确, halting problem 要揭示的是程式的极限 06/08 16:27
3F:→ sitos:重点是 Turing machine 的计算模型里面,某些问题没办法解 06/08 16:28
4F:→ sitos:也就是 undecidable 的概念, halting problem 只是一个例子 06/08 16:29
5F:→ sitos:重点其实并不在於判断特定的程式和输入到底会不会停下来 06/08 16:29
6F:→ sitos:等睡饱头又不痛的时候再来完整回覆一下这个议题好了 06/08 16:30
7F:→ xiaoa:halting problem是逻辑的问题. 所以我的看法是, 用单纯的逻 06/08 20:31
8F:→ xiaoa:辑运算, halting problem是无解的 06/08 20:32
9F:→ xiaoa:难得见sitos发言, 坐等回文~ 06/08 20:33
10F:→ WINDHEAD:不能被计算证明不代表不能被证明 06/09 23:13
11F:→ xiaoa:说好的回覆呢 T_T 06/23 00:48