首页 / 知识
关于不可知的语言:解决停止问题是否比人们想象的容易?
2023-04-14 00:20:00

Is solving the halting problem easier than people think?尽管无法确定一般情况,但是许多人仍然确实解决了对于日常使用而言足够合理的问题。 在科恩关于计算机病毒的博士学位论文中,他展示了病毒扫描与停止问题是等价的,但是我们面临着整个挑战。 我也看过Microsoft的终止程序项目-http://research.microsoft.com/Terminator/ 导致我问的问题-暂停问题是否被高估了-我们是否需要担心一般情况? 类型会随着时间的流逝而变得完整-依赖类型看起来像是一个不错的发展吗? 或者,换一种说法,我们是否将开始使用非图灵完整语言来获得静态分析的好处?
我认为这和人们想的一样困难。
亲爱的,他们已经是!
非常非常。 我认为非图灵完整但可证明的语言可能会有所增长。在相当长的一段时间里,SQL属于这一类(不再适用),但这并没有真正减少其实用性。我认为,这样的系统肯定有地方。 哇,这是一个困惑的问题。 第一:从实际意义上讲,"停顿问题"不是"问题",而是"需要解决的问题"。它是关于数学性质的陈述,类似于G?del的不完全性定理。 第二:建立一个完美的病毒扫描程序非常棘手(因为它等同于停止问题),这正是"围绕这一挑战建立整个行业"的原因。如果能够设计出用于完美病毒扫描的算法,那只不过是一个人做一次的事,那么就不再需要一个行业。故事结束了。 第三:使用Turing Complete语言并不能消除"静态分析的好处",它只是意味着静态分析存在局限性。没关系-无论如何,几乎我们所做的每件事都有局限性。 最后:如果停止问题可以以任何方式"解决",那肯定是"比人们想像的要容易",图灵证明这是无法解决的。从数学的角度来看,一般情况是唯一相关的情况。具体情况与工程有关。 有许多程序可以解决暂停问题,其中许多程序很有用。 如果您的编译器会告诉您"暂停","不暂停"或"不知道",那么它可以告诉您程序的哪一部分导致了"暂停"或"不知道"情况。如果您确实想要一个绝对停止或不停止的程序,那么您将以与摆脱编译器警告相同的方式来修复那些"不知道"的单元。我想我们都会为解决这个普遍不可能的问题而被证明有用的频率感到惊讶。 顺便说一句,我认为模板的图灵完整性表明停顿被高估了。大多数语言都保证其编译器将停止运行。不是C ++。这会削弱C ++作为一种语言吗?我不这么认为。它有很多缺陷,但并非总是停止的编译不是其中之一。 作为一名日常程序员,我想值得继续走下去,以解决停顿风格的问题,即使您只是达到极限而从未达到极限。正如您所指出的,病毒扫描被证明是有价值的。 Google搜索并非伪装成"为我找到Y最好的X"的绝对答案,但它也非常有用。如果我释放出一种新型病毒(muwahaha),会产生更大的解决方案集,还是只是对现有的问题区域进行研究?无论技术上的差异如何,有些公司都会以务实的方式开发并收取后续"检测和清除"服务的费用。 对于您的其他问题,我期待着真正的科学答案。 问题无法确定的事实并不意味着它并不有趣:相反!因此,是的,我们没有一个有效且统一的程序来解决所有程序的终止问题(以及许多其他有关软件的问题),但这并不意味着不值得寻求部分解决方案。从某种意义上讲,这就是我们需要软件工程的原因:因为我们不能仅将任务委托给计算机。
但是,您的问题的标题有些误导。我同意DrPizza的观点:终止问题确实像人们认为的那样困难。 最后,关于依赖类型和子递归语言的问题虽然部分相关,但实际上是不同的问题,我不确定将它们混合在一起的意义。
我不知道人们认为它有多难,所以我不能说它是否更容易。但是,您认为正确的是,问题的不确定性(通常)并不意味着该问题的所有实例都是不确定的。例如,我可以很容易地告诉您,像 您提到的诸如Terminator项目之类的项目显然存在(甚至在某些情况下甚至可以工作),因此很明显,并非所有项目都是无望的。对于试图证明重写系统终止的工具,也有一场竞赛(我相信每年),这些竞赛基本上是一种计算模型。但是,在许多情况下终止很难证明。 最简单的看待方法可能是将不确定性视为问题实例化复杂性的最大化。每个实例化在达到这个最大值的微不足道的范围内,并且通常具有较高的最大值,实例化也平均而言也较难。 如果您在一般情况下查看"停顿问题",那么实际上只是很有趣,因为如果"停顿"问题是可以确定的,那么所有其他无法确定的问题也可以通过减少来 因此,我对这个问题的看法是,不,在重要的情况下并不容易。也就是说,在现实世界中,这可能没什么大不了的。 另请参阅:http://en.wikipedia.org/wiki/Halting_problem#Importance_and_consequences |
最新内容
相关内容
数据科学领域Python比R语言更好
数据科学领域Python比R语言更好,数据,公司,工具,时间,项目,工作,庞大,受益,系统,代码,经常有学员问我们,在数据科学领域里,到底是该选Python呢,Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观Python语言的应用领域主要有哪些
Python语言的应用领域主要有哪些,数据,分析,网络,代码,工作,项目,人工智能,金融,量化交易,系统,应用领域1:人工智能Python语言是目前公认学习了解Python语言中的时间处理
了解Python语言中的时间处理,时间,信息,代码,培训,单位,文本,语言,结果,星期,格式,Python语言对于时间的处理继承了C语言的传统,时间值是以秒Python变量的类型(弱类型语言)
Python变量的类型(弱类型语言),检测,代码,数据,培训,类型,变量,语言,赋值,数字型,字符串,在强类型的编程语言中,定义变量时要指明变量的类型,而Python语言
Python语言,工作,代码,标准,系统,庞大,密码,培训,管理,发展,数据,Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,具有20多年Python在最短的序列参数终止时停止
Python在最短的序列参数终止时停止迭代,培训,序列,函数,版本,元素,参数,形式,以上,功能,指南,chain(p,q,...)迭代至序列p的最后一个元素后,从q解释型语言python和编译型语言
解释型语言python和编译型语言,平台,环境,培训,语言,程序,文件,机器码,效率,定义,操作系统,首先Python是一门解释型语言,计算机是不能识别高python支持r语言吗?
python支持r语言吗?,代码,名称,培训,官网,第一,语言,对象,字符串,方法,后缀,python中可以支持r语言。python提供了一个模块rpy2,可以较好地完python是一种编程语言吗?
python是一种编程语言吗?,放宽,适当,平台,培训,语言,指令,计算机,机器,程序,解释性,python是一种编程语言,Python是一种跨平台的计算机程序设计Python语言中mod表示什么意思
Python语言中mod表示什么意思,环境,培训,表示,语言,结果,负数,语法,符号,两者,规律,python语言中mod表示取模运算符。语法MOD(a,b)通常情况下Python语言专题
Python语言专题,名字,工作,代码,异常,培训,信息,空间,函数,变量,模块,名字空间python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是