当前位置:

首页 > 业界资讯 > 重温图灵原理,感受反证法的力量

重温图灵原理,感受反证法的力量

算法已经无处不在,似乎对于每一个可以用精确的数学术语表达的问题,都有相应的算法。然而,事实并非如此,实际上有些看似简单的问题永远无法通过算法解决计算机科学家中的先驱艾伦・图灵,曾在近一个世纪前的一篇论文中证明了这种「不可计算」问题的存在,他提出了启动现代计算机科学的计算数学模型。图灵用一种违反直觉的策略证明了这一突破性的结果:他定义了一个问题,一个拒绝一切试图解决它的方法的问题。「比如我问你在做什么,不管你回答什么我都会说,'我要做的事情和你说的不一样'。」麻省理工学院研究理论计算机科学的研究生Rahul

本文目录

    算法已经无处不在,似乎对于每一个可以用精确的数学术语表达的问题,都有相应的算法。然而,事实并非如此,实际上有些看似简单的问题永远无法通过算法解决

    计算机科学家中的先驱艾伦・图灵,曾在近一个世纪前的一篇论文中证明了这种「不可计算」问题的存在,他提出了启动现代计算机科学的计算数学模型。

    图灵用一种违反直觉的策略证明了这一突破性的结果:他定义了一个问题,一个拒绝一切试图解决它的方法的问题。「比如我问你在做什么,不管你回答什么我都会说,'我要做的事情和你说的不一样'。」麻省理工学院研究理论计算机科学的研究生 Rahul Ilango 说。 重写后的内容: 图灵以一种违反直觉的策略证明了这一突破性的结果:他定义了一个问题,这个问题拒绝一切试图解决它的方法。「比如我问你在做什么,不管你回答什么我都会说,'我要做的事情和你说的不一样'。」麻省理工学院研究理论计算机科学的研究生Rahul Ilango表示

    图灵的策略是基于一种具有悠久历史的数学方法,被称为「对角线证明」。下面是对他证明背后逻辑的简化说明

    字符串

    对角线证明源于解决一个关于字符串问题的巧妙技巧,字符串中每个比特位的值可以是 0 或 1。该问题的描述是:给定一个字符串列表,列表中所有字符串都一样长,如何能生成一个不在列表中的新字符串呢?

    重写后的内容:一种最直接的策略是按顺序考虑每个可能的字符串。假设有五个字符串,每个字符串都有五位。首先遍历检查列表中是否存在00000。如果不存在,问题就解决了;如果存在,则转到00001并重复这个过程。这种方法很简单,但对于长字符串所产生的长列表来说速度很慢

    对角线证明是一种可行的替代方法,可以逐步构建不存在的字符串。从列表中第一个字符串的第一位开始,将其反转,这将成为新字符串的第一位。然后反转第二个字符串的第二位,并将其作为新字符串的第二位,重复此操作,直到到达列表的末尾。通过反转位的操作,可以确保新字符串与原始列表中的每个字符串至少有一个不同的位置。(它们还在字符串列表中形成一条对角线,因此被称为对角线证明。)

    重温图灵原理,感受反证法的力量

    对角线证明只需要依次检查列表中每个字符串中的一位,所以通常比其他方法快得多,但它真正的威力在于它能很好地驾驭无限长的字符串问题。

    麻省理工学院的理论计算机科学家 Ryan Williams 表示:“虽然字符串和列表可以是无限的,但对角化方法仍然是有效的。”

    乔治·康托尔是第一个利用这种力量的人,他是集合论数学领域的创始人。1873年,他利用对角线证明了一些无穷大的值比其他的更大。60年后,图灵将这一版本的对角线证明应用于计算理论

    算法的限制性

    为了证明存在一类数学问题是无法通过任何算法解决的,图灵提出了一个理论。这类问题具有明确定义的输入和输出,但没有确定的过程可以将输入转化为输出。图灵主要关注决策问题,并为了更好地具象化这个模糊的任务。在决策问题中,输入可以是由0和1组成的任意字符串,而输出则可以是0或1

    确定一个数字是否是素数(只能被 1 和它本身整除)是决策问题的一个例子 —— 给定一个代表数字的输入字符串,如果该数字是素数,则正确的输出为 1,如果不是素数,则为 0。另一个例子是检查计算机程序的语法错误。输入字符串代表不同程序的代码 —— 所有程序都可以用这种方式表示,因为这就是它们在计算机上存储和执行的方式 —— 规则是如果代码包含语法错误,则输出 1,如果不包含,则输出 0。

    只有当算法为每一个可能的输入都产生正确的输出时,它才能说是可以解决该问题 —— 哪怕失败一次,它就不是解决该问题的通用算法。通常,人们会先指定一个想解决的问题,然后试图找到一个解决它的算法。图灵在寻找无法解决的问题时,颠覆了这一逻辑 —— 他想象了一个包含所有可能算法的无限列表,并使用对角化来构造一个难题,这个难题与列表上的每一个算法都对立。

    请设想一个由20个问题组成的新问题,回答者不是从一个具体的概念出发,而是依次对每个问题都想出一个不满足的例子。当游戏结束时,回答者已经描述了一个完全由问题对立面所组成的命题

    图灵的对角线证明过程,就是要在无限长的算法列表中,对每一个算法都进行思考:「这个算法能解决我们想要证明是不可计算的问题吗?」,就好像是一种游戏比赛。Williams 表示:「这种方式将原来的问题转化为一种『无限的问题』。」

    为了赢得游戏,图灵需要设计一个问题,对于每个算法给出的答案都是否定的。这意味着需要找出使第一个算法输出错误答案的特定输入,另一个使第二个算法失败的输入,以此类推。他发现,这些特殊输入使用了类似于库尔特・哥德尔 (Kurt Gödel) 在不久前在证明像「这个命题是不可证明的」这样的自我引用断言会给数学基础带来麻烦时,所使用的技巧。

    此处的关键在于,每个算法(或程序)都可以表示为 0 和 1 的字符串。这意味着,就像在错误检查程序的例子中一样,算法可以将另一个算法的编码作为输入。原则上,算法甚至可以将自己的编码作为输入。

    这样一来,我们可以定义一个不可计算的问题,就像在图灵证明中所提到的问题一样:“给定一个表示算法代码的输入字符串,当算法自身的代码作为输入时,如果该算法输出0,则让其输出1,否则输出0。”每个试图解决这个问题的算法都会在至少一个输入上产生错误的输出,即与自己的代码对应的输入。这意味着这个反常的问题无法用任何算法来解决

    证明不了什么的是反证法

    计算机科学家对于对角线证明的使用并没有到此结束。1965 年,Juris Hartmanis 和 Richard Stearns 改编了图灵的论点,以证明并非所有可计算问题是平等的 —— 有些问题本质上比其他问题更难。这一结果启动了计算复杂性理论领域,研究计算问题的难度。

    复杂性理论的发展揭示了图灵对角线证明的局限性。在1975年,贝克、吉尔和索洛维证明了复杂性理论中许多未解决的问题无法仅通过对角化来解决。其中最重要的是著名的P/NP问题,该问题简单来说是关于能否在多项式时间内验证解的正确性以及是否能在多项式时间内求解的问题

    对角线证明的局限性是使其如此强大的高抽象水平的直接结果。图灵的证明并没有涉及任何在实践中可能出现的不可计算的问题 —— 相反,问题往往是抽象的。其他对角线证明同样远离现实世界,因此它们无法解决现实世界中的问题。

    Williams 说:「对角线证明并不是直接触碰问题本身,就好像用手套箱做实验一样。」

    对角线证明的颓败之势,表明解决 P/NP 问题将是一个漫长的旅程。尽管存在局限性,对角线证明仍然是复杂性理论家武器库中的关键工具之一。2011 年,威廉姆斯将其与一系列其他技术结合起来,证明了某个受限制的计算模型无法解决一些异常困难的问题 —— 这一结果让困扰了研究人员 25 年的问题得到解决。虽然这与解决 P/NP 问题相去甚远,但仍然代表着重大进展。

    如果你想证明某些事情是不可能的,不要低估否定的力量

    原文链接:

    需要重写的内容是:https://www.quantamagazine.org/alan-turing-and-the-power-of-negative-thinking-20230905/

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    业界资讯
    相关文章 更多
    android软件 入门:从基础认知到上手使用
    android软件 入门:从基础认知到上手使用

    Android作为用户最多的移动操作系统,其开放性支持厂商定制与多元应用生态。用户可通过官方商店或第三方渠道获取APK格式应用,安装时需注意来源安全并手动授权。使用中应管理应用权限,定期清理软件,建议从官方下载并设置密码,以保护隐私与设备安全。

    java负载均衡 入门:从基础认知到上手使用
    java负载均衡 入门:从基础认知到上手使用

    负载均衡是提升系统可用性与性能的关键技术。本文介绍其核心概念,包括分发算法与健康检查机制。通过对比Nginx、SpringCloud等常见方案,阐述其适用场景。最后,以Nginx配置为例,演示如何快速搭建一个基础的负载均衡环境,帮助开发者理解并实践这一重要架构模式。

    ubuntu输入法 入门:从基础认知到上手使用
    ubuntu输入法 入门:从基础认知到上手使用

    Ubuntu默认仅支持英文输入,需用户自行安装中文输入法。主流框架有IBus(集成度高)和Fcitx(功能丰富),安装后需在系统设置中切换并重启。常见问题如快捷键冲突或应用内无法调出输入法,可通过调整设置或安装对应模块解决。掌握输入法配置是融入Ubuntu生态、实现个性化使用的关键一步。

    winphone 入门:从基础认知到上手使用
    winphone 入门:从基础认知到上手使用

    WindowsPhone以其独特的动态磁贴界面和与微软服务的深度整合而著称。本文旨在为新手提供一个清晰的入门指南,涵盖系统核心特性、基础操作设置以及应用生态的获取与使用。通过了解主屏幕定制、系统导航和账户关联,用户可以快速上手并高效利用这款移动操作系统,探索其简洁高效的设计哲学。

    Unity新手入门学习殿堂级知识详细讲解(图文)
    Unity新手入门学习殿堂级知识详细讲解(图文)

    Unity是一款跨平台游戏引擎,支持2D/3D、VR/AR及数字孪生开发。核心优势是可视化编辑器与脚本扩展,覆盖20多个平台。项目需保留Assets、Packages、ProjectSettings文件夹。场景中的GameObject依靠组件实现功能,Transform组件必备。图片建议使用PNG格式,注意碰撞层与显示层设置。

    Go 语言入门指南:必备特性解析
    Go 语言入门指南:必备特性解析

    Go语言是一种现代编程语言,以其快速、高效和易用性著称。其必备特性包括:变量和常量:变量可重新赋值,而常量一旦声明就无法修改。数据类型:提供丰富的内置数据类型,包括数值、字符串、集合等。控制流:支持if-else、for循环和switch-case语句。函数:支持函数声明和调用。并发和Goroutine:提供Goroutine(轻量级线程),支持并发编程。

    Java基础入门到实战应用:常见问题解答
    Java基础入门到实战应用:常见问题解答

    入门Java:创建并运行简单程序,熟悉语法和编译过程。循环:使用for循环重复执行代码块。数组:声明数组类型、长度,并填充元素。方法:使用类封装代码块,传递参数调用方法。异常处理:使用try-catch块捕获并处理异常。实战应用:使用数组和循环计算并打印斐波那契数列。

    Golang 入门常见疑点消解宝典:小白的福音
    Golang 入门常见疑点消解宝典:小白的福音

    Go编程入门常见疑点消解:通过brew、apt或choco安装Go并检查版本;编写helloworld程序并运行;使用var关键字或简写定义变量;Go支持整数、浮点数和布尔等数据类型;函数是可重用的代码块,用于执行特定任务;错误可以用error类型变量表示,并在错误发生时返回。

    Golang 技术入门高能手册:化解新手困惑
    Golang 技术入门高能手册:化解新手困惑

    Go语言新手入门手册涵盖以下内容:安装与配置:下载工具链,设置环境变量,验证安装。基本语法:变量声明、函数声明、数据类型、控制流、数组和切片。并发编程:戈程、通道、同步原语。数据结构:map、slice、struct。实战案例:创建一个简单的Web服务器,在浏览器中运行。

    PHP入门指南:线程池
    PHP入门指南:线程池

    随着互联网时代的到来,网站和应用程序越来越受到人们的欢迎。在Web开发中,PHP是一个非常流行的脚本语言。PHP是一种解释性语言,它可以在服务器上执行。由于PHP语言易学易用,因此它成为了PHP开发人员的首选之一。但是,当涉及到高负载应用程序或在服务器上处理大量数据时,PHP是不太适合的。因此,我们需要使用线程池来解决这个问题。线程池是什么?线程池是一

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。